- Модуль: biconnector
- Путь к файлу: ~/bitrix/modules/biconnector/lib/Configuration/Action.php
- Класс: BitrixBiConnectorConfigurationAction
- Вызов: Action::importDataStudio
static function importDataStudio($content, Event $event)
{
$result = null;
$appId = (int)$event->getParameter('APP_ID');
$host = Context::getCurrent()->getServer()->get('HTTP_HOST');
$accessKey = false;
$res = KeyTable::getList([
'select' => [
'ACCESS_KEY',
],
'filter' => [
'=ACTIVE' => 'Y',
'=APP_ID' => $appId,
],
'order' => [
'ID' => 'DESC',
],
'limit' => 1,
]);
if ($key = $res->fetch())
{
$accessKey = $key['ACCESS_KEY'];
}
else
{
$userId = (int)$event->getParameter('USER_ID');
if ($userId <= 0)
{
global $USER;
$userId = $USER->getID();
}
$key = KeyManager::generateAccessKey();
$resultSave = KeyManager::save([
'USER_ID' => $userId,
'ACTIVE' => true,
'ACCESS_KEY' => $key,
'USERS' => [
$userId,
],
'APP_ID' => $appId,
]);
if ($resultSave instanceof ErrorCollection)
{
foreach ($resultSave->getValues() as $error)
{
if ($error instanceof BitrixMainError)
{
$result['ERROR_EXCEPTION'] = [
'code' => $error->getCode(),
'message' => Loc::getMessage('BI_CONNECTOR_CONFIGURATION_ACTION_ERROR_DATA_STUDIO_SAVE_KEY') . ' ' . $error->getMessage(),
];
}
}
}
else
{
$accessKey = $key;
}
}
if ($accessKey)
{
$url = [
'connectorId' => Option::get('biconnector', GoogleDataStudio::OPTION_DEPLOYMENT_ID),
'connectorConfig' => Json::encode([
'server_name' => Option::get('main', 'server_name', $host),
'key' => $accessKey . LANGUAGE_ID,
'table' => $content['DATA']['table'] ?? '',
]),
'reportTemplateId' => $content['DATA']['reportTemplateId'],
];
$uri = new Uri(GoogleDataStudio::URL_CREATE);
$uri->addParams($url);
$result['RATIO']['URL'] = $uri->getLocator();
}
return $result;
}