- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connector.php
- Класс: BitrixImConnectorConnector
- Вызов: Connector::update
static function update($line, $connector, $params = [])
{
$result = new Result();
if (
empty($line)
|| empty($connector)
)
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_EMPTY_PARAMETRS'),
Library::ERROR_IMCONNECTOR_EMPTY_PARAMETRS,
__METHOD__,
array
('line' => $line, 'connector' => $connector, 'params' => $params)));
}
elseif (!self::isConnector($connector))
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_NOT_AVAILABLE_CONNECTOR'),
Library::ERROR_NOT_AVAILABLE_CONNECTOR,
__METHOD__,
$connector
));
}
else
{
$status = Status::getInstance($connector, (int)$line);
$cacheId = self::getCacheIdConnector($line, $connector);
if (!$status->getActive())
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_UPDATE_NOT_EXISTING_CONNECTOR'),
Library::ERROR_UPDATE_NOT_EXISTING_CONNECTOR,
__METHOD__,
$connector
));
}
if($result->isSuccess())
{
switch ($connector)
{
case 'livechat':
if (Loader::includeModule(Library::MODULE_ID_OPEN_LINES))
{
$liveChatManager = new LiveChatManager($line);
if (!$liveChatManager->update($params))
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_UPDATE_CONNECTOR'),
Library::ERROR_FAILED_TO_UPDATE_CONNECTOR,
__METHOD__,
$connector
));
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_LOAD_MODULE_OPEN_LINES'),
Library::ERROR_FAILED_TO_LOAD_MODULE_OPEN_LINES,
__METHOD__,
$connector
));
}
if (!$result->isSuccess())
{
$status->setConnection(false);
$status->setRegister(false);
}
break;
case 'network':
if (Loader::includeModule(Library::MODULE_ID_OPEN_LINES))
{
$output = new Output($connector, $line);
$resultUpdate = $output->update($params);
if ($resultUpdate->isSuccess())
{
$dataStatus = $status->getData();
$dataStatus = array_merge($dataStatus, $params);
$status->setData($dataStatus);
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_UPDATE_CONNECTOR'),
Library::ERROR_FAILED_TO_UPDATE_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($resultUpdate->getErrors());
}
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_LOAD_MODULE_OPEN_LINES'),
Library::ERROR_FAILED_TO_LOAD_MODULE_OPEN_LINES,
__METHOD__,
$connector
));
}
if(!$result->isSuccess())
{
$status->setConnection(false);
$status->setRegister(false);
}
break;
case 'telegrambot':
case 'botframework':
case 'ok':
$output = new Output($connector, $line);
$saved = $output->saveSettings($params);
if ($saved->isSuccess())
{
$testConnect = $output->testConnect();
if ($testConnect->isSuccess())
{
$status->setConnection(true);
$register = $output->register();
if(!$register->isSuccess())
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_REGISTER_CONNECTOR'),
Library::ERROR_FAILED_REGISTER_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($testConnect->getErrors());
$status->setRegister(false);
}
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_TEST_CONNECTOR'),
Library::ERROR_FAILED_TO_TEST_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($testConnect->getErrors());
$status->setConnection(false);
}
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_SAVE_SETTINGS_CONNECTOR'),
Library::ERROR_FAILED_TO_SAVE_SETTINGS_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($saved->getErrors());
$status->setConnection(false);
$status->setRegister(false);
}
break;
case 'vkgroup':
case 'facebook':
case Library::ID_FBINSTAGRAMDIRECT_CONNECTOR:
case 'facebookcomments':
case Library::ID_FBINSTAGRAM_CONNECTOR:
default:
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FEATURE_IS_NOT_SUPPORTED'),
Library::ERROR_FEATURE_IS_NOT_SUPPORTED,
__METHOD__,
$connector
));
break;
}
}
if ($result->isSuccess())
{
$status
->setActive(true)
->setConnection(true)
->setRegister(true);
}
$status->setError(false);
$status->save();
self::cleanCacheConnector($line, $cacheId);
}
return $result;
}