本文整理汇总了PHP中updateLastMessages函数的典型用法代码示例。如果您正苦于以下问题:PHP updateLastMessages函数的具体用法?PHP updateLastMessages怎么用?PHP updateLastMessages使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了updateLastMessages函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: approvePosts
//.........这里部分代码省略.........
} else {
$topic_changes[$row['id_topic']]['replies'] += $approve ? 1 : -1;
// This will be a post... but don't notify unless it's not followed by approved ones.
if ($row['id_msg'] > $row['id_last_msg']) {
$notification_posts[$row['id_topic']][] = array('id' => $row['id_msg'], 'body' => $row['body'], 'subject' => $row['subject'], 'name' => $row['poster_name'], 'topic' => $row['id_topic']);
}
}
// If this is being approved and id_msg is higher than the current id_last_msg then it changes.
if ($approve && $row['id_msg'] > $topic_changes[$row['id_topic']]['id_last_msg']) {
$topic_changes[$row['id_topic']]['id_last_msg'] = $row['id_msg'];
} elseif (!$approve) {
// Default to the first message and then we'll override in a bit ;)
$topic_changes[$row['id_topic']]['id_last_msg'] = $row['id_first_msg'];
}
$topic_changes[$row['id_topic']]['unapproved_posts'] += $approve ? -1 : 1;
$board_changes[$row['id_board']]['unapproved_posts'] += $approve ? -1 : 1;
$board_changes[$row['id_board']]['posts'] += $approve ? 1 : -1;
// Post count for the user?
if ($row['id_member'] && empty($row['count_posts'])) {
$member_post_changes[$row['id_member']] = isset($member_post_changes[$row['id_member']]) ? $member_post_changes[$row['id_member']] + 1 : 1;
}
}
$db->free_result($request);
if (empty($msgs)) {
return;
}
// Now we have the differences make the changes, first the easy one.
$db->query('', '
UPDATE {db_prefix}messages
SET approved = {int:approved_state}
WHERE id_msg IN ({array_int:message_list})', array('message_list' => $msgs, 'approved_state' => $approve ? 1 : 0));
// If we were unapproving find the last msg in the topics...
if (!$approve) {
$request = $db->query('', '
SELECT id_topic, MAX(id_msg) AS id_last_msg
FROM {db_prefix}messages
WHERE id_topic IN ({array_int:topic_list})
AND approved = {int:approved}
GROUP BY id_topic', array('topic_list' => $topics, 'approved' => 1));
while ($row = $db->fetch_assoc($request)) {
$topic_changes[$row['id_topic']]['id_last_msg'] = $row['id_last_msg'];
}
$db->free_result($request);
}
// ... next the topics...
foreach ($topic_changes as $id => $changes) {
$db->query('', '
UPDATE {db_prefix}topics
SET
approved = {int:approved},
unapproved_posts = CASE WHEN unapproved_posts + {int:unapproved_posts} < 0 THEN 0 ELSE unapproved_posts + {int:unapproved_posts} END,
num_replies = CASE WHEN num_replies + {int:num_replies} < 0 THEN 0 ELSE num_replies + {int:num_replies} END,
id_last_msg = {int:id_last_msg}
WHERE id_topic = {int:id_topic}', array('approved' => $changes['approved'], 'unapproved_posts' => $changes['unapproved_posts'], 'num_replies' => $changes['replies'], 'id_last_msg' => $changes['id_last_msg'], 'id_topic' => $id));
}
// ... finally the boards...
foreach ($board_changes as $id => $changes) {
$db->query('', '
UPDATE {db_prefix}boards
SET
num_posts = num_posts + {int:num_posts},
unapproved_posts = CASE WHEN unapproved_posts + {int:unapproved_posts} < 0 THEN 0 ELSE unapproved_posts + {int:unapproved_posts} END,
num_topics = CASE WHEN num_topics + {int:num_topics} < 0 THEN 0 ELSE num_topics + {int:num_topics} END,
unapproved_topics = CASE WHEN unapproved_topics + {int:unapproved_topics} < 0 THEN 0 ELSE unapproved_topics + {int:unapproved_topics} END
WHERE id_board = {int:id_board}', array('num_posts' => $changes['posts'], 'unapproved_posts' => $changes['unapproved_posts'], 'num_topics' => $changes['topics'], 'unapproved_topics' => $changes['unapproved_topics'], 'id_board' => $id));
}
// Finally, least importantly, notifications!
if ($approve) {
require_once SUBSDIR . '/Notification.subs.php';
if (!empty($notification_topics)) {
sendBoardNotifications($notification_topics);
}
if (!empty($notification_posts)) {
sendApprovalNotifications($notification_posts);
}
$db->query('', '
DELETE FROM {db_prefix}approval_queue
WHERE id_msg IN ({array_int:message_list})
AND id_attach = {int:id_attach}', array('message_list' => $msgs, 'id_attach' => 0));
} else {
$msgInserts = array();
foreach ($msgs as $msg) {
$msgInserts[] = array($msg);
}
$db->insert('ignore', '{db_prefix}approval_queue', array('id_msg' => 'int'), $msgInserts, array('id_msg'));
}
if (!empty($modSettings['mentions_enabled'])) {
require_once SUBSDIR . '/Mentions.subs.php';
toggleMentionsApproval($msgs, $approve);
}
// Update the last messages on the boards...
updateLastMessages(array_keys($board_changes));
// Post count for the members?
if (!empty($member_post_changes)) {
foreach ($member_post_changes as $id_member => $count_change) {
updateMemberData($id_member, array('posts' => 'posts ' . ($approve ? '+' : '-') . ' ' . $count_change));
}
}
return true;
}
开发者ID:KeiroD,项目名称:Elkarte,代码行数:101,代码来源:Post.subs.php
示例2: QuickModeration
//.........这里部分代码省略.........
// Approve the topics...
if (!empty($approveCache)) {
// We need unapproved topic ids and their authors!
$request = $smcFunc['db_query']('', '
SELECT id_topic, id_member_started
FROM {db_prefix}topics
WHERE id_topic IN ({array_int:approve_topic_ids})
AND approved = {int:not_approved}
LIMIT ' . count($approveCache), array('approve_topic_ids' => $approveCache, 'not_approved' => 0));
$approveCache = array();
$approveCacheMembers = array();
while ($row = $smcFunc['db_fetch_assoc']($request)) {
$approveCache[] = $row['id_topic'];
$approveCacheMembers[$row['id_topic']] = $row['id_member_started'];
}
$smcFunc['db_free_result']($request);
// Any topics to approve?
if (!empty($approveCache)) {
// Handle the approval part...
approveTopics($approveCache);
// Time for some logging!
foreach ($approveCache as $topic) {
logAction('approve_topic', array('topic' => $topic, 'member' => $approveCacheMembers[$topic]));
}
}
}
// And (almost) lastly, lock the topics...
if (!empty($lockCache)) {
$lockStatus = array();
// Gotta make sure they CAN lock/unlock these topics...
if (!empty($board) && !allowedTo('lock_any')) {
// Make sure they started the topic AND it isn't already locked by someone with higher priv's.
$result = $smcFunc['db_query']('', '
SELECT id_topic, locked, id_board
FROM {db_prefix}topics
WHERE id_topic IN ({array_int:locked_topic_ids})
AND id_member_started = {int:current_member}
AND locked IN (2, 0)
LIMIT ' . count($lockCache), array('current_member' => $user_info['id'], 'locked_topic_ids' => $lockCache));
$lockCache = array();
$lockCacheBoards = array();
while ($row = $smcFunc['db_fetch_assoc']($result)) {
$lockCache[] = $row['id_topic'];
$lockCacheBoards[$row['id_topic']] = $row['id_board'];
$lockStatus[$row['id_topic']] = empty($row['locked']);
}
$smcFunc['db_free_result']($result);
} else {
$result = $smcFunc['db_query']('', '
SELECT id_topic, locked, id_board
FROM {db_prefix}topics
WHERE id_topic IN ({array_int:locked_topic_ids})
LIMIT ' . count($lockCache), array('locked_topic_ids' => $lockCache));
$lockCacheBoards = array();
while ($row = $smcFunc['db_fetch_assoc']($result)) {
$lockStatus[$row['id_topic']] = empty($row['locked']);
$lockCacheBoards[$row['id_topic']] = $row['id_board'];
}
$smcFunc['db_free_result']($result);
}
// It could just be that *none* were their own topics...
if (!empty($lockCache)) {
// Alternate the locked value.
$smcFunc['db_query']('', '
UPDATE {db_prefix}topics
SET locked = CASE WHEN locked = {int:is_locked} THEN ' . (allowedTo('lock_any') ? '1' : '2') . ' ELSE 0 END
WHERE id_topic IN ({array_int:locked_topic_ids})', array('locked_topic_ids' => $lockCache, 'is_locked' => 0));
}
}
if (!empty($markCache)) {
$markArray = array();
foreach ($markCache as $topic) {
$markArray[] = array($modSettings['maxMsgID'], $user_info['id'], $topic);
}
$smcFunc['db_insert']('replace', '{db_prefix}log_topics', array('id_msg' => 'int', 'id_member' => 'int', 'id_topic' => 'int'), $markArray, array('id_member', 'id_topic'));
}
foreach ($moveCache as $topic) {
// Didn't actually move anything!
if (!isset($topic[0])) {
break;
}
logAction('move', array('topic' => $topic[0], 'board_from' => $topic[1], 'board_to' => $topic[2]));
sendNotifications($topic[0], 'move');
}
foreach ($lockCache as $topic) {
logAction($lockStatus[$topic] ? 'lock' : 'unlock', array('topic' => $topic, 'board' => $lockCacheBoards[$topic]));
sendNotifications($topic, $lockStatus[$topic] ? 'lock' : 'unlock');
}
foreach ($stickyCache as $topic) {
logAction($stickyCacheStatus[$topic] ? 'unsticky' : 'sticky', array('topic' => $topic, 'board' => $stickyCacheBoards[$topic]));
sendNotifications($topic, 'sticky');
}
updateStats('topic');
updateStats('message');
updateSettings(array('calendar_updated' => time()));
if (!empty($affectedBoards)) {
updateLastMessages(array_keys($affectedBoards));
}
redirectexit($redirect_url);
}
开发者ID:Glyph13,项目名称:SMF2.1,代码行数:101,代码来源:MessageIndex.php
示例3: move_topic
function move_topic($topic, $board, $newboard, $topicinfo)
{
global $mobdb;
// Move the topic and fix the stats
$mobdb->query('
UPDATE {db_prefix}topics
SET ID_BOARD = {int:board}
WHERE ID_TOPIC = {int:topic}', array('board' => $newboard['id_board'], 'topic' => $topic));
$mobdb->query('
UPDATE {db_prefix}calendar
SET ID_BOARD = {int:board}
WHERE ID_TOPIC = {int:topic}', array('topic' => $topic, 'board' => $newboard['id_board']));
$mobdb->query('
UPDATE {db_prefix}messages
SET ID_BOARD = {int:board}
WHERE ID_TOPIC = {int:topic}', array('board' => $newboard['id_board'], 'topic' => $topic));
$mobdb->query('
UPDATE {db_prefix}boards
SET numPosts = numPosts + {int:new_posts},
numTopics = numTopics + 1
WHERE ID_BOARD = {int:board}', array('new_posts' => $topicinfo['replies'] + 1, 'board' => $newboard['id_board']));
$mobdb->query('
UPDATE {db_prefix}boards
SET numPosts = numPosts - {int:new_posts},
numTopics = numTopics - 1
WHERE ID_BOARD = {int:board}', array('new_posts' => $topicinfo['replies'] + 1, 'board' => $board));
// Update the last messages
updateLastMessages(array($board, $newboard['id_board']));
}
开发者ID:keweiliu6,项目名称:test_smf1,代码行数:29,代码来源:Subs-Mobiquo.php
示例4: MergeExecute
//.........这里部分代码省略.........
// Determine the subject of the newly merged topic - was a custom subject specified?
if (empty($_POST['subject']) && isset($_POST['custom_subject']) && $_POST['custom_subject'] != '') {
$target_subject = $func['htmlspecialchars']($_POST['custom_subject']);
} elseif (!empty($topic_data[(int) $_POST['subject']]['subject'])) {
$target_subject = addslashes($topic_data[(int) $_POST['subject']]['subject']);
} else {
$target_subject = addslashes($topic_data[$firstTopic]['subject']);
}
// Get the first and last message and the number of messages....
$request = db_query("\n\t\tSELECT MIN(ID_MSG), MAX(ID_MSG), COUNT(ID_MSG) - 1\n\t\tFROM {$db_prefix}messages\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $topics) . ")", __FILE__, __LINE__);
list($first_msg, $last_msg, $num_replies) = mysql_fetch_row($request);
mysql_free_result($request);
// Get the member ID of the first and last message.
$request = db_query("\n\t\tSELECT ID_MEMBER\n\t\tFROM {$db_prefix}messages\n\t\tWHERE ID_MSG IN ({$first_msg}, {$last_msg})\n\t\tORDER BY ID_MSG\n\t\tLIMIT 2", __FILE__, __LINE__);
list($member_started) = mysql_fetch_row($request);
list($member_updated) = mysql_fetch_row($request);
mysql_free_result($request);
// Assign the first topic ID to be the merged topic.
$ID_TOPIC = min($topics);
// Delete the remaining topics.
$deleted_topics = array_diff($topics, array($ID_TOPIC));
db_query("\n\t\tDELETE FROM {$db_prefix}topics\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $deleted_topics) . ")\n\t\tLIMIT " . count($deleted_topics), __FILE__, __LINE__);
db_query("\n\t\tDELETE FROM {$db_prefix}log_search_subjects\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $deleted_topics) . ")", __FILE__, __LINE__);
// Asssign the properties of the newly merged topic.
db_query("\n\t\tUPDATE {$db_prefix}topics\n\t\tSET\n\t\t\tID_BOARD = {$target_board},\n\t\t\tID_MEMBER_STARTED = {$member_started},\n\t\t\tID_MEMBER_UPDATED = {$member_updated},\n\t\t\tID_FIRST_MSG = {$first_msg},\n\t\t\tID_LAST_MSG = {$last_msg},\n\t\t\tID_POLL = {$target_poll},\n\t\t\tnumReplies = {$num_replies},\n\t\t\tnumViews = {$num_views},\n\t\t\tisSticky = {$isSticky}\n\t\tWHERE ID_TOPIC = {$ID_TOPIC}\n\t\tLIMIT 1", __FILE__, __LINE__);
// Grab the response prefix (like 'Re: ') in the default forum language.
if (!isset($context['response_prefix']) && !($context['response_prefix'] = cache_get_data('response_prefix'))) {
if ($language === $user_info['language']) {
$context['response_prefix'] = $txt['response_prefix'];
} else {
loadLanguage('index', $language, false);
$context['response_prefix'] = $txt['response_prefix'];
loadLanguage('index');
}
cache_put_data('response_prefix', $context['response_prefix'], 600);
}
// Change the topic IDs of all messages that will be merged. Also adjust subjects if 'enforce subject' was checked.
db_query("\n\t\tUPDATE {$db_prefix}messages\n\t\tSET\n\t\t\tID_TOPIC = {$ID_TOPIC},\n\t\t\tID_BOARD = {$target_board}" . (!empty($_POST['enforce_subject']) ? ",\n\t\t\tsubject = '{$context['response_prefix']}{$target_subject}'" : '') . "\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $topics) . ")", __FILE__, __LINE__);
// Change the subject of the first message...
db_query("\n\t\tUPDATE {$db_prefix}messages\n\t\tSET subject = '{$target_subject}'\n\t\tWHERE ID_MSG = {$first_msg}\n\t\tLIMIT 1", __FILE__, __LINE__);
// Adjust all calendar events to point to the new topic.
db_query("\n\t\tUPDATE {$db_prefix}calendar\n\t\tSET\n\t\t\tID_TOPIC = {$ID_TOPIC},\n\t\t\tID_BOARD = {$target_board}\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $deleted_topics) . ")", __FILE__, __LINE__);
// Merge log topic entries.
$request = db_query("\n\t\tSELECT ID_MEMBER, MIN(ID_MSG) AS new_ID_MSG\n\t\tFROM {$db_prefix}log_topics\n\t\tWHERE ID_TOPIC IN (" . implode(', ', $topics) . ")\n\t\tGROUP BY ID_MEMBER", __FILE__, __LINE__);
if (mysql_num_rows($request) > 0) {
$replaceEntries = array();
while ($row = mysql_fetch_assoc($request)) {
$replaceEntries[] = "({$row['ID_MEMBER']}, {$ID_TOPIC}, {$row['new_ID_MSG']})";
}
db_query("\n\t\t\tREPLACE INTO {$db_prefix}log_topics\n\t\t\t\t(ID_MEMBER, ID_TOPIC, ID_MSG)\n\t\t\tVALUES " . implode(', ', $replaceEntries), __FILE__, __LINE__);
unset($replaceEntries);
// Get rid of the old log entries.
db_query("\n\t\t\tDELETE FROM {$db_prefix}log_topics\n\t\t\tWHERE ID_TOPIC IN (" . implode(', ', $deleted_topics) . ")", __FILE__, __LINE__);
}
mysql_free_result($request);
// Merge topic notifications.
if (!empty($_POST['notifications']) && is_array($_POST['notifications'])) {
// Check if the notification array contains valid topics.
if (count(array_diff($_POST['notifications'], $topics)) > 0) {
fatal_lang_error('smf232');
}
$request = db_query("\n\t\t\tSELECT ID_MEMBER, MAX(sent) AS sent\n\t\t\tFROM {$db_prefix}log_notify\n\t\t\tWHERE ID_TOPIC IN (" . implode(', ', $_POST['notifications']) . ")\n\t\t\tGROUP BY ID_MEMBER", __FILE__, __LINE__);
if (mysql_num_rows($request) > 0) {
$replaceEntries = array();
while ($row = mysql_fetch_assoc($request)) {
$replaceEntries[] = "({$row['ID_MEMBER']}, {$ID_TOPIC}, 0, {$row['sent']})";
}
db_query("\n\t\t\t\tREPLACE INTO {$db_prefix}log_notify\n\t\t\t\t\t(ID_MEMBER, ID_TOPIC, ID_BOARD, sent)\n\t\t\t\tVALUES " . implode(', ', $replaceEntries), __FILE__, __LINE__);
unset($replaceEntries);
db_query("\n\t\t\t\tDELETE FROM {$db_prefix}log_topics\n\t\t\t\tWHERE ID_TOPIC IN (" . implode(', ', $deleted_topics) . ")", __FILE__, __LINE__);
}
mysql_free_result($request);
}
// Get rid of the redundant polls.
if (!empty($deleted_polls)) {
db_query("\n\t\t\tDELETE FROM {$db_prefix}polls\n\t\t\tWHERE ID_POLL IN (" . implode(', ', $deleted_polls) . ")\n\t\t\tLIMIT 1", __FILE__, __LINE__);
db_query("\n\t\t\tDELETE FROM {$db_prefix}poll_choices\n\t\t\tWHERE ID_POLL IN (" . implode(', ', $deleted_polls) . ")", __FILE__, __LINE__);
db_query("\n\t\t\tDELETE FROM {$db_prefix}log_polls\n\t\t\tWHERE ID_POLL IN (" . implode(', ', $deleted_polls) . ")", __FILE__, __LINE__);
}
// Fix the board totals.
if (count($boards) > 1) {
$request = db_query("\n\t\t\tSELECT ID_BOARD, COUNT(*) AS numTopics, SUM(numReplies) + COUNT(*) AS numPosts\n\t\t\tFROM {$db_prefix}topics\n\t\t\tWHERE ID_BOARD IN (" . implode(', ', $boards) . ")\n\t\t\tGROUP BY ID_BOARD\n\t\t\tLIMIT " . count($boards), __FILE__, __LINE__);
while ($row = mysql_fetch_assoc($request)) {
db_query("\n\t\t\t\tUPDATE {$db_prefix}boards\n\t\t\t\tSET\n\t\t\t\t\tnumPosts = {$row['numPosts']},\n\t\t\t\t\tnumTopics = {$row['numTopics']}\n\t\t\t\tWHERE ID_BOARD = {$row['ID_BOARD']}\n\t\t\t\tLIMIT 1", __FILE__, __LINE__);
}
mysql_free_result($request);
} else {
db_query("\n\t\t\tUPDATE {$db_prefix}boards\n\t\t\tSET numTopics = IF(" . (count($topics) - 1) . " > numTopics, 0, numTopics - " . (count($topics) - 1) . ")\n\t\t\tWHERE ID_BOARD = {$target_board}\n\t\t\tLIMIT 1", __FILE__, __LINE__);
}
require_once $sourcedir . '/Subs-Post.php';
// Update all the statistics.
updateStats('topic');
updateStats('subject', $ID_TOPIC, $target_subject);
updateLastMessages($boards);
logAction('merge', array('topic' => $ID_TOPIC));
// Notify people that these topics have been merged?
sendNotifications($ID_TOPIC, 'merge');
// Send them to the all done page.
redirectexit('action=mergetopics;sa=done;to=' . $ID_TOPIC . ';targetboard=' . $target_board);
}
开发者ID:VBGAMER45,项目名称:SMFMods,代码行数:101,代码来源:SplitTopics.php
示例5: MergeExecute
//.........这里部分代码省略.........
// Change the subject of the first message...
$smcFunc['db_query']('', '
UPDATE {db_prefix}messages
SET subject = {string:target_subject}
WHERE id_msg = {int:first_msg}', array('first_msg' => $first_msg, 'target_subject' => $target_subject));
// Adjust all calendar events to point to the new topic.
$smcFunc['db_query']('', '
UPDATE {db_prefix}calendar
SET
id_topic = {int:id_topic},
id_board = {int:target_board}
WHERE id_topic IN ({array_int:deleted_topics})', array('deleted_topics' => $deleted_topics, 'id_topic' => $id_topic, 'target_board' => $target_board));
// Merge log topic entries.
$request = $smcFunc['db_query']('', '
SELECT id_member, MIN(id_msg) AS new_id_msg
FROM {db_prefix}log_topics
WHERE id_topic IN ({array_int:topics})
GROUP BY id_member', array('topics' => $topics));
if ($smcFunc['db_num_rows']($request) > 0) {
$replaceEntries = array();
while ($row = $smcFunc['db_fetch_assoc']($request)) {
$replaceEntries[] = array($row['id_member'], $id_topic, $row['new_id_msg']);
}
$smcFunc['db_insert']('replace', '{db_prefix}log_topics', array('id_member' => 'int', 'id_topic' => 'int', 'id_msg' => 'int'), $replaceEntries, array('id_member', 'id_topic'));
unset($replaceEntries);
// Get rid of the old log entries.
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}log_topics
WHERE id_topic IN ({array_int:deleted_topics})', array('deleted_topics' => $deleted_topics));
}
$smcFunc['db_free_result']($request);
// Merge topic notifications.
$notifications = isset($_POST['notifications']) && is_array($_POST['notifications']) ? array_intersect($topics, $_POST['notifications']) : array();
if (!empty($notifications)) {
$request = $smcFunc['db_query']('', '
SELECT id_member, MAX(sent) AS sent
FROM {db_prefix}log_notify
WHERE id_topic IN ({array_int:topics_list})
GROUP BY id_member', array('topics_list' => $notifications));
if ($smcFunc['db_num_rows']($request) > 0) {
$replaceEntries = array();
while ($row = $smcFunc['db_fetch_assoc']($request)) {
$replaceEntries[] = array($row['id_member'], $id_topic, 0, $row['sent']);
}
$smcFunc['db_insert']('replace', '{db_prefix}log_notify', array('id_member' => 'int', 'id_topic' => 'int', 'id_board' => 'int', 'sent' => 'int'), $replaceEntries, array('id_member', 'id_topic', 'id_board'));
unset($replaceEntries);
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}log_topics
WHERE id_topic IN ({array_int:deleted_topics})', array('deleted_topics' => $deleted_topics));
}
$smcFunc['db_free_result']($request);
}
// Get rid of the redundant polls.
if (!empty($deleted_polls)) {
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}polls
WHERE id_poll IN ({array_int:deleted_polls})', array('deleted_polls' => $deleted_polls));
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}poll_choices
WHERE id_poll IN ({array_int:deleted_polls})', array('deleted_polls' => $deleted_polls));
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}log_polls
WHERE id_poll IN ({array_int:deleted_polls})', array('deleted_polls' => $deleted_polls));
}
// Cycle through each board...
foreach ($boardTotals as $id_board => $stats) {
$smcFunc['db_query']('', '
UPDATE {db_prefix}boards
SET
num_topics = CASE WHEN {int:topics} > num_topics THEN 0 ELSE num_topics - {int:topics} END,
unapproved_topics = CASE WHEN {int:unapproved_topics} > unapproved_topics THEN 0 ELSE unapproved_topics - {int:unapproved_topics} END,
num_posts = CASE WHEN {int:posts} > num_posts THEN 0 ELSE num_posts - {int:posts} END,
unapproved_posts = CASE WHEN {int:unapproved_posts} > unapproved_posts THEN 0 ELSE unapproved_posts - {int:unapproved_posts} END
WHERE id_board = {int:id_board}', array('id_board' => $id_board, 'topics' => $stats['topics'], 'unapproved_topics' => $stats['unapproved_topics'], 'posts' => $stats['posts'], 'unapproved_posts' => $stats['unapproved_posts']));
}
// Determine the board the final topic resides in
$request = $smcFunc['db_query']('', '
SELECT id_board
FROM {db_prefix}topics
WHERE id_topic = {int:id_topic}
LIMIT 1', array('id_topic' => $id_topic));
list($id_board) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
require_once $sourcedir . '/Subs-Post.php';
// Update all the statistics.
updateStats('topic');
updateStats('subject', $id_topic, $target_subject);
updateLastMessages($boards);
logAction('merge', array('topic' => $id_topic, 'board' => $id_board));
// Notify people that these topics have been merged?
sendNotifications($id_topic, 'merge');
// If there's a search index that needs updating, update it...
require_once $sourcedir . '/Search.php';
$searchAPI = findSearchAPI();
if (is_callable(array($searchAPI, 'topicMerge'))) {
$searchAPI->topicMerge($id_topic, $topics, $affected_msgs, empty($_POST['enforce_subject']) ? null : array($context['response_prefix'], $target_subject));
}
// Send them to the all done page.
redirectexit('action=mergetopics;sa=done;to=' . $id_topic . ';targetboard=' . $target_board);
}
开发者ID:Glyph13,项目名称:SMF2.1,代码行数:101,代码来源:SplitTopics.php
示例6: mergePosts
//.........这里部分代码省略.........
if (!$row['approved']) {
$target_topic_data['unapproved_posts'] = $row['message_count'];
} else {
$target_topic_data['num_replies'] = max(0, $row['message_count'] - 1);
}
}
$smcFunc['db_free_result']($request);
// We have a new post count for the board.
$smcFunc['db_query']('', '
UPDATE {db_prefix}boards
SET
num_posts = num_posts + {int:diff_replies},
unapproved_posts = unapproved_posts + {int:diff_unapproved_posts}
WHERE id_board = {int:target_board}', array('diff_replies' => $target_topic_data['num_replies'] - $target_replies, 'diff_unapproved_posts' => $target_topic_data['unapproved_posts'] - $target_unapproved_posts, 'target_board' => $target_board));
// In some cases we merged the only post in a topic so the topic data is left behind in the topic table.
$request = $smcFunc['db_query']('', '
SELECT id_topic
FROM {db_prefix}messages
WHERE id_topic = {int:from_topic}', array('from_topic' => $from_topic));
// Remove the topic if it doesn't have any messages.
$topic_exists = true;
if ($smcFunc['db_num_rows']($request) == 0) {
removeTopics($from_topic, false, true);
$topic_exists = false;
}
$smcFunc['db_free_result']($request);
// Recycled topic.
if ($topic_exists == true) {
// Fix the id_first_msg and id_last_msg for the source topic.
$source_topic_data = array('num_replies' => 0, 'unapproved_posts' => 0, 'id_first_msg' => 9999999999);
$request = $smcFunc['db_query']('', '
SELECT MIN(id_msg) AS id_first_msg, MAX(id_msg) AS id_last_msg, COUNT(*) AS message_count, approved, subject
FROM {db_prefix}messages
WHERE id_topic = {int:from_topic}
GROUP BY id_topic, approved
ORDER BY approved ASC
LIMIT 2', array('from_topic' => $from_topic));
while ($row = $smcFunc['db_fetch_assoc']($request)) {
if ($row['id_first_msg'] < $source_topic_data['id_first_msg']) {
$source_topic_data['id_first_msg'] = $row['id_first_msg'];
}
$source_topic_data['id_last_msg'] = $row['id_last_msg'];
if (!$row['approved']) {
$source_topic_data['unapproved_posts'] = $row['message_count'];
} else {
$source_topic_data['num_replies'] = max(0, $row['message_count'] - 1);
}
}
$smcFunc['db_free_result']($request);
// Update the topic details for the source topic.
$smcFunc['db_query']('', '
UPDATE {db_prefix}topics
SET
id_first_msg = {int:id_first_msg},
id_last_msg = {int:id_last_msg},
num_replies = {int:num_replies},
unapproved_posts = {int:unapproved_posts}
WHERE id_topic = {int:from_topic}', array('id_first_msg' => $source_topic_data['id_first_msg'], 'id_last_msg' => $source_topic_data['id_last_msg'], 'num_replies' => $source_topic_data['num_replies'], 'unapproved_posts' => $source_topic_data['unapproved_posts'], 'from_topic' => $from_topic));
// We have a new post count for the source board.
$smcFunc['db_query']('', '
UPDATE {db_prefix}boards
SET
num_posts = num_posts + {int:diff_replies},
unapproved_posts = unapproved_posts + {int:diff_unapproved_posts}
WHERE id_board = {int:from_board}', array('diff_replies' => $source_topic_data['num_replies'] - $from_replies, 'diff_unapproved_posts' => $source_topic_data['unapproved_posts'] - $from_unapproved_posts, 'from_board' => $from_board));
}
// Finally get around to updating the destination topic, now all indexes etc on the source are fixed.
$smcFunc['db_query']('', '
UPDATE {db_prefix}topics
SET
id_first_msg = {int:id_first_msg},
id_last_msg = {int:id_last_msg},
num_replies = {int:num_replies},
unapproved_posts = {int:unapproved_posts}
WHERE id_topic = {int:target_topic}', array('id_first_msg' => $target_topic_data['id_first_msg'], 'id_last_msg' => $target_topic_data['id_last_msg'], 'num_replies' => $target_topic_data['num_replies'], 'unapproved_posts' => $target_topic_data['unapproved_posts'], 'target_topic' => $target_topic));
// Need it to update some stats.
require_once $sourcedir . '/Subs-Post.php';
// Update stats.
updateStats('topic');
updateStats('message');
// Subject cache?
$cache_updates = array();
if ($target_first_msg != $target_topic_data['id_first_msg']) {
$cache_updates[] = $target_topic_data['id_first_msg'];
}
if (!empty($source_topic_data['id_first_msg']) && $from_first_msg != $source_topic_data['id_first_msg']) {
$cache_updates[] = $source_topic_data['id_first_msg'];
}
if (!empty($cache_updates)) {
$request = $smcFunc['db_query']('', '
SELECT id_topic, subject
FROM {db_prefix}messages
WHERE id_msg IN ({array_int:first_messages})', array('first_messages' => $cache_updates));
while ($row = $smcFunc['db_fetch_assoc']($request)) {
updateStats('subject', $row['id_topic'], $row['subject']);
}
$smcFunc['db_free_result']($request);
}
updateLastMessages(array($from_board, $target_board));
}
开发者ID:Glyph13,项目名称:SMF2.1,代码行数:101,代码来源:RemoveTopic.php
示例7: CopyTopics
//.........这里部分代码省略.........
unset($fix, $row);
// --- Fix some stats and logs ---
// Fix id_msg_modified to the New id_msg
$smcFunc['db_query']('', '
UPDATE {db_prefix}messages
SET id_msg_modified = id_msg
WHERE id_topic = {int:topic_id}', array('topic_id' => $topic_id));
// Grab First & Last Message Id
$request = $smcFunc['db_query']('', '
SELECT max(id_msg) as last, min(id_msg) as first
FROM {db_prefix}messages
WHERE id_topic = {int:topic_id}', array('topic_id' => $topic_id));
$row = $smcFunc['db_fetch_assoc']($request);
// Update the topic info with that info
$smcFunc['db_query']('', '
UPDATE {db_prefix}topics
SET id_first_msg = {int:first}, id_last_msg = {int:last}
WHERE id_topic = {int:topic_id}', array('topic_id' => $topic_id, 'first' => $row['first'], 'last' => $row['last']));
// Update log topics (for this user only)
$smcFunc['db_query']('', '
REPLACE
INTO {db_prefix}log_topics
(id_topic, id_member, id_msg)
VALUES ({int:topic_id}, {int:user_id}, {int:last})
', array('topic_id' => $topic_id, 'last' => $row['last'], 'user_id' => $context['user']['id']));
// Update log boards (for this user only)
$smcFunc['db_query']('', '
REPLACE
INTO {db_prefix}log_boards
(id_board, id_member, id_msg)
VALUES ({int:board_id}, {int:user_id}, {int:last})
', array('board_id' => $board_id, 'last' => $row['last'], 'user_id' => $context['user']['id']));
require_once $sourcedir . '/Subs-Post.php';
updateLastMessages($board_id, $row['last']);
// --- Fix Post Counts ---
// Posts in the board we're copying the topic to count, so we need to get the figures for each
if ($count_posts) {
// Increase the stats for the board
$smcFunc['db_query']('', '
UPDATE {db_prefix}boards
SET num_posts = num_posts + {int:num_posts}, num_topics = num_topics + 1
WHERE id_board = {int:board_id}
', array('board_id' => $board_id, 'num_posts' => $num_posts));
// How many posts have been made by each user in the copied topic?
$request = $smcFunc['db_query']('', '
SELECT count(*) as increase, id_member
FROM {db_prefix}messages
WHERE id_topic = {int:topic_id}
AND id_member > 0
GROUP BY id_member
', array('topic_id' => $topic_id));
// Any members to update (non-guests);
if ($smcFunc['db_num_rows']($request) != 0) {
$members = $increase = array();
// Prepare the information in arrays for easy update
while ($row = $smcFunc['db_fetch_assoc']($request)) {
$increase[$row['id_member']] = $row['increase'];
// Store the member ids, as we will need to Update PostGroups
if (!in_array($row['id_member'], $members)) {
$members[] = $row['id_member'];
}
}
// Update each users postcount accordingly. Could add significant number of queries for large topics.
foreach ($increase as $a => $b) {
$smcFunc['db_query']('', '
UPDATE {db_prefix}members
开发者ID:VBGAMER45,项目名称:SMFMods,代码行数:67,代码来源:CopyTopic.php
示例8: shd_topictoticket2
//.........这里部分代码省略.........
// The ID of the ticket we created
$ticket = $ticketOptions['id'];
if ($smcFunc['db_num_rows']($request) != 0) {
// Now loop through each reply and post it. Hopefully there aren't too many. *looks at clock*
while ($row = $smcFunc['db_fetch_assoc']($request)) {
$msgOptions = array('body' => $row['body'], 'smileys_enabled' => !empty($row['smileys_enabled']) ? 1 : 0);
$ticketOptions = array('id' => $ticket, 'mark_as_read' => false);
$posterOptions = array('id' => $row['id_member'], 'name' => !empty($row['poster_name']) ? $row['poster_name'] : '', 'email' => !empty($row['poster_email']) ? $row['poster_email'] : '', 'ip' => !empty($row['poster_ip']) ? $row['poster_ip'] : '');
shd_create_ticket_post($msgOptions, $ticketOptions, $posterOptions);
$msg_assoc[$row['id_msg']] = $msgOptions['id'];
}
}
// Ticket: check; Replies: check; Notfiy the topic starter, if desired.
if (isset($_POST['send_pm'])) {
require_once $sourcedir . '/Subs-Post.php';
$request = shd_db_query('pm_find_username', '
SELECT id_member, real_name
FROM {db_prefix}members
WHERE id_member = {int:user}
LIMIT 1', array('user' => $owner));
list($userid, $username) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);
// Fix the content
$replacements = array('{user}' => $username, '{subject}' => $old_subject, '{link}' => $scripturl . '?action=helpdesk;sa=ticket;ticket=' . $ticket);
$message = str_replace(array_keys($replacements), array_values($replacements), $_POST['pm_content']);
$recipients = array('to' => array($owner), 'bcc' => array());
sendpm($recipients, $txt['shd_ticket_moved_subject_topic'], un_htmlspecialchars($message));
}
// And now for something completely different: attachments
if (!empty($msg_assoc)) {
// 1. Get all the attachments for these messages from the attachments table
$attachIDs = array();
$query = shd_db_query('', '
SELECT id_attach, id_msg
FROM {db_prefix}attachments
WHERE id_msg IN ({array_int:smf_msgs})', array('smf_msgs' => array_keys($msg_assoc)));
while ($row = $smcFunc['db_fetch_assoc']($query)) {
$attachIDs[] = $row;
}
$smcFunc['db_free_result']($query);
if (!empty($attachIDs)) {
// 2. Do the switch
// 2.1. Add them to SD's tables
$array = array();
foreach ($attachIDs as $attach) {
$array[] = array($attach['id_attach'], $ticket, $msg_assoc[$attach['id_msg']]);
}
$smcFunc['db_insert']('replace', '{db_prefix}helpdesk_attachments', array('id_attach' => 'int', 'id_ticket' => 'int', 'id_msg' => 'int'), $array, array('id_attach'));
// 2.2. "Remove" them from SMF's table
shd_db_query('', '
UPDATE {db_prefix}attachments
SET id_msg = 0
WHERE id_msg IN ({array_int:smf_msgs})', array('smf_msgs' => array_keys($msg_assoc)));
}
}
// Now we'll add this to the log.
$log_params = array('subject' => $subject, 'ticket' => $ticket);
shd_log_action('topictoticket', $log_params);
// Update post counts.
$request = shd_db_query('', '
SELECT id_member
FROM {db_prefix}messages
WHERE id_topic = {int:topic}', array('topic' => $context['topic_id']));
$posters = array();
while ($row = $smcFunc['db_fetch_assoc']($request)) {
if (!isset($posters[$row['id_member']])) {
$posters[$row['id_member']] = 0;
}
$posters[$row['id_member']]++;
}
$smcFunc['db_free_result']($request);
foreach ($posters as $id_member => $posts) {
updateMemberData($id_member, array('posts' => 'posts - ' . $posts));
}
// Lastly, delete the topic from the database.
shd_db_query('', '
DELETE FROM {db_prefix}topics
WHERE id_topic = {int:topic}
LIMIT 1', array('topic' => $context['topic_id']));
// And the replies, too.
shd_db_query('', '
DELETE FROM {db_prefix}messages
WHERE id_topic = {int:topic}', array('topic' => $context['topic_id']));
// Update the stats.
require_once $sourcedir . '/Subs-Post.php';
updateStats('message');
updateStats('topic');
updateLastMessages($board);
// Update board post counts.
shd_db_query('', '
UPDATE {db_prefix}boards
SET num_topics = num_topics - 1,
num_posts = num_posts - {int:num_posts}
WHERE id_board = {int:board}', array('board' => $board, 'num_posts' => $num_replies));
} else {
fatal_lang_error('shd_move_ticket_not_created', false);
}
// Send them to the ticket.
redirectexit('action=helpdesk;sa=ticket;ticket=' . $ticket);
}
开发者ID:wintstar,项目名称:Testing,代码行数:101,代码来源:SimpleDesk-TicketTopicMove.php
示例9: removeMessage
//.........这里部分代码省略.........
require_once SUBSDIR . '/Boards.subs.php';
markBoardsRead($modSettings['recycle_board']);
}
// Add one topic and post to the recycle bin board.
$db->query('', '
UPDATE {db_prefix}boards
SET
num_topics = num_topics + {int:num_topics_inc},
num_posts = num_posts + 1' . ($message > $last_board_msg ? ', id_last_msg = {int:id_merged_msg}' : '') . '
WHERE id_board = {int:recycle_board}', array('num_topics_inc' => empty($id_recycle_topic) ? 1 : 0, 'recycle_board' => $modSettings['recycle_board'], 'id_merged_msg' => $message));
// Lets increase the num_replies, and the first/last message ID as appropriate.
if (!empty($id_recycle_topic)) {
$db->query('', '
UPDATE {db_prefix}topics
SET num_replies = num_replies + 1' . ($message > $last_topic_msg ? ', id_last_msg = {int:id_merged_msg}' : '') . ($message < $first_topic_msg ? ', id_first_msg = {int:id_merged_msg}' : '') . '
WHERE id_topic = {int:id_recycle_topic}', array('id_recycle_topic' => $id_recycle_topic, 'id_merged_msg' => $message));
}
// Make sure this message isn't getting deleted later on.
$recycle = true;
// Make sure we update the search subject index.
updateSubjectStats($topicID, $row['subject']);
}
// If it wasn't approved don't keep it in the queue.
if (!$row['approved']) {
$db->query('', '
DELETE FROM {db_prefix}approval_queue
WHERE id_msg = {int:id_msg}
AND id_attach = {int:id_attach}', array('id_msg' => $message, 'id_attach' => 0));
}
}
$db->query('', '
UPDATE {db_prefix}boards
SET ' . ($row['approved'] ? '
num_posts = CASE WHEN num_posts = {int:no_posts} THEN 0 ELSE num_posts - 1 END' : '
unapproved_posts = CASE WHEN unapproved_posts = {int:no_unapproved} THEN 0 ELSE unapproved_posts - 1 END') . '
WHERE id_board = {int:id_board}', array('no_posts' => 0, 'no_unapproved' => 0, 'id_board' => $row['id_board']));
// If the poster was registered and the board this message was on incremented
// the member's posts when it was posted, decrease his or her post count.
if (!empty($row['id_member']) && $decreasePostCount && empty($row['count_posts']) && $row['approved']) {
updateMemberData($row['id_member'], array('posts' => '-'));
}
// Only remove posts if they're not recycled.
if (!$recycle) {
// Remove the likes!
$db->query('', '
DELETE FROM {db_prefix}message_likes
WHERE id_msg = {int:id_msg}', array('id_msg' => $message));
// Remove the mentions!
$db->query('', '
DELETE FROM {db_prefix}log_mentions
WHERE id_msg = {int:id_msg}', array('id_msg' => $message));
// Remove the message!
$db->query('', '
DELETE FROM {db_prefix}messages
WHERE id_msg = {int:id_msg}', array('id_msg' => $message));
if (!empty($modSettings['search_custom_index_config'])) {
$customIndexSettings = unserialize($modSettings['search_custom_index_config']);
$words = text2words($row['body'], $customIndexSettings['bytes_per_word'], true);
if (!empty($words)) {
$db->query('', '
DELETE FROM {db_prefix}log_search_words
WHERE id_word IN ({array_int:word_list})
AND id_msg = {int:id_msg}', array('word_list' => $words, 'id_msg' => $message));
}
}
// Delete attachment(s) if they exist.
require_once SUBSDIR . '/ManageAttachments.subs.php';
$attachmentQuery = array('attachment_type' => 0, 'id_msg' => $message);
removeAttachments($attachmentQuery);
// Delete follow-ups too
require_once SUBSDIR . '/FollowUps.subs.php';
// If it is an entire topic
if ($row['id_first_msg'] == $message) {
$db->query('', '
DELETE FROM {db_prefix}follow_ups
WHERE follow_ups IN ({array_int:topics})', array('topics' => $row['id_topic']));
}
// Allow mods to remove message related data of their own (likes, maybe?)
call_integration_hook('integrate_remove_message', array($message));
}
// Update the pesky statistics.
updateMessageStats();
updateStats('topic');
updateSettings(array('calendar_updated' => time()));
// And now to update the last message of each board we messed with.
require_once SUBSDIR . '/Post.subs.php';
if ($recycle) {
updateLastMessages(array($row['id_board'], $modSettings['recycle_board']));
} else {
updateLastMessages($row['id_board']);
}
// Close any moderation reports for this message.
require_once SUBSDIR . '/Moderation.subs.php';
$updated_reports = updateReportsStatus($message, 'close', 1);
if ($updated_reports != 0) {
updateSettings(array('last_mod_report_action' => time()));
recountOpenReports();
}
return false;
}
开发者ID:Ralkage,项目名称:Elkarte,代码行数:101,代码来源:Messages.subs.php
示例10: removeMessage
//.........这里部分代码省略.........
fatal_lang_error('cannot_remove_own');
}
} else {
// Check permissions to delete a whole topic.
if ($row['ID_MEMBER'] != $ID_MEMBER) {
isAllowedTo('remove_any');
} elseif (!allowedTo('remove_any')) {
isAllowedTo('remove_own');
}
}
// ...if there is only one post.
if (!empty($row['numReplies'])) {
fatal_lang_error('delFirstPost', false);
}
removeTopics($row['ID_TOPIC']);
return true;
}
// Default recycle to false.
$recycle = false;
// If recycle topics has been set, make a copy of this message in the recycle board.
// Make sure we're not recycling messages that are already on the recycle board.
if (!empty($modSettings['recycle_enable']) && $row['ID_BOARD'] != $modSettings['recycle_board'] && $row['icon'] != 'recycled') {
// Check if the recycle board exists and if so get the read status.
$request = db_query("\n\t\t\tSELECT (IFNULL(lb.ID_MSG, 0) >= b.ID_MSG_UPDATED) AS isSeen\n\t\t\tFROM {$db_prefix}boards AS b\n\t\t\t\tLEFT JOIN {$db_prefix}log_boards AS lb ON (lb.ID_BOARD = b.ID_BOARD AND lb.ID_MEMBER = {$ID_MEMBER})\n\t\t\tWHERE b.ID_BOARD = {$modSettings['recycle_board']}", __FILE__, __LINE__);
if (mysql_num_rows($request) == 0) {
fatal_lang_error('recycle_no_valid_board');
}
list($isRead) = mysql_fetch_row($request);
mysql_free_result($request);
// Insert a new topic in the recycle board.
db_query("\n\t\t\tINSERT INTO {$db_prefix}topics\n\t\t\t\t(ID_BOARD, ID_MEMBER_STARTED, ID_MEMBER_UPDATED, ID_FIRST_MSG, ID_LAST_MSG)\n\t\t\tVALUES ({$modSettings['recycle_board']}, {$row['ID_MEMBER']}, {$row['ID_MEMBER']}, {$message}, {$message})", __FILE__, __LINE__);
// Capture the ID of the new topic...
$topicID = db_insert_id();
// If the topic creation went successful, move the message.
if ($topicID > 0) {
db_query("\n\t\t\t\tUPDATE {$db_prefix}messages\n\t\t\t\tSET \n\t\t\t\t\tID_TOPIC = {$topicID},\n\t\t\t\t\tID_BOARD = {$modSettings['recycle_board']},\n\t\t\t\t\ticon = 'recycled'\n\t\t\t\tWHERE ID_MSG = {$message}\n\t\t\t\tLIMIT 1", __FILE__, __LINE__);
// Mark recycled topic as read.
if (!$user_info['is_guest']) {
db_query("\n\t\t\t\t\tREPLACE INTO {$db_prefix}log_topics\n\t\t\t\t\t\t(ID_TOPIC, ID_MEMBER, ID_MSG)\n\t\t\t\t\tVALUES ({$topicID}, {$ID_MEMBER}, {$modSettings['maxMsgID']})", __FILE__, __LINE__);
}
// Mark recycle board as seen, if it was marked as seen before.
if (!empty($isRead) && !$user_info['is_guest']) {
db_query("\n\t\t\t\t\tREPLACE INTO {$db_prefix}log_boards\n\t\t\t\t\t\t(ID_BOARD, ID_MEMBER, ID_MSG)\n\t\t\t\t\tVALUES ({$modSettings['recycle_board']}, {$ID_MEMBER}, {$modSettings['maxMsgID']})", __FILE__, __LINE__);
}
// Add one topic and post to the recycle bin board.
db_query("\n\t\t\t\tUPDATE {$db_prefix}boards\n\t\t\t\tSET\n\t\t\t\t\tnumTopics = numTopics + 1,\n\t\t\t\t\tnumPosts = numPosts + 1\n\t\t\t\tWHERE ID_BOARD = {$modSettings['recycle_board']}\n\t\t\t\tLIMIT 1", __FILE__, __LINE__);
// Make sure this message isn't getting deleted later on.
$recycle = true;
// Make sure we update the search subject index.
updateStats('subject', $topicID, $row['subject']);
}
}
// Deleting a recycled message can not lower anyone's post count.
if ($row['icon'] == 'recycled') {
$decreasePostCount = false;
}
// This is the last post, update the last post on the board.
if ($row['ID_LAST_MSG'] == $message) {
// Find the last message, set it, and decrease the post count.
$request = db_query("\n\t\t\tSELECT ID_MSG, ID_MEMBER\n\t\t\tFROM {$db_prefix}messages\n\t\t\tWHERE ID_TOPIC = {$row['ID_TOPIC']}\n\t\t\t\tAND ID_MSG != {$message}\n\t\t\tORDER BY ID_MSG DESC\n\t\t\tLIMIT 1", __FILE__, __LINE__);
$row2 = mysql_fetch_assoc($request);
mysql_free_result($request);
db_query("\n\t\t\tUPDATE {$db_prefix}topics\n\t\t\tSET\n\t\t\t\tID_LAST_MSG = {$row2['ID_MSG']},\n\t\t\t\tnumReplies = IF(numReplies = 0, 0, numReplies - 1),\n\t\t\t\tID_MEMBER_UPDATED = {$row2['ID_MEMBER']}\n\t\t\tWHERE ID_TOPIC = {$row['ID_TOPIC']}\n\t\t\tLIMIT 1", __FILE__, __LINE__);
} else {
db_query("\n\t\t\tUPDATE {$db_prefix}topics\n\t\t\tSET numReplies = IF(numReplies = 0, 0, numReplies - 1)\n\t\t\tWHERE ID_TOPIC = {$row['ID_TOPIC']}\n\t\t\tLIMIT 1", __FILE__, __LINE__);
}
db_query("\n\t\tUPDATE {$db_prefix}boards\n\t\tSET numPosts = IF(numPosts = 0, 0, numPosts - 1)\n\t\tWHERE ID_BOARD = {$row['ID_BOARD']}\n\t\tLIMIT 1", __FILE__, __LINE__);
// If the poster was registered and the board this message was on incremented
// the member's posts when it was posted, decrease his or her post count.
if (!empty($row['ID_MEMBER']) && $decreasePostCount && empty($row['countPosts'])) {
updateMemberData($row['ID_MEMBER'], array('posts' => '-'));
}
// Only remove posts if they're not recycled.
if (!$recycle) {
// Remove the message!
db_query("\n\t\t\tDELETE FROM {$db_prefix}messages\n\t\t\tWHERE ID_MSG = {$message}\n\t\t\tLIMIT 1", __FILE__, __LINE__);
if (!empty($modSettings['search_custom_index_config'])) {
$customIndexSettings = unserialize($modSettings['search_custom_index_config']);
$words =
|
请发表评论