- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/planner.php
- Класс: CIntranetPlanner
- Вызов: CIntranetPlanner::getData
static function getData($SITE_ID = SITE_ID, $bFull = false, $userId = null)
{
global $USER, $CACHE_MANAGER;
if (!$userId)
{
if (!is_object($USER))
{
return false;
}
$userId = $USER->GetID();
}
$obCache = new CPHPCache();
$today = ConvertTimeStamp();
$cache_dir = '/intranet/planner/'.$userId;
$cache_id = 'intranet|planner|'.$userId.'|'.$SITE_ID.'|'.intval($bFull).'|'.$today.'|'.FORMAT_DATETIME.'|'.FORMAT_DATE.'|'.LANGUAGE_ID;
$arData = null;
$cacheEnabled = COption::GetOptionString('main', 'component_cache_on', 'N') === 'Y'
&& COption::GetOptionString('main', 'component_managed_cache_on', 'N') === 'Y';
if ($obCache->InitCache(self::CACHE_TTL, $cache_id, $cache_dir) && $cacheEnabled)
{
$arData = $obCache->GetVars();
if(is_array($arData['SCRIPTS']))
{
foreach($arData['SCRIPTS'] as $key => $script)
{
if(is_array($script))
{
$arData['SCRIPTS'][$key] = self::JS_CORE_EXT_RANDOM_NAME.RandString(5);
CJSCore::RegisterExt($arData['SCRIPTS'][$key], $script);
}
}
}
}
else
{
// cache expired or there's no cache
$obCache->StartDataCache();
$arData = array(
'SCRIPTS' => array(),
'STYLES' => array(),
'DATA' => array()
);
$CACHE_MANAGER->StartTagCache($cache_dir);
$CACHE_MANAGER->RegisterTag(self::CACHE_TAG.$userId);
$events = GetModuleEvents("intranet", "OnPlannerInit");
while($arEvent = $events->Fetch())
{
$arEventData = ExecuteModuleEventEx(
$arEvent,
array(
array(
'SITE_ID' => SITE_ID,
'FULL' => $bFull,
'USER_ID' => $userId
)
)
);
if(is_array($arEventData))
{
if(is_array($arEventData['SCRIPTS'] ?? null))
$arData['SCRIPTS'] = array_merge($arData['SCRIPTS'], $arEventData['SCRIPTS']);
if(is_array($arEventData['STYLES'] ?? null))
$arData['STYLES'] = array_merge($arData['STYLES'], $arEventData['STYLES']);
if(is_array($arEventData['DATA'] ?? null))
$arData['DATA'] = array_merge($arData['DATA'], $arEventData['DATA']);
}
}
$arCacheData = $arData;
if(is_array($arCacheData['SCRIPTS']))
{
foreach($arCacheData['SCRIPTS'] as $key => $script)
{
if(CJSCore::IsExtRegistered($script))
{
$arCacheData['SCRIPTS'][$key] = CJSCore::getExtInfo($script);
}
}
}
$CACHE_MANAGER->EndTagCache();
$obCache->EndDataCache($arCacheData);
}
return $arData;
}