Exemplo n.º 1
0
 /**
  * OnEndBufferContent handler
  * There are two variants of content's modification in this method.
  * The first one:
  * If it's ajax-hit the content will be replaced by json data with dynamic blocks,
  * javascript files and etc. - dynamic part
  *
  * The second one:
  * If it's simple hit the content will be modified also,
  * all dynamic blocks will be cutted out of the content - static part.
  *
  * @param $content
  */
 public function onEndBufferContent(&$content)
 {
     global $APPLICATION;
     $dividedData = self::getInstance()->getDividedPageData($content);
     $htmlCacheChanged = false;
     if (self::getUseHTMLCache()) {
         $staticHTMLCache = \Bitrix\Main\Data\StaticHtmlCache::getInstance();
         if ($staticHTMLCache->isCacheable()) {
             if (!$staticHTMLCache->isExists() || $staticHTMLCache->getSubstring(-35, 32) !== $dividedData["md5"]) {
                 $staticHTMLCache->delete();
                 $staticHTMLCache->write($dividedData["static"] . "<!--" . $dividedData["md5"] . "-->");
             }
             $frame = self::getInstance();
             $ids = $frame->getDynamicIDs();
             foreach ($ids as $i => $id) {
                 if (isset($frame->containers[$id])) {
                     unset($ids[$i]);
                 }
             }
             $dividedData["static"] = preg_replace(array('/<!--\'start_frame_cache_(' . implode("|", $ids) . ')\'-->/', '/<!--\'end_frame_cache_(' . implode("|", $ids) . ')\'-->/'), array('<div id="bxdynamic_\\1">', '</div>'), $content);
             if ($frame->injectedJS) {
                 if (isset($frame->injectedJS["start"])) {
                     $dividedData["static"] = str_replace($frame->injectedJS["start"], "", $dividedData["static"]);
                 }
             }
         } elseif (!$staticHTMLCache->isCacheable()) {
             $staticHTMLCache->delete();
             return;
         }
     }
     if (self::getUseAppCache() == true) {
         \Bitrix\Main\Data\AppCacheManifest::getInstance()->generate($dividedData["static"]);
     } else {
         \Bitrix\Main\Data\AppCacheManifest::checkObsoleteManifest();
     }
     if (self::isAjaxRequest()) {
         header("Content-Type: application/x-javascript; charset=" . SITE_CHARSET);
         $content = array("js" => $APPLICATION->arHeadScripts, "additional_js" => $APPLICATION->arAdditionalJS, "lang" => \CJSCore::GetCoreMessages(), "css" => $APPLICATION->GetCSSArray(), "htmlCacheChanged" => $htmlCacheChanged, "isManifestUpdated" => \Bitrix\Main\Data\AppCacheManifest::getInstance()->getIsModified(), "dynamicBlocks" => $dividedData["dynamic"], "spread" => array_map(array("CUtil", "JSEscape"), $APPLICATION->GetSpreadCookieUrls()));
         $content = \CUtil::PhpToJSObject($content);
     } else {
         $content = $dividedData["static"];
     }
 }
Exemplo n.º 2
0
 /**
  * * There are two variants of content's modification in this method.
  * The first one:
  * If it's ajax-hit the content will be replaced by json data with dynamic blocks,
  * javascript files and etc. - dynamic part
  *
  * The second one:
  * If it's simple hit the content will be modified also,
  * all dynamic blocks will be cutted out of the content - static part.
  *
  * @param string $content Html page content.
  *
  * @return string
  */
 public function processPageContent($content)
 {
     global $APPLICATION;
     $dividedData = $this->getDividedPageData($content);
     $htmlCacheChanged = false;
     if (self::getUseHTMLCache()) {
         $isLicenseExpired = self::isLicenseExpired();
         $staticHTMLCache = StaticHtmlCache::getInstance();
         if ($staticHTMLCache->isCacheable()) {
             $cacheExists = $staticHTMLCache->exists();
             if ((!$cacheExists || $staticHTMLCache->getMd5() !== $dividedData["md5"]) && !\CHTMLPagesCache::isIE9()) {
                 if ($cacheExists) {
                     $staticHTMLCache->delete();
                 }
                 if (!$isLicenseExpired) {
                     $success = $staticHTMLCache->write($dividedData["static"], $dividedData["md5"]);
                     if ($success) {
                         $htmlCacheChanged = true;
                         $staticHTMLCache->setUserPrivateKey();
                     }
                 }
             } else {
                 if ($isLicenseExpired) {
                     $staticHTMLCache->delete();
                 }
             }
             $dividedData["static"] = $this->replaceInjections($content);
         } else {
             $staticHTMLCache->delete();
             return $this->getAjaxError("not_cacheable");
         }
     }
     if (self::getUseAppCache() == true) {
         AppCacheManifest::getInstance()->generate($dividedData["static"]);
     } else {
         AppCacheManifest::checkObsoleteManifest();
     }
     if (self::isAjaxRequest()) {
         self::sendRandHeader();
         header("Content-Type: application/x-javascript; charset=" . SITE_CHARSET);
         header("X-Bitrix-Composite: Ajax " . ($htmlCacheChanged ? "(changed)" : "(stable)"));
         $content = array("js" => $APPLICATION->arHeadScripts, "additional_js" => $APPLICATION->arAdditionalJS, "lang" => \CJSCore::GetCoreMessages(), "css" => $APPLICATION->GetCSSArray(), "htmlCacheChanged" => $htmlCacheChanged, "isManifestUpdated" => AppCacheManifest::getInstance()->getIsModified(), "dynamicBlocks" => $dividedData["dynamic"], "spread" => array_map(array("CUtil", "JSEscape"), $APPLICATION->GetSpreadCookieUrls()));
         $content = \CUtil::PhpToJSObject($content);
     } else {
         $content = $dividedData["static"];
     }
     return $content;
 }
Exemplo n.º 3
0
<?php

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_FILE_PERMISSIONS", true);
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
header("Content-Type: application/x-javascript; charset=" . LANG_CHARSET);
echo CUtil::PhpToJSObject(CJSCore::GetCoreMessages());
die;