/** * OnEndBufferContent handler * @param $content */ public static function onEndBufferContent(&$content) { global $APPLICATION; if (self::getUseAppCache() == true) { //Do we use html5 application cache? \Bitrix\Main\Data\AppCacheManifest::onEndBufferContent($content); } else { \Bitrix\Main\Data\AppCacheManifest::checkObsoleteManifest(); } //it checks if the manifest is still alive. $selfObject = self::getInstance(); $ids = $selfObject->getDynamicIDs(); if (count($ids) > 0) { $match = array(); $regexp = "/##start_frame_cache_(" . implode("|", $ids) . ")##(.+?)##end_frame_cache_(?:" . implode("|", $ids) . ")##/is"; preg_match_all($regexp, $content, $match); /* Notes: $match[0] - array of dynamic blocks with macros' $match[1] - ids of the dynamic blocks $match[2] - array of dynamic blocks */ $count = count($match[1]); if (self::$isBackgroundRequest) { //$fcache->arDynamicData = array_combine($match[1], $match[2]); for ($i = 0; $i < $count; $i++) { $selfObject->arDynamicData[] = array("ID" => $match[1][$i], "CONTENT" => $match[2][$i], "HASH" => md5($match[2][$i])); } } else { $replacedArray = array(); for ($i = 0; $i < $count; $i++) { $replacedArray[] = '<div id="bxdynamic_' . $match[1][$i] . '"></div>'; } $content = str_replace($match[0], $replacedArray, $content); } } if (self::$isBackgroundRequest) { header("Content-Type: application/x-javascript"); $content = array("isManifestUpdated" => \Bitrix\Main\Data\AppCacheManifest::getInstance()->getIsModified(), "dynamicBlocks" => $selfObject->arDynamicData); if (!Application::getInstance()->isUtfMode()) { //TODO I use it because there is no similar method in the new Bitrix Framework yet $content = $APPLICATION->convertCharsetArray($content, SITE_CHARSET, "UTF-8"); } $content = json_encode($content); } }
/** * OnEndBufferContent handler * @param $content */ public static function onEndBufferContent(&$content) { global $APPLICATION; global $USER; if (self::getUseAppCache() == true) { //Do we use html5 application cache? \Bitrix\Main\Data\AppCacheManifest::onEndBufferContent($content); } else { \Bitrix\Main\Data\AppCacheManifest::checkObsoleteManifest(); } //it checks if the manifest is still alive. $selfObject = self::getInstance(); $ids = $selfObject->getDynamicIDs(); if (count($ids) > 0) { $match = array(); $regexp = "/##start_frame_cache_(" . implode("|", $ids) . ")##(.+?)##end_frame_cache_(?:" . implode("|", $ids) . ")##/is"; preg_match_all($regexp, $content, $match); /* Notes: $match[0] - array of dynamic blocks with macros' $match[1] - ids of the dynamic blocks $match[2] - array of dynamic blocks */ $count = count($match[1]); if (self::$isBackgroundRequest) { //$fcache->arDynamicData = array_combine($match[1], $match[2]); for ($i = 0; $i < $count; $i++) { $selfObject->arDynamicData[] = array("ID" => $match[1][$i], "CONTENT" => $match[2][$i], "HASH" => md5($match[2][$i])); } } else { $replacedArray = array(); for ($i = 0; $i < $count; $i++) { $replacedArray[] = '<div id="bxdynamic_' . $match[1][$i] . '"></div>'; } $content = str_replace($match[0], $replacedArray, $content); } } if (self::$isBackgroundRequest) { header("Content-Type: application/x-javascript"); $autoTimeZone = "N"; if (is_object($GLOBALS["USER"])) { $autoTimeZone = trim($USER->GetParam("AUTO_TIME_ZONE")); } $content = array("js" => $APPLICATION->arHeadScripts, "additional_js" => $APPLICATION->arAdditionalJS, "lang" => array('LANGUAGE_ID' => LANGUAGE_ID, 'FORMAT_DATE' => FORMAT_DATE, 'FORMAT_DATETIME' => FORMAT_DATETIME, 'COOKIE_PREFIX' => \COption::GetOptionString("main", "cookie_name", "BITRIX_SM"), 'USER_ID' => $USER->GetID(), 'SERVER_TIME' => time(), 'SERVER_TZ_OFFSET' => date("Z"), 'USER_TZ_OFFSET' => \CTimeZone::GetOffset(), 'USER_TZ_AUTO' => $autoTimeZone == 'N' ? 'N' : 'Y', 'bitrix_sessid' => bitrix_sessid()), "css" => $APPLICATION->GetCSSArray(), "isManifestUpdated" => \Bitrix\Main\Data\AppCacheManifest::getInstance()->getIsModified(), "dynamicBlocks" => $selfObject->arDynamicData); if (!\Bitrix\Main\Application::getInstance()->isUtfMode()) { //TODO I use it because there is no similar method in the new Bitrix Framework yet $content = $APPLICATION->convertCharsetarray($content, SITE_CHARSET, "UTF-8"); } $content = json_encode($content); } }