- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/connector.php
- Класс: BitrixImConnectorConnector
- Вызов: Connector::add
static function add($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__,
['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_ADD_EXISTING_CONNECTOR'),
Library::ERROR_ADD_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->add($params))
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_ADD_CONNECTOR'),
Library::ERROR_FAILED_TO_ADD_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
));
}
break;
case 'network':
if (Loader::includeModule(Library::MODULE_ID_OPEN_LINES))
{
$output = new Output($connector, $line);
$resultRegister = $output->register($params);
if ($resultRegister->isSuccess())
{
$status->setData($resultRegister->getResult());
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_ADD_CONNECTOR'),
Library::ERROR_FAILED_TO_ADD_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($resultRegister->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
));
}
break;
case 'telegrambot':
case 'botframework':
case 'ok':
$output = new Output($connector, $line);
$saved = $output->saveSettings($params);
if ($saved->isSuccess())
{
$status->setActive(true);
$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());
}
}
else
{
$result->addError(new Error(
Loc::getMessage('IMCONNECTOR_FAILED_TO_TEST_CONNECTOR'),
Library::ERROR_FAILED_TO_TEST_CONNECTOR,
__METHOD__,
$connector
));
$result->addErrors($testConnect->getErrors());
}
}
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());
}
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)
->setError(false)
->save()
;
}
self::cleanCacheConnector($line, $cacheId);
}
return $result;
}