Beispiel #1
0
 /**
  * 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);
     }
 }
Beispiel #2
0
 /**
  * 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);
     }
 }