• Модуль: 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;
}