• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/general.php
  • Класс: CWebDavBase
  • Вызов: CWebDavBase::CustomDataCache
static function CustomDataCache($path, $id, $value = null, $tags = null, $time=86400)
{
	static $data = array();
	$CACHE_PATH = str_replace(array("///", "//"), "/", "/".SITE_ID."/".$path."/");
	$CACHE_ID = $id;
	$CACHE_TIME = intval($time);

	static $arOCache = array();
	if (!isset($arOCache[$path]))
		$arOCache[$path] = new CPHPCache;
	$docCache =& $arOCache[$path];

	if ($value === null) // GET
	{
		if (!isset($data[$path][$id]))
		{
			$value = false;
			if ($docCache->InitCache($CACHE_TIME, $CACHE_ID, $CACHE_PATH))
				$value = $docCache->GetVars();
			$data[$path][$id] = $value;
		}

		if (isset($data[$path][$id]))
			return $data[$path][$id];
		else
			return false;
	}
	else
	{
		if (empty($docCache->basedir))
			$docCache->InitCache($CACHE_TIME, $CACHE_ID, $CACHE_PATH);

		if ($docCache->StartDataCache())
		{
			global $CACHE_MANAGER;
			$CACHE_MANAGER->StartTagCache($CACHE_PATH);
			if (is_string($tags))
				$tags = explode(',', $tags);
			foreach ($tags as $tag)
				$CACHE_MANAGER->RegisterTag(trim($tag));
			$CACHE_MANAGER->EndTagCache();
			$docCache->EndDataCache($value);
		}
	}
}