Vergleich inc/class_datacache.php - 1.8.13 - 1.8.32

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 51Zeile 51
	 * @var string
*/
public $cache_debug;

	 * @var string
*/
public $cache_debug;

 

/**
* @var array
*/
public $moderators;

/**
* @var array
*/
public $built_moderators;

/**
* @var array
*/
public $moderators_forum_cache;


/**
* Build cache data.


/**
* Build cache data.

Zeile 93Zeile 108
			case "apc":
require_once MYBB_ROOT."/inc/cachehandlers/apc.php";
$this->handler = new apcCacheHandler();

			case "apc":
require_once MYBB_ROOT."/inc/cachehandlers/apc.php";
$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;
}


Zeile 110Zeile 135
			while($data = $db->fetch_array($query))
{
$this->cache[$data['title']] = unserialize($data['cache']);

			while($data = $db->fetch_array($query))
{
$this->cache[$data['title']] = unserialize($data['cache']);

			}
}

			}
}

	}

/**

	}

/**

Zeile 163Zeile 188
				// 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();





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

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





				$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 186Zeile 211
			$query = $db->simple_select("datacache", "title,cache", "title='$name'");
$cache_data = $db->fetch_array($query);


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


			if(!$cache_data['title'])

			if(empty($cache_data['title']))

			{
$data = false;
}

			{
$data = false;
}

Zeile 202Zeile 227
		if($data !== false)
{
return $data;

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

		}
else
{
return false;
}
}

/**

		}
else
{
return false;
}
}

/**

	 * 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 222Zeile 247
		$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 258Zeile 283
	 */
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);


// Prepare for database query.
$dbname = $db->escape_string($name);

Zeile 519Zeile 544
	 *
*/
function update_badwords()

	 *
