Vergleich inc/class_datacache.php - 1.8.2 - 1.8.26

  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 40Zeile 33

/**
* A list of the performed calls.


/**
* A list of the performed calls.

	 *

	 *

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

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

Zeile 66Zeile 59
	function cache()
{
global $db, $mybb;

	function cache()
{
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;
// APCu cache
case "apcu":
require_once MYBB_ROOT."/inc/cachehandlers/apcu.php";
$this->handler = new apcuCacheHandler();
break;
// Redis cache
case "redis":
require_once MYBB_ROOT."/inc/cachehandlers/redis.php";
$this->handler = new redisCacheHandler();

				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 117Zeile 119
			$query = $db->simple_select("datacache", "title,cache");
while($data = $db->fetch_array($query))
{

			$query = $db->simple_select("datacache", "title,cache");
while($data = $db->fetch_array($query))
{

				$this->cache[$data['title']] = my_unserialize($data['cache']);

				$this->cache[$data['title']] = unserialize($data['cache']);

			}
}
}

			}
}
}

Zeile 125Zeile 127
	/**
* 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 142
		}
// 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();


		{
get_execution_time();


Zeile 200Zeile 202
			}
else
{

			}
else
{

				$data = my_unserialize($cache_data['cache']);

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

			}
}


			}
}


Zeile 220Zeile 222
	/**
* 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 mixed $contents The cache content.

	 */
function update($name, $contents)
{

	 */
function update($name, $contents)
{

Zeile 230Zeile 232
		$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

		$dbcontents = $db->escape_string(serialize($contents));

		$dbcontents = $db->escape_string(my_serialize($contents));


$replace_array = array(
"title" => $db->escape_string($name),


$replace_array = array(
"title" => $db->escape_string($name),

Zeile 239Zeile 241
		$db->replace_query("datacache", $replace_array, "", false);

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

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

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

		if(is_object($this->handler))

		if($this->handler instanceof CacheHandlerInterface)

		{
get_execution_time();


		{
get_execution_time();


Zeile 261Zeile 263
	 * 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)
{

		 global $db, $mybb, $cache;

		global $db, $mybb, $cache;


// Prepare for database query.
$dbname = $db->escape_string($name);
$where = "title = '{$dbname}'";

// Delete on-demand or handler cache


// Prepare for database query.
$dbname = $db->escape_string($name);
$where = "title = '{$dbname}'";

// Delete on-demand or handler cache

		if($this->handler)

		if($this->handler instanceof CacheHandlerInterface)

		{
get_execution_time();


		{
get_execution_time();


Zeile 311Zeile 313
					'_' => '=_'
)
);

					'_' => '=_'
)
);





			$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);


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


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

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

					}
}
}

					}
}
}

		}

// Delete database cache

		}

// Delete database cache

Zeile 359Zeile 361
	/**
* 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)
{

	 */
