• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/widget/config.php
  • Класс: BitrixImopenlinesWidgetConfig
  • Вызов: Config::getByCode
static function getByCode($code)
{
	self::clearError();

	if (!BitrixMainLoader::includeModule('im'))
	{
		self::setError(__METHOD__, 'IM_NOT_FOUND', Loc::getMessage('IMOL_WIDGET_CONFIG_IM_NOT_FOUND'));
		return false;
	}
	if (!BitrixMainLoader::includeModule('imconnector'))
	{
		self::setError(__METHOD__, 'IMCONNECTOR_NOT_FOUND', Loc::getMessage('IMOL_WIDGET_CONFIG_IMCONNECTOR_NOT_FOUND'));
		return false;
	}

	$result = BitrixImOpenLinesModelLivechatTable::getList([
		'select' => ['CONFIG_ID', 'TEXT_PHRASES', 'SHOW_SESSION_ID'],
		'filter' => ['=URL_CODE' => $code]
	])->fetch();
	if (!$result)
	{
		self::setError(__METHOD__, 'CONFIG_ERROR', Loc::getMessage('IMOL_WIDGET_CONFIG_CONFIG_ERROR'));
		return false;
	}

	$configManager = new BitrixImOpenLinesConfig();
	$config = $configManager->get($result['CONFIG_ID']);

	$queue = [];
	$operatorDataType = BitrixImOpenLinesConfig::operatorDataConfig($result['CONFIG_ID']);

	foreach ($config['QUEUE'] as $userId)
	{
		$userArray = BitrixImOpenLinesQueue::getUserData($result['CONFIG_ID'], $userId);
		if (!$userArray)
		{
			continue;
		}

		$queue[] = $userArray;

		if ($operatorDataType == BitrixImOpenLinesConfig::OPERATOR_DATA_HIDE)
		{
			break;
		}
	}

	$connectors = [];
	$activeConnectors = BitrixImConnectorConnector::infoConnectorsLine($result['CONFIG_ID']);

	$classMap = BitrixImConnectorConnector::getIconClassMap();
	foreach ($activeConnectors as $code => $params)
	{
		if (BitrixImOpenLinesConnector::isLiveChat($code) || empty($params['url']))
			continue;

		$connectors[] = [
			'TITLE' => $params['name']? $params['name']:'',
			'CODE' => $code,
			'ICON' => $classMap[$code],
			'LINK' => $params['url_im']? $params['url_im']: $params['url'],
		];
	}

	$maxFileSize = CUtil::Unformat(ini_get("post_max_size"));
	if ($maxFileSize > 5242880)
	{
		$maxFileSize = 5242880;
	}

	$result['TEXT_PHRASES'] = !empty($result['TEXT_PHRASES']) && is_array($result['TEXT_PHRASES']) ? $result['TEXT_PHRASES'] : array();
	foreach ($result['TEXT_PHRASES'] as &$phrase)
	{
		$phrase = (string)$phrase;
	}

	return [
		'CONFIG_ID' => (int)$config['ID'],
		'CONFIG_NAME' => $config['LINE_NAME'],
		'VOTE_ENABLE' => $config['VOTE_MESSAGE'] === 'Y', //TODO - remove in next version
		'CONSENT_URL' => $config['AGREEMENT_ID'] && $config['AGREEMENT_MESSAGE'] == 'Y'? BitrixImOpenLinesCommon::getAgreementLink($config['AGREEMENT_ID'], $config['LANGUAGE_ID'], true): '',
		'OPERATORS' => $queue,
		'ONLINE' => $config['QUEUE_ONLINE'] === 'Y',
		'CONNECTORS' => $connectors,
		'DISK' => [
			'ENABLED' => BitrixMainModuleManager::isModuleInstalled('disk'),
			'MAX_FILE_SIZE' => $maxFileSize
		],
		'VOTE' => [
			'ENABLE' => $config['VOTE_MESSAGE'] === 'Y',
			'BEFORE_FINISH' => $config['VOTE_BEFORE_FINISH'] === 'Y',
			'MESSAGE_TEXT' => (string)$config['VOTE_MESSAGE_1_TEXT'],
			'MESSAGE_LIKE' => (string)$config['VOTE_MESSAGE_1_LIKE'],
			'MESSAGE_DISLIKE' => (string)$config['VOTE_MESSAGE_1_DISLIKE'],
		],
		'TEXT_MESSAGES' => $result['TEXT_PHRASES'],
		'WATCH_TYPING' => $config['WATCH_TYPING'] === 'Y',
		'SHOW_SESSION_ID' => $result['SHOW_SESSION_ID'] === 'Y',
		'CRM_FORMS_SETTINGS' => [
			'USE_WELCOME_FORM' => $config['USE_WELCOME_FORM'],
			'WELCOME_FORM_ID' => $config['WELCOME_FORM_ID'],
			'WELCOME_FORM_DELAY' => $config['WELCOME_FORM_DELAY']
		]
	];
}