use Bitrix\Highloadblock as HL; use Bitrix\Main\Entity; use Bitrix\Main; include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/hlclass.php"); include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/userfield/htmltype.php"); include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/constant.php"); if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/agents.php")) require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/agents.php"); include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/event.php"); CModule::IncludeModule('highloadblock'); function get_hl_block_class_by_table_name($name) { $hl_class=false; $rsData = HL\HighloadBlockTable::getList(array('filter'=>array('TABLE_NAME'=>$name))); if ($HLData = $rsData->fetch()) { $hl_class=array(); $entity = HL\HighloadBlockTable::compileEntity($HLData); $hl_class['class'] = $entity->getDataClass(); $hl_class['table_name'] = $name; $hl_class['ID'] = $HLData['ID']; } return $hl_class; } define('SECTION_ID_LABEL_NEW','930'); define('SECTION_ID_LABEL_SALE','847'); define('PRICE_TEXT', [ '12' => 'T.', '13' => 'E.', '14'=>'P.', ] );/* define("RE_SITE_KEY","6Lcl20kqAAAAAEFf9JXnvNHmt1bw0iVHLUwJ9Q47"); define("RE_SEC_KEY","6Lcl20kqAAAAALPcGo42QYa5Qy6hi8p_1xQeUh7P"); */ define("RE_SITE_KEY","6LdLWaIqAAAAALc9O56qwCe4HlcPh2omSELsdq8o"); define("RE_SEC_KEY", "6LdLWaIqAAAAAETqCfnpWRL7HorMfm8upFXgA"); function num2word($num, $words) { $num = $num % 100; if ($num > 19) $num = $num % 10; switch ($num) { case 1: {return($words[0]);} case 2: case 3: case 4: {return($words[1]);} default: {return($words[2]);} } } global $language_revolution; $language_revolution=LANGUAGE_ID=='en'?'EN':''; AddEventHandler("main", "OnAfterUserAdd", "OnAfterUserAddHandler"); function OnAfterUserAddHandler(&$arFields) { $errors = Array(); if($arFields["ID"]>0 && $arFields["UF_SUBSCRIBE"]) { if(CModule::IncludeModule("subscribe")) { $USER_ID = $arFields["ID"]; $EMAIL = $arFields["EMAIL"]; $arFilter = array( "ACTIVE" => "Y", "LID" => "s1", "VISIBLE"=>"Y", ); $rsRubrics = CRubric::GetList(array(), $arFilter); $arRubrics = array(); while($arRubric = $rsRubrics->GetNext()) $arRubrics[] = $arRubric["ID"]; $obSubscription = new CSubscription; $rsSubscription = $obSubscription->GetList(array(), array("USER_ID" => $USER_ID)); $arSubscription = $rsSubscription->Fetch(); if(is_array($arSubscription)) { $rs = $obSubscription->Update( $arSubscription["ID"], array( "FORMAT" => "html", "RUB_ID" => $arRubrics, ), false ); } else { $ID = $obSubscription->Add(array( "USER_ID" => $USER_ID, "ACTIVE" => "Y", "EMAIL" => $EMAIL, "FORMAT" => "html", "CONFIRMED" => "Y", "SEND_CONFIRM" => "N", "RUB_ID" => $arRubrics, )); } } } } global $APPLICATION; $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandlerCompatible("main", "OnEndBufferContent", "ChangeContent"); function ChangeContent(&$content) { global $USER, $APPLICATION; $request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest(); $isAdmin = $GLOBALS["USER"]->IsAdmin(); if (strpos($request->getRequestUri(), "/bitrix") === false && !$request->isAjaxRequest() /*&& !$isAdmin*/) { $arBackParametrs = ["DELETE_SPACES" => "Y", "IMG_WEBP" => "Y"]; //IMG_LAZYLOAD// $GLOBALS["IMG_LAZYLOAD"] = false; //IMG_WEBP// $webpSupport = strpos($_SERVER["HTTP_ACCEPT"], "image/webp") !== false || strpos( $_SERVER["HTTP_USER_AGENT"], " Chrome/" ) !== false ? true : false; $GLOBALS["IMG_WEBP"] = $arBackParametrs["IMG_WEBP"] == "Y" && function_exists("imagewebp") && !CSite::inDir(SITE_DIR . "personal/"); if ($GLOBALS["IMG_LAZYLOAD"] || $GLOBALS["IMG_WEBP"]) { if ($GLOBALS["IMG_WEBP"]) { $content = preg_replace("/]*)>/", "", $content); } $content = preg_replace_callback("/]+src=\"([^\"]+)\"/is", function ($matches) { if ($GLOBALS["IMG_LAZYLOAD"]) { $matches[0] = str_replace(" src=", " src='/load.svg' data-lazyload-src=", $matches[0]); } if ($GLOBALS["IMG_WEBP"]) { if (substr($matches[1], 0, 4) != "http" && substr($matches[1], 0, 2) != "//" && substr( $matches[1], 0, 11 ) != "data:image/") { $pathinfo = pathinfo($matches[1]); if (in_array($pathinfo["extension"], array("jpg", "jpeg", "png"))) { $newFile = $_SERVER["DOCUMENT_ROOT"] . $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp"; if (file_exists($newFile)) { $newSrc = $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp?" . filemtime( $newFile ); $matches[0] = str_replace($matches[1], $newSrc, $matches[0]); } else { if (convertImgToWebp($matches[1])) { $newSrc = $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp?" . filemtime( $newFile ); $matches[0] = str_replace($matches[1], $newSrc, $matches[0]); } } unset($newSrc, $newFile); } unset($pathinfo); } } return $matches[0]; }, $content); $content = preg_replace_callback("/background-image:url\(([^\"]+)\)/is", function ($matches) { if ($GLOBALS["IMG_WEBP"]) { if (substr($matches[1], 0, 4) != "http" && substr($matches[1], 0, 2) != "//" && substr( $matches[1], 0, 11 ) != "data:image/") { $pathinfo = pathinfo($matches[1]); if (in_array($pathinfo["extension"], array("jpg", "jpeg", "png"))) { $newFile = $_SERVER["DOCUMENT_ROOT"] . $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp"; if (file_exists($newFile)) { $newSrc = $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp?" . filemtime( $newFile ); $matches[0] = str_replace($matches[1], $newSrc, $matches[0]); } else { if (convertImgToWebp($matches[1])) { $newSrc = $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp?" . filemtime( $newFile ); $matches[0] = str_replace($matches[1], $newSrc, $matches[0]); } } unset($newSrc, $newFile); } unset($pathinfo); } } return $matches[0]; }, $content); } } } function convertImgToWebp($src) { return false; $pathinfo = pathinfo($src); if (!in_array($pathinfo["extension"], array("jpg", "jpeg", "png"))) { return false; } $newFile = $_SERVER["DOCUMENT_ROOT"] . $pathinfo["dirname"] . "/" . $pathinfo["filename"] . ".webp"; if (file_exists($newFile)) { return false; } $sourceFile = $_SERVER["DOCUMENT_ROOT"] . $src; $sourceFileSize = getimagesize($sourceFile); switch ($sourceFileSize["mime"]) { case "image/jpeg": $im = imagecreatefromjpeg($sourceFile); break; case "image/png": $pngimg = imagecreatefrompng($sourceFile); $w = imagesx($pngimg); $h = imagesy($pngimg); $im = imagecreatetruecolor($w, $h); imageAlphaBlending($im, false); imageSaveAlpha($im, true); $trans = imagecolorallocatealpha($im, 0, 0, 0, 127); imagefilledrectangle($im, 0, 0, $w - 1, $h - 1, $trans); imagecopy($im, $pngimg, 0, 0, 0, 0, $w, $h); break; } // $imagewebp = imagewebp($im, $newFile, 75); //imagedestroy($im); return $imagewebp ? true : false; } $eventManager->addEventHandler( 'main', 'OnUserTypeBuildList', [ '\IT23\UserField\HtmlType', 'getUserTypeDescription' ] );
[RuntimeException] 
Could not start session because headers have already been sent. "/home/bitrix/www/local/php_interface/init.php":18. (0)
/home/bitrix/www/bitrix/modules/main/lib/session/session.php:143
#0: Bitrix\Main\Session\Session->start()
	/home/bitrix/www/bitrix/modules/main/lib/session/kernelsessionproxy.php:47
#1: Bitrix\Main\Session\KernelSessionProxy->start()
	/home/bitrix/www/bitrix/modules/main/include.php:182
#2: require_once(string)
	/home/bitrix/www/bitrix/modules/main/include/prolog_before.php:19
#3: require_once(string)
	/home/bitrix/www/bitrix/modules/main/include/prolog.php:10
#4: require_once(string)
	/home/bitrix/www/bitrix/header.php:1
#5: require(string)
	/home/bitrix/www/catalog/index.php:2
#6: include_once(string)
	/home/bitrix/www/bitrix/modules/main/include/urlrewrite.php:128
#7: include_once(string)
	/home/bitrix/www/bitrix/urlrewrite.php:2
----------