GetGroupRight("sale"); if ($saleModulePermissions < "W") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); Loader::includeModule('sale'); IncludeModuleLangFile(__FILE__); //$APPLICATION->SetAdditionalCSS("/bitrix/js/intranet/intranet-common.css"); ClearVars(); $crmIntegrationData = COption::GetOptionString("sale", "~crm_integration", ""); $arCrmIntegration = unserialize($crmIntegrationData, ['allowed_classes' => false]); if (!is_array($arCrmIntegration)) $arCrmIntegration = array(); //$arCrmIntegration = array(); if ($_SERVER["REQUEST_METHOD"] != "POST" || $do_create_link != "Y") $_REQUEST["CRM_BUS_USER_SET_C"] = "Y"; $errorMessage = ""; $successMessage = ""; if ($_SERVER["REQUEST_METHOD"] == "POST" && $do_create_link == "Y" && $saleModulePermissions >= "W" && check_bitrix_sessid()) { if (!isset($_POST["CRM_URL_SERVER"]) || empty($_POST["CRM_URL_SERVER"])) { $errorMessage .= GetMessage("SPTEN_SCRM_NO_SITE")."
"; } else { $arCrmUrl = parse_url($_POST["CRM_URL_SERVER"]); $crmUrlHost = $arCrmUrl["host"] ? $arCrmUrl["host"] : $arCrmUrl["path"]; $crmUrlScheme = $arCrmUrl["scheme"]? mb_strtolower($arCrmUrl["scheme"]) : mb_strtolower($_POST["CRM_URL_SCHEME"]); $crmUrlPort = $arCrmUrl["port"] ? intval($arCrmUrl["port"]) : intval($_POST["CRM_URL_PORT"]); switch ($crmUrlScheme) { case 'https': if (!function_exists("openssl_verify")) $errorMessage .= "OpenSSL PHP extention required"."
"; $crmUrlScheme = 'ssl://'; if ($crmUrlPort <= 0) $crmUrlPort = 443; break; default: $crmUrlScheme = ''; if ($crmUrlPort <= 0) $crmUrlPort = 80; break; } if (empty($crmUrlHost)) $errorMessage .= GetMessage("SPTEN_SCRM_WRONG_SITE")."
"; } $crmLogin = $_POST["CRM_LOGIN"]; $crmPassword = $_POST["CRM_PASSWORD"]; if ($crmLogin == '') $errorMessage .= GetMessage("SPTEN_SCRM_NO_LOGIN")."
"; if ($crmPassword == '') $errorMessage .= GetMessage("SPTEN_SCRM_NO_PWD")."
"; $createNewSaleUser = ($_POST["CRM_BUS_USER_SET_C"] == "Y"); if (!$createNewSaleUser) { $saleLogin = $_POST["CRM_BUS_USER_LOGIN"]; $salePassword = $_POST["CRM_BUS_USER_PASSWORD"]; if ($saleLogin == '') { $errorMessage .= GetMessage("SPTEN_SCRM_NO_SALE_LOGIN")."
"; } else { $dbSaleLoginUser = CUser::GetByLogin($saleLogin); if (!$arSaleLoginUser = $dbSaleLoginUser->Fetch()) $errorMessage .= GetMessage("SPTEN_SCRM_WRONG_SALE_LOGIN")."
"; } if ($salePassword == '') $errorMessage .= GetMessage("SPTEN_SCRM_NO_SALE_PWD")."
"; } if ($createNewSaleUser) { $userId = 0; $groupId = 0; if (empty($errorMessage)) { $saleLogin = "BX_CRM_IMPORT_USER_".randString(5, "ABCDEFGHIJKLNMOPQRSTUVWXYZ"); $idx = 0; $saleLoginTmp = $saleLogin; $dbSaleLoginUser = CUser::GetByLogin($saleLogin); while ($arSaleLoginUser = $dbSaleLoginUser->Fetch()) { $idx++; if ($idx > 10) { $saleLogin = $saleLogin.time(); break; } else { $saleLogin = $saleLoginTmp.$idx; } $dbSaleLoginUser = CUser::GetByLogin($saleLogin); } } if (empty($errorMessage)) { $defaultGroup = COption::GetOptionString("main", "new_user_registration_def_group", ""); if ($defaultGroup != "") { $arDefaultGroup = explode(",", $defaultGroup); } else { $arDefaultGroup = []; } $salePassword = \CUser::GeneratePasswordByPolicy($arDefaultGroup); $saleEMail = $saleLogin.'@'.$_SERVER["SERVER_NAME"]; if (!check_email($saleEMail)) $saleEMail = $saleLogin.'@temporary.temp'; $arUserFields = array( "LOGIN" => $saleLogin, "NAME" => "CRM", "LAST_NAME" => "IMPORT", "PASSWORD" => $salePassword, "PASSWORD_CONFIRM" => $salePassword, "EMAIL" => $saleEMail, "GROUP_ID" => $arDefaultGroup, "ACTIVE" => "Y", "LID" => SITE_ID, ); $user = new CUser; $userId = $user->Add($arUserFields); $userId = intval($userId); if ($userId <= 0) $errorMessage .= GetMessage("SPTEN_SCRM_ERR_REG").(($user->LAST_ERROR <> '') ? ": ".$user->LAST_ERROR : ""); } if (empty($errorMessage)) { $group = new CGroup; $arGroupFields = array( "ACTIVE" => "Y", "NAME" => "CRM SALE IMPORT", "USER_ID" => array( array( "USER_ID" => $userId, "DATE_ACTIVE_FROM" => false, "DATE_ACTIVE_TO" => false, ) ) ); $groupId = $group->Add($arGroupFields); $groupId = intval($groupId); if ($groupId <= 0) $errorMessage .= GetMessage("SPTEN_SCRM_ERR_GRP").(($group->LAST_ERROR <> '') ? ": ".$group->LAST_ERROR : ""); } } function __CrmSaleQuery($crmUrlScheme, $crmUrlHost, $crmUrlPort, $crmLogin, $crmPassword, $head, $body, &$errorMessage) { // remove last slash from $crmUrlHost, eg. site.ru/ if (mb_strpos($crmUrlHost, '/') === (mb_strlen($crmUrlHost) - 1)) { $crmUrlHost = mb_substr($crmUrlHost, 0, -1); } $hServer = @fsockopen($crmUrlScheme.$crmUrlHost, $crmUrlPort, $errno, $errstr, 20); if (!$hServer) $errorMessage .= sprintf("[%s] %s", $errno, $errstr)."
"; $arResponseHeaders = array(); $responseBody = ""; if (empty($errorMessage)) { $buffer = "POST /bitrix/components/bitrix/crm.config.external_sale.edit/bus.php HTTP/1.0\r\n"; $buffer .= sprintf("Host: %s:%s\r\n", $crmUrlHost, $crmUrlPort); $buffer .= "Content-type: application/x-www-form-urlencoded; charset=UTF-8\r\n"; $buffer .= sprintf("Authorization: Basic %s\r\n", base64_encode($crmLogin.":".$crmPassword)); $buffer .= sprintf("Content-length: %s\r\n", ((function_exists('mb_strlen')? mb_strlen($body, 'latin1') : mb_strlen($body)))); $buffer .= $head; $buffer .= "\r\n"; $buffer .= $body; fputs($hServer, $buffer); while ($line = fgets($hServer, 4096)) { if ($line == "\r\n") break; $arResponseHeaders[] = trim($line); } if (count($arResponseHeaders) <= 0) $errorMessage .= GetMessage("SPTEN_SCRM_ERR_CONNECT")."
"; } if (empty($errorMessage)) { $contentLength = null; foreach ($arResponseHeaders as $value) { if (preg_match('#Content-Length:\s*([0-9]*)#i', $value, $arMatches)) { $contentLength = intval($arMatches[1]); break; } if (preg_match('#HTTP/1\.1\s+204#i', $value)) { $contentLength = 0; break; } } if ($contentLength === 0) { } elseif ($contentLength > 0) { $lb = $contentLength; while ($lb > 0) { $responseBody .= fread($hServer, $lb); $lb = $contentLength - ((function_exists('mb_strlen')? mb_strlen($responseBody, 'latin1') : mb_strlen($responseBody))); } } else { stream_set_timeout($hServer, 0); while (!feof($hServer)) { $responseBody .= fread($hServer, 4096); if (mb_substr($responseBody, -9) == "\r\n\r\n0\r\n\r\n") { $responseBody = mb_substr($responseBody, 0, -9); break; } } stream_set_timeout($hServer, 20); } fclose($hServer); } return array($arResponseHeaders, $responseBody); } if (empty($errorMessage)) { $body = array( "SERVER" => ($GLOBALS["APPLICATION"]->IsHTTPS() ? "https" : "http")."://".$_SERVER["HTTP_HOST"], "LOGIN" => $saleLogin, "PASSWORD" => $salePassword, "SITE_NAME" => COption::GetOptionString("main", "site_name", ""), ); $body1 = http_build_query($body); if (!defined("BX_UTF")) $body1 = CharsetConverter::ConvertCharset($body1, SITE_CHARSET, "UTF-8"); list($arResponseHeaders, $responseBody) = __CrmSaleQuery($crmUrlScheme, $crmUrlHost, $crmUrlPort, $crmLogin, $crmPassword, "", $body1, $errorMessageTmp); if (!empty($errorMessageTmp)) $errorMessage .= $errorMessageTmp; } if (empty($errorMessage)) { $isUTF = CUtil::DetectUTF8($responseBody); if (!$isUTF && SITE_CHARSET == "UTF-8") { $responseBody = CharsetConverter::ConvertCharset($responseBody, SITE_CHARSET, "CP1251"); } if (mb_strpos($responseBody, "bsid=") !== false) { $p1 = mb_strpos($responseBody, "bsid="); $p2 = mb_strpos($responseBody, ";", $p1); $body["sessid"] = mb_substr($responseBody, $p1 + 5, $p2 - $p1 - 5); $body1 = http_build_query($body); if (!defined("BX_UTF")) $body1 = CharsetConverter::ConvertCharset($body1, SITE_CHARSET, "UTF-8"); $cookies = []; $cookieRe = '/^Set-Cookie:(.+?)=(.+?);/'; foreach ($arResponseHeaders as $h) { if (preg_match($cookieRe, $h, $m)) { $cookies[] = trim($m[1]) . '=' . trim($m[2]); } } $head1 = "Cookie: " . join("; ", $cookies) . "\r\n"; list($arResponseHeaders, $responseBody) = __CrmSaleQuery($crmUrlScheme, $crmUrlHost, $crmUrlPort, $crmLogin, $crmPassword, $head1, $body1, $errorMessageTmp); if (!empty($errorMessageTmp)) $errorMessage .= $errorMessageTmp; } } if (empty($errorMessage)) { list($httpVersion, $statusCode, $reasonPhrase) = explode(' ', $arResponseHeaders[0], 3); $responseBody = ltrim($responseBody); if(!defined("BX_UTF")) $responseBody = $APPLICATION->ConvertCharset($responseBody, "UTF-8", LANG_CHARSET); if (($statusCode == 401) || (mb_strpos($responseBody, "form_auth") !== false) || (mb_strpos($responseBody, "Permission denied") !== false)) { $errorMessage .= GetMessage("SPTEN_SCRM_ERR_AUTH")."
"; } else { $rcode = ToUpper(mb_substr($responseBody, 0, 2)); if ($rcode == "ER") $errorMessage .= mb_substr($responseBody, 2)."
"; elseif ($rcode != "OK") $errorMessage .= GetMessage("SPTEN_SCRM_ERR_ANSWER")."
"; else $crmUrl4Import = trim(mb_substr($responseBody, 2)); } } if (empty($errorMessage)) { if ($createNewSaleUser) { $APPLICATION->SetGroupRight("sale", $groupId, "W", false); CGroup::SetModulePermission($groupId, "catalog", CTask::GetIdByLetter("R", "catalog")); CGroup::SetModulePermission($groupId, "main", CTask::GetIdByLetter("R", "main")); if (Loader::includeModule('iblock') && Loader::includeModule('catalog')) { $catalogs = array(); $iterator = Catalog\CatalogIblockTable::getList(array( 'select' => array('IBLOCK_ID', 'PRODUCT_IBLOCK_ID') )); while ($row = $iterator->fetch()) { $row['IBLOCK_ID'] = (int)$row['IBLOCK_ID']; $catalogs[$row['IBLOCK_ID']] = $row['IBLOCK_ID']; $row['PRODUCT_IBLOCK_ID'] = (int)$row['PRODUCT_IBLOCK_ID']; if ($row['PRODUCT_IBLOCK_ID'] > 0) $catalogs[$row['PRODUCT_IBLOCK_ID']] = $row['PRODUCT_IBLOCK_ID']; } unset($row, $iterator); if (!empty($catalogs)) { $iblockObject = new \CIBlock(); $rightsId = null; $row = Main\TaskTable::getList(array( 'select' => array('ID'), 'filter' => array('=LETTER' => 'S', '=MODULE_ID' => 'iblock', '=SYS' => 'Y') ))->fetch(); if (!empty($row)) $rightsId = $row['ID']; unset($row); $groupCode = 'G'.$groupId; foreach ($catalogs as $id) { $rightsMode = \CIBlock::GetArrayByID($id, 'RIGHTS_MODE'); if ($rightsMode == Iblock\IblockTable::RIGHTS_SIMPLE) { $rights = \CIBlock::GetGroupPermissions($id); $rights[$groupId] = 'S'; \CIBlock::SetPermission($id, $rights); } elseif ($rightsMode == Iblock\IblockTable::RIGHTS_EXTENDED && $rightsId !== null) { $rightsObject = new \CIBlockRights($id); $rights = $rightsObject->GetRights(); $rights['n0'] = array( 'GROUP_CODE' => $groupCode, 'DO_INHERIT' => 'Y', 'IS_INHERITED' => 'N', 'OVERWRITED' => 0, 'TASK_ID' => $rightsId, 'XML_ID' => null, 'ENTITY_TYPE' => 'iblock', 'ENTITY_ID' => $id ); $rightsObject->SetRights($rights); } } unset($rights, $id); unset($iblockObject); } unset($catalogs); } $opt = COption::GetOptionString("sale", "1C_SALE_GROUP_PERMISSIONS", ""); $opt .= (($opt != "") ? "," : "").$groupId; COption::SetOptionString("sale", "1C_SALE_GROUP_PERMISSIONS", $opt); function GetAccessArrTmp() { $PERM = array(); @include($_SERVER["DOCUMENT_ROOT"]."/bitrix/.access.php"); return $PERM; } $arFPermsTmp = GetAccessArrTmp(); $arFPerms = (array_key_exists("admin", $arFPermsTmp)) ? $arFPermsTmp["admin"] : array(); $arFPerms[$groupId.""] = "R"; $APPLICATION->SetFileAccessPermission(array(SITE_ID, "/bitrix/admin"), $arFPerms); } LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANGUAGE_ID."&success=Y&crm_imp_url=".urlencode(($crmUrlScheme == 'ssl://' ? "https" : "http")."://".$crmUrlHost.":".$crmUrlPort.$crmUrl4Import)."&crm_url=".urlencode(($crmUrlScheme == 'ssl://' ? "https" : "http")."://".$crmUrlHost.":".$crmUrlPort)); } else { if ($createNewSaleUser) { if ($groupId > 0) { $group = new CGroup(); $group->Delete($groupId); } if ($userId > 0) { CUser::Delete($userId); } } } } if ($_SERVER["REQUEST_METHOD"] == "GET" && $_REQUEST["clear_crm_stat"] == "Y" && $saleModulePermissions >= "W" && check_bitrix_sessid()) { if (!isset($_REQUEST["clear_crm_stat_url"])) { COption::SetOptionString("sale", "~crm_integration", ""); } else { $ar = array(); foreach ($arCrmIntegration as $k => $v) { if ($k != $_REQUEST["clear_crm_stat_url"]) $ar[$k] = $v; } COption::SetOptionString("sale", "~crm_integration", serialize($ar)); } LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANGUAGE_ID); } require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/sale/prolog.php"); $APPLICATION->SetTitle(GetMessage("SPTEN_CRM_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); CAdminMessage::ShowMessage($errorMessage); if ($_REQUEST["success"] == "Y") { $crmIntegrationUrl = htmlspecialcharsbx($_REQUEST["crm_url"]); $crmIntegrationImpUrl = htmlspecialcharsbx($_REQUEST["crm_imp_url"]); $find = "/^(http:\/\/|https:\/\/|ssl:\/\/)/i"; if(!preg_match($find, $crmIntegrationUrl, $res) && !empty($_REQUEST["crm_url"])) $crmIntegrationUrl = "http://".$crmIntegrationUrl; if(!preg_match($find, $crmIntegrationImpUrl, $res) && !empty($_REQUEST["crm_imp_url"])) $crmIntegrationImpUrl = "http://".$crmIntegrationImpUrl; $successMessage = GetMessage( "SPTEN_SCRM_SUCCESS_MESS", array( "#URL#" => $crmIntegrationUrl, "#PATH#" => $crmIntegrationUrl."/crm/configs/external_sale/", "#IMP#" => !empty($crmIntegrationImpUrl) ? $crmIntegrationImpUrl : $crmIntegrationUrl."/crm/configs/external_sale/", ) ); $successMessage .= '

'.GetMessage("SPTEN_SCRM_CRM_BTN").'
'; CAdminMessage::ShowMessage(array("MESSAGE"=>$successMessage, "TYPE"=>"OK", "HTML"=>true)); } ?>


Fatal error: Uncaught Error: Call to undefined function GetMessage() in D:\ktt\ttepla.com\public_html\bitrix\modules\sale\admin\crm.php:516 Stack trace: #0 {main} thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\sale\admin\crm.php on line 516