Merge branch '3-move-all-db_query-call-into-separate-functions' into 'master'

Move some queries from Display.php to thier own functions

Not replacing everything, just trying out if this is useful at all.


See merge request !2
This commit is contained in:
Aleksei Miheev
2016-05-03 12:31:58 +07:00
parent ad62c7ca5e
commit 71aee0481e
2 changed files with 122 additions and 82 deletions

View File

@@ -82,73 +82,34 @@ function Display()
// Find the previous or next topic. Make a fuss if there are no more. // Find the previous or next topic. Make a fuss if there are no more.
if (isset($_REQUEST['prev_next']) && ($_REQUEST['prev_next'] == 'prev' || $_REQUEST['prev_next'] == 'next')) if (isset($_REQUEST['prev_next']) && ($_REQUEST['prev_next'] == 'prev' || $_REQUEST['prev_next'] == 'next'))
{ {
// Just prepare some variables that are used in the query. $topic = getSiblingTopic($topic, $board, $_REQUEST['prev_next']);
$gt_lt = $_REQUEST['prev_next'] == 'prev' ? '>' : '<';
$order = $_REQUEST['prev_next'] == 'prev' ? '' : ' DESC';
$request = db_query("
SELECT t2.ID_TOPIC
FROM {$db_prefix}topics AS t, {$db_prefix}topics AS t2, {$db_prefix}messages AS m, {$db_prefix}messages AS m2
WHERE m.ID_MSG = t.ID_LAST_MSG
AND t.ID_TOPIC = $topic" . (empty($modSettings['enableStickyTopics']) ? "
AND m2.posterTime $gt_lt m.posterTime" : "
AND ((m2.posterTime $gt_lt m.posterTime AND t2.isSticky $gt_lt= t.isSticky) OR t2.isSticky $gt_lt t.isSticky)") . "
AND t2.ID_LAST_MSG = m2.ID_MSG
AND t2.ID_BOARD = $board
ORDER BY" . (empty($modSettings['enableStickyTopics']) ? '' : " t2.isSticky$order,") . " m2.posterTime$order
LIMIT 1", __FILE__, __LINE__);
// No more left. // No more left.
if (mysql_num_rows($request) == 0) if ($topic === NULL)
fatal_lang_error('previous_next_end', false); fatal_lang_error('previous_next_end', false);
// Now you can be sure $topic is the ID_TOPIC to view.
list ($topic) = mysql_fetch_row($request);
mysql_free_result($request);
$context['current_topic'] = $topic; $context['current_topic'] = $topic;
// Go to the newest message on this topic. // Go to the newest message on this topic.
$_REQUEST['start'] = 'new'; $_REQUEST['start'] = 'new';
} }
$request=db_query(" $context['related_topics'] = getRelatedTopics($context['current_topic']);
SELECT t.ID_TOPIC AS id, msg.subject AS subj
FROM {$db_prefix}related_topics rt
INNER JOIN {$db_prefix}topics t ON (t.ID_TOPIC=rt.ID_slave)
INNER JOIN {$db_prefix}messages msg ON (msg.ID_MSG=t.ID_FIRST_MSG)
WHERE rt.ID_master={$context['current_topic']}", __FILE__, __LINE__);
if(mysql_num_rows($request)==0) $context['related_topics']=array();
else
while($context['related_topics'][]=mysql_fetch_assoc($request));
// Add 1 to the number of views of this topic. // Add 1 to the number of views of this topic.
if (empty($_SESSION['last_read_topic']) || $_SESSION['last_read_topic'] != $topic) if (empty($_SESSION['last_read_topic']) || $_SESSION['last_read_topic'] != $topic)
{ {
db_query(" updateTopicViews($topic);
UPDATE {$db_prefix}topics
SET numViews = numViews + 1
WHERE ID_TOPIC = $topic
LIMIT 1", __FILE__, __LINE__);
# remember where we were
$_SESSION['last_read_topic'] = $topic; $_SESSION['last_read_topic'] = $topic;
} }
// Get all the important topic info. // Get all the important topic info.
$request = db_query(" $topicinfo = getTopicInfo($topic, $ID_MEMBER);
SELECT
t.numReplies, t.numViews, t.locked, ms.subject, t.isSticky, t.isFirstSticky, t.ID_POLL, if ($topicinfo === NULL)
t.ID_MEMBER_STARTED, IFNULL(lt.logTime, 0) AS logTime, t.ID_FIRST_MSG, t.subtitle AS subtitle
FROM ({$db_prefix}topics AS t, {$db_prefix}messages AS ms)
LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = $topic AND lt.ID_MEMBER = $ID_MEMBER)
WHERE t.ID_TOPIC = $topic
AND ms.ID_MSG = t.ID_FIRST_MSG
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($request) == 0)
fatal_lang_error(472, false); fatal_lang_error(472, false);
$topicinfo = mysql_fetch_assoc($request);
mysql_free_result($request);
// The start isn't a number; it's information about what to do, where to go. // The start isn't a number; it's information about what to do, where to go.
if (!is_numeric($_REQUEST['start'])) if (!is_numeric($_REQUEST['start']))
@@ -161,16 +122,7 @@ function Display()
$logTime = time(); $logTime = time();
else else
{ {
// Find the earliest unread message in the topic. (the use of topics here is just for both tables.) $logTime = getFirstUnreadPostTimestamp($topic, $board, $ID_MEMBER);
$request = db_query("
SELECT IFNULL(lt.logTime, IFNULL(lmr.logTime, 0)) AS logTime
FROM {$db_prefix}topics AS t
LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = $topic AND lt.ID_MEMBER = $ID_MEMBER)
LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = $board AND lmr.ID_MEMBER = $ID_MEMBER)
WHERE t.ID_TOPIC = $topic
LIMIT 1", __FILE__, __LINE__);
list ($logTime) = mysql_fetch_row($request);
mysql_free_result($request);
} }
// Fall through to the next if statement. // Fall through to the next if statement.

View File

@@ -211,6 +211,94 @@ if (!defined('SMF'))
void getAttachmentFilename(string filename, int ID_ATTACH, bool new = true) void getAttachmentFilename(string filename, int ID_ATTACH, bool new = true)
// !!! // !!!
*/ */
// Find the earliest unread message in the topic. (the use of topics here is just for both tables.)
function getFirstUnreadPostTimestamp($topic, $board, $user) {
$request = db_query("
SELECT IFNULL(lt.logTime, IFNULL(lmr.logTime, 0)) AS logTime
FROM {$db_prefix}topics AS t
LEFT JOIN ${db_prefix}log_topics AS lt ON (lt.ID_TOPIC = '${topic}' AND lt.ID_MEMBER = '${user}')
LEFT JOIN ${db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = '${board}' AND lmr.ID_MEMBER = '${user}')
WHERE t.ID_TOPIC = '${topic}'
LIMIT 1", __FILE__, __LINE__);
list ($logTime) = mysql_fetch_row($request);
mysql_free_result($request);
return $logTime;
}
# bump number of topic views, if necessary
function updateTopicViews($topic) {
global $db_prefix;
db_query("
UPDATE {$db_prefix}topics
SET numViews = numViews + 1
WHERE ID_TOPIC = $topic
LIMIT 1", __FILE__, __LINE__);
}
function getSiblingTopic($topic, $board, $direction) {
global $db_prefix;
global $modSettings;
// Just prepare some variables that are used in the query.
$gt_lt = $direction == 'prev' ? '>' : '<';
$order = $direction == 'prev' ? 'ASC' : 'DESC';
$request = db_query("
SELECT t2.ID_TOPIC
FROM ${db_prefix}topics AS t, ${db_prefix}topics AS t2, ${db_prefix}messages AS m, ${db_prefix}messages AS m2
WHERE m.ID_MSG = t.ID_LAST_MSG
AND t.ID_TOPIC = ${topic}" . (empty($modSettings['enableStickyTopics']) ? "
AND m2.posterTime ${gt_lt} m.posterTime" : "
AND ((m2.posterTime ${gt_lt} m.posterTime AND t2.isSticky ${gt_lt}= t.isSticky) OR t2.isSticky ${gt_lt} t.isSticky)") . "
AND t2.ID_LAST_MSG = m2.ID_MSG
AND t2.ID_BOARD = ${board}
ORDER BY" . (empty($modSettings['enableStickyTopics']) ? '' : " t2.isSticky ${order},") . " m2.posterTime ${order}
LIMIT 1", __FILE__, __LINE__);
// No more left.
if (mysql_num_rows($request) == 0)
return NULL;
// Now you can be sure $topic is the ID_TOPIC to view.
list ($sibling_topic) = mysql_fetch_row($request);
mysql_free_result($request);
return $sibling_topic;
}
function getRelatedTopics($topic) {
global $db_prefix;
$query=db_query("
SELECT t.ID_TOPIC AS id, msg.subject AS subj
FROM ${db_prefix}related_topics rt
INNER JOIN ${db_prefix}topics t ON (t.ID_TOPIC=rt.ID_slave)
INNER JOIN ${db_prefix}messages msg ON (msg.ID_MSG=t.ID_FIRST_MSG)
WHERE rt.ID_master=${topic}", __FILE__, __LINE__);
// Nothing?
if(mysql_num_rows($query)==0) return array();
// fetch 'em all!
while ($related_topics[] = mysql_fetch_assoc($query));
return $related_topics;
}
function getTopicInfo($topic, $user) {
global $db_prefix;
$query = db_query("
SELECT
t.numReplies, t.numViews, t.locked, ms.subject, t.isSticky, t.isFirstSticky, t.ID_POLL,
t.ID_MEMBER_STARTED, IFNULL(lt.logTime, 0) AS logTime, t.ID_FIRST_MSG, t.subtitle AS subtitle
FROM (${db_prefix}topics AS t, ${db_prefix}messages AS ms)
LEFT JOIN ${db_prefix}log_topics AS lt ON (lt.ID_TOPIC = ${topic} AND lt.ID_MEMBER = ${user})
WHERE t.ID_TOPIC = ${topic}
AND ms.ID_MSG = t.ID_FIRST_MSG
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($query) == 0) return NULL;
return mysql_fetch_assoc($query);
}
// Do a query. Takes care of errors too. // Do a query. Takes care of errors too.
function db_query($db_string, $file, $line) function db_query($db_string, $file, $line)
@@ -329,7 +417,7 @@ function updateLastMessages($setboards)
// Find the latest message on this board. (highest ID_MSG) // Find the latest message on this board. (highest ID_MSG)
$result = db_query(" $result = db_query("
SELECT ID_BOARD, MAX(ID_MSG) AS ID_MSG SELECT ID_BOARD, MAX(ID_MSG) AS ID_MSG
FROM {$db_prefix}messages FROM ${db_prefix}messages
WHERE ID_BOARD" . (count($setboards) == 1 ? " = $setboards[0]" : ' IN (' . implode(', ', $setboards) . ')') . " WHERE ID_BOARD" . (count($setboards) == 1 ? " = $setboards[0]" : ' IN (' . implode(', ', $setboards) . ')') . "
GROUP BY ID_BOARD", __FILE__, __LINE__); GROUP BY ID_BOARD", __FILE__, __LINE__);
$setboards = array_flip($setboards); $setboards = array_flip($setboards);
@@ -337,12 +425,12 @@ function updateLastMessages($setboards)
{ {
// Okay, this board is done ;). // Okay, this board is done ;).
unset($setboards[$row['ID_BOARD']]); unset($setboards[$row['ID_BOARD']]);
$rPosterTime = db_query("SELECT posterTime FROM {$db_prefix}messages WHERE ID_MSG={$row['ID_MSG']}", __FILE__, __LINE__); $rPosterTime = db_query("SELECT posterTime FROM ${db_prefix}messages WHERE ID_MSG={$row['ID_MSG']}", __FILE__, __LINE__);
list($posterTime) = mysql_fetch_row($rPosterTime); list($posterTime) = mysql_fetch_row($rPosterTime);
// Update the board! // Update the board!
db_query(" db_query("
UPDATE {$db_prefix}boards UPDATE ${db_prefix}boards
SET ID_LAST_MSG = $row[ID_MSG], lastUpdated = $posterTime SET ID_LAST_MSG = $row[ID_MSG], lastUpdated = $posterTime
WHERE ID_BOARD = $row[ID_BOARD] WHERE ID_BOARD = $row[ID_BOARD]
LIMIT 1", __FILE__, __LINE__); LIMIT 1", __FILE__, __LINE__);
@@ -362,7 +450,7 @@ function updateLastMessages($setboards)
if (!empty($the_parent_boards)) if (!empty($the_parent_boards))
{ {
db_query(" db_query("
UPDATE {$db_prefix}boards UPDATE ${db_prefix}boards
SET lastUpdated = $posterTime SET lastUpdated = $posterTime
WHERE ID_BOARD IN (" . implode(',', $the_parent_boards) . ") WHERE ID_BOARD IN (" . implode(',', $the_parent_boards) . ")
AND lastUpdated < $posterTime AND lastUpdated < $posterTime
@@ -378,7 +466,7 @@ function updateLastMessages($setboards)
if (!empty($setboards)) if (!empty($setboards))
db_query(" db_query("
UPDATE {$db_prefix}boards UPDATE ${db_prefix}boards
SET ID_LAST_MSG = 0 SET ID_LAST_MSG = 0
WHERE ID_BOARD IN (" . implode(', ', array_keys($setboards)) . ") WHERE ID_BOARD IN (" . implode(', ', array_keys($setboards)) . ")
LIMIT 1", __FILE__, __LINE__); LIMIT 1", __FILE__, __LINE__);
@@ -395,14 +483,14 @@ function updateStats($type, $condition = '1')
// Update the latest member (highest ID_MEMBER) and count. // Update the latest member (highest ID_MEMBER) and count.
$result = db_query(" $result = db_query("
SELECT COUNT(ID_MEMBER), MAX(ID_MEMBER) SELECT COUNT(ID_MEMBER), MAX(ID_MEMBER)
FROM {$db_prefix}members", __FILE__, __LINE__); FROM ${db_prefix}members", __FILE__, __LINE__);
list ($memberCount, $latestmember) = mysql_fetch_row($result); list ($memberCount, $latestmember) = mysql_fetch_row($result);
mysql_free_result($result); mysql_free_result($result);
// Get the latest member's display name. // Get the latest member's display name.
$result = db_query(" $result = db_query("
SELECT IFNULL(realName, memberName) AS realName SELECT IFNULL(realName, memberName) AS realName
FROM {$db_prefix}members FROM ${db_prefix}members
WHERE ID_MEMBER = " . (int) $latestmember . " WHERE ID_MEMBER = " . (int) $latestmember . "
LIMIT 1", __FILE__, __LINE__); LIMIT 1", __FILE__, __LINE__);
list ($latestRealName) = mysql_fetch_row($result); list ($latestRealName) = mysql_fetch_row($result);
@@ -413,7 +501,7 @@ function updateStats($type, $condition = '1')
{ {
$result = db_query(" $result = db_query("
SELECT COUNT(ID_MEMBER) SELECT COUNT(ID_MEMBER)
FROM {$db_prefix}members FROM ${db_prefix}members
WHERE is_activated = 0 WHERE is_activated = 0
AND validation_code = ''", __FILE__, __LINE__); AND validation_code = ''", __FILE__, __LINE__);
list ($unapprovedCount) = mysql_fetch_row($result); list ($unapprovedCount) = mysql_fetch_row($result);
@@ -433,7 +521,7 @@ function updateStats($type, $condition = '1')
// Get the number of messages... // Get the number of messages...
$result = db_query(" $result = db_query("
SELECT COUNT(ID_MSG) AS totalMessages, MAX(ID_MSG) AS maxMsgID SELECT COUNT(ID_MSG) AS totalMessages, MAX(ID_MSG) AS maxMsgID
FROM {$db_prefix}messages", __FILE__, __LINE__); FROM ${db_prefix}messages", __FILE__, __LINE__);
$row = mysql_fetch_assoc($result); $row = mysql_fetch_assoc($result);
mysql_free_result($result); mysql_free_result($result);
@@ -446,7 +534,7 @@ function updateStats($type, $condition = '1')
// Get the number of topics. // Get the number of topics.
$result = db_query(" $result = db_query("
SELECT COUNT(ID_TOPIC) AS totalTopics SELECT COUNT(ID_TOPIC) AS totalTopics
FROM {$db_prefix}topics", __FILE__, __LINE__); FROM ${db_prefix}topics", __FILE__, __LINE__);
$row = mysql_fetch_assoc($result); $row = mysql_fetch_assoc($result);
mysql_free_result($result); mysql_free_result($result);
@@ -475,7 +563,7 @@ function updateStats($type, $condition = '1')
// Fetch postgroups. // Fetch postgroups.
$request = db_query(" $request = db_query("
SELECT ID_GROUP, minPosts SELECT ID_GROUP, minPosts
FROM {$db_prefix}membergroups FROM ${db_prefix}membergroups
WHERE minPosts != -1", __FILE__, __LINE__); WHERE minPosts != -1", __FILE__, __LINE__);
$postgroups = array(); $postgroups = array();
while ($row = mysql_fetch_assoc($request)) while ($row = mysql_fetch_assoc($request))
@@ -500,7 +588,7 @@ function updateStats($type, $condition = '1')
// A big fat CASE WHEN... END is faster than a zillion UPDATE's ;). // A big fat CASE WHEN... END is faster than a zillion UPDATE's ;).
db_query(" db_query("
UPDATE {$db_prefix}members UPDATE ${db_prefix}members
SET ID_POST_GROUP = CASE$conditions SET ID_POST_GROUP = CASE$conditions
ELSE 0 ELSE 0
END" . ($condition != '1' ? " END" . ($condition != '1' ? "
@@ -536,7 +624,7 @@ function updateMemberData($members, $data)
LIMIT 1'; LIMIT 1';
db_query(" db_query("
UPDATE {$db_prefix}members UPDATE ${db_prefix}members
SET" . substr($setString, 0, -1) . ' SET" . substr($setString, 0, -1) . '
WHERE ' . $condition, __FILE__, __LINE__); WHERE ' . $condition, __FILE__, __LINE__);
@@ -568,7 +656,7 @@ function updateSettings($changeArray)
return; return;
db_query(" db_query("
REPLACE INTO {$db_prefix}settings REPLACE INTO ${db_prefix}settings
(variable, value) (variable, value)
VALUES " . implode(', VALUES " . implode(',
', $replaceArray), __FILE__, __LINE__); ', $replaceArray), __FILE__, __LINE__);
@@ -1358,7 +1446,7 @@ function parsesmileys(&$message)
// Load the smileys in reverse order by length so they don't get parsed wrong. // Load the smileys in reverse order by length so they don't get parsed wrong.
$result = db_query(" $result = db_query("
SELECT code, filename, description SELECT code, filename, description
FROM {$db_prefix}smileys FROM ${db_prefix}smileys
ORDER BY LENGTH(code) DESC", __FILE__, __LINE__); ORDER BY LENGTH(code) DESC", __FILE__, __LINE__);
$smileysfrom = array(); $smileysfrom = array();
$smileysto = array(); $smileysto = array();
@@ -1439,11 +1527,11 @@ function writeLog($force = false)
$ip = ip2long($user_info['ip']); $ip = ip2long($user_info['ip']);
db_query(" db_query("
DELETE FROM {$db_prefix}log_online DELETE FROM ${db_prefix}log_online
WHERE logTime < NOW() - INTERVAL " . ($modSettings['lastActive'] * 60) . " SECOND WHERE logTime < NOW() - INTERVAL " . ($modSettings['lastActive'] * 60) . " SECOND
OR session = '$session_id'" . (empty($ID_MEMBER) ? '' : " OR ID_MEMBER = $ID_MEMBER"), __FILE__, __LINE__); OR session = '$session_id'" . (empty($ID_MEMBER) ? '' : " OR ID_MEMBER = $ID_MEMBER"), __FILE__, __LINE__);
db_query(" db_query("
INSERT IGNORE INTO {$db_prefix}log_online INSERT IGNORE INTO ${db_prefix}log_online
(session, ID_MEMBER, ip, url) (session, ID_MEMBER, ip, url)
VALUES ('${session_id}', '${ID_MEMBER}', '${ip}', '${serialized}')", __FILE__, __LINE__); VALUES ('${session_id}', '${ID_MEMBER}', '${ip}', '${serialized}')", __FILE__, __LINE__);
@@ -1683,7 +1771,7 @@ function logAction($action, $extra = array())
if (!empty($modSettings['modlog_enabled'])) if (!empty($modSettings['modlog_enabled']))
{ {
db_query(" db_query("
INSERT INTO {$db_prefix}log_actions INSERT INTO ${db_prefix}log_actions
(logTime, ID_MEMBER, IP, action, extra) (logTime, ID_MEMBER, IP, action, extra)
VALUES (" . time() . ", $ID_MEMBER, '$user_info[ip]', '$action', VALUES (" . time() . ", $ID_MEMBER, '$user_info[ip]', '$action',
'" . addslashes(serialize($extra)) . "')", __FILE__, __LINE__); '" . addslashes(serialize($extra)) . "')", __FILE__, __LINE__);
@@ -1719,14 +1807,14 @@ function trackStats($stats = array())
$date = strftime('%Y%m%d', forum_time(false)); $date = strftime('%Y%m%d', forum_time(false));
db_query(" db_query("
UPDATE {$db_prefix}log_activity UPDATE ${db_prefix}log_activity
SET" . substr($setStringUpdate, 0, -1) . " SET" . substr($setStringUpdate, 0, -1) . "
WHERE date = $date WHERE date = $date
LIMIT 1", __FILE__, __LINE__); LIMIT 1", __FILE__, __LINE__);
if (db_affected_rows() == 0) if (db_affected_rows() == 0)
{ {
db_query(" db_query("
INSERT IGNORE INTO {$db_prefix}log_activity INSERT IGNORE INTO ${db_prefix}log_activity
(date, " . implode(', ', array_keys($cache_stats)) . ") (date, " . implode(', ', array_keys($cache_stats)) . ")
VALUES ($date, " . implode(', ', $cache_stats) . ')', __FILE__, __LINE__); VALUES ($date, " . implode(', ', $cache_stats) . ')', __FILE__, __LINE__);
} }
@@ -1742,17 +1830,17 @@ function spamProtection($error_type)
// Delete old entries... if you can moderate this board or this is login, override spamWaitTime with 2. // Delete old entries... if you can moderate this board or this is login, override spamWaitTime with 2.
if ($error_type == 'spam' && !allowedTo('moderate_board')) if ($error_type == 'spam' && !allowedTo('moderate_board'))
db_query(" db_query("
DELETE FROM {$db_prefix}log_floodcontrol DELETE FROM ${db_prefix}log_floodcontrol
WHERE logTime < " . (time() - $modSettings['spamWaitTime']), __FILE__, __LINE__); WHERE logTime < " . (time() - $modSettings['spamWaitTime']), __FILE__, __LINE__);
else else
db_query(" db_query("
DELETE FROM {$db_prefix}log_floodcontrol DELETE FROM ${db_prefix}log_floodcontrol
WHERE (logTime < " . (time() - 2) . " AND ip = '$user_info[ip]') WHERE (logTime < " . (time() - 2) . " AND ip = '$user_info[ip]')
OR logTime < " . (time() - $modSettings['spamWaitTime']), __FILE__, __LINE__); OR logTime < " . (time() - $modSettings['spamWaitTime']), __FILE__, __LINE__);
// Add a new entry, deleting the old if necessary. // Add a new entry, deleting the old if necessary.
db_query(" db_query("
REPLACE INTO {$db_prefix}log_floodcontrol REPLACE INTO ${db_prefix}log_floodcontrol
(ip, logTime) (ip, logTime)
VALUES ('$user_info[ip]', " . time() . ")", __FILE__, __LINE__); VALUES ('$user_info[ip]', " . time() . ")", __FILE__, __LINE__);
// If affected is 0 or 2, it was there already. // If affected is 0 or 2, it was there already.
@@ -1853,7 +1941,7 @@ function setupThemeContext()
{ {
$result = db_query(" $result = db_query("
SELECT COUNT(*) SELECT COUNT(*)
FROM {$db_prefix}postmoderation", __FILE__, __LINE__); FROM ${db_prefix}postmoderation", __FILE__, __LINE__);
list($modmsg) = mysql_fetch_row($result); list($modmsg) = mysql_fetch_row($result);
if ($modmsg) if ($modmsg)
$context['user']['awaiting_mod'] = $modmsg . ' ' . $txt['visual_require_mod']; $context['user']['awaiting_mod'] = $modmsg . ' ' . $txt['visual_require_mod'];