diff options
Diffstat (limited to 'phpBB/phpbb/cache')
| -rw-r--r-- | phpBB/phpbb/cache/driver/base.php | 213 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/file.php | 204 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/memory.php | 171 | 
3 files changed, 215 insertions, 373 deletions
| diff --git a/phpBB/phpbb/cache/driver/base.php b/phpBB/phpbb/cache/driver/base.php index 685cdc4e57..b357431589 100644 --- a/phpBB/phpbb/cache/driver/base.php +++ b/phpBB/phpbb/cache/driver/base.php @@ -15,4 +15,217 @@ namespace phpbb\cache\driver;  abstract class base implements \phpbb\cache\driver\driver_interface  { +	var $vars = array(); +	var $is_modified = false; + +	var $sql_rowset = array(); +	var $sql_row_pointer = array(); +	var $cache_dir = ''; + +	/** +	* {@inheritDoc} +	*/ +	function purge() +	{ +		// Purge all phpbb cache files +		try +		{ +			$iterator = new \DirectoryIterator($this->cache_dir); +		} +		catch (\Exception $e) +		{ +			return; +		} + +		foreach ($iterator as $fileInfo) +		{ +			if ($fileInfo->isDot()) +			{ +				continue; +			} +			$filename = $fileInfo->getFilename(); +			if ($fileInfo->isDir()) +			{ +				$this->remove_dir($fileInfo->getPathname()); +			} +			else if (strpos($filename, 'container_') === 0 || +				strpos($filename, 'url_matcher') === 0 || +				strpos($filename, 'sql_') === 0 || +				strpos($filename, 'data_') === 0) +			{ +				$this->remove_file($fileInfo->getPathname()); +			} +		} + +		unset($this->vars); +		unset($this->sql_rowset); +		unset($this->sql_row_pointer); + +		$this->vars = array(); +		$this->sql_rowset = array(); +		$this->sql_row_pointer = array(); + +		$this->is_modified = false; +	} + +	/** +	* {@inheritDoc} +	*/ +	function unload() +	{ +		$this->save(); +		unset($this->vars); +		unset($this->sql_rowset); +		unset($this->sql_row_pointer); + +		$this->vars = array(); +		$this->sql_rowset = array(); +		$this->sql_row_pointer = array(); +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_load($query) +	{ +		// Remove extra spaces and tabs +		$query = preg_replace('/[\n\r\s\t]+/', ' ', $query); +		$query_id = md5($query); + +		if (($result = $this->_read('sql_' . $query_id)) === false) +		{ +			return false; +		} + +		$this->sql_rowset[$query_id] = $result; +		$this->sql_row_pointer[$query_id] = 0; + +		return $query_id; +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_exists($query_id) +	{ +		return isset($this->sql_rowset[$query_id]); +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_fetchrow($query_id) +	{ +		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) +		{ +			return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++]; +		} + +		return false; +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_fetchfield($query_id, $field) +	{ +		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) +		{ +			return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++][$field] : false; +		} + +		return false; +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_rowseek($rownum, $query_id) +	{ +		if ($rownum >= sizeof($this->sql_rowset[$query_id])) +		{ +			return false; +		} + +		$this->sql_row_pointer[$query_id] = $rownum; +		return true; +	} + +	/** +	* {@inheritDoc} +	*/ +	function sql_freeresult($query_id) +	{ +		if (!isset($this->sql_rowset[$query_id])) +		{ +			return false; +		} + +		unset($this->sql_rowset[$query_id]); +		unset($this->sql_row_pointer[$query_id]); + +		return true; +	} + +	/** +	* Removes/unlinks file +	* +	* @param string $filename Filename to remove +	* @param bool $check Check file permissions +	* @return bool True if the file was successfully removed, otherwise false +	*/ +	function remove_file($filename, $check = false) +	{ +		if (!function_exists('phpbb_is_writable')) +		{ +			global $phpbb_root_path, $phpEx; +			include($phpbb_root_path . 'includes/functions.' . $phpEx); +		} + +		if ($check && !phpbb_is_writable($this->cache_dir)) +		{ +			// E_USER_ERROR - not using language entry - intended. +			trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR); +		} + +		return @unlink($filename); +	} + +	/** +	* Remove directory +	* +	* @param string $dir Directory to remove +	* +	* @return null +	*/ +	protected function remove_dir($dir) +	{ +		try +		{ +			$iterator = new \DirectoryIterator($dir); +		} +		catch (\Exception $e) +		{ +			return; +		} + +		foreach ($iterator as $fileInfo) +		{ +			if ($fileInfo->isDot()) +			{ +				continue; +			} + +			if ($fileInfo->isDir()) +			{ +				$this->remove_dir($fileInfo->getPathname()); +			} +			else +			{ +				$this->remove_file($fileInfo->getPathname()); +			} +		} + +		@rmdir($dir); +	}  } diff --git a/phpBB/phpbb/cache/driver/file.php b/phpBB/phpbb/cache/driver/file.php index 03e868e289..adfe87b740 100644 --- a/phpBB/phpbb/cache/driver/file.php +++ b/phpBB/phpbb/cache/driver/file.php @@ -18,13 +18,7 @@ namespace phpbb\cache\driver;  */  class file extends \phpbb\cache\driver\base  { -	var $vars = array();  	var $var_expires = array(); -	var $is_modified = false; - -	var $sql_rowset = array(); -	var $sql_row_pointer = array(); -	var $cache_dir = '';  	/**  	* Set cache path @@ -50,16 +44,9 @@ class file extends \phpbb\cache\driver\base  	*/  	function unload()  	{ -		$this->save(); -		unset($this->vars); +		parent::unload();  		unset($this->var_expires); -		unset($this->sql_rowset); -		unset($this->sql_row_pointer); - -		$this->vars = array();  		$this->var_expires = array(); -		$this->sql_rowset = array(); -		$this->sql_row_pointer = array();  	}  	/** @@ -166,8 +153,6 @@ class file extends \phpbb\cache\driver\base  	{  		if ($var_name[0] == '_')  		{ -			global $phpEx; -  			if (!$this->_exists($var_name))  			{  				return false; @@ -203,85 +188,8 @@ class file extends \phpbb\cache\driver\base  	*/  	function purge()  	{ -		// Purge all phpbb cache files -		try -		{ -			$iterator = new \DirectoryIterator($this->cache_dir); -		} -		catch (\Exception $e) -		{ -			return; -		} - -		foreach ($iterator as $fileInfo) -		{ -			if ($fileInfo->isDot()) -			{ -				continue; -			} -			$filename = $fileInfo->getFilename(); -			if ($fileInfo->isDir()) -			{ -				$this->remove_dir($fileInfo->getPathname()); -			} -			else if (strpos($filename, 'container_') === 0 || -				strpos($filename, 'url_matcher') === 0 || -				strpos($filename, 'sql_') === 0 || -				strpos($filename, 'data_') === 0) -			{ -				$this->remove_file($fileInfo->getPathname()); -			} -		} - -		unset($this->vars); -		unset($this->var_expires); -		unset($this->sql_rowset); -		unset($this->sql_row_pointer); - -		$this->vars = array(); +		parent::purge();  		$this->var_expires = array(); -		$this->sql_rowset = array(); -		$this->sql_row_pointer = array(); - -		$this->is_modified = false; -	} - -	/** -	* Remove directory -	* -	* @param string $dir Directory to remove -	* -	* @return null -	*/ -	protected function remove_dir($dir) -	{ -		try -		{ -			$iterator = new \DirectoryIterator($dir); -		} -		catch (\Exception $e) -		{ -			return; -		} - -		foreach ($iterator as $fileInfo) -		{ -			if ($fileInfo->isDot()) -			{ -				continue; -			} - -			if ($fileInfo->isDir()) -			{ -				$this->remove_dir($fileInfo->getPathname()); -			} -			else -			{ -				$this->remove_file($fileInfo->getPathname()); -			} -		} - -		@rmdir($dir);  	}  	/** @@ -392,26 +300,6 @@ class file extends \phpbb\cache\driver\base  	/**  	* {@inheritDoc}  	*/ -	function sql_load($query) -	{ -		// Remove extra spaces and tabs -		$query = preg_replace('/[\n\r\s\t]+/', ' ', $query); -		$query_id = md5($query); - -		if (($rowset = $this->_read('sql_' . $query_id)) === false) -		{ -			return false; -		} - -		$this->sql_rowset[$query_id] = $rowset; -		$this->sql_row_pointer[$query_id] = 0; - -		return $query_id; -	} - -	/** -	* {@inheritDoc} -	*/  	function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl)  	{  		// Remove extra spaces and tabs @@ -436,70 +324,6 @@ class file extends \phpbb\cache\driver\base  	}  	/** -	* {@inheritDoc} -	*/ -	function sql_exists($query_id) -	{ -		return isset($this->sql_rowset[$query_id]); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_fetchrow($query_id) -	{ -		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) -		{ -			return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++]; -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_fetchfield($query_id, $field) -	{ -		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) -		{ -			return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++][$field] : false; -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_rowseek($rownum, $query_id) -	{ -		if ($rownum >= sizeof($this->sql_rowset[$query_id])) -		{ -			return false; -		} - -		$this->sql_row_pointer[$query_id] = $rownum; -		return true; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_freeresult($query_id) -	{ -		if (!isset($this->sql_rowset[$query_id])) -		{ -			return false; -		} - -		unset($this->sql_rowset[$query_id]); -		unset($this->sql_row_pointer[$query_id]); - -		return true; -	} - -	/**  	* Read cached data from a specified file  	*  	* @access private @@ -760,28 +584,4 @@ class file extends \phpbb\cache\driver\base  		return $return_value;  	} - -	/** -	* Removes/unlinks file -	* -	* @param string $filename Filename to remove -	* @param bool $check Check file permissions -	* @return bool True if the file was successfully removed, otherwise false -	*/ -	function remove_file($filename, $check = false) -	{ -		if (!function_exists('phpbb_is_writable')) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/functions.' . $phpEx); -		} - -		if ($check && !phpbb_is_writable($this->cache_dir)) -		{ -			// E_USER_ERROR - not using language entry - intended. -			trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR); -		} - -		return @unlink($filename); -	}  } diff --git a/phpBB/phpbb/cache/driver/memory.php b/phpBB/phpbb/cache/driver/memory.php index cb2b6a10a7..add87b9bfa 100644 --- a/phpBB/phpbb/cache/driver/memory.php +++ b/phpBB/phpbb/cache/driver/memory.php @@ -20,13 +20,6 @@ abstract class memory extends \phpbb\cache\driver\base  {  	var $key_prefix; -	var $vars = array(); -	var $is_modified = false; - -	var $sql_rowset = array(); -	var $sql_row_pointer = array(); -	var $cache_dir = ''; -  	/**  	* Set cache path  	*/ @@ -71,21 +64,6 @@ abstract class memory extends \phpbb\cache\driver\base  	/**  	* {@inheritDoc}  	*/ -	function unload() -	{ -		$this->save(); -		unset($this->vars); -		unset($this->sql_rowset); -		unset($this->sql_row_pointer); - -		$this->vars = array(); -		$this->sql_rowset = array(); -		$this->sql_row_pointer = array(); -	} - -	/** -	* {@inheritDoc} -	*/  	function save()  	{  		if (!$this->is_modified) @@ -147,47 +125,6 @@ abstract class memory extends \phpbb\cache\driver\base  	/**  	* {@inheritDoc}  	*/ -	function purge() -	{ -		// Purge all phpbb cache files -		$dir = @opendir($this->cache_dir); - -		if (!$dir) -		{ -			return; -		} - -		while (($entry = readdir($dir)) !== false) -		{ -			if (strpos($entry, 'container_') !== 0 && -				strpos($entry, 'url_matcher') !== 0 && -				strpos($entry, 'sql_') !== 0 && -				strpos($entry, 'data_') !== 0 && -				strpos($entry, 'ctpl_') !== 0 && -				strpos($entry, 'tpl_') !== 0) -			{ -				continue; -			} - -			$this->remove_file($this->cache_dir . $entry); -		} -		closedir($dir); - -		unset($this->vars); -		unset($this->sql_rowset); -		unset($this->sql_row_pointer); - -		$this->vars = array(); -		$this->sql_rowset = array(); -		$this->sql_row_pointer = array(); - -		$this->is_modified = false; -	} - - -	/** -	* {@inheritDoc} -	*/  	function destroy($var_name, $table = '')  	{  		if ($var_name == 'sql' && !empty($table)) @@ -262,26 +199,6 @@ abstract class memory extends \phpbb\cache\driver\base  	/**  	* {@inheritDoc}  	*/ -	function sql_load($query) -	{ -		// Remove extra spaces and tabs -		$query = preg_replace('/[\n\r\s\t]+/', ' ', $query); -		$query_id = md5($query); - -		if (($result = $this->_read('sql_' . $query_id)) === false) -		{ -			return false; -		} - -		$this->sql_rowset[$query_id] = $result; -		$this->sql_row_pointer[$query_id] = 0; - -		return $query_id; -	} - -	/** -	* {@inheritDoc} -	*/  	function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl)  	{  		// Remove extra spaces and tabs @@ -337,94 +254,6 @@ abstract class memory extends \phpbb\cache\driver\base  	}  	/** -	* {@inheritDoc} -	*/ -	function sql_exists($query_id) -	{ -		return isset($this->sql_rowset[$query_id]); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_fetchrow($query_id) -	{ -		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) -		{ -			return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++]; -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_fetchfield($query_id, $field) -	{ -		if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id])) -		{ -			return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++][$field] : false; -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_rowseek($rownum, $query_id) -	{ -		if ($rownum >= sizeof($this->sql_rowset[$query_id])) -		{ -			return false; -		} - -		$this->sql_row_pointer[$query_id] = $rownum; -		return true; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_freeresult($query_id) -	{ -		if (!isset($this->sql_rowset[$query_id])) -		{ -			return false; -		} - -		unset($this->sql_rowset[$query_id]); -		unset($this->sql_row_pointer[$query_id]); - -		return true; -	} - -	/** -	* Removes/unlinks file -	* -	* @param string $filename Filename to remove -	* @param bool $check Check file permissions -	* @return bool True if the file was successfully removed, otherwise false -	*/ -	function remove_file($filename, $check = false) -	{ -		if (!function_exists('phpbb_is_writable')) -		{ -			global $phpbb_root_path, $phpEx; -			include($phpbb_root_path . 'includes/functions.' . $phpEx); -		} - -		if ($check && !phpbb_is_writable($this->cache_dir)) -		{ -			// E_USER_ERROR - not using language entry - intended. -			trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR); -		} - -		return @unlink($filename); -	} - -	/**  	* Check if a cache var exists  	*  	* @access protected | 
