<?
use Bitrix\Main\Data\StaticCacheProvider;
use Bitronic2\Catalog\CookiesUtils;
use Bitronic2\Mobile;
class CacheProvider extends StaticCacheProvider {
public function getCachePrivateKey() {
return self::getCachePrefix();
}
public function setUserPrivateKey() {
\CHTMLPagesCache::setUserPrivateKey(self::getCachePrefix(), 0);
}
public function isCacheable() {
return true;
}
public function onBeforeEndBufferContent() {
}
static $arSettings;
static $isDefault = false;
public static function getCachePrefix() {
global $rz_b2_options;
static $isMobile;
$arSettings = self::getSettings();
if (!isset($isMobile)) {
Mobile::Init();
$isMobile = Mobile::isMobile();
}
$key = (($isMobile) ? 'mobile' : 'desktop') . serialize($arSettings) . $demoId;
if(is_array($rz_b2_options)
&& is_array($rz_b2_options['GEOIP'])
&& is_array($rz_b2_options['GEOIP']['ITEM'])) {
$key .= $rz_b2_options['GEOIP']['ITEM']['ID'];
}
if (defined("IS_CATALOG_LIST") && IS_CATALOG_LIST) {
$view = CookiesUtils::getView();
$page_count = CookiesUtils::getPageCount();
$sort = CookiesUtils::getSort();
$sort = $sort['ACTIVE'];
$by = CookiesUtils::getSortBy();
$key .= "/view_{$view}_pagecount_{$page_count}_sort_{$sort}_by_{$by}/";
}
return md5($key);
}
public static function getSettings() {
if (!empty(self::$arSettings)) {
return self::$arSettings;
} else {
\Bitrix\Main\Loader::includeModule('yenisite.bitronic2');
\CBitrixComponent::includeComponentClass("yenisite:settings.panel");
$arSettingsDefault = \CRZBitronic2Settings::getSettingsArray();
self::$arSettings = \CYSSettingsPanel::getSettings($arSettingsDefault);
$isDefault = true;
foreach (self::$arSettings as $key => $value) {
if ($arSettingsDefault[$key]['default'] != $value) {
$isDefault = false;
break;
}
}
self::$isDefault = $isDefault;
return self::$arSettings;
}
}
public static function getObject() {
\CHTMLPagesCache::setUserPrivateKey(self::getCachePrefix(), 0);
return new self();
}
}
|