Zeile 6 | Zeile 6 |
---|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* $Id: class_moderation.php 5145 2010-07-30 21:30:51Z RyanGordon $
| * $Id$
|
*/
class Moderation
| */
class Moderation
|
Zeile 237 | Zeile 237 |
---|
$db->delete_query("polls", "tid='$tid'"); $db->delete_query("pollvotes", "pid='".$thread['poll']."'"); $db->delete_query("threadsread", "tid='$tid'");
|
$db->delete_query("polls", "tid='$tid'"); $db->delete_query("pollvotes", "pid='".$thread['poll']."'"); $db->delete_query("threadsread", "tid='$tid'");
|
| $db->delete_query("threadratings", "tid='$tid'");
|
$updated_counters = array( "posts" => "-{$num_approved_posts}",
| $updated_counters = array( "posts" => "-{$num_approved_posts}",
|
Zeile 453 | Zeile 454 |
---|
{ global $db, $cache, $plugins;
|
{ global $db, $cache, $plugins;
|
$plugins->run_hooks_by_ref("class_moderation_delete_post_start", $pid);
| $pid = $plugins->run_hooks("class_moderation_delete_post_start", $pid);
|
// Get pid, uid, fid, tid, visibility, forum post count status of post $pid = intval($pid); $query = $db->query("
| // Get pid, uid, fid, tid, visibility, forum post count status of post $pid = intval($pid); $query = $db->query("
|
Zeile 545 | Zeile 546 |
---|
"); $num_unapproved_posts = $num_approved_posts = 0; $message = '';
|
"); $num_unapproved_posts = $num_approved_posts = 0; $message = '';
|
| $threads = array();
|
while($post = $db->fetch_array($query)) {
|
while($post = $db->fetch_array($query)) {
|
| $threads[$post['tid']] = $post['tid'];
|
if($first == 1) { // all posts will be merged into this one $masterpid = $post['pid'];
| if($first == 1) { // all posts will be merged into this one $masterpid = $post['pid'];
|
Zeile 605 | Zeile 608 |
---|
} } }
|
} } }
|
// Get lastpost pid to check if we're merging a post that is on the lastpost info $query = $db->simple_select("posts", "pid", "tid = '{$post['tid']}'", array('order_by' => 'dateline', 'order_dir' => 'desc', 'limit' => '1')); $lastpostpid = $db->fetch_field($query, 'pid'); $query2 = $db->simple_select("attachments", "COUNT(aid) as count", "pid IN({$pidin}) AND visible='1'"); $attachment_count = $db->fetch_field($query2, "count"); $db->update_query("threads", array("attachmentcount" => $attachment_count), "tid = '{$mastertid}'");
| |
// Update the message $mergepost = array(
| // Update the message $mergepost = array(
|
Zeile 645 | Zeile 639 |
---|
--$forum_counters[$thread['fid']]['threads']; } else
|
--$forum_counters[$thread['fid']]['threads']; } else
|
{
| {
|
if(!isset($forum_counters[$thread['fid']]['unapprovedthreads'])) { $forum_counters[$thread['fid']]['unapprovedthreads'] = 0;
| if(!isset($forum_counters[$thread['fid']]['unapprovedthreads'])) { $forum_counters[$thread['fid']]['unapprovedthreads'] = 0;
|
Zeile 653 | Zeile 647 |
---|
--$forum_counters[$thread['fid']]['unapprovedthreads']; } }
|
--$forum_counters[$thread['fid']]['unapprovedthreads']; } }
|
|
|
$arguments = array("pids" => $pids, "tid" => $tid);
|
$arguments = array("pids" => $pids, "tid" => $tid);
|
$plugins->run_hooks("class_moderation_merge_posts", $arguments);
| $plugins->run_hooks("class_moderation_merge_posts", $arguments);
|
if(is_array($thread_counters)) { foreach($thread_counters as $tid => $counters)
| if(is_array($thread_counters)) { foreach($thread_counters as $tid => $counters)
|
Zeile 668 | Zeile 662 |
---|
} update_thread_data($mastertid);
|
} update_thread_data($mastertid);
|
|
|
update_forum_lastpost($fid);
|
update_forum_lastpost($fid);
|
| foreach($threads as $tid) { $count = array(); // Attachment count $query = $db->query(" SELECT COUNT(aid) AS attachment_count FROM ".TABLE_PREFIX."attachments a LEFT JOIN ".TABLE_PREFIX."posts p ON (a.pid=p.pid) WHERE p.tid='$tid' "); $count['attachmentcount'] = $db->fetch_field($query, "attachment_count"); if(!$count['attachmentcount']) { $count['attachmentcount'] = 0; }
update_thread_counters($tid, $count); }
|
if(is_array($forum_counters)) {
| if(is_array($forum_counters)) {
|
Zeile 701 | Zeile 715 |
---|
global $db, $plugins;
// Get thread info
|
global $db, $plugins;
// Get thread info
|
$tid = intval($tid);
| $tid = intval($tid);
|
$new_fid = intval($new_fid); $redirect_expire = intval($redirect_expire);
| $new_fid = intval($new_fid); $redirect_expire = intval($redirect_expire);
|
Zeile 765 | Zeile 779 |
---|
"replies" => 0, "closed" => "moved|$tid", "sticky" => $thread['sticky'],
|
"replies" => 0, "closed" => "moved|$tid", "sticky" => $thread['sticky'],
|
"visible" => $thread['visible'],
| "visible" => intval($thread['visible']),
|
"notes" => '' ); $redirect_tid = $db->insert_query("threads", $threadarray);
| "notes" => '' ); $redirect_tid = $db->insert_query("threads", $threadarray);
|
Zeile 798 | Zeile 812 |
---|
"replies" => $thread['replies'], "closed" => $thread['closed'], "sticky" => $thread['sticky'],
|
"replies" => $thread['replies'], "closed" => $thread['closed'], "sticky" => $thread['sticky'],
|
"visible" => $thread['visible'],
| "visible" => intval($thread['visible']),
|
"unapprovedposts" => $thread['unapprovedposts'], "attachmentcount" => $thread['attachmentcount'], "prefix" => $thread['prefix'],
| "unapprovedposts" => $thread['unapprovedposts'], "attachmentcount" => $thread['attachmentcount'], "prefix" => $thread['prefix'],
|
Zeile 904 | Zeile 918 |
---|
{ $attachment_array = array( 'pid' => $pid,
|
{ $attachment_array = array( 'pid' => $pid,
|
'posthash' => $db->escape_string($attachment['posthash']),
| |
'uid' => $attachment['uid'], 'filename' => $db->escape_string($attachment['filename']), 'filetype' => $attachment['filetype'],
| 'uid' => $attachment['uid'], 'filename' => $db->escape_string($attachment['filename']), 'filetype' => $attachment['filetype'],
|
Zeile 972 | Zeile 985 |
---|
while($movedthread = $db->fetch_array($query)) { $db->delete_query("threads", "tid='".intval($movedthread['tid'])."'", 1);
|
while($movedthread = $db->fetch_array($query)) { $db->delete_query("threads", "tid='".intval($movedthread['tid'])."'", 1);
|
}
| }
|
break; }
| break; }
|
Zeile 993 | Zeile 1006 |
---|
$pcount = "-{$posters['posts']}"; } else if($forum['usepostcounts'] == 0 && $newforum['userpostcounts'] == 1 && $posters['visible'] == 1)
|
$pcount = "-{$posters['posts']}"; } else if($forum['usepostcounts'] == 0 && $newforum['userpostcounts'] == 1 && $posters['visible'] == 1)
|
{
| {
|
$pcount = "+{$posters['posts']}"; }
| $pcount = "+{$posters['posts']}"; }
|
Zeile 1026 | Zeile 1039 |
---|
if(isset($newtid)) { return $newtid;
|
if(isset($newtid)) { return $newtid;
|
}
| }
|
else { // Remove thread subscriptions for the users who no longer have permission to view the thread
| else { // Remove thread subscriptions for the users who no longer have permission to view the thread
|
Zeile 1060 | Zeile 1073 |
---|
{ $query = $db->simple_select("threads", "*", "tid='{$tid}'"); $thread = $db->fetch_array($query);
|
{ $query = $db->simple_select("threads", "*", "tid='{$tid}'"); $thread = $db->fetch_array($query);
|
}
| }
|
$pollsql = ''; if($mergethread['poll']) {
| $pollsql = ''; if($mergethread['poll']) {
|
Zeile 1079 | Zeile 1092 |
---|
{ $db->delete_query("polls", "pid='{$mergethread['poll']}'"); $db->delete_query("pollvotes", "pid='{$mergethread['poll']}'");
|
{ $db->delete_query("polls", "pid='{$mergethread['poll']}'"); $db->delete_query("pollvotes", "pid='{$mergethread['poll']}'");
|
} }
$subject = $db->escape_string($subject);
$sqlarray = array(
| } }
$subject = $db->escape_string($subject);
$sqlarray = array(
|
"tid" => $tid, "fid" => $thread['fid'], "replyto" => 0,
|
"tid" => $tid, "fid" => $thread['fid'], "replyto" => 0,
|
"visible" => $mergethread['visible'],
| |
); $db->update_query("posts", $sqlarray, "tid='{$mergetid}'");
| ); $db->update_query("posts", $sqlarray, "tid='{$mergetid}'");
|
Zeile 1096 | Zeile 1108 |
---|
$db->update_query("threads", $pollsql, "tid='{$tid}'"); $sqlarray = array( "closed" => "moved|{$tid}",
|
$db->update_query("threads", $pollsql, "tid='{$tid}'"); $sqlarray = array( "closed" => "moved|{$tid}",
|
);
| );
|
$db->update_query("threads", $sqlarray, "closed='moved|{$mergetid}'");
|
$db->update_query("threads", $sqlarray, "closed='moved|{$mergetid}'");
|
$sqlarray = array(
| $sqlarray = array(
|
"tid" => $tid, );
|
"tid" => $tid, );
|
$db->update_query("threadsubscriptions", $sqlarray, "tid='{$mergetid}'");
| // Update the thread ratings $new_numrating = $thread['numratings'] + $mergethread['numratings']; $new_threadrating = $thread['totalratings'] + $mergethread['totalratings'];
$sqlarray = array( "numratings" => $new_numrating, "totalratings" => $new_threadrating );
$db->update_query("threads", $sqlarray, "tid = '{$tid}'");
// Check if we have a thread subscription already for our new thread $subscriptions = array( $tid => array(), $mergetid => array() );
$query = $db->simple_select("threadsubscriptions", "tid, uid", "tid='{$mergetid}' OR tid='{$tid}'"); while($subscription = $db->fetch_array($query)) { $subscriptions[$subscription['tid']][] = $subscription['uid']; }
// Update any subscriptions for the merged thread if(is_array($subscriptions[$mergetid])) { $update_users = array(); foreach($subscriptions[$mergetid] as $user) { if(!in_array($user, $subscriptions[$tid])) { // User doesn't have a $tid subscription $update_users[] = $user; } } if(!empty($update_users)) { $update_array = array( "tid" => $tid );
$update_users = implode(",", $update_users); $db->update_query("threadsubscriptions", $update_array, "tid = '{$mergetid}' AND uid IN ({$update_users})"); } } // Remove source thread subscriptions $db->delete_query("threadsubscriptions", "tid = '{$mergetid}'");
|
update_first_post($tid);
$arguments = array("mergetid" => $mergetid, "tid" => $tid, "subject" => $subject);
| update_first_post($tid);
$arguments = array("mergetid" => $mergetid, "tid" => $tid, "subject" => $subject);
|
Zeile 1131 | Zeile 1193 |
---|
{ // If new thread is unapproved, implied counter comes in to effect if($thread['visible'] == 0 || $mergethread['visible'] == 0)
|
{ // If new thread is unapproved, implied counter comes in to effect if($thread['visible'] == 0 || $mergethread['visible'] == 0)
|
{
| {
|
$updated_stats = array( "unapprovedposts" => '+'.($mergethread['replies']+1+$mergethread['unapprovedposts']) );
| $updated_stats = array( "unapprovedposts" => '+'.($mergethread['replies']+1+$mergethread['unapprovedposts']) );
|
Zeile 1150 | Zeile 1212 |
---|
{ $updated_stats = array( "unapprovedposts" => '-'.($mergethread['replies']+1+$mergethread['unapprovedposts'])
|
{ $updated_stats = array( "unapprovedposts" => '-'.($mergethread['replies']+1+$mergethread['unapprovedposts'])
|
); } else {
| ); } else {
|
$updated_stats = array( "posts" => '-'.($mergethread['replies']+1), "unapprovedposts" => "-{$mergethread['unapprovedposts']}"
| $updated_stats = array( "posts" => '-'.($mergethread['replies']+1), "unapprovedposts" => "-{$mergethread['unapprovedposts']}"
|
Zeile 1202 | Zeile 1264 |
---|
$pids_list = implode(',', $pids);
// Get the icon for the first split post
|
$pids_list = implode(',', $pids);
// Get the icon for the first split post
|
$query = $db->simple_select("posts", "icon", "pid=".intval($pids[0])); $icon = $db->fetch_array($query);
| $query = $db->simple_select("posts", "icon, visible", "pid=".intval($pids[0])); $post_info = $db->fetch_array($query);
$icon = $post_info['icon']; $visible = $post_info['visible'];
|
if($destination_tid == 0) {
| if($destination_tid == 0) {
|
Zeile 1214 | Zeile 1279 |
---|
$query = array( "fid" => $moveto, "subject" => $newsubject,
|
$query = array( "fid" => $moveto, "subject" => $newsubject,
|
"icon" => intval($icon['icon']),
| "icon" => intval($icon),
|
"uid" => intval($thread['uid']), "username" => $db->escape_string($thread['username']), "dateline" => intval($thread['dateline']), "lastpost" => intval($thread['lastpost']), "lastposter" => $db->escape_string($thread['lastposter']), "replies" => count($pids)-1,
|
"uid" => intval($thread['uid']), "username" => $db->escape_string($thread['username']), "dateline" => intval($thread['dateline']), "lastpost" => intval($thread['lastpost']), "lastposter" => $db->escape_string($thread['lastposter']), "replies" => count($pids)-1,
|
"visible" => 1,
| "visible" => intval($visible),
|
"notes" => '' ); $newtid = $db->insert_query("threads", $query); $forum_counters[$moveto]['threads'] = $forum_cache[$moveto]['threads'];
|
"notes" => '' ); $newtid = $db->insert_query("threads", $query); $forum_counters[$moveto]['threads'] = $forum_cache[$moveto]['threads'];
|
++$forum_counters[$moveto]['threads'];
| $forum_counters[$moveto]['unapprovedthreads'] = $forum_cache[$moveto]['unapprovedthreads']; if($visible) { ++$forum_counters[$moveto]['threads']; } else { // Unapproved thread? ++$forum_counters[$moveto]['unapprovedthreads']; }
|
}
// Get attachment counts for each post
| }
// Get attachment counts for each post
|
Zeile 1336 | Zeile 1410 |
---|
{ $forum_counters[$post['fid']]['unapprovedposts'] = $forum_cache[$post['fid']]['unapprovedposts']; }
|
{ $forum_counters[$post['fid']]['unapprovedposts'] = $forum_cache[$post['fid']]['unapprovedposts']; }
|
--$forum_counters[$post['fid']]['posts'];
| --$forum_counters[$post['fid']]['unapprovedposts'];
|
// Add 1 to the new forum's unapproved posts if(!isset($forum_counters[$moveto]['unapprovedposts'])) {
| // Add 1 to the new forum's unapproved posts if(!isset($forum_counters[$moveto]['unapprovedposts'])) {
|
Zeile 1480 | Zeile 1554 |
---|
}
$query1 = $db->query("
|
}
$query1 = $db->query("
|
SELECT COUNT(p.pid) AS posts, u.uid
| SELECT COUNT(p.pid) AS posts, p.visible, u.uid
|
FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
|
FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
|
WHERE tid='{$thread['tid']}' GROUP BY u.uid
| WHERE p.tid = '{$thread['tid']}' GROUP BY p.visible, u.uid
|
ORDER BY posts DESC "); while($posters = $db->fetch_array($query1))
| ORDER BY posts DESC "); while($posters = $db->fetch_array($query1))
|
Zeile 1516 | Zeile 1590 |
---|
$query = $db->simple_select("threads", "tid, prefix", "tid IN ($tid_list) AND prefix != 0"); while($thread = $db->fetch_array($query)) {
|
$query = $db->simple_select("threads", "tid, prefix", "tid IN ($tid_list) AND prefix != 0"); while($thread = $db->fetch_array($query)) {
|
$query = $db->simple_select("threadprefixes", "COUNT(*) as num_prefixes", "(CONCAT(',',forums,',') LIKE '%,$new_fid,%' OR forums='-1') AND pid='".$thread['prefix']."'");
| $query = $db->simple_select("threadprefixes", "COUNT(*) as num_prefixes", "(CONCAT(',',forums,',') LIKE '%,$moveto,%' OR forums='-1') AND pid='".$thread['prefix']."'");
|
if($db->fetch_field($query, "num_prefixes") == 0) { $sqlarray = array(
| if($db->fetch_field($query, "num_prefixes") == 0) { $sqlarray = array(
|
Zeile 2074 | Zeile 2148 |
---|
$tids = array_map('intval', $tids); $tids_csv = implode(',', $tids);
|
$tids = array_map('intval', $tids); $tids_csv = implode(',', $tids);
|
$update_thread = array('prefix' => $prefix);
| $update_thread = array('prefix' => intval($prefix));
|
$db->update_query('threads', $update_thread, "tid IN ({$tids_csv})"); $arguments = array('tids' => $tids, 'prefix' => $prefix);
| $db->update_query('threads', $update_thread, "tid IN ({$tids_csv})"); $arguments = array('tids' => $tids, 'prefix' => $prefix);
|