Your IP : 108.162.216.192


Current Path : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/classes/general/
Upload File :
Current File : /var/www/element/data/www/greenpr.ru/bitrix3/modules/main/classes/general/cache_files.php

<?
/*********************************************************************
						Caching
*********************************************************************/
class CPHPCacheFiles
{
	var $filename;
	var $folder;
	var $content;
	var $vars;
	var $TTL;
	var $uniq_str;
	var $initdir;
	var $bStarted = false;
	var $bInit = "NO";

	function IsAvailable()
	{
		return true;
	}

	function clean($basedir, $initdir, $filename = false)
	{
		if(strlen($filename))
		{
			$fn = $_SERVER["DOCUMENT_ROOT"].$basedir.$initdir.$filename;
			if(file_exists($fn))
			{
				@chmod($fn, BX_FILE_PERMISSIONS);
				if(unlink($fn))
					return true;
			}
			return false;
		}
		else
		{
			DeleteDirFilesEx($basedir.$initdir);
		}
	}

	function read(&$arAllVars, $basedir, $initdir, $filename, $TTL)
	{
		$fn = $_SERVER["DOCUMENT_ROOT"].$basedir.$initdir.$filename;

		if(!file_exists($fn))
			return false;

		$INCLUDE_FROM_CACHE='Y';

		if(file_exists($fn) && !include($fn))
			return false;

		if(IntVal($datecreate)<mktime()-$TTL)
			return false;

		$arAllVars = unserialize($ser_content);

		return true;
	}

	function write($arAllVars, $basedir, $initdir, $filename, $TTL)
	{

		$folder = $_SERVER["DOCUMENT_ROOT"].$basedir.$initdir;
		$fn = $folder.$filename;
		$tmp_fn = $folder.md5(mt_rand()).".tmp";

		CheckDirPath($fn);

		if($handle = fopen($tmp_fn, "wb+"))
		{
			$contents = "<?";
			$contents .= "\nif(\$INCLUDE_FROM_CACHE!='Y')return false;";
			$contents .= "\n\$datecreate = '".str_pad(mktime(), 12, "0", STR_PAD_LEFT)."';";
			$contents .= "\n\$dateexpire = '".str_pad(mktime() + IntVal($TTL), 12, "0", STR_PAD_LEFT)."';";
			$contents .= "\n\$ser_content = '".str_replace("'", "\'", str_replace("\\", "\\\\", serialize($arAllVars)))."';";
			$contents .= "\nreturn true;";
			$contents .= "\n?>";
			$written = fwrite($handle, $contents);
			$len = function_exists('mb_strlen')? mb_strlen($contents, 'latin1'): strlen($contents);

			fclose($handle);

			if(file_exists($fn))
				unlink($fn);

			if($written === $len)
				rename($tmp_fn, $fn);

			if(file_exists($tmp_fn))
				unlink($tmp_fn);
		}
	}

	function IsCacheExpired($path)
	{
		if(!file_exists($path))
			return true;

		$dateexpire = 0;

		$INCLUDE_FROM_CACHE='Y';

		$dfile = fopen($path, "rb");
		$str_tmp = fread($dfile, 150);
		fclose($dfile);

		preg_match("/dateexpire\s*=\s*'([\d]+)'/im", $str_tmp, $arTmp);
		if (strlen($arTmp[1])<=0 || DoubleVal($arTmp[1])<mktime())
			return true;

		return false;
	}
}
?>