Exemple #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;
 }
Exemple #2
0
 public static function AttachPhoneNumber($country, $regionId, $number = '', $countryState = '', $type = self::PHONE_TYPE_FIXED)
 {
     $arResult = array();
     if (!in_array($type, array(self::PHONE_TYPE_FIXED, self::PHONE_TYPE_TOLLFREE, self::PHONE_TYPE_TOLLFREE804, self::PHONE_TYPE_MOBILE, self::PHONE_TYPE_MOSCOW495))) {
         return $arResult;
     }
     if ($country == 'RU' && $regionId == '15') {
         $type = 'MOSCOW495';
     }
     $arPhones = array();
     $viHttp = new CVoxImplantHttp();
     $result = $viHttp->AttachPhoneNumber($type, $country, $regionId, $number, $countryState);
     if ($result->result && !empty($result->phone_numbers)) {
         foreach ($result->phone_numbers as $number) {
             $arPhones[$number->phone_number] = '+' . $number->phone_number;
         }
     }
     foreach ($arPhones as $phone => $phoneName) {
         $arFields = array('SEARCH_ID' => $phone, 'PHONE_NAME' => $phoneName, 'MELODY_LANG' => $country == 'RU' ? 'RU' : ($country == 'DE' ? 'DE' : 'EN'));
         $result = VI\ConfigTable::add($arFields);
         if ($result) {
             $userId = $GLOBALS['USER']->GetId();
             if ($userId > 0) {
                 VI\QueueTable::add(array('CONFIG_ID' => $result->getId(), 'USER_ID' => $userId, 'STATUS' => 'OFFLINE'));
             }
             $arResult[] = array('ID' => $result->getId(), 'SEARCH_ID' => $phone);
             if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) {
                 CVoxImplantConfig::SetPortalNumber($arFields['SEARCH_ID']);
             }
         }
     }
     if (!empty($arPhones)) {
         CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, true);
     }
     return $arResult;
 }
Exemple #3
0
 public static function AttachPhoneNumber($country, $regionId, $number = '', $countryState = '', $type = self::PHONE_TYPE_FIXED)
 {
     $arResult = array();
     if (!in_array($type, array(self::PHONE_TYPE_FIXED, self::PHONE_TYPE_TOLLFREE, self::PHONE_TYPE_TOLLFREE804, self::PHONE_TYPE_MOBILE, self::PHONE_TYPE_MOSCOW495))) {
         return $arResult;
     }
     if ($country == 'RU' && $regionId == '15') {
         $type = 'MOSCOW495';
     }
     $arPhones = array();
     $viHttp = new CVoxImplantHttp();
     $result = $viHttp->AttachPhoneNumber($type, $country, $regionId, $number, $countryState);
     if ($result->result && !empty($result->phone_numbers)) {
         foreach ($result->phone_numbers as $number) {
             $arPhones[$number->phone_number]['PHONE_NUMBER'] = '+' . $number->phone_number;
             $arPhones[$number->phone_number]['VERIFICATION_REGION'] = isset($number->required_verification) ? $number->required_verification : '';
             $arPhones[$number->phone_number]['VERIFICATION_STATUS'] = isset($number->verification_status) ? $number->verification_status : 'VERIFIED';
             $arPhones[$number->phone_number]['VERIFICATION_UNVERIFIED_HOLD_UNTIL'] = $arPhones[$number->phone_number]['VERIFICATION_STATUS'] != 'VERIFIED' && isset($number->unverified_hold_until) ? $number->unverified_hold_until : '';
         }
         CVoxImplantHistory::WriteToLog($arPhones, 'ATTACHED PHONES');
     } else {
         CVoxImplantHistory::WriteToLog($viHttp->GetError(), 'ERROR WHILE ATTACH');
     }
     foreach ($arPhones as $phone => $phoneObj) {
         $melodyLang = 'EN';
         if ($country == 'RU') {
             $melodyLang = 'RU';
         } else {
             if ($country == 'DE') {
                 $melodyLang = 'DE';
             } else {
                 if ($country == 'UA') {
                     $melodyLang = 'UA';
                 }
             }
         }
         $arFields = array('SEARCH_ID' => $phone, 'PHONE_NAME' => $phoneObj['PHONE_NUMBER'], 'PHONE_VERIFIED' => $phoneObj['VERIFICATION_STATUS'] == 'VERIFIED' ? 'Y' : 'N', 'PHONE_COUNTRY_CODE' => $country, 'MELODY_LANG' => $melodyLang);
         $result = VI\ConfigTable::add($arFields);
         if ($result) {
             $userId = $GLOBALS['USER']->GetId();
             if ($userId > 0) {
                 VI\QueueTable::add(array('CONFIG_ID' => $result->getId(), 'USER_ID' => $userId, 'STATUS' => 'OFFLINE'));
             }
             $arResult[] = array('ID' => $result->getId(), 'SEARCH_ID' => $phone);
             if (CVoxImplantConfig::GetPortalNumber() == CVoxImplantConfig::LINK_BASE_NUMBER) {
                 CVoxImplantConfig::SetPortalNumber($arFields['SEARCH_ID']);
             }
         }
     }
     if (!empty($arPhones)) {
         CVoxImplantConfig::SetModeStatus(CVoxImplantConfig::MODE_RENT, true);
     }
     return $arResult;
 }