- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/livechatmanager.php
- Класс: BitrixImOpenLinesLiveChatManager
- Вызов: LiveChatManager::add
public function add($fields = Array())
{
$configData = ModelLivechatTable::getById($this->id)->fetch();
if ($configData)
{
$this->id = $configData['CONFIG_ID'];
$this->config = false;
return true;
}
$add['CONFIG_ID'] = $this->id;
if (isset($fields['ENABLE_PUBLIC_LINK']))
{
$specifiedName = true;
if (!isset($fields['URL_CODE_PUBLIC']))
{
$configManager = new BitrixImOpenLinesConfig();
$config = $configManager->get($this->id);
$fields['URL_CODE_PUBLIC'] = $config['LINE_NAME'];
$specifiedName = false;
}
$add['URL_CODE_PUBLIC'] = self::prepareAlias($fields['URL_CODE_PUBLIC']);
$add['URL_CODE_PUBLIC_ID'] = BitrixImAlias::add(Array(
'ALIAS' => $add['URL_CODE_PUBLIC'],
'ENTITY_TYPE' => BitrixImAlias::ENTITY_TYPE_LIVECHAT,
'ENTITY_ID' => $this->id
));
if (!$add['URL_CODE_PUBLIC_ID'])
{
if ($specifiedName)
{
$this->error = new BasicError(__METHOD__, 'CODE_ERROR', Loc::getMessage('IMOL_LCM_CODE_ERROR'));
return false;
}
else
{
$result = BitrixImAlias::addUnique(Array(
'ENTITY_TYPE' => BitrixImAlias::ENTITY_TYPE_LIVECHAT,
'ENTITY_ID' => $this->id
));
$add['URL_CODE_PUBLIC'] = $result['ALIAS'];
$add['URL_CODE_PUBLIC_ID'] = $result['ID'];
}
}
}
$result = BitrixImAlias::addUnique(Array(
'ENTITY_TYPE' => BitrixImAlias::ENTITY_TYPE_LIVECHAT,
'ENTITY_ID' => $this->id
));
$add['URL_CODE'] = $result['ALIAS'];
$add['URL_CODE_ID'] = $result['ID'];
if (isset($fields['TEMPLATE_ID']) && in_array($fields['TEMPLATE_ID'], Array(self::TEMPLATE_COLOR, self::TEMPLATE_COLORLESS)))
{
$add['TEMPLATE_ID'] = $fields['TEMPLATE_ID'];
}
if (isset($fields['BACKGROUND_IMAGE']))
{
$add['BACKGROUND_IMAGE'] = intval($fields['BACKGROUND_IMAGE']);
}
if (isset($fields['CSS_ACTIVE']))
{
$add['CSS_ACTIVE'] = $fields['CSS_ACTIVE'] == 'Y'? 'Y': 'N';
}
if (isset($fields['CSS_PATH']))
{
$add['CSS_PATH'] = mb_substr($fields['CSS_PATH'], 0, 255);
}
if (isset($fields['CSS_TEXT']))
{
$add['CSS_TEXT'] = $fields['CSS_TEXT'];
}
if (isset($fields['COPYRIGHT_REMOVED']) && Limit::canRemoveCopyright())
{
$add['COPYRIGHT_REMOVED'] = $fields['COPYRIGHT_REMOVED'] == 'Y'? 'Y': 'N';
}
if (isset($fields['CACHE_WIDGET_ID']))
{
$add['CACHE_WIDGET_ID'] = intval($fields['CACHE_WIDGET_ID']);
}
if (isset($fields['CACHE_BUTTON_ID']))
{
$add['CACHE_BUTTON_ID'] = intval($fields['CACHE_BUTTON_ID']);
}
if (isset($fields['PHONE_CODE']))
{
$add['PHONE_CODE'] = $fields['PHONE_CODE'];
}
if (isset($fields['TEXT_PHRASES']))
{
$add['TEXT_PHRASES'] = $fields['TEXT_PHRASES'];
}
$result = ModelLivechatTable::add($add);
if ($result->isSuccess())
{
$this->id = $result->getId();
$this->config = false;
}
return $result->isSuccess();
}