public function Add($fields) { $arAdd = $this->PrepareFiedls($fields); if (!$arAdd) { return false; } if ($arAdd['TYPE'] == self::TYPE_CLOUD) { $countQuery = new \Bitrix\Main\Entity\Query(VI\SipTable::getEntity()); $countQuery->addSelect(new \Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')); $countQuery->setFilter(array('TYPE' => self::TYPE_CLOUD)); $totalCount = $countQuery->setLimit(null)->setOffset(null)->exec()->fetch(); if ($totalCount['CNT'] >= 5) { $this->error = new CVoxImplantError(__METHOD__, 'MAX_CLOUD_PBX', GetMessage('VI_SIP_ADD_CLOUD_ERR', array("#NUMBER#" => 5))); return false; } } if (strlen($arAdd['PHONE_NAME']) > 0) { $orm = VI\ConfigTable::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 = 'EN'; if (LANGUAGE_ID == 'ru') { $melodyLang = 'RU'; } else { if (LANGUAGE_ID == 'de') { $melodyLang = 'DE'; } else { if (LANGUAGE_ID == 'ua') { $melodyLang = 'UA'; } } } $result = VI\ConfigTable::add(array('PORTAL_MODE' => 'SIP', 'SEARCH_ID' => $arAdd['SEARCH_ID'], 'PHONE_NAME' => trim($arAdd['PHONE_NAME']), 'MELODY_LANG' => $melodyLang)); if (!$result) { $this->error = new CVoxImplantError(__METHOD__, 'TITLE_EXISTS', GetMessage('VI_SIP_TITLE_EXISTS')); return false; } $configId = $result->getId(); $userId = $GLOBALS['USER']->GetId(); if ($userId > 0) { VI\QueueTable::add(array('CONFIG_ID' => $configId, 'USER_ID' => $userId, 'STATUS' => 'OFFLINE')); } if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) { CVoxImplantConfig::SetPortalNumber($arAdd['SEARCH_ID']); } unset($arAdd['SEARCH_ID']); unset($arAdd['PHONE_NAME']); $arAdd['CONFIG_ID'] = $configId; VI\SipTable::add($arAdd); return $configId; }
private static function executeSaveOption(&$error) { $error = !CVoxImplantConfig::SetPortalNumber($_REQUEST["portalNumber"]); return array(); }
public static function AddConfigBySearchId($phone, $country = 'RU') { $melodyLang = 'EN'; $country = strtoupper($country); if (in_array($country, array('RU', 'UA', 'DE'))) { $melodyLang = $country; } $arFields = array('SEARCH_ID' => $phone, 'PHONE_NAME' => $phone, 'MELODY_LANG' => $melodyLang); $result = VI\ConfigTable::add($arFields); if ($result) { if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) { CVoxImplantConfig::SetPortalNumber($arFields['SEARCH_ID']); } } CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, true); return true; }
public static function DeletePhoneConfig($configId) { $configId = intval($configId); $result = VI\ConfigTable::getList(array('select' => array('ID', 'SEARCH_ID'), 'filter' => array('=ID' => $configId))); $config = $result->fetch(); if (!$config) { return false; } $needChangePortalNumber = false; VI\ConfigTable::delete($configId); if ($config['SEARCH_ID'] == CVoxImplantConfig::GetPortalNumber()) { $needChangePortalNumber = true; } $result = VI\QueueTable::getList(array('select' => array('ID'), 'filter' => array('=CONFIG_ID' => $configId))); while ($row = $result->fetch()) { VI\QueueTable::delete($row['ID']); } $firstPhoneNumber = ''; $result = VI\ConfigTable::getList(array('select' => array('ID', 'SEARCH_ID'))); while ($row = $result->fetch()) { if (!$firstPhoneNumber) { $firstPhoneNumber = $row['SEARCH_ID']; } } if (!$firstPhoneNumber) { CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, false); } if ($needChangePortalNumber) { if ($firstPhoneNumber) { CVoxImplantConfig::SetPortalNumber($firstPhoneNumber); } else { CVoxImplantConfig::SetPortalNumber(CVoxImplantConfig::LINK_BASE_NUMBER); } } return true; }