*/
function update_badwords()

	{
global $db;

$badwords = array();


	{
global $db;

$badwords = array();


		$query = $db->simple_select("badwords", "*");
while($badword = $db->fetch_array($query))
{

		$query = $db->simple_select("badwords", "*");
while($badword = $db->fetch_array($query))
{

Zeile 538Zeile 563
	 *
*/
function update_usergroups()

	 *
*/
function update_usergroups()

	{
global $db;

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


	{
global $db;

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


		$gs = array();
while($g = $db->fetch_array($query))
{

		$gs = array();
while($g = $db->fetch_array($query))
{

Zeile 560Zeile 585
	function update_forumpermissions()
{
global $forum_cache, $db;

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


$this->built_forum_permissions = array(0);



$this->forum_permissions = $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 601Zeile 626

/**
* 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 609Zeile 634
	private function build_forum_permissions($permissions=array(), $pid=0)
{
$usergroups = array_keys($this->read("usergroups", true));

	private function build_forum_permissions($permissions=array(), $pid=0)
{
$usergroups = array_keys($this->read("usergroups", true));

		if($this->forum_permissions_forum_cache[$pid])

		if(!empty($this->forum_permissions_forum_cache[$pid]))

		{
foreach($this->forum_permissions_forum_cache[$pid] as $main)
{

		{
foreach($this->forum_permissions_forum_cache[$pid] as $main)
{

Zeile 618Zeile 643
					$perms = $permissions;
foreach($usergroups as $gid)
{

					$perms = $permissions;
foreach($usergroups as $gid)
{

						if($this->forum_permissions[$forum['fid']][$gid])

						if(isset($this->forum_permissions[$forum['fid']][$gid]) && $this->forum_permissions[$forum['fid']][$gid])

						{
$perms[$gid] = $this->forum_permissions[$forum['fid']][$gid];
}

						{
$perms[$gid] = $this->forum_permissions[$forum['fid']][$gid];
}

						if($perms[$gid])

						if(!empty($perms[$gid]))

						{
$perms[$gid]['fid'] = $forum['fid'];
$this->built_forum_permissions[$forum['fid']][$gid] = $perms[$gid];

						{
$perms[$gid]['fid'] = $forum['fid'];
$this->built_forum_permissions[$forum['fid']][$gid] = $perms[$gid];

Zeile 642Zeile 667
	{
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 654Zeile 679

$query = $db->simple_select('users', 'uid, username, referrals', 'referrals>0', array('order_by' => 'referrals', 'order_dir' => 'DESC', 'limit' => 1));
$topreferrer = $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;

		$timesearch = TIME_NOW - 86400;

		switch($db->type)














$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 u.uid, u.username
ORDER BY poststoday DESC
");

$most_posts = 0;
$topposter = array();
while($user = $db->fetch_array($query))

		{

		{

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

			if($user['poststoday'] > $most_posts)
{
$most_posts = $user['poststoday'];
$topposter = $user;
}


		}

		}


$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.' AND p.visible=1
GROUP BY '.$group_by.' ORDER BY poststoday DESC
LIMIT 1
');
$topposter = $db->fetch_array($query);

 

$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 695Zeile 721
	 * @return bool Returns false on failure
*/
function update_moderators()

	 * @return bool Returns false on failure
*/
function update_moderators()

	{

	{

		global $forum_cache, $db;

		global $forum_cache, $db;





		$this->built_moderators = array(0);

		$this->built_moderators = array(0);





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

		// Get our forum list
cache_forums(true);
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)

		{

		{

			ksort($fcache[$pid]);
}
ksort($fcache);

			ksort($fcache[$pid]);
}
ksort($fcache);





		$this->moderators = array();

// Fetch moderators from the database

		$this->moderators = array();

// Fetch moderators from the database

Zeile 732Zeile 758
			LEFT JOIN ".TABLE_PREFIX."users u ON (m.id=u.uid)
WHERE m.isgroup = '0'
ORDER BY u.username

			LEFT JOIN ".TABLE_PREFIX."users u ON (m.id=u.uid)
WHERE m.isgroup = '0'
ORDER BY u.username

		");
while($moderator = $db->fetch_array($query))
{

		");
while($moderator = $db->fetch_array($query))
{

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


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


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


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


		if(is_array($this->moderators))

		foreach(array_keys($this->moderators) as $fid)

		{

		{

			foreach(array_keys($this->moderators) as $fid)

			if(isset($this->moderators[$fid]['users']))

			{

			{

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

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

			}
}


			}
}


Zeile 776Zeile 802

/**
* Update the users awaiting activation cache.


/**
* Update the users awaiting activation cache.

	 *

	 *

	 */
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');

		$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

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

Zeile 795Zeile 821

/**
* Build the moderators array


/**
* Build the moderators array

	 *

	 *

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

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

Zeile 853Zeile 879
				if(in_array($key, $exclude))
{
unset($forum[$key]);

				if(in_array($key, $exclude))
{
unset($forum[$key]);

				}

				}

			}
$forums[$forum['fid']] = $forum;
}

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

			}
$forums[$forum['fid']] = $forum;
}

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





	/**
* Update usertitles cache.
*

	/**
* Update usertitles cache.
*

Zeile 872Zeile 898
		$usertitles = array();
$query = $db->simple_select("usertitles", "utid, posts, title, stars, starimage", "", array('order_by' => 'posts', 'order_dir' => 'DESC'));
while($usertitle = $db->fetch_array($query))

		$usertitles = array();
$query = $db->simple_select("usertitles", "utid, posts, title, stars, starimage", "", array('order_by' => 'posts', 'order_dir' => 'DESC'));
while($usertitle = $db->fetch_array($query))

		{

		{

			$usertitles[] = $usertitle;
}

			$usertitles[] = $usertitle;
}





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


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


Zeile 885Zeile 911
	 */
function update_reportedcontent()
{

	 */
function update_reportedcontent()
{

		global $db, $mybb;

		global $db;


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


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

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

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


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


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

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

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


$reports = array(


$reports = array(

			"unread" => $num['unreadcount'],
"total" => $total['reportcount'],
"lastdateline" => $latest['dateline']

			'unread' => $unreadcount,
'total' => $reportcount,
'lastdateline' => $dateline,

		);

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

		);

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

Zeile 918Zeile 944
		while($mycode = $db->fetch_array($query))
{
$mycodes[] = $mycode;

		while($mycode = $db->fetch_array($query))
{
$mycodes[] = $mycode;

		}

		}


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


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

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

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

	}

/**

	}

/**

	 * Updates the tasks cache saving the next run time
*/
function update_tasks()

	 * Updates the tasks cache saving the next run time
*/
function update_tasks()

Zeile 1014Zeile 1040
			$banned_ips[$banned_ip['fid']] = $banned_ip;
}
$this->update("bannedips", $banned_ips);

			$banned_ips[$banned_ip['fid']] = $banned_ip;
}
$this->update("bannedips", $banned_ips);

	}


	}


	/**
* Updates the banned emails cache
*/

	/**
* Updates the banned emails cache
*/

Zeile 1051Zeile 1077
	}

function update_most_replied_threads()

	}

function update_most_replied_threads()

	{
global $db, $mybb;

$threads = array();

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


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

Zeile 1080Zeile 1106
		$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()

	function update_birthdays()

	{
global $db;


	{
global $db;


		$birthdays = array();

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

		$birthdays = array();

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

Zeile 1117Zeile 1136

if($bday['birthdayprivacy'] != 'all')
{


if($bday['birthdayprivacy'] != 'all')
{

				++$birthdays[$bday['bday']]['hiddencount'];








				if(isset($birthdays[$bday['bday']]['hiddencount']))
{
++$birthdays[$bday['bday']]['hiddencount'];
}
else
{
$birthdays[$bday['bday']]['hiddencount'] = 1;
}

				continue;
}

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

				continue;
}

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

 

if(!isset($birthdays[$bday['bday']]['users']))
{
$birthdays[$bday['bday']]['users'] = array();
}


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

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


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

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





	function update_groupleaders()
{
global $db;

	function update_groupleaders()
{
global $db;





		$groupleaders = array();

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

		$groupleaders = array();

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

		{

		{

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


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


Zeile 1176Zeile 1207
				if(!isset($fd_statistics[$forum['fid']]['announcements']))
{
$fd_statistics[$forum['fid']]['announcements'] = 1;

				if(!isset($fd_statistics[$forum['fid']]['announcements']))
{
$fd_statistics[$forum['fid']]['announcements'] = 1;

				}

				}

			}
}

			}
}





		// Do we have any mod tools to use in our forums?
$query = $db->simple_select("modtools", "forums, tid", '', array("order_by" => "tid"));


		// Do we have any mod tools to use in our forums?
$query = $db->simple_select("modtools", "forums, tid", '', array("order_by" => "tid"));


Zeile 1195Zeile 1226
					if(!$forum)
{
$forum = -1;

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

					}

					}


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


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

Zeile 1213Zeile 1244
	 *
*/
function update_profilefields()

	 *
*/
function update_profilefields()

	{
global $db;


	{
global $db;


		$fields = array();
$query = $db->simple_select("profilefields", "*", "", array('order_by' => 'disporder'));
while($field = $db->fetch_array($query))

		$fields = array();
$query = $db->simple_select("profilefields", "*", "", array('order_by' => 'disporder'));
while($field = $db->fetch_array($query))

Zeile 1231Zeile 1262
	 *
*/
function update_reportreasons($no_plugins = false)

	 *
*/
function update_reportreasons($no_plugins = false)

	{
global $db;


	{
global $db;


		$content_types = array('post', 'profile', 'reputation');
if(!$no_plugins)
{

		$content_types = array('post', 'profile', 'reputation');
if(!$no_plugins)
{

Zeile 1249Zeile 1280
			if($reason['appliesto'] == 'all')
{
foreach($content_types as $content)

			if($reason['appliesto'] == 'all')
{
foreach($content_types as $content)

				{
$reasons[$content][] = array(
'rid' => $reason['rid'],
'title' => $reason['title'],

				{
$reasons[$content][] = array(
'rid' => $reason['rid'],
'title' => $reason['title'],

						'extra' => $reason['extra'],
);
}

						'extra' => $reason['extra'],
);
}

Zeile 1289Zeile 1320

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


$query = $db->simple_select("datacache", "title,cache", "title='plugins'");
$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'");
$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")));

	}


	}


	function reload_internal_settings()

	function reload_internal_settings()

	{

	{

		global $db;

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

		global $db;

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

Zeile 1308Zeile 1339
	}

function reload_version_history()

	}

function reload_version_history()

	{
global $db;

	{
global $db;


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


$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'");
$this->update("modnotes", unserialize($db->fetch_field($query, "cache")));


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

	}

	}


function reload_adminnotes()


function reload_adminnotes()

	{

	{

		global $db;

		global $db;





		$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&fetch_new=-2');

 
	}
}

	}
}