• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_outgoing.php
  • Класс: CVoxImplantOutgoing
  • Вызов: CVoxImplantOutgoing::findLineId
static function findLineId(string $phoneNumber)
{
	$phoneNumber = CVoxImplantPhone::stripLetters($phoneNumber);

	$checkExtensionCursor = BitrixMainUserTable::getList(Array(
		'select' => Array('ID', 'IS_ONLINE', 'UF_VI_PHONE', 'ACTIVE'),
		'filter' => Array('=UF_PHONE_INNER' => $phoneNumber, '=ACTIVE' => 'Y'),
	));
	if($checkExtensionCursor->fetch())
	{
		return false;
	}

	$cursor = VIConfigTable::getList([
		'select' => [
			'SEARCH_ID',
			'LINE_PREFIX',
			'RENTED_NUMBER' => 'NUMBER.NUMBER',
			'CALLER_ID_NUMBER' => 'CALLER_ID.NUMBER'
		],
		'filter' => [
			'=CAN_BE_SELECTED' => 'Y',
			'=PORTAL_MODE' => [CVoxImplantConfig::MODE_SIP, CVoxImplantConfig::MODE_RENT, CVoxImplantConfig::MODE_LINK]
		]
	]);
	while ($row = $cursor->fetch())
	{
		$currentPrefix = (string)$row['LINE_PREFIX'];
		if($currentPrefix == '')
			continue;

		if($currentPrefix == mb_substr($phoneNumber, 0, mb_strlen($currentPrefix)))
		{
			return $row['SEARCH_ID'] ?: $row['RENTED_NUMBER'] ?: $row['RENTED_GROUP_NUMBER'] ?: $row['CALLER_ID_NUMBER'];
		}
	}
	return false;
}