示例#1
0
 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;
 }
示例#2
0
 private static function executeSaveOption(&$error)
 {
     $error = !CVoxImplantConfig::SetPortalNumber($_REQUEST["portalNumber"]);
     return array();
 }
示例#3
0
 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;
 }
示例#4
0
 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;
 }