function debug_call($string, $qtime, $hit)
{

Zeile 371Zeile 373
		if($plugins->current_hook)
{
$debug_extra = "<div style=\"float_right\">(Plugin Hook: {$plugins->current_hook})</div>";

		if($plugins->current_hook)
{
$debug_extra = "<div style=\"float_right\">(Plugin Hook: {$plugins->current_hook})</div>";

		}

		}


if($hit)


if($hit)

		{

		{

			$hit_status = 'HIT';

			$hit_status = 'HIT';

		}

		}

		else
{
$hit_status = 'MISS';

		else
{
$hit_status = 'MISS';

Zeile 386Zeile 388
		$cache_method = $cache_data[0];
$cache_key = $cache_data[1];


		$cache_method = $cache_data[0];
$cache_key = $cache_data[1];


		$this->cache_debug .= "<table style=\"background-color: #666;\" width=\"95%\" cellpadding=\"4\" cellspacing=\"1\" align=\"center\">\n".
"<tr>\n".
"<td style=\"background-color: #ccc;\">{$debug_extra}<div><strong>#".$this->call_count." - ".ucfirst($cache_method)." Call</strong></div></td>\n".
"</tr>\n".
"<tr style=\"background-color: #fefefe;\">\n".
"<td><span style=\"font-family: Courier; font-size: 14px;\">(".$mybb->config['cache_store'].") [".$hit_status."] ".htmlspecialchars_uni($cache_key)."</span></td>\n".
"</tr>\n".
"<tr>\n".
"<td bgcolor=\"#ffffff\">Call Time: ".format_time_duration($qtime)."</td>\n".
"</tr>\n".
"</table>\n".
"<br />\n";


		$this->cache_debug = "<table style=\"background-color: #666;\" width=\"95%\" cellpadding=\"4\" cellspacing=\"1\" align=\"center\">
<tr>
<td style=\"background-color: #ccc;\">{$debug_extra}<div><strong>#{$this->call_count} - ".ucfirst($cache_method)." Call</strong></div></td>
</tr>
<tr style=\"background-color: #fefefe;\">
<td><span style=\"font-family: Courier; font-size: 14px;\">({$mybb->config['cache_store']}) [{$hit_status}] ".htmlspecialchars_uni($cache_key)."</span></td>
</tr>
<tr>
<td bgcolor=\"#ffffff\">Call Time: ".format_time_duration($qtime)."</td>
</tr>
</table>
<br />\n";


		$this->calllist[$this->call_count]['key'] = $string;
$this->calllist[$this->call_count]['time'] = $qtime;

		$this->calllist[$this->call_count]['key'] = $string;
$this->calllist[$this->call_count]['time'] = $qtime;

	}

	}


/**
* 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 422Zeile 424
				{
$query = $db->simple_select("datacache", "cache", "title='{$name}'");
return strlen($db->fetch_field($query, "cache"));

				{
$query = $db->simple_select("datacache", "cache", "title='{$name}'");
return strlen($db->fetch_field($query, "cache"));

				}

				}

				else
{
return $db->fetch_size("datacache");
}

				else
{
return $db->fetch_size("datacache");
}

			}

			}

			else

			else

			{

			{

				return $size;
}
}

				return $size;
}
}

Zeile 440Zeile 442
			{
$query = $db->simple_select("datacache", "cache", "title='{$name}'");
return strlen($db->fetch_field($query, "cache"));

			{
$query = $db->simple_select("datacache", "cache", "title='{$name}'");
return strlen($db->fetch_field($query, "cache"));

			}

			}

			else
{
return $db->fetch_size("datacache");

			else
{
return $db->fetch_size("datacache");

Zeile 474Zeile 476

$types = array();



$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 515Zeile 517

$query = $db->simple_select("icons", "iid, name, path");
while($icon = $db->fetch_array($query))


$query = $db->simple_select("icons", "iid, name, path");
while($icon = $db->fetch_array($query))

		{

		{

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


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


Zeile 563Zeile 565
	/**
* 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()
{
global $forum_cache, $db;

	 */
function update_forumpermissions()
{
global $forum_cache, $db;


$this->built_forum_permissions = array(0);



$this->built_forum_permissions = array(0);


		// Get our forum list
cache_forums(true);
if(!is_array($forum_cache))

		// Get our forum list
cache_forums(true);
if(!is_array($forum_cache))

Zeile 603Zeile 605

$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 646Zeile 650
	 */
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 659Zeile 661
	function update_statistics()
{
global $db;

	function update_statistics()
{
global $db;


$query = $db->simple_select('forums', 'fid, threads, posts', $fidnot.'type=\'f\'', array('order_by' => 'posts', 'order_dir' => 'DESC', 'limit' => 1));
$forum = $db->fetch_array($query);

 

$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.');

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

				break;

				break;

			default:
$group_by = 'p.uid';
break;

			default:
$group_by = 'p.uid';
break;

		}

$query = $db->query('

		}

$query = $db->query("

			SELECT u.uid, u.username, COUNT(*) AS poststoday

			SELECT u.uid, u.username, COUNT(*) 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);










			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 poststoday 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(*) AS posters', 'postnum>0');

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

		$posters = $db->fetch_field($query, 'posters');

$statistics = array(
'time' => TIME_NOW,

		$posters = $db->fetch_field($query, 'posters');

$statistics = array(
'time' => TIME_NOW,

			'top_forum' => (array)$forum,

 
			'top_referrer' => (array)$topreferrer,
'top_poster' => (array)$topposter,

			'top_referrer' => (array)$topreferrer,
'top_poster' => (array)$topposter,

			'posters' => (int)$posters,

			'posters' => $posters

		);

$this->update('statistics', $statistics);

		);

$this->update('statistics', $statistics);

Zeile 704Zeile 711
	/**
* Update the moderators cache.
*

	/**
* Update the moderators cache.
*

 
	 * @return bool Returns false on failure

	 */
function update_moderators()
{

	 */
function update_moderators()
{

Zeile 716Zeile 724
		if(!is_array($forum_cache))
{
return false;

		if(!is_array($forum_cache))
{
return false;

		}


		}


		reset($forum_cache);
$fcache = array();

		reset($forum_cache);
$fcache = array();





		// Resort in to the structure we require
foreach($forum_cache as $fid => $forum)
{
$this->moderators_forum_cache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum;

		// Resort in to the structure we require
foreach($forum_cache as $fid => $forum)
{
$this->moderators_forum_cache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum;

		}


		}


		// Sort children
foreach($fcache as $pid => $value)
{

		// Sort children
foreach($fcache as $pid => $value)
{

Zeile 735Zeile 743
		ksort($fcache);

$this->moderators = array();

		ksort($fcache);

$this->moderators = array();





		// Fetch moderators from the database
$query = $db->query("
SELECT m.*, u.username, u.usergroup, u.displaygroup

		// Fetch moderators from the database
$query = $db->query("
SELECT m.*, u.username, u.usergroup, u.displaygroup

Zeile 745Zeile 753
			ORDER BY u.username
");
while($moderator = $db->fetch_array($query))

			ORDER BY u.username
");
while($moderator = $db->fetch_array($query))

		{

		{

			$this->moderators[$moderator['fid']]['users'][$moderator['id']] = $moderator;
}


			$this->moderators[$moderator['fid']]['users'][$moderator['id']] = $moderator;
}


Zeile 754Zeile 762
			function sort_moderators_by_usernames($a, $b)
{
return strcasecmp($a['username'], $b['username']);

			function sort_moderators_by_usernames($a, $b)
{
return strcasecmp($a['username'], $b['username']);

			}

			}

		}

//Fetch moderating usergroups from the database

		}

//Fetch moderating usergroups from the database

Zeile 766Zeile 774
			ORDER BY u.title
");
while($moderator = $db->fetch_array($query))

			ORDER BY u.title
");
while($moderator = $db->fetch_array($query))

		{

		{

			$this->moderators[$moderator['fid']]['usergroups'][$moderator['id']] = $moderator;
}

if(is_array($this->moderators))
{
foreach(array_keys($this->moderators) as $fid)

			$this->moderators[$moderator['fid']]['usergroups'][$moderator['id']] = $moderator;
}

if(is_array($this->moderators))
{
foreach(array_keys($this->moderators) as $fid)

			{

			{

				uasort($this->moderators[$fid], 'sort_moderators_by_usernames');
}
}

				uasort($this->moderators[$fid], 'sort_moderators_by_usernames');
}
}





		$this->build_moderators();

		$this->build_moderators();





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

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

 

return true;

	}

/**

	}

/**

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


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


		$this->update('awaitingactivation', array('users' => $awaitingusers));






		$data = array(
'users' => $awaitingusers,
'time' => TIME_NOW
);

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

	}

/**
* 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 812Zeile 827
			{
foreach($main as $forum)
{

			{
foreach($main as $forum)
{

					$forum_mods = '';

					$forum_mods = array();

					if(count($moderators))

					if(count($moderators))

					{

					{

						$forum_mods = $moderators;

						$forum_mods = $moderators;

					}

					}

					// Append - local settings override that of a parent - array_merge works here
if(isset($this->moderators[$forum['fid']]))
{

					// Append - local settings override that of a parent - array_merge works here
if(isset($this->moderators[$forum['fid']]))
{

Zeile 831Zeile 846
					}
$this->built_moderators[$forum['fid']] = $forum_mods;
$this->build_moderators($forum_mods, $forum['fid']);

					}
$this->built_moderators[$forum['fid']] = $forum_mods;
$this->build_moderators($forum_mods, $forum['fid']);

				}
}

				}
}

		}
}

/**
* Update the forums cache.

		}
}

/**
* Update the forums cache.

	 *
*/

	 *
*/

	function update_forums()
{
global $db;

	function update_forums()
{
global $db;





		$forums = array();

// Things we don't want to cache

		$forums = array();

// Things we don't want to cache

		$exclude = array("unapprovedthreads", "unapprovedposts", "threads", "posts", "lastpost", "lastposter", "lastposttid", "deletedthreads", "deletedposts");


		$exclude = array("unapprovedthreads", "unapprovedposts", "threads", "posts", "lastpost", "lastposter", "lastposttid", "lastposteruid", "lastpostsubject", "deletedthreads", "deletedposts");


		$query = $db->simple_select("forums", "*", "", array('order_by' => 'pid,disporder'));
while($forum = $db->fetch_array($query))
{

		$query = $db->simple_select("forums", "*", "", array('order_by' => 'pid,disporder'));
while($forum = $db->fetch_array($query))
{

Zeile 863Zeile 878
		}

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

		}

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

	}

/**

	}

/**

	 * Update usertitles cache.
*
*/

	 * Update usertitles cache.
*
*/

Zeile 882Zeile 897

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


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





	/**
* Update reported content cache.
*

	/**
* Update reported content cache.
*

Zeile 890Zeile 905
	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 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 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 946Zeile 945
	/**
* Update the mailqueue cache
*

	/**
* 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)
{

Zeile 1074Zeile 1075

$threads = array();



$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']));

		$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;

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

Zeile 1089Zeile 1090

$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;

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

Zeile 1098Zeile 1099
		$this->update("most_viewed_threads", $threads);
}


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


 
	/**
* @deprecated
*/

	function update_banned()

	function update_banned()

	{
global $db;

$bans = array();

$query = $db->simple_select("banned");
while($ban = $db->fetch_array($query))
{
$bans[$ban['uid']] = $ban;
}

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

	{
// "banned" cache removed
}












function update_birthdays()
{
global $db;


function update_birthdays()
{
global $db;





		$birthdays = array();


		$birthdays = array();


		// Get today, yesturday, and tomorrow's time (for different timezones)

		// Get today, yesterday, and tomorrow's time (for different timezones)

		$bdaytime = TIME_NOW;
$bdaydate = my_date("j-n", $bdaytime, '', 0);
$bdaydatetomorrow = my_date("j-n", ($bdaytime+86400), '', 0);

		$bdaytime = TIME_NOW;
$bdaydate = my_date("j-n", $bdaytime, '', 0);
$bdaydatetomorrow = my_date("j-n", ($bdaytime+86400), '', 0);

Zeile 1141Zeile 1135

// We don't need any excess caleries in the cache
unset($bday['birthdayprivacy']);


// We don't need any excess caleries in the cache
unset($bday['birthdayprivacy']);





			$birthdays[$bday['bday']]['users'][] = $bday;
}

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

			$birthdays[$bday['bday']]['users'][] = $bday;
}

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

	}

	}


function update_groupleaders()


function update_groupleaders()

	{
global $db;

	{
global $db;


$groupleaders = array();



$groupleaders = array();


Zeile 1159Zeile 1153
		{
$groupleaders[$groupleader['uid']][] = $groupleader;
}

		{
$groupleaders[$groupleader['uid']][] = $groupleader;
}





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

function update_threadprefixes()

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

function update_threadprefixes()

	{
global $db;

	{
global $db;


$prefixes = array();


$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;

Zeile 1177Zeile 1171

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


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





	function update_forumsdisplay()

	function update_forumsdisplay()

	{
global $db;

$fd_statistics = array();


	{
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"));

		$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))
{
while($forum = $db->fetch_array($query))

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

Zeile 1202Zeile 1196
		$query = $db->simple_select("modtools", "forums, tid", '', array("order_by" => "tid"));

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

		$query = $db->simple_select("modtools", "forums, tid", '', array("order_by" => "tid"));

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

		{

		{

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

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

Zeile 1219Zeile 1213
					{
$fd_statistics[$forum]['modtools'] = 1;
}

					{
$fd_statistics[$forum]['modtools'] = 1;
}

				}
}

				}
}

		}

$this->update("forumsdisplay", $fd_statistics);
}

		}

$this->update("forumsdisplay", $fd_statistics);
}





	/**
* Update profile fields cache.
*

	/**
* Update profile fields cache.
*

Zeile 1239Zeile 1233
		while($field = $db->fetch_array($query))
{
$fields[] = $field;

		while($field = $db->fetch_array($query))
{
$fields[] = $field;

		}

		}


$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) */
function reload_mostonline()


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

	{
global $db;


	{
global $db;


		$query = $db->simple_select("datacache", "title,cache", "title='mostonline'");

		$query = $db->simple_select("datacache", "title,cache", "title='mostonline'");

		$this->update("mostonline", my_unserialize($db->fetch_field($query, "cache")));

		$this->update("mostonline", unserialize($db->fetch_field($query, "cache")));

	}

function reload_plugins()

	}

function reload_plugins()

Zeile 1258Zeile 1300
		global $db;

$query = $db->simple_select("datacache", "title,cache", "title='plugins'");

		global $db;

$query = $db->simple_select("datacache", "title,cache", "title='plugins'");

		$this->update("plugins", my_unserialize($db->fetch_field($query, "cache")));
}

		$this->update("plugins", unserialize($db->fetch_field($query, "cache")));
}


function reload_last_backup()


function reload_last_backup()

	{
global $db;

	{
global $db;


$query = $db->simple_select("datacache", "title,cache", "title='last_backup'");


$query = $db->simple_select("datacache", "title,cache", "title='last_backup'");

		$this->update("last_backup", my_unserialize($db->fetch_field($query, "cache")));
}


		$this->update("last_backup", unserialize($db->fetch_field($query, "cache")));
}


	function reload_internal_settings()

	function reload_internal_settings()

	{
global $db;


	{
global $db;


		$query = $db->simple_select("datacache", "title,cache", "title='internal_settings'");

		$query = $db->simple_select("datacache", "title,cache", "title='internal_settings'");

		$this->update("internal_settings", my_unserialize($db->fetch_field($query, "cache")));
}


		$this->update("internal_settings", unserialize($db->fetch_field($query, "cache")));
}


	function reload_version_history()

	function reload_version_history()

	{
global $db;

$query = $db->simple_select("datacache", "title,cache", "title='version_history'");
$this->update("version_history", my_unserialize($db->fetch_field($query, "cache")));
}

	{
global $db;

$query = $db->simple_select("datacache", "title,cache", "title='version_history'");
$this->update("version_history", unserialize($db->fetch_field($query, "cache")));
}


function reload_modnotes()


function reload_modnotes()

	{
global $db;


	{
global $db;


		$query = $db->simple_select("datacache", "title,cache", "title='modnotes'");

		$query = $db->simple_select("datacache", "title,cache", "title='modnotes'");

		$this->update("modnotes", my_unserialize($db->fetch_field($query, "cache")));
}

		$this->update("modnotes", unserialize($db->fetch_field($query, "cache")));
}


function reload_adminnotes()
{
global $db;

$query = $db->simple_select("datacache", "title,cache", "title='adminnotes'");


function reload_adminnotes()
{
global $db;

$query = $db->simple_select("datacache", "title,cache", "title='adminnotes'");

		$this->update("adminnotes", my_unserialize($db->fetch_field($query, "cache")));
}

function reload_mybb_credits()
{
admin_redirect('index.php?module=home-credits&amp;fetch_new=-2');

		$this->update("adminnotes", unserialize($db->fetch_field($query, "cache")));






	}
}

	}
}