• Модуль: 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();
}