diff options
Diffstat (limited to 'phpBB/phpbb/cache')
| -rw-r--r-- | phpBB/phpbb/cache/driver/apc.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/base.php | 226 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/driver_interface.php | 18 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/eaccelerator.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/file.php | 219 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/memcache.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/memory.php | 200 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/null.php | 13 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/redis.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/wincache.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/xcache.php | 11 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/service.php | 42 | 
12 files changed, 330 insertions, 454 deletions
diff --git a/phpBB/phpbb/cache/driver/apc.php b/phpBB/phpbb/cache/driver/apc.php index 77b7b11181..521d5d41ea 100644 --- a/phpBB/phpbb/cache/driver/apc.php +++ b/phpBB/phpbb/cache/driver/apc.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache\driver;  /**  * ACM for APC -* @package acm  */  class apc extends \phpbb\cache\driver\memory  { diff --git a/phpBB/phpbb/cache/driver/base.php b/phpBB/phpbb/cache/driver/base.php index feaca25a5b..4c20ad916d 100644 --- a/phpBB/phpbb/cache/driver/base.php +++ b/phpBB/phpbb/cache/driver/base.php @@ -1,17 +1,231 @@  <?php  /**  * -* @package acm -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */  namespace phpbb\cache\driver; -/** -* @package acm -*/  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); + +		if (($rowset = $this->_read('sql_' . md5($query))) === false) +		{ +			return false; +		} + +		$query_id = sizeof($this->sql_rowset); +		$this->sql_rowset[$query_id] = $rowset; +		$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/driver_interface.php b/phpBB/phpbb/cache/driver/driver_interface.php index 8444028115..9ac9ca0c59 100644 --- a/phpBB/phpbb/cache/driver/driver_interface.php +++ b/phpBB/phpbb/cache/driver/driver_interface.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,8 +15,6 @@ namespace phpbb\cache\driver;  /**  * An interface that all cache drivers must implement -* -* @package acm  */  interface driver_interface  { @@ -106,7 +108,7 @@ interface driver_interface  	* result to persistent storage. In other words, there is no need  	* to call save() afterwards.  	* -	* @param \phpbb\db\driver\driver $db	Database connection +	* @param \phpbb\db\driver\driver_interface $db	Database connection  	* @param string $query			SQL query, should be used for generating storage key  	* @param mixed $query_result	The result from \dbal::sql_query, to be passed to  	* 								\dbal::sql_fetchrow to get all rows and store them @@ -117,7 +119,7 @@ interface driver_interface  	* 								representing the query should be returned. Otherwise  	* 								the original $query_result should be returned.  	*/ -	public function sql_save(\phpbb\db\driver\driver $db, $query, $query_result, $ttl); +	public function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl);  	/**  	* Check if result for a given SQL query exists in cache. @@ -140,7 +142,7 @@ interface driver_interface  	* Fetch a field from the current row of a cached database result (database)  	*  	* @param int $query_id -	* @param $field 				The name of the column. +	* @param string $field 			The name of the column.  	* @return string|bool 			The field of the query result if found in the cache,  	* 								otherwise false.  	*/ diff --git a/phpBB/phpbb/cache/driver/eaccelerator.php b/phpBB/phpbb/cache/driver/eaccelerator.php index d1ad69ef6d..1697758acc 100644 --- a/phpBB/phpbb/cache/driver/eaccelerator.php +++ b/phpBB/phpbb/cache/driver/eaccelerator.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache\driver;  /**  * ACM for eAccelerator -* @package acm  * @todo Missing locks from destroy() talk with David  */  class eaccelerator extends \phpbb\cache\driver\memory diff --git a/phpBB/phpbb/cache/driver/file.php b/phpBB/phpbb/cache/driver/file.php index a57a805193..fd5bce4515 100644 --- a/phpBB/phpbb/cache/driver/file.php +++ b/phpBB/phpbb/cache/driver/file.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,20 +15,15 @@ namespace phpbb\cache\driver;  /**  * ACM File Based Caching -* @package acm  */  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 +	* +	* @param string $cache_dir Define the path to the cache directory (default: $phpbb_root_path . 'cache/')  	*/  	function __construct($cache_dir = null)  	{ @@ -45,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();  	}  	/** @@ -161,8 +153,6 @@ class file extends \phpbb\cache\driver\base  	{  		if ($var_name[0] == '_')  		{ -			global $phpEx; -  			if (!$this->_exists($var_name))  			{  				return false; @@ -198,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()); -			} -			elseif (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);  	}  	/** @@ -387,27 +300,7 @@ 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); - -		if (($rowset = $this->_read('sql_' . md5($query))) === false) -		{ -			return false; -		} - -		$query_id = sizeof($this->sql_rowset); -		$this->sql_rowset[$query_id] = $rowset; -		$this->sql_row_pointer[$query_id] = 0; - -		return $query_id; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_save(\phpbb\db\driver\driver $db, $query, $query_result, $ttl) +	function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl)  	{  		// Remove extra spaces and tabs  		$query = preg_replace('/[\n\r\s\t]+/', ' ', $query); @@ -431,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 @@ -755,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/memcache.php b/phpBB/phpbb/cache/driver/memcache.php index eb3fced973..406ab11ddd 100644 --- a/phpBB/phpbb/cache/driver/memcache.php +++ b/phpBB/phpbb/cache/driver/memcache.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -32,7 +36,6 @@ if (!defined('PHPBB_ACM_MEMCACHE'))  /**  * ACM for Memcached -* @package acm  */  class memcache extends \phpbb\cache\driver\memory  { diff --git a/phpBB/phpbb/cache/driver/memory.php b/phpBB/phpbb/cache/driver/memory.php index b618b0f3e6..0b0e323e3d 100644 --- a/phpBB/phpbb/cache/driver/memory.php +++ b/phpBB/phpbb/cache/driver/memory.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,19 +15,11 @@ namespace phpbb\cache\driver;  /**  * ACM Abstract Memory Class -* @package acm  */  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  	*/ @@ -68,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) @@ -144,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)) @@ -259,27 +199,7 @@ 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 = sizeof($this->sql_rowset); - -		if (($result = $this->_read('sql_' . md5($query))) === 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 $db, $query, $query_result, $ttl) +	function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl)  	{  		// Remove extra spaces and tabs  		$query = preg_replace('/[\n\r\s\t]+/', ' ', $query); @@ -288,12 +208,24 @@ abstract class memory extends \phpbb\cache\driver\base  		// determine which tables this query belongs to  		// Some queries use backticks, namely the get_database_size() query  		// don't check for conformity, the SQL would error and not reach here. -		if (!preg_match('/FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?/', $query, $regs)) +		if (!preg_match_all('/(?:FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?)|(?:JOIN (`?\\w+`?(?: \\w+)?))/', $query, $regs, PREG_SET_ORDER))  		{  			// Bail out if the match fails.  			return $query_result;  		} -		$tables = array_map('trim', explode(',', $regs[1])); + +		$tables = array(); +		foreach ($regs as $match) +		{ +			if ($match[0][0] == 'F') +			{ +				$tables = array_merge($tables, array_map('trim', explode(',', $match[1]))); +			} +			else +			{ +				$tables[] = $match[2]; +			} +		}  		foreach ($tables as $table_name)  		{ @@ -335,94 +267,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 diff --git a/phpBB/phpbb/cache/driver/null.php b/phpBB/phpbb/cache/driver/null.php index 8af63eb725..a45cf97862 100644 --- a/phpBB/phpbb/cache/driver/null.php +++ b/phpBB/phpbb/cache/driver/null.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache\driver;  /**  * ACM Null Caching -* @package acm  */  class null extends \phpbb\cache\driver\base  { @@ -101,7 +104,7 @@ class null extends \phpbb\cache\driver\base  	/**  	* {@inheritDoc}  	*/ -	function sql_save(\phpbb\db\driver\driver $db, $query, $query_result, $ttl) +	function sql_save(\phpbb\db\driver\driver_interface $db, $query, $query_result, $ttl)  	{  		return $query_result;  	} diff --git a/phpBB/phpbb/cache/driver/redis.php b/phpBB/phpbb/cache/driver/redis.php index 2f2a32a12d..eda774491c 100644 --- a/phpBB/phpbb/cache/driver/redis.php +++ b/phpBB/phpbb/cache/driver/redis.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2011 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -25,7 +29,6 @@ if (!defined('PHPBB_ACM_REDIS_HOST'))  * Compatible with the php extension phpredis available  * at https://github.com/nicolasff/phpredis  * -* @package acm  */  class redis extends \phpbb\cache\driver\memory  { diff --git a/phpBB/phpbb/cache/driver/wincache.php b/phpBB/phpbb/cache/driver/wincache.php index d0f636d9cb..632b534362 100644 --- a/phpBB/phpbb/cache/driver/wincache.php +++ b/phpBB/phpbb/cache/driver/wincache.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache\driver;  /**  * ACM for WinCache -* @package acm  */  class wincache extends \phpbb\cache\driver\memory  { diff --git a/phpBB/phpbb/cache/driver/xcache.php b/phpBB/phpbb/cache/driver/xcache.php index 6c9323ec83..0c845a6a8d 100644 --- a/phpBB/phpbb/cache/driver/xcache.php +++ b/phpBB/phpbb/cache/driver/xcache.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005, 2009 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache\driver;  /**  * ACM for XCache -* @package acm  *  * To use this module you need ini_get() enabled and the following INI settings configured as follows:  * - xcache.var_size > 0 diff --git a/phpBB/phpbb/cache/service.php b/phpBB/phpbb/cache/service.php index ebbcfb8cdb..56727c2ad5 100644 --- a/phpBB/phpbb/cache/service.php +++ b/phpBB/phpbb/cache/service.php @@ -1,9 +1,13 @@  <?php  /**  * -* @package acm -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file.  *  */ @@ -11,7 +15,6 @@ namespace phpbb\cache;  /**  * Class for grabbing/handling cached entries -* @package acm  */  class service  { @@ -32,7 +35,7 @@ class service  	/**  	* Database connection.  	* -	* @var \phpbb\db\driver\driver +	* @var \phpbb\db\driver\driver_interface  	*/  	protected $db; @@ -44,7 +47,7 @@ class service  	protected $phpbb_root_path;  	/** -	* PHP extension. +	* PHP file extension.  	*  	* @var string  	*/ @@ -55,11 +58,11 @@ class service  	*  	* @param \phpbb\cache\driver\driver_interface $driver The cache driver  	* @param \phpbb\config\config $config The config -	* @param \phpbb\db\driver\driver $db Database connection +	* @param \phpbb\db\driver\driver_interface $db Database connection  	* @param string $phpbb_root_path Root path -	* @param string $php_ext PHP extension +	* @param string $php_ext PHP file extension  	*/ -	public function __construct(\phpbb\cache\driver\driver_interface $driver, \phpbb\config\config $config, \phpbb\db\driver\driver $db, $phpbb_root_path, $php_ext) +	public function __construct(\phpbb\cache\driver\driver_interface $driver, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, $phpbb_root_path, $php_ext)  	{  		$this->set_driver($driver);  		$this->config = $config; @@ -165,18 +168,12 @@ class service  			{  				if ($row['rank_special'])  				{ -					$ranks['special'][$row['rank_id']] = array( -						'rank_title'	=>	$row['rank_title'], -						'rank_image'	=>	$row['rank_image'] -					); +					unset($row['rank_min']); +					$ranks['special'][$row['rank_id']] = $row;  				}  				else  				{ -					$ranks['normal'][] = array( -						'rank_title'	=>	$row['rank_title'], -						'rank_min'		=>	$row['rank_min'], -						'rank_image'	=>	$row['rank_image'] -					); +					$ranks['normal'][$row['rank_id']] = $row;  				}  			}  			$this->db->sql_freeresult($result); @@ -302,7 +299,7 @@ class service  	{  		if (($bots = $this->driver->get('_bots')) === false)  		{ -			switch ($this->db->sql_layer) +			switch ($this->db->get_sql_layer())  			{  				case 'mssql':  				case 'mssql_odbc': @@ -313,13 +310,6 @@ class service  					ORDER BY LEN(bot_agent) DESC';  				break; -				case 'firebird': -					$sql = 'SELECT user_id, bot_agent, bot_ip -						FROM ' . BOTS_TABLE . ' -						WHERE bot_active = 1 -					ORDER BY CHAR_LENGTH(bot_agent) DESC'; -				break; -  				// LENGTH supported by MySQL, IBM DB2 and Oracle for sure...  				default:  					$sql = 'SELECT user_id, bot_agent, bot_ip  | 
