• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_sip.php
  • Класс: CVoxImplantSip
  • Вызов: CVoxImplantSip::Add
public function Add($fields)
{
	$arAdd = $this->PrepareFields($fields);
	if (!$arAdd)
		return false;

	if ($arAdd['TYPE'] == self::TYPE_CLOUD)
	{
		$countQuery = new BitrixMainEntityQuery(VISipTable::getEntity());
		$countQuery->addSelect(new BitrixMainEntityExpressionField('CNT', 'COUNT(1)'));
		$countQuery->setFilter(Array(
			'TYPE' => self::TYPE_CLOUD
		));
		$totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch();

		if ($totalCount['CNT'] >= self::MAX_CLOUD_PBX)
		{
			$this->error = new CVoxImplantError(__METHOD__, 'MAX_CLOUD_PBX', GetMessage('VI_SIP_ADD_CLOUD_ERR', Array("#NUMBER#" => self::MAX_CLOUD_PBX)));

			return false;
		}
	}

	if ($arAdd['PHONE_NAME'] <> '')
	{
		$orm = VIConfigTable::getList(Array(
			'filter' => Array('=PHONE_NAME' => $arAdd['PHONE_NAME'])
		));
		if ($orm->fetch())
		{
			$this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS'));

			return false;
		}
	}

	$melodyLang = ToUpper(LANGUAGE_ID);
	if($melodyLang === 'KZ')
	{
		$melodyLang = 'RU';
	}
	else if(!in_array($melodyLang, CVoxImplantConfig::GetMelodyLanguages()))
	{
		$melodyLang = 'EN';
	}

	$result = VIConfigTable::add(Array(
		'PORTAL_MODE' => 'SIP',
		'SEARCH_ID' => $arAdd['SEARCH_ID'],
		'PHONE_NAME' => trim($arAdd['PHONE_NAME']),
		'MELODY_LANG' => $melodyLang,
		'QUEUE_ID' => CVoxImplantMain::getDefaultGroupId(),
	));
	CVoxImplantUser::clearCache();
	if (!$result->isSuccess())
	{
		$this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS'));

		return false;
	}

	$configId = $result->getId();

	if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER)
	{
		CVoxImplantConfig::SetPortalNumber($arAdd['SEARCH_ID']);
	}

	unset($arAdd['SEARCH_ID']);
	unset($arAdd['PHONE_NAME']);
	$arAdd['CONFIG_ID'] = $configId;
	VISipTable::add($arAdd);

	return $configId;
}