<?

/*
 * Klasa posredniczaca w dostepie do smarty, obsluguje kontrole cacheowania
 */

class TemplateMaster extends Smarty {

	//private $clearCache = false;

	public function CacheControl($tpl, $param = '') {
		return false;
	}

	/**
	 * Returns an array containing template variables
	 *
	 * @param string $name
	 * @param string $type
	 * @return array
	 */
	function &get_template_vars($name = null) {
		if (!isset($name)) {
			return $this->getTemplateVars();
		} elseif ($this->getTemplateVars($name)) {
			$_tmp = $this->getTemplateVars($name);
			return $_tmp;
		} else {
			// var non-existant, return valid reference
			$_tmp = null;
			return $_tmp;
		}
	}

//
//	public function CacheControl($tpl, $param='') {
//
//		$this->force_compile = 0;
//		if($this->caching!=2) {
//			$this->cache_lifetime = 0;
//			//$this->force_compile = true;
//			//	    echo"aaa";
//			return false;
//		}
//
//		// $param =
//		// array ( 'cache_id' => [string],
//		// 'compile_id'=> [string],
//		// 'lifetime' => [integer],
//		// 'write' => [boolean] );
//		$_cache_file = null;
//		$_auto_id = $this->_get_auto_id($param['cache_id'], 1);
//		$_cache_file = $this->_get_auto_filename($this->cache_dir, $tpl, $_auto_id);
//		if($this->template_exists($tpl)) {
//		//$_cache_file = $this->_get_auto_filename($this->cache_dir, $tpl, $_auto_id);
//		//$_compile_file = $this->_get_auto_filename($this->compile_dir, $tpl, $_auto_id);
//
//			if(!$this->_is_compiled($tpl, $this->compile_dir) && is_file($_cache_file)) {
//				$this->clear_cache($tpl, $param['cache_id'], $param['cache_id']);
//			}
//		}
//
//		//$memcacheCheck = false;
//		//if(Enviroment::CheckMemcache()) {
//		//	$memcacheCheck = MfMemcache::exists('cacheLock'.$param['cache_id']);
//		//}
//
//		$this->cache_lifetime = -1;
//
//		// sprawdzam cache
//		if (!$this->is_cached($tpl, $param['cache_id'])) {
//			//echo"tu";
//			return false;
//
//		} elseif ((isset($param['methodRun']) && Registry::Get('methodRun') == true  && (isset($param['write']) || $this->caching!=2 )) || (isset($param['write']) || $this->caching!=2 && !isset($param['methodRun']))) {
//			MFLog::Debug("writing:".$tpl);
//			//$this->clear_cache($tpl, $param['cache_id']);
//			$this->clearCache = true;
//
//			if(is_file($_cache_file)) {
//			///$futureTime = time();
//			///touch($_cache_file, $futureTime, $futureTime);
//			//echo $futureTime."<br>";
//			//$fh = fopen($_cache_file, 'w');
//
//				$_contents = $this->_read_file($_cache_file);
//				$_info_start = strpos($_contents, "\n") + 1;
//				$_info_len = (int)substr($_contents, 0, $_info_start - 1);
//				$_cache_info = unserialize(substr($_contents, $_info_start, $_info_len));
//				$results = substr($_contents, $_info_start + $_info_len);
//
//				$cacheInfo = $this->_cache_info;
//				$cacheInfo['timestamp'] = time();
//				//$cacheInfo['mexyk'] = time();
//				//$cacheInfo['expires'] = '0';
//
//				$sCacheInfo = serialize($cacheInfo);
//				$header = strlen($sCacheInfo) . "\n" .$sCacheInfo;
//
//				$fh = fopen($_cache_file, 'w');
//
//				fwrite($fh, $header.$results);
//				fclose($fh);
//
//			}
//			//if(Enviroment::CheckMemcache()) {
//			//	MfMemcache::set('cacheLock'.$param['cache_id'], true);
//			//}
//			// force overwrite cache file
//			//$this->force_compile = true;
//			//$this->cache_lifetime = 0;
//			return true;
//
//		} elseif (isset($param['lifetime'])) {
//		//if(!Core::GetAppSafeMode() && $memcacheCheck == false) {
//			if(!Core::GetAppSafeMode()) {
//			// sprawdza czas cache
//				MFLog::Debug('check:'.date("d H:i:s", $this->_cache_info['timestamp']));
//				//return ($this->_cache_info['timestamp'] < time() - $param['lifetime']) ? false : true;
//				//echo $this->_cache_info['timestamp'].':'.(time() - $param['lifetime'])."<br>";
//				if($this->_cache_info['timestamp'] < time() - $param['lifetime']){
//					//echo"regeneruj";
//					return false;
//				} else {
//					return true;
//				}
//			} else {
//				return true;
//			}
//
//		} else {
//			return true;
//		}
//	}
//
//	public function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) {
//	//if(Enviroment::CheckMemcache()) {
//	//	MfMemcache::remove('cacheLock'.$cache_id);
//	//}
//
//		if($this->clearCache == true) {
//			$_auto_id = $this->_get_auto_id($cache_id, 1);
//			$_cache_file = $this->_get_auto_filename($this->cache_dir, $resource_name, $_auto_id);
//
//			if(is_file($_cache_file)) {
//
//			unlink($_cache_file);
//
//				$this->force_compile = true;
//				$this->is_cached($resource_name, $cache_id);
//				$this->force_compile = false;
//
//			}
//		}
//		$this->clearCache = false;
//		return parent::fetch($resource_name, $cache_id, $compile_id, $display);
//	}
//
//
//	public function touchCacheFile($cacheFile) {
//		if(is_file($cacheFile)) {
//			///$futureTime = time();
//			///touch($_cache_file, $futureTime, $futureTime);
//			//echo $futureTime."<br>";
//			//$fh = fopen($_cache_file, 'w');
//
//				$_contents = $this->_read_file($cacheFile);
//				$_info_start = strpos($_contents, "\n") + 1;
//				$_info_len = (int)substr($_contents, 0, $_info_start - 1);
//				$_cache_info = unserialize(substr($_contents, $_info_start, $_info_len));
//				$results = substr($_contents, $_info_start + $_info_len);
//
//				$cacheInfo = $_cache_info;
//				$cacheInfo['timestamp'] = time();
//				//$cacheInfo['mexyk'] = time();
//				//$cacheInfo['expires'] = '0';
//
//				$sCacheInfo = serialize($cacheInfo);
//				$header = strlen($sCacheInfo) . "\n" .$sCacheInfo;
//
//				$fh = fopen($cacheFile, 'w');
//
//				fwrite($fh, $header.$results);
//				fclose($fh);
//
//			}
//	}
}

?>