Vergleich inc/class_datacache.php - 1.8.6 - 1.8.21

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

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

	 * @var apcCacheHandler|diskCacheHandler|eacceleratorCacheHandler|memcacheCacheHandler|memcachedCacheHandler|xcacheCacheHandler

	 * @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.








	 *
* @var int

	 *
* @var int

	 */

	 */

	public $call_count = 0;

	public $call_count = 0;





	/**
* A list of the performed calls.
*

	/**
* A list of the performed calls.
*

Zeile 47Zeile 40

/**
* The time spent on cache operations


/**
* The time spent on cache operations

	 *

	 *

	 * @var float
*/
public $call_time = 0;

	 * @var float
*/
public $call_time = 0;

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;

				break;

		}

		}





		if(is_object($this->handler))
{
if(method_exists($this->handler, "connect"))
{
if(!$this->handler->connect())
{
$this->handler = null;
}
}

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




		}
else
{

		}
else
{

Zeile 121Zeile 113
			}
}
}

			}
}
}





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

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

Zeile 137Zeile 129
		if(isset($this->cache[$name]) && $hard == false)
{
return $this->cache[$name];

		if(isset($this->cache[$name]) && $hard == false)
{
return $this->cache[$name];

		}

		}

		// 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 171Zeile 163
				// Fetch from database
$query = $db->simple_select("datacache", "title,cache", "title='".$db->escape_string($name)."'");
$cache_data = $db->fetch_array($query);

				// Fetch from database
$query = $db->simple_select("datacache", "title,cache", "title='".$db->escape_string($name)."'");
$cache_data = $db->fetch_array($query);

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

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


// Update cache for handler
get_execution_time();


// Update cache for handler
get_execution_time();

Zeile 221Zeile 213
	 * Update cache contents.
*
* @param string $name The cache content identifier.

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

	 * @param string $contents The cache content.

	 * @param mixed $contents The cache content.

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

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

Zeile 230Zeile 222
		$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 231
		$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 266Zeile 258
	 */
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 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);


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


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
*

Zeile 371Zeile 363
		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)
{
$hit_status = 'HIT';

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

Zeile 410Zeile 402
	 * @return integer the size of the cache
*/
function size_of($name='')

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

	{

	{

		global $db;


		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 474Zeile 466

$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 508Zeile 500
	 *
*/
function update_posticons()

	 *
*/
function update_posticons()

	{
global $db;

$icons = array();


	{
global $db;

$icons = array();


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

Zeile 609Zeile 601

/**
* Build the forum permissions array


/**
* Build the forum permissions array

	 *

	 *

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

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

Zeile 629Zeile 621
						if($this->forum_permissions[$forum['fid']][$gid])
{
$perms[$gid] = $this->forum_permissions[$forum['fid']][$gid];

						if($this->forum_permissions[$forum['fid']][$gid])
{
$perms[$gid] = $this->forum_permissions[$forum['fid']][$gid];

						}

						}

						if($perms[$gid])
{
$perms[$gid]['fid'] = $forum['fid'];

						if($perms[$gid])
{
$perms[$gid]['fid'] = $forum['fid'];

Zeile 647Zeile 639
	 *
*/
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();
}





	/**
* Update the statistics cache
*

	/**
* Update the statistics cache
*

Zeile 667Zeile 657

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


$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("
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 poststoday DESC
");





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

		$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 797Zeile 796

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


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

			'time'	=> TIME_NOW 

			'time'	=> TIME_NOW

		);

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

		);

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

Zeile 818Zeile 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 897Zeile 896
	{
global $db, $mybb;


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


Zeile 906Zeile 904

$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 1082Zeile 1065

$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 1097Zeile 1080

$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 1154Zeile 1137
		}

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

		}

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

	}

	}


function update_groupleaders()


function update_groupleaders()

	{
global $db;

$groupleaders = array();

	{
global $db;

$groupleaders = array();


$query = $db->simple_select("groupleaders");
while($groupleader = $db->fetch_array($query))
{
$groupleaders[$groupleader['uid']][] = $groupleader;
}


$query = $db->simple_select("groupleaders");
while($groupleader = $db->fetch_array($query))
{
$groupleaders[$groupleader['uid']][] = $groupleader;
}





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

function update_threadprefixes()

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

function update_threadprefixes()

	{
global $db;


	{
global $db;


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


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


Zeile 1213Zeile 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 1221Zeile 1204
					if(!$forum)
{
$forum = -1;

					if(!$forum)
{
$forum = -1;

					}

					}


if(!isset($fd_statistics[$forum]['modtools']))
{


if(!isset($fd_statistics[$forum]['modtools']))
{

Zeile 1232Zeile 1215
		}

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

		}

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

	}

	}


/**
* Update profile fields cache.


/**
* Update profile fields cache.

Zeile 1250Zeile 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) */
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'");
$this->update("mostonline", unserialize($db->fetch_field($query, "cache")));

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

	}

	}


function reload_plugins()
{
global $db;


function reload_plugins()
{
global $db;





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

function reload_last_backup()

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

function reload_last_backup()

	{
global $db;

	{
global $db;


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


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

Zeile 1307Zeile 1338

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


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

	}

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

 
	}
}

	}
}