if ($arResult["ITEM"]["PORTAL_MODE"] == CVoxImplantConfig::MODE_SIP) { $viSip = new CVoxImplantSip(); $arResult["SIP_CONFIG"] = $viSip->Get($arParams["ID"]); $arResult["SIP_CONFIG"]['PHONE_NAME'] = $arResult['ITEM']['PHONE_NAME']; } } if (empty($arResult["ITEM"])) { return; } if ($_REQUEST["action"] == "save" && check_bitrix_sessid()) { $post = \Bitrix\Main\Context::getCurrent()->getRequest()->getPostList()->toArray(); $skipSaving = false; $arFieldsSip = array(); if (isset($post['SIP'])) { $viSip = new CVoxImplantSip(); $result = $viSip->Update($arParams["ID"], array('TYPE' => $arResult["SIP_CONFIG"]["TYPE"], 'PHONE_NAME' => $post['SIP']['PHONE_NAME'], 'SERVER' => $post['SIP']['SERVER'], 'LOGIN' => $post['SIP']['LOGIN'], 'PASSWORD' => $post['SIP']['PASSWORD'], 'NEED_UPDATE' => $post['SIP']['NEED_UPDATE'])); $skipSaving = !$result; $arFieldsSip = array('PHONE_NAME' => $post['SIP']['PHONE_NAME'], 'SERVER' => $post['SIP']['SERVER'], 'LOGIN' => $post['SIP']['LOGIN'], 'PASSWORD' => $post['SIP']['PASSWORD']); } if (IsModuleInstalled('timeman')) { $post["TIMEMAN"] = isset($post["TIMEMAN"]) ? 'Y' : 'N'; } else { $post["TIMEMAN"] = 'N'; } if ($post["NO_ANSWER_RULE"] == CVoxImplantIncoming::RULE_PSTN_SPECIFIC) { if (strlen($post["FORWARD_NUMBER"]) <= 0) { $post["NO_ANSWER_RULE"] = CVoxImplantIncoming::RULE_PSTN; } else { $post["FORWARD_NUMBER"] = substr($post["FORWARD_NUMBER"], 0, 20); } } else {
public static function sipUpdate($arParams, $nav, $server) { if (!CVoxImplantMain::CheckAccess()) { throw new \Bitrix\Rest\AccessException(); } $arParams = array_change_key_case($arParams, CASE_UPPER); $dbResCnt = \Bitrix\Voximplant\SipTable::getList(array('filter' => array('CONFIG_ID' => $arParams["CONFIG_ID"], 'APP_ID' => $server->getAppId()), 'select' => array("CNT" => new Bitrix\Main\Entity\ExpressionField('CNT', 'COUNT(1)')))); $arResCnt = $dbResCnt->fetch(); if (!$arResCnt || $arResCnt["CNT"] <= 0) { throw new Bitrix\Rest\RestException("Specified CONFIG_ID is not found", Bitrix\Rest\RestException::ERROR_NOT_FOUND, CRestServer::STATUS_NOT_FOUND); } if (!isset($arParams['TYPE'])) { $arParams['TYPE'] = CVoxImplantSip::TYPE_CLOUD; } $arUpdate = array('TYPE' => $arParams['TYPE'], 'NEED_UPDATE' => "Y"); if (isset($arParams['TITLE'])) { $arUpdate['TITLE'] = $arParams['TITLE']; } if (isset($arParams['SERVER'])) { $arUpdate['SERVER'] = $arParams['SERVER']; } if (isset($arParams['LOGIN'])) { $arUpdate['LOGIN'] = $arParams['LOGIN']; } if (isset($arParams['PASSWORD'])) { $arUpdate['PASSWORD'] = $arParams['PASSWORD']; } if (count($arUpdate) == 2) { return 1; } $viSip = new CVoxImplantSip(); $result = $viSip->Update($arParams["CONFIG_ID"], $arUpdate); if (!$result || $viSip->GetError()->error) { throw new Bitrix\Rest\RestException($viSip->GetError()->msg, $viSip->GetError()->code, CRestServer::STATUS_WRONG_REQUEST); } return 1; }