Vergleich inc/class_datacache.php - 1.8.5 - 1.8.15

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 20Zeile 20
	/**
* The current cache handler we're using
*

	/**
* The current cache handler we're using
*

	 * @var object

	 * @var CacheHandlerInterface

	 */
public $handler = null;

	 */
public $handler = null;


/**
* Whether or not to exit the script if we cannot load the specified extension
*
* @var boolean
*/
var $silent = false;

 

/**
* A count of the number of calls.


/**
* A count of the number of calls.

Zeile 37Zeile 30
	 * @var int
*/
public $call_count = 0;

	 * @var int
*/
public $call_count = 0;


/**


/**

	 * A list of the performed calls.

	 * A list of the performed calls.

	 *

	 *

	 * @var array
*/
public $calllist = array();

	 * @var array
*/
public $calllist = array();

Zeile 49Zeile 42
	 * The time spent on cache operations
*
* @var float

	 * The time spent on cache operations
*
* @var float

	 */

	 */

	public $call_time = 0;

	public $call_time = 0;


/**


/**

	 * Explanation of a cache call.

	 * Explanation of a cache call.

	 *

	 *

	 * @var string

	 * @var string

	 */

	 */

	public $cache_debug;

	public $cache_debug;





	/**
* Build cache data.
*
*/
function cache()

	/**
* Build cache data.
*
*/
function cache()

	{
global $db, $mybb;



	{
global $db, $mybb;

require_once MYBB_ROOT."/inc/cachehandlers/interface.php";


switch($mybb->config['cache_store'])
{
// Disk cache
case "files":
require_once MYBB_ROOT."/inc/cachehandlers/disk.php";


switch($mybb->config['cache_store'])
{
// Disk cache
case "files":
require_once MYBB_ROOT."/inc/cachehandlers/disk.php";

				$this->handler = new diskCacheHandler($this->silent);

				$this->handler = new diskCacheHandler();

				break;
// Memcache cache
case "memcache":
require_once MYBB_ROOT."/inc/cachehandlers/memcache.php";

				break;
// Memcache cache
case "memcache":
require_once MYBB_ROOT."/inc/cachehandlers/memcache.php";

				$this->handler = new memcacheCacheHandler($this->silent);

				$this->handler = new memcacheCacheHandler();

				break;
// Memcached cache
case "memcached":
require_once MYBB_ROOT."/inc/cachehandlers/memcached.php";

				break;
// Memcached cache
case "memcached":
require_once MYBB_ROOT."/inc/cachehandlers/memcached.php";

				$this->handler = new memcachedCacheHandler($this->silent);

				$this->handler = new memcachedCacheHandler();

				break;
// eAccelerator cache
case "eaccelerator":
require_once MYBB_ROOT."/inc/cachehandlers/eaccelerator.php";

				break;
// eAccelerator cache
case "eaccelerator":
require_once MYBB_ROOT."/inc/cachehandlers/eaccelerator.php";

				$this->handler = new eacceleratorCacheHandler($this->silent);

				$this->handler = new eacceleratorCacheHandler();

				break;
// Xcache cache
case "xcache":
require_once MYBB_ROOT."/inc/cachehandlers/xcache.php";

				break;
// Xcache cache
case "xcache":
require_once MYBB_ROOT."/inc/cachehandlers/xcache.php";

				$this->handler = new xcacheCacheHandler($this->silent);

				$this->handler = new xcacheCacheHandler();

				break;
// APC cache
case "apc":
require_once MYBB_ROOT."/inc/cachehandlers/apc.php";

				break;
// APC cache
case "apc":
require_once MYBB_ROOT."/inc/cachehandlers/apc.php";

				$this->handler = new apcCacheHandler($this->silent);

				$this->handler = new apcCacheHandler();

				break;
}


				break;
}


		if(is_object($this->handler))

		if($this->handler instanceof CacheHandlerInterface)

		{

		{

			if(method_exists($this->handler, "connect"))

			if(!$this->handler->connect())

			{

			{

				if(!$this->handler->connect())
{
$this->handler = null;
}

				$this->handler = null;




			}
}
else

			}
}
else

Zeile 125Zeile 117
	/**
* Read cache from files or db.
*

	/**
* Read cache from files or db.
*

	 * @param string The cache component to read.
* @param boolean If true, cannot be overwritten during script execution.
* @return unknown

	 * @param string $name The cache component to read.
* @param boolean $hard If true, cannot be overwritten during script execution.
* @return mixed

	 */
function read($name, $hard=false)
{

	 */
function read($name, $hard=false)
{

Zeile 140Zeile 132
		}
// If we're not hard refreshing, and this cache doesn't exist, return false
// It would have been loaded pre-global if it did exist anyway...

		}
// If we're not hard refreshing, and this cache doesn't exist, return false
// It would have been loaded pre-global if it did exist anyway...

		else if($hard == false && !is_object($this->handler))

		else if($hard == false && !($this->handler instanceof CacheHandlerInterface))

		{
return false;
}


		{
return false;
}


		if(is_object($this->handler))

		if($this->handler instanceof CacheHandlerInterface)

		{
get_execution_time();

$data = $this->handler->fetch($name);

		{
get_execution_time();

$data = $this->handler->fetch($name);





			$call_time = get_execution_time();
$this->call_time += $call_time;
$this->call_count++;

			$call_time = get_execution_time();
$this->call_time += $call_time;
$this->call_count++;

Zeile 185Zeile 177
				if($mybb->debug_mode)
{
$this->debug_call('set:'.$name, $call_time, $hit);

				if($mybb->debug_mode)
{
$this->debug_call('set:'.$name, $call_time, $hit);

				}
}
}

				}
}
}

		// Else, using internal database cache
else
{

		// Else, using internal database cache
else
{

Zeile 195Zeile 187
			$cache_data = $db->fetch_array($query);

if(!$cache_data['title'])

			$cache_data = $db->fetch_array($query);

if(!$cache_data['title'])

			{

			{

				$data = false;

				$data = false;

			}

			}

			else
{
$data = unserialize($cache_data['cache']);

			else
{
$data = unserialize($cache_data['cache']);

Zeile 206Zeile 198

// Cache locally
$this->cache[$name] = $data;


// Cache locally
$this->cache[$name] = $data;





		if($data !== false)
{
return $data;

		if($data !== false)
{
return $data;

Zeile 220Zeile 212
	/**
* Update cache contents.
*

	/**
* Update cache contents.
*

	 * @param string The cache content identifier.
* @param string The cache content.

	 * @param string $name The cache content identifier.
* @param string $contents The cache content.

	 */
function update($name, $contents)
{
global $db, $mybb;

	 */
function update($name, $contents)
{
global $db, $mybb;





		$this->cache[$name] = $contents;

// We ALWAYS keep a running copy in the db just incase we need it

		$this->cache[$name] = $contents;

// We ALWAYS keep a running copy in the db just incase we need it

Zeile 237Zeile 229
			"cache" => $dbcontents
);
$db->replace_query("datacache", $replace_array, "", false);

			"cache" => $dbcontents
);
$db->replace_query("datacache", $replace_array, "", false);





		// Do we have a cache handler we're using?

		// Do we have a cache handler we're using?

		if(is_object($this->handler))
{
get_execution_time();

$hit = $this->handler->put($name, $contents);

$call_time = get_execution_time();

		if($this->handler instanceof CacheHandlerInterface)
{
get_execution_time();

$hit = $this->handler->put($name, $contents);

$call_time = get_execution_time();

			$this->call_time += $call_time;
$this->call_count++;


			$this->call_time += $call_time;
$this->call_count++;


Zeile 261Zeile 253
	 * Originally from frostschutz's PluginLibrary
* github.com/frostschutz
*

	 * Originally from frostschutz's PluginLibrary
* github.com/frostschutz
*

	 * @param string Cache name or title
* @param boolean To delete a cache starting with name_

	 * @param string $name Cache name or title
* @param boolean $greedy To delete a cache starting with name_

	 */
function delete($name, $greedy = false)
{

	 */
function delete($name, $greedy = false)
{

Zeile 273Zeile 265
		$where = "title = '{$dbname}'";

// Delete on-demand or handler cache

		$where = "title = '{$dbname}'";

// Delete on-demand or handler cache

		if($this->handler)

		if($this->handler instanceof CacheHandlerInterface)

		{
get_execution_time();


		{
get_execution_time();


Zeile 284Zeile 276
			$this->call_count++;

if($mybb->debug_mode)

			$this->call_count++;

if($mybb->debug_mode)

			{

			{

				$this->debug_call('delete:'.$name, $call_time, $hit);
}
}

				$this->debug_call('delete:'.$name, $call_time, $hit);
}
}

Zeile 314Zeile 306

$where .= " OR title LIKE '{$ldbname}=_%' ESCAPE '='";



$where .= " OR title LIKE '{$ldbname}=_%' ESCAPE '='";


			if($this->handler)

			if($this->handler instanceof CacheHandlerInterface)

			{
$query = $db->simple_select("datacache", "title", $where);

while($row = $db->fetch_array($query))
{
$names[$row['title']] = 0;

			{
$query = $db->simple_select("datacache", "title", $where);

while($row = $db->fetch_array($query))
{
$names[$row['title']] = 0;

				}

				}


// ...from the filesystem...
$start = strlen(MYBB_ROOT."cache/");
foreach((array)@glob(MYBB_ROOT."cache/{$name}*.php") as $filename)


// ...from the filesystem...
$start = strlen(MYBB_ROOT."cache/");
foreach((array)@glob(MYBB_ROOT."cache/{$name}*.php") as $filename)

				{

				{

					if($filename)
{
$filename = substr($filename, $start, strlen($filename)-4-$start);
$names[$filename] = 0;
}
}

					if($filename)
{
$filename = substr($filename, $start, strlen($filename)-4-$start);
$names[$filename] = 0;
}
}





				foreach($names as $key => $val)
{
get_execution_time();

$hit = $this->handler->delete($key);

				foreach($names as $key => $val)
{
get_execution_time();

$hit = $this->handler->delete($key);





					$call_time = get_execution_time();
$this->call_time += $call_time;
$this->call_count++;

					$call_time = get_execution_time();
$this->call_time += $call_time;
$this->call_count++;





					if($mybb->debug_mode)
{
$this->debug_call('delete:'.$name, $call_time, $hit);

					if($mybb->debug_mode)
{
$this->debug_call('delete:'.$name, $call_time, $hit);

Zeile 354Zeile 346

// Delete database cache
$db->delete_query("datacache", $where);


// Delete database cache
$db->delete_query("datacache", $where);

	}

/**

	}

/**

	 * Debug a cache call to a non-database cache handler
*

	 * Debug a cache call to a non-database cache handler
*

	 * @param string The cache key
* @param string The time it took to perform the call.
* @param boolean Hit or miss status

	 * @param string $string The cache key
* @param string $qtime The time it took to perform the call.
* @param boolean $hit Hit or miss status

	 */
function debug_call($string, $qtime, $hit)
{
global $mybb, $plugins;

	 */
function debug_call($string, $qtime, $hit)
{
global $mybb, $plugins;





		$debug_extra = '';
if($plugins->current_hook)
{

		$debug_extra = '';
if($plugins->current_hook)
{

Zeile 376Zeile 368
		if($hit)
{
$hit_status = 'HIT';

		if($hit)
{
$hit_status = 'HIT';

		}
else

		}
else

		{
$hit_status = 'MISS';
}

		{
$hit_status = 'MISS';
}

Zeile 406Zeile 398
	/**
* Select the size of the cache
*

	/**
* Select the size of the cache
*

	 * @param string The name of the cache

	 * @param string $name The name of the cache

	 * @return integer the size of the cache
*/
function size_of($name='')
{
global $db;


	 * @return integer the size of the cache
*/
function size_of($name='')
{
global $db;


		if(is_object($this->handler))

		if($this->handler instanceof CacheHandlerInterface)

		{
$size = $this->handler->size_of($name);
if(!$size)

		{
$size = $this->handler->size_of($name);
if(!$size)

Zeile 450Zeile 442

/**
* Update the MyBB version in the cache.


/**
* Update the MyBB version in the cache.

	 *
*/

	 *
*/

	function update_version()
{
global $mybb;

	function update_version()
{
global $mybb;

Zeile 460Zeile 452
			"version" => $mybb->version,
"version_code" => $mybb->version_code
);

			"version" => $mybb->version,
"version_code" => $mybb->version_code
);





		$this->update("version", $version);
}


		$this->update("version", $version);
}


Zeile 469Zeile 461
	 *
*/
function update_attachtypes()

	 *
*/
function update_attachtypes()

	{

	{

		global $db;

$types = array();


		global $db;

$types = array();


		$query = $db->simple_select("attachtypes", "*");

		$query = $db->simple_select('attachtypes', '*', 'enabled=1');

		while($type = $db->fetch_array($query))
{
$type['extension'] = my_strtolower($type['extension']);

		while($type = $db->fetch_array($query))
{
$type['extension'] = my_strtolower($type['extension']);

Zeile 489Zeile 481
	 *
*/
function update_smilies()

	 *
*/
function update_smilies()

	{
global $db;

	{
global $db;


$smilies = array();



$smilies = array();


Zeile 499Zeile 491
		{
$smilies[$smilie['sid']] = $smilie;
}

		{
$smilies[$smilie['sid']] = $smilie;
}





		$this->update("smilies", $smilies);
}

/**
* Update the posticon cache.

		$this->update("smilies", $smilies);
}

/**
* Update the posticon cache.

	 *
*/

	 *
*/

	function update_posticons()
{
global $db;

	function update_posticons()
{
global $db;

Zeile 518Zeile 510
		{
$icons[$icon['iid']] = $icon;
}

		{
$icons[$icon['iid']] = $icon;
}





		$this->update("posticons", $icons);
}

/**
* Update the badwords cache.

		$this->update("posticons", $icons);
}

/**
* Update the badwords cache.

	 *

	 *

	 */
function update_badwords()
{

	 */
function update_badwords()
{

Zeile 558Zeile 550
		}

$this->update("usergroups", $gs);

		}

$this->update("usergroups", $gs);

	}

/**

	}

/**

	 * Update the forum permissions cache.
*

	 * Update the forum permissions cache.
*

	 * @return false When failed, returns false.

	 * @return bool When failed, returns false.

	 */
function update_forumpermissions()
{

	 */
function update_forumpermissions()
{

Zeile 597Zeile 589
		// Fetch forum permissions from the database
$query = $db->simple_select("forumpermissions");
while($forum_permission = $db->fetch_array($query))

		// Fetch forum permissions from the database
$query = $db->simple_select("forumpermissions");
while($forum_permission = $db->fetch_array($query))

		{

		{

			$this->forum_permissions[$forum_permission['fid']][$forum_permission['gid']] = $forum_permission;
}

			$this->forum_permissions[$forum_permission['fid']][$forum_permission['gid']] = $forum_permission;
}





		$this->build_forum_permissions();
$this->update("forumpermissions", $this->built_forum_permissions);

		$this->build_forum_permissions();
$this->update("forumpermissions", $this->built_forum_permissions);

 

return true;

	}

/**
* Build the forum permissions array
*
* @access private

	}

/**
* Build the forum permissions array
*
* @access private

	 * @param array An optional permissions array.
* @param int An optional permission id.

	 * @param array $permissions An optional permissions array.
* @param int $pid An optional permission id.

	 */
private function build_forum_permissions($permissions=array(), $pid=0)
{

	 */
private function build_forum_permissions($permissions=array(), $pid=0)
{

Zeile 635Zeile 629
						}
}
$this->build_forum_permissions($perms, $forum['fid']);

						}
}
$this->build_forum_permissions($perms, $forum['fid']);

				}
}
}
}

				}
}
}
}


/**
* Update the stats cache (kept for the sake of being able to rebuild this cache via the cache interface)


/**
* Update the stats cache (kept for the sake of being able to rebuild this cache via the cache interface)

	 *
*/

	 *
*/

	function update_stats()
{

	function update_stats()
{

		global $db;


 
		require_once MYBB_ROOT."inc/functions_rebuild.php";
rebuild_stats();
}

		require_once MYBB_ROOT."inc/functions_rebuild.php";
rebuild_stats();
}

Zeile 657Zeile 649
	 *
*/
function update_statistics()

	 *
*/
function update_statistics()

	{

	{

		global $db;

		global $db;





		$query = $db->simple_select('users', 'uid, username, referrals', 'referrals>0', array('order_by' => 'referrals', 'order_dir' => 'DESC', 'limit' => 1));
$topreferrer = $db->fetch_array($query);

$timesearch = TIME_NOW - 86400;
switch($db->type)

		$query = $db->simple_select('users', 'uid, username, referrals', 'referrals>0', array('order_by' => 'referrals', 'order_dir' => 'DESC', 'limit' => 1));
$topreferrer = $db->fetch_array($query);

$timesearch = TIME_NOW - 86400;
switch($db->type)

		{

		{

			case 'pgsql':
$group_by = $db->build_fields_string('users', 'u.');
break;

			case 'pgsql':
$group_by = $db->build_fields_string('users', 'u.');
break;

Zeile 674Zeile 666
				break;
}


				break;
}


		$query = $db->query('
SELECT u.uid, u.username, COUNT(pid) AS poststoday
FROM '.TABLE_PREFIX.'posts p
LEFT JOIN '.TABLE_PREFIX.'users u ON (p.uid=u.uid)
WHERE p.dateline>'.$timesearch.'
GROUP BY '.$group_by.' ORDER BY poststoday DESC
LIMIT 1
');
$topposter = $db->fetch_array($query);










		$query = $db->query("
SELECT u.uid, u.username, COUNT(*) AS poststoday
FROM {$db->table_prefix}posts p
LEFT JOIN {$db->table_prefix}users u ON (p.uid=u.uid)
WHERE p.dateline > {$timesearch} AND p.visible=1
GROUP BY {$group_by}
ORDER BY NULL DESC
");

$most_posts = 0;
while($user = $db->fetch_array($query))
{
if($user['poststoday'] > $most_posts)
{
$most_posts = $user['poststoday'];
$topposter = $user;
}
}


$query = $db->simple_select('users', 'COUNT(uid) AS posters', 'postnum>0');
$posters = $db->fetch_field($query, 'posters');


$query = $db->simple_select('users', 'COUNT(uid) AS posters', 'postnum>0');
$posters = $db->fetch_field($query, 'posters');

Zeile 700Zeile 701
	/**
* Update the moderators cache.
*

	/**
* Update the moderators cache.
*

 
	 * @return bool Returns false on failure

	 */
function update_moderators()

	 */
function update_moderators()

	{

	{

		global $forum_cache, $db;

$this->built_moderators = array(0);

		global $forum_cache, $db;

$this->built_moderators = array(0);

Zeile 777Zeile 779
		$this->build_moderators();

$this->update("moderators", $this->built_moderators);

		$this->build_moderators();

$this->update("moderators", $this->built_moderators);

	}




return true;
}


/**
* Update the users awaiting activation cache.


/**
* Update the users awaiting activation cache.

Zeile 786Zeile 790
	function update_awaitingactivation()
{
global $db;

	function update_awaitingactivation()
{
global $db;





		$query = $db->simple_select('users', 'COUNT(uid) AS awaitingusers', 'usergroup=\'5\'');
$awaitingusers = (int)$db->fetch_field($query, 'awaitingusers');

$data = array(
'users' => $awaitingusers,

		$query = $db->simple_select('users', 'COUNT(uid) AS awaitingusers', 'usergroup=\'5\'');
$awaitingusers = (int)$db->fetch_field($query, 'awaitingusers');

$data = array(
'users' => $awaitingusers,

			'time'	=> TIME_NOW 
);

			'time'	=> TIME_NOW
);


$this->update('awaitingactivation', $data);
}


$this->update('awaitingactivation', $data);
}

Zeile 802Zeile 806
	 * Build the moderators array
*
* @access private

	 * Build the moderators array
*
* @access private

	 * @param array An optional moderators array (moderators of the parent forum for example).
* @param int An optional parent ID.

	 * @param array $moderators An optional moderators array (moderators of the parent forum for example).
* @param int $pid An optional parent ID.

	 */
private function build_moderators($moderators=array(), $pid=0)
{

	 */
private function build_moderators($moderators=array(), $pid=0)
{

Zeile 813Zeile 817
			{
foreach($main as $forum)
{

			{
foreach($main as $forum)
{

					$forum_mods = '';

					$forum_mods = array();

					if(count($moderators))
{
$forum_mods = $moderators;

					if(count($moderators))
{
$forum_mods = $moderators;

Zeile 842Zeile 846
	 *
*/
function update_forums()

	 *
*/
function update_forums()

	{
global $db;

$forums = array();


	{
global $db;

$forums = array();


		// Things we don't want to cache
$exclude = array("unapprovedthreads", "unapprovedposts", "threads", "posts", "lastpost", "lastposter", "lastposttid", "lastposteruid", "lastpostsubject", "deletedthreads", "deletedposts");


		// Things we don't want to cache
$exclude = array("unapprovedthreads", "unapprovedposts", "threads", "posts", "lastpost", "lastposter", "lastposttid", "lastposteruid", "lastpostsubject", "deletedthreads", "deletedposts");


Zeile 879Zeile 883
		while($usertitle = $db->fetch_array($query))
{
$usertitles[] = $usertitle;

		while($usertitle = $db->fetch_array($query))
{
$usertitles[] = $usertitle;

		}


		}


		$this->update("usertitles", $usertitles);
}

		$this->update("usertitles", $usertitles);
}





	/**
* Update reported content cache.
*

	/**
* Update reported content cache.
*

Zeile 891Zeile 895
	function update_reportedcontent()
{
global $db, $mybb;

	function update_reportedcontent()
{
global $db, $mybb;


$reports = array();




		$query = $db->simple_select("reportedcontent", "COUNT(rid) AS unreadcount", "reportstatus='0'");
$num = $db->fetch_array($query);

$query = $db->simple_select("reportedcontent", "COUNT(rid) AS reportcount");
$total = $db->fetch_array($query);

		$query = $db->simple_select("reportedcontent", "COUNT(rid) AS unreadcount", "reportstatus='0'");
$num = $db->fetch_array($query);

$query = $db->simple_select("reportedcontent", "COUNT(rid) AS reportcount");
$total = $db->fetch_array($query);





		$query = $db->simple_select("reportedcontent", "dateline", "reportstatus='0'", array('order_by' => 'dateline', 'order_dir' => 'DESC'));
$latest = $db->fetch_array($query);

		$query = $db->simple_select("reportedcontent", "dateline", "reportstatus='0'", array('order_by' => 'dateline', 'order_dir' => 'DESC'));
$latest = $db->fetch_array($query);


$reasons = array();

if(!empty($mybb->settings['reportreasons']))
{
$options = $mybb->settings['reportreasons'];
$options = explode("\n", $options);

foreach($options as $option)
{
$option = explode("=", $option);
$reasons[$option[0]] = $option[1];
}
}


















		$reports = array(
"unread" => $num['unreadcount'],
"total" => $total['reportcount'],

		$reports = array(
"unread" => $num['unreadcount'],
"total" => $total['reportcount'],

			"lastdateline" => $latest['dateline'],
"reasons" => $reasons

			"lastdateline" => $latest['dateline']


		);

$this->update("reportedcontent", $reports);

		);

$this->update("reportedcontent", $reports);

Zeile 931Zeile 919
	 *
*/
function update_mycode()

	 *
*/
function update_mycode()

	{

	{

		global $db;

$mycodes = array();

		global $db;

$mycodes = array();

Zeile 940Zeile 928
		{
$mycodes[] = $mycode;
}

		{
$mycodes[] = $mycode;
}





		$this->update("mycode", $mycodes);
}

/**
* Update the mailqueue cache
*

		$this->update("mycode", $mycodes);
}

/**
* Update the mailqueue cache
*

 
	 * @param int $last_run
* @param int $lock_time

	 */
function update_mailqueue($last_run=0, $lock_time=0)

	 */
function update_mailqueue($last_run=0, $lock_time=0)

	{
global $db;

	{
global $db;


$query = $db->simple_select("mailqueue", "COUNT(*) AS queue_size");
$queue_size = $db->fetch_field($query, "queue_size");


$query = $db->simple_select("mailqueue", "COUNT(*) AS queue_size");
$queue_size = $db->fetch_field($query, "queue_size");

Zeile 968Zeile 958
		$mailqueue['locked'] = $lock_time;

$this->update("mailqueue", $mailqueue);

		$mailqueue['locked'] = $lock_time;

$this->update("mailqueue", $mailqueue);

	}


	}


	/**
* Update update_check cache (dummy function used by upgrade/install scripts)

	/**
* Update update_check cache (dummy function used by upgrade/install scripts)

	 */

	 */

	function update_update_check()
{
$update_cache = array(
"dateline" => TIME_NOW
);

	function update_update_check()
{
$update_cache = array(
"dateline" => TIME_NOW
);





		$this->update("update_check", $update_cache);
}


		$this->update("update_check", $update_cache);
}


Zeile 986Zeile 976
	 * Update default_theme cache
*/
function update_default_theme()

	 * Update default_theme cache
*/
function update_default_theme()

	{
global $db;

	{
global $db;


$query = $db->simple_select("themes", "name, tid, properties, stylesheets", "def='1'", array('limit' => 1));
$theme = $db->fetch_array($query);


$query = $db->simple_select("themes", "name, tid, properties, stylesheets", "def='1'", array('limit' => 1));
$theme = $db->fetch_array($query);

Zeile 1023Zeile 1013
	 * Updates the banned IPs cache
*/
function update_bannedips()

	 * Updates the banned IPs cache
*/
function update_bannedips()

	{
global $db;

	{
global $db;


$banned_ips = array();
$query = $db->simple_select("banfilters", "fid,filter", "type=1");


$banned_ips = array();
$query = $db->simple_select("banfilters", "fid,filter", "type=1");

Zeile 1034Zeile 1024
		}
$this->update("bannedips", $banned_ips);
}

		}
$this->update("bannedips", $banned_ips);
}





	/**
* Updates the banned emails cache
*/
function update_bannedemails()

	/**
* Updates the banned emails cache
*/
function update_bannedemails()

	{
global $db;


	{
global $db;


		$banned_emails = array();
$query = $db->simple_select("banfilters", "fid, filter", "type = '3'");

		$banned_emails = array();
$query = $db->simple_select("banfilters", "fid, filter", "type = '3'");





		while($banned_email = $db->fetch_array($query))
{
$banned_emails[$banned_email['fid']] = $banned_email;

		while($banned_email = $db->fetch_array($query))
{
$banned_emails[$banned_email['fid']] = $banned_email;

Zeile 1059Zeile 1049
	function update_spiders()
{
global $db;

	function update_spiders()
{
global $db;





		$spiders = array();
$query = $db->simple_select("spiders", "sid, name, useragent, usergroup", "", array("order_by" => "LENGTH(useragent)", "order_dir" => "DESC"));
while($spider = $db->fetch_array($query))

		$spiders = array();
$query = $db->simple_select("spiders", "sid, name, useragent, usergroup", "", array("order_by" => "LENGTH(useragent)", "order_dir" => "DESC"));
while($spider = $db->fetch_array($query))

		{

		{

			$spiders[$spider['sid']] = $spider;
}
$this->update("spiders", $spiders);
}

			$spiders[$spider['sid']] = $spider;
}
$this->update("spiders", $spiders);
}





	function update_most_replied_threads()

	function update_most_replied_threads()

	{
global $db, $mybb;

$threads = array();

$query = $db->simple_select("threads", "tid, subject, replies, fid", "visible='1'", array('order_by' => 'replies', 'order_dir' => 'DESC', 'limit_start' => 0, 'limit' => $mybb->settings['statslimit']));
while($thread = $db->fetch_array($query))
{
$threads[] = $thread;

	{
global $db, $mybb;

$threads = array();

$query = $db->simple_select("threads", "tid, subject, replies, fid, uid", "visible='1'", array('order_by' => 'replies', 'order_dir' => 'DESC', 'limit_start' => 0, 'limit' => $mybb->settings['statslimit']));
while($thread = $db->fetch_array($query))
{
$threads[] = $thread;

		}

$this->update("most_replied_threads", $threads);
}

		}

$this->update("most_replied_threads", $threads);
}





	function update_most_viewed_threads()
{
global $db, $mybb;

	function update_most_viewed_threads()
{
global $db, $mybb;





		$threads = array();


		$threads = array();


		$query = $db->simple_select("threads", "tid, subject, views, fid", "visible='1'", array('order_by' => 'views', 'order_dir' => 'DESC', 'limit_start' => 0, 'limit' => $mybb->settings['statslimit']));

		$query = $db->simple_select("threads", "tid, subject, views, fid, uid", "visible='1'", array('order_by' => 'views', 'order_dir' => 'DESC', 'limit_start' => 0, 'limit' => $mybb->settings['statslimit']));

		while($thread = $db->fetch_array($query))
{
$threads[] = $thread;
}

$this->update("most_viewed_threads", $threads);

		while($thread = $db->fetch_array($query))
{
$threads[] = $thread;
}

$this->update("most_viewed_threads", $threads);

	}

	}


function update_banned()


function update_banned()

	{
global $db;

	{
global $db;


$bans = array();



$bans = array();


Zeile 1110Zeile 1100
		{
$bans[$ban['uid']] = $ban;
}

		{
$bans[$ban['uid']] = $ban;
}





		$this->update("banned", $bans);
}

function update_birthdays()

		$this->update("banned", $bans);
}

function update_birthdays()

	{
global $db;

	{
global $db;


$birthdays = array();



$birthdays = array();


Zeile 1150Zeile 1140
	}

function update_groupleaders()

	}

function update_groupleaders()

	{
global $db;


	{
global $db;


		$groupleaders = array();

$query = $db->simple_select("groupleaders");

		$groupleaders = array();

$query = $db->simple_select("groupleaders");

Zeile 1169Zeile 1159
		global $db;

$prefixes = array();

		global $db;

$prefixes = array();

		$query = $db->simple_select("threadprefixes", "*", "", array('order_by' => 'prefix', 'order_dir' => 'ASC'));


		$query = $db->simple_select("threadprefixes", "*", "", array('order_by' => 'prefix', 'order_dir' => 'ASC'));


		while($prefix = $db->fetch_array($query))
{
$prefixes[$prefix['pid']] = $prefix;
}

		while($prefix = $db->fetch_array($query))
{
$prefixes[$prefix['pid']] = $prefix;
}





		$this->update("threadprefixes", $prefixes);
}

function update_forumsdisplay()
{
global $db;

		$this->update("threadprefixes", $prefixes);
}

function update_forumsdisplay()
{
global $db;





		$fd_statistics = array();

$time = TIME_NOW; // Look for announcements that don't end, or that are ending some time in the future
$query = $db->simple_select("announcements", "fid", "enddate = '0' OR enddate > '{$time}'", array("order_by" => "aid"));

		$fd_statistics = array();

$time = TIME_NOW; // Look for announcements that don't end, or that are ending some time in the future
$query = $db->simple_select("announcements", "fid", "enddate = '0' OR enddate > '{$time}'", array("order_by" => "aid"));


if($db->num_rows($query))


if($db->num_rows($query))

		{
while($forum = $db->fetch_array($query))
{

		{
while($forum = $db->fetch_array($query))
{

Zeile 1206Zeile 1196
		{
unset($forum);
while($tool = $db->fetch_array($query))

		{
unset($forum);
while($tool = $db->fetch_array($query))

			{

			{

				$forums = explode(",", $tool['forums']);

foreach($forums as $forum)

				$forums = explode(",", $tool['forums']);

foreach($forums as $forum)

Zeile 1243Zeile 1233
		}

$this->update("profilefields", $fields);

		}

$this->update("profilefields", $fields);

 
	}

/**
* Update the report reasons cache.
*
*/
function update_reportreasons($no_plugins = false)
{
global $db;

$content_types = array('post', 'profile', 'reputation');
if(!$no_plugins)
{
global $plugins;
$content_types = $plugins->run_hooks("report_content_types", $content_types);
}

$reasons = array();

$query = $db->simple_select("reportreasons", "*", "", array('order_by' => 'disporder'));
while($reason = $db->fetch_array($query))
{
if($reason['appliesto'] == 'all')
{
foreach($content_types as $content)
{
$reasons[$content][] = array(
'rid' => $reason['rid'],
'title' => $reason['title'],
'extra' => $reason['extra'],
);
}
}
elseif($reason['appliesto'] != '')
{
$appliesto = explode(",", $reason['appliesto']);
foreach($appliesto as $content)
{
$reasons[$content][] = array(
'rid' => $reason['rid'],
'title' => $reason['title'],
'extra' => $reason['extra'],
);
}
}
}

$this->update("reportreasons", $reasons);

	}

/* Other, extra functions for reloading caches if we just changed to another cache extension (i.e. from db -> xcache) */

	}

/* Other, extra functions for reloading caches if we just changed to another cache extension (i.e. from db -> xcache) */