• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/config.php
  • Класс: BitrixImOpenLinesConfig
  • Вызов: Config::get
public function get($configId, $withQueue = true, $showOffline = true, $withConfigQueue = false)
{
	$config = false;

	$configId = (int)$configId;
	if (
		!empty($configId) ||
		$configId > 0
	)
	{
		$orm = ModelConfigTable::getById($configId);
		if ($config = $orm->fetch())
		{
			$config['WORKTIME_DAYOFF'] = explode(',', $config['WORKTIME_DAYOFF']);
			$config['WORKTIME_HOLIDAYS'] = explode(',', $config['WORKTIME_HOLIDAYS']);

			$config['QUEUE'] = [];
			$config['QUEUE_FULL'] = [];
			$config['QUEUE_USERS_FIELDS'] = [];
			$config['QUEUE_ONLINE'] = 'N';
			if ($withQueue)
			{
				$selectQueue = ['ID', 'SORT', 'USER_ID', 'DEPARTMENT_ID', 'USER_NAME', 'USER_WORK_POSITION', 'USER_AVATAR', 'USER_AVATAR_ID'];
				$filterQueue = ['=CONFIG_ID' => $configId, '=USER.ACTIVE' => 'Y'];

				if ($showOffline === true)
				{
					$selectQueue[] = 'IS_ONLINE_CUSTOM';
				}
				else
				{
					$filterQueue['=IS_ONLINE_CUSTOM'] = 'Y';
				}

				$orm = Queue::getList([
					'select' => $selectQueue,
					'filter' => $filterQueue,
					'order' => [
						'SORT' => 'ASC',
						'ID' => 'ASC'
					],
				]);

				while ($row = $orm->fetch())
				{
					$config['QUEUE'][] = $row['USER_ID'];
					if (
						(
							$showOffline === true &&
							(string)$row['IS_ONLINE_CUSTOM'] === 'Y'
						) ||
						$showOffline !== true
					)
					{
						$config['QUEUE_ONLINE'] = 'Y';
					}
					$config['QUEUE_USERS_FIELDS'][$row['USER_ID']] = [
						'USER_NAME' => $row['USER_NAME'],
						'USER_WORK_POSITION' => $row['USER_WORK_POSITION'],
						'USER_AVATAR' => $row['USER_AVATAR'],
						'USER_AVATAR_ID' => $row['USER_AVATAR_ID']
					];

					$config['QUEUE_FULL'][$row['USER_ID']] = [
						'ID' => $row['ID'],
						'SORT' => $row['SORT'],
						'USER_ID' => $row['USER_ID'],
						'DEPARTMENT_ID' => $row['DEPARTMENT_ID'],
						'USER_NAME' => $row['USER_NAME'],
						'USER_WORK_POSITION' => $row['USER_WORK_POSITION'],
						'USER_AVATAR' => $row['USER_AVATAR'],
						'USER_AVATAR_ID' => $row['USER_AVATAR_ID']
					];
				}
			}

			if($withConfigQueue === true)
			{
				$queueManager = new QueueManager($configId);

				$config['configQueue'] = $queueManager->getConfigQueue();
			}

			if (!Limit::canUseVoteClient())
			{
				$config['VOTE_MESSAGE'] = 'N';
			}

			if (!Limit::canWorkHourSettings())
			{
				$config['WORKTIME_ENABLE'] = 'N';
			}

			$textFieldsWithEmoji = [
				'WELCOME_MESSAGE_TEXT',
				'VOTE_MESSAGE_1_TEXT', 'VOTE_MESSAGE_1_LIKE', 'VOTE_MESSAGE_1_DISLIKE',
				'VOTE_MESSAGE_2_TEXT', 'VOTE_MESSAGE_2_LIKE', 'VOTE_MESSAGE_2_DISLIKE',
				'NO_ANSWER_TEXT', 'WORKTIME_DAYOFF_TEXT', 'CLOSE_TEXT', 'AUTO_CLOSE_TEXT'
			];

			foreach ($textFieldsWithEmoji as $textFieldName)
			{
				$config[$textFieldName] = Emoji::decode($config[$textFieldName]);
			}
		}
	}

	return $config;
}