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