Zeile 24 | Zeile 24 |
---|
/** * Get info on a tool *
|
/** * Get info on a tool *
|
* @param int Tool ID * @param mixed Thread IDs * @param mixed Post IDs * @return mixed Returns tool data (tid, type, name, description) in an array, otherwise boolean false.
| * @param int $tool_id Tool ID * @return array|bool Returns tool data (tid, type, name, description) in an array, otherwise boolean false.
|
*/ function tool_info($tool_id) { global $db;
// Get tool info
|
*/ function tool_info($tool_id) { global $db;
// Get tool info
|
$query = $db->simple_select("modtools", "*", 'tid="'.(int)$tool_id.'"');
| $query = $db->simple_select("modtools", "*", 'tid='.(int)$tool_id);
|
$tool = $db->fetch_array($query); if(!$tool['tid']) {
| $tool = $db->fetch_array($query); if(!$tool['tid']) {
|
Zeile 49 | Zeile 47 |
---|
/** * Execute Custom Moderation Tool *
|
/** * Execute Custom Moderation Tool *
|
* @param int Tool ID * @param mixed Thread ID(s) * @param mixed Post IDs
| * @param int $tool_id Tool ID * @param int|array Thread ID(s) * @param int|array Post ID(s)
|
* @return string 'forum' or 'default' indicating where to redirect */ function execute($tool_id, $tids=0, $pids=0)
| * @return string 'forum' or 'default' indicating where to redirect */ function execute($tool_id, $tids=0, $pids=0)
|
Zeile 59 | Zeile 57 |
---|
global $db;
// Get tool info
|
global $db;
// Get tool info
|
$query = $db->simple_select("modtools", '*', 'tid="'.(int)$tool_id.'"');
| $query = $db->simple_select("modtools", '*', 'tid='.(int)$tool_id);
|
$tool = $db->fetch_array($query); if(!$tool['tid']) {
| $tool = $db->fetch_array($query); if(!$tool['tid']) {
|
Zeile 81 | Zeile 79 |
---|
$thread_options = my_unserialize($tool['threadoptions']);
// If the tool type is a post tool, then execute the post moderation
|
$thread_options = my_unserialize($tool['threadoptions']);
// If the tool type is a post tool, then execute the post moderation
|
| $deleted_thread = 0;
|
if($tool['type'] == 'p') {
|
if($tool['type'] == 'p') {
|
$deleted_thread = $this->execute_post_moderation($post_options, $pids, $tids);
| $deleted_thread = $this->execute_post_moderation($tids, $post_options, $pids);
|
} // Always execute thead moderation $this->execute_thread_moderation($thread_options, $tids);
| } // Always execute thead moderation $this->execute_thread_moderation($thread_options, $tids);
|
Zeile 99 | Zeile 98 |
---|
/** * Execute Inline Post Moderation *
|
/** * Execute Inline Post Moderation *
|
* @param array Moderation information * @param mixed Post IDs * @param array Thread IDs (in order of dateline ascending)
| * @param array|int $tid Thread IDs (in order of dateline ascending). Only the first one will be used * @param array $post_options Moderation information * @param array $pids Post IDs *
|
* @return boolean true */
|
* @return boolean true */
|
function execute_post_moderation($post_options, $pids, $tid)
| function execute_post_moderation($tid, $post_options=array(), $pids=array())
|
{
|
{
|
global $db, $mybb, $lang;
| global $db, $mybb, $lang, $plugins;
|
if(is_array($tid))
|
if(is_array($tid))
|
{
| {
|
$tid = (int)$tid[0]; // There's only 1 thread when doing inline post moderation // The thread chosen is the first thread in the array of tids. // It is recommended that this be the tid of the oldest post
|
$tid = (int)$tid[0]; // There's only 1 thread when doing inline post moderation // The thread chosen is the first thread in the array of tids. // It is recommended that this be the tid of the oldest post
|
}
| }
|
// Get the information about thread $thread = get_thread($tid);
|
// Get the information about thread $thread = get_thread($tid);
|
| $author = get_user($thread['uid']);
$args = array( 'post_options' => &$post_options, 'pids' => &$pids, 'thread' => &$thread, );
$plugins->run_hooks("class_custommoderation_execute_post_moderation_start", $args);
|
// If deleting posts, only do that if($post_options['deleteposts'] == 1)
|
// If deleting posts, only do that if($post_options['deleteposts'] == 1)
|
{
| {
|
foreach($pids as $pid) { $this->delete_post($pid);
| foreach($pids as $pid) { $this->delete_post($pid);
|
Zeile 130 | Zeile 139 |
---|
$imploded_pids = implode(",", array_map("intval", $pids)); $query = $db->simple_select("threads", "tid", "firstpost IN ({$imploded_pids})"); while($threadid = $db->fetch_field($query, "tid"))
|
$imploded_pids = implode(",", array_map("intval", $pids)); $query = $db->simple_select("threads", "tid", "firstpost IN ({$imploded_pids})"); while($threadid = $db->fetch_field($query, "tid"))
|
{
| {
|
$delete_tids[] = $threadid; } if(!empty($delete_tids))
| $delete_tids[] = $threadid; } if(!empty($delete_tids))
|
Zeile 138 | Zeile 147 |
---|
foreach($delete_tids as $delete_tid) { $this->delete_thread($delete_tid);
|
foreach($delete_tids as $delete_tid) { $this->delete_thread($delete_tid);
|
mark_reports($delete_tid, "thread");
| |
}
|
}
|
// return 1 here so the code in execute() above knows to redirect to the forum return 1;
| // return true here so the code in execute() above knows to redirect to the forum return true;
|
} } else
| } } else
|
Zeile 149 | Zeile 157 |
---|
if($post_options['mergeposts'] == 1) // Merge posts { $this->merge_posts($pids);
|
if($post_options['mergeposts'] == 1) // Merge posts { $this->merge_posts($pids);
|
}
| }
|
if($post_options['approveposts'] == 'approve') // Approve posts {
| if($post_options['approveposts'] == 'approve') // Approve posts {
|
Zeile 160 | Zeile 168 |
---|
$this->unapprove_posts($pids); } elseif($post_options['approveposts'] == 'toggle') // Toggle post visibility
|
$this->unapprove_posts($pids); } elseif($post_options['approveposts'] == 'toggle') // Toggle post visibility
|
{
| {
|
$this->toggle_post_visibility($pids); }
|
$this->toggle_post_visibility($pids); }
|
if($post_options['softdelete'] == 'softdelete') // Soft delete posts
| if($post_options['softdeleteposts'] == 'softdelete') // Soft delete posts
|
{ $this->soft_delete_posts($pids);
|
{ $this->soft_delete_posts($pids);
|
} elseif($post_options['softdelete'] == 'restore') // Restore posts
| } elseif($post_options['softdeleteposts'] == 'restore') // Restore posts
|
{ $this->restore_posts($pids); }
|
{ $this->restore_posts($pids); }
|
elseif($post_options['softdelete'] == 'toggle') // Toggle post visibility
| elseif($post_options['softdeleteposts'] == 'toggle') // Toggle post visibility
|
{ $this->toggle_post_softdelete($pids); }
| { $this->toggle_post_softdelete($pids); }
|
Zeile 185 | Zeile 193 |
---|
if($count['totalposts'] == 1) { error($lang->error_cantsplitonepost);
|
if($count['totalposts'] == 1) { error($lang->error_cantsplitonepost);
|
}
| }
|
if($count['totalposts'] == count($pids)) {
| if($count['totalposts'] == count($pids)) {
|
Zeile 195 | Zeile 203 |
---|
if($post_options['splitposts'] == -2) { $post_options['splitposts'] = $thread['fid'];
|
if($post_options['splitposts'] == -2) { $post_options['splitposts'] = $thread['fid'];
|
}
| }
|
if(empty($post_options['splitpostsnewsubject'])) { // Enter in a subject if a predefined one does not exist. $post_options['splitpostsnewsubject'] = "{$lang->split_thread_subject} {$thread['subject']}"; }
|
if(empty($post_options['splitpostsnewsubject'])) { // Enter in a subject if a predefined one does not exist. $post_options['splitpostsnewsubject'] = "{$lang->split_thread_subject} {$thread['subject']}"; }
|
$new_subject = str_ireplace('{subject}', $thread['subject'], $post_options['splitpostsnewsubject']); $new_tid = $this->split_posts($pids, $tid, $post_options['splitposts'], $new_subject);
| $find = array('{username}', '{author}', '{subject}'); $replace = array($mybb->user['username'], $author['username'], $thread['subject']);
$new_subject = str_ireplace($find, $replace, $post_options['splitpostsnewsubject']);
$args = array( 'post_options' => &$post_options, 'pids' => &$pids, 'thread' => &$thread, 'new_subject' => &$new_subject, );
$plugins->run_hooks("class_custommoderation_splitposts", $args);
$new_thread_subject = $new_subject; $new_tid = $this->split_posts($pids, $tid, $post_options['splitposts'], $new_thread_subject);
|
if($post_options['splitpostsclose'] == 'close') // Close new thread { $this->close_threads($new_tid); } if($post_options['splitpostsstick'] == 'stick') // Stick new thread
|
if($post_options['splitpostsclose'] == 'close') // Close new thread { $this->close_threads($new_tid); } if($post_options['splitpostsstick'] == 'stick') // Stick new thread
|
{
| {
|
$this->stick_threads($new_tid); } if($post_options['splitpostsunapprove'] == 'unapprove') // Unapprove new thread { $this->unapprove_threads($new_tid, $thread['fid']);
|
$this->stick_threads($new_tid); } if($post_options['splitpostsunapprove'] == 'unapprove') // Unapprove new thread { $this->unapprove_threads($new_tid, $thread['fid']);
|
}
| }
|
if($post_options['splitthreadprefix'] != '0') { $this->apply_thread_prefix($new_tid, $post_options['splitthreadprefix']); // Add thread prefix to new thread
| if($post_options['splitthreadprefix'] != '0') { $this->apply_thread_prefix($new_tid, $post_options['splitthreadprefix']); // Add thread prefix to new thread
|
Zeile 223 | Zeile 247 |
---|
{ require_once MYBB_ROOT."inc/datahandlers/post.php"; $posthandler = new PostDataHandler("insert");
|
{ require_once MYBB_ROOT."inc/datahandlers/post.php"; $posthandler = new PostDataHandler("insert");
|
| $find = array('{username}', '{author}', '{subject}'); $replace = array($mybb->user['username'], $author['username'], $new_thread_subject);
|
if(empty($post_options['splitpostsreplysubject'])) {
|
if(empty($post_options['splitpostsreplysubject'])) {
|
$post_options['splitpostsreplysubject'] = 'RE: '.$new_subject;
| $new_subject = 'RE: '.$new_thread_subject;
|
} else {
|
} else {
|
$post_options['splitpostsreplysubject'] = str_ireplace('{username}', $mybb->user['username'], $post_options['splitpostsreplysubject']); $post_options['splitpostsreplysubject'] = str_ireplace('{subject}', $new_subject, $post_options['splitpostsreplysubject']);
| $new_subject = str_ireplace($find, $replace, $post_options['splitpostsreplysubject']);
|
}
|
}
|
| $new_message = str_ireplace($find, $replace, $post_options['splitpostsaddreply']);
$args = array( 'post_options' => &$post_options, 'pids' => &$pids, 'thread' => &$thread, 'new_subject' => &$new_subject, 'new_message' => &$new_message, );
$plugins->run_hooks("class_custommoderation_splitpostsaddreply", $args);
|
// Set the post data that came from the input to the $post array. $post = array( "tid" => $new_tid, "fid" => $post_options['splitposts'],
|
// Set the post data that came from the input to the $post array. $post = array( "tid" => $new_tid, "fid" => $post_options['splitposts'],
|
"subject" => $post_options['splitpostsreplysubject'], "uid" => $mybb->user['uid'], "username" => $mybb->user['username'], "message" => $post_options['splitpostsaddreply'], "ipaddress" => $db->escape_binary(my_inet_pton(get_ip())), ); // Set up the post options from the input. $post['options'] = array( "signature" => 1,
| "subject" => $new_subject, "uid" => $mybb->user['uid'], "username" => $mybb->user['username'], "message" => $new_message, "ipaddress" => my_inet_pton(get_ip()), ); // Set up the post options from the input. $post['options'] = array( "signature" => 1,
|
"emailnotify" => 0, "disablesmilies" => 0 );
|
"emailnotify" => 0, "disablesmilies" => 0 );
|
|
|
$posthandler->set_data($post);
if($posthandler->validate_post($post))
| $posthandler->set_data($post);
if($posthandler->validate_post($post))
|
Zeile 260 | Zeile 298 |
---|
} } }
|
} } }
|
| $args = array( 'post_options' => &$post_options, 'pids' => &$pids, 'thread' => &$thread, );
$plugins->run_hooks("class_custommoderation_execute_post_moderation_end", $args);
|
return true; }
/** * Execute Normal and Inline Thread Moderation *
|
return true; }
/** * Execute Normal and Inline Thread Moderation *
|
* @param array Moderation information * @param mixed Thread IDs
| * @param array $thread_options Moderation information * @param array Thread IDs. Only the first one will be used, but it needs to be an array
|
* @return boolean true */
|
* @return boolean true */
|
function execute_thread_moderation($thread_options, $tids)
| function execute_thread_moderation($thread_options=array(), $tids=array())
|
{
|
{
|
global $db, $mybb;
| global $db, $mybb, $plugins;
|
$tid = (int)$tids[0]; // Take the first thread to get thread data from $query = $db->simple_select("threads", 'fid', "tid='$tid'"); $thread = $db->fetch_array($query);
|
$tid = (int)$tids[0]; // Take the first thread to get thread data from $query = $db->simple_select("threads", 'fid', "tid='$tid'"); $thread = $db->fetch_array($query);
|
| $args = array( 'thread_options' => &$thread_options, 'tids' => &$tids, 'thread' => &$thread, );
$plugins->run_hooks("class_custommoderation_execute_thread_moderation_start", $args);
|
// If deleting threads, only do that if($thread_options['deletethread'] == 1)
| // If deleting threads, only do that if($thread_options['deletethread'] == 1)
|
Zeile 334 | Zeile 389 |
---|
elseif($thread_options['approvethread'] == 'toggle') // Toggle thread visibility { $this->toggle_thread_visibility($tids, $thread['fid']);
|
elseif($thread_options['approvethread'] == 'toggle') // Toggle thread visibility { $this->toggle_thread_visibility($tids, $thread['fid']);
|
}
if($thread_options['softdelete'] == 'softdelete') // Soft delete thread
| }
if($thread_options['softdeletethread'] == 'softdelete') // Soft delete thread
|
{
|
{
|
$this->soft_delete_threads($tids, $thread['fid']);
| $this->soft_delete_threads($tids);
|
}
|
}
|
elseif($thread_options['softdelete'] == 'restore') // Restore thread
| elseif($thread_options['softdeletethread'] == 'restore') // Restore thread
|
{
|
{
|
$this->restore_threads($tids, $thread['fid']);
| $this->restore_threads($tids);
|
}
|
}
|
elseif($thread_options['softdelete'] == 'toggle') // Toggle thread visibility
| elseif($thread_options['softdeletethread'] == 'toggle') // Toggle thread visibility
|
{
|
{
|
$this->toggle_thread_softdelete($tids, $thread['fid']);
| $this->toggle_thread_softdelete($tids);
|
}
if($thread_options['openthread'] == 'open') // Open thread
| }
if($thread_options['openthread'] == 'open') // Open thread
|
Zeile 387 | Zeile 442 |
---|
if(!empty($thread_options['addreply'])) // Add reply to thread { $tid_list = implode(',', $tids);
|
if(!empty($thread_options['addreply'])) // Add reply to thread { $tid_list = implode(',', $tids);
|
$query = $db->simple_select("threads", 'uid, fid, subject, tid, firstpost, closed', "tid IN ($tid_list) AND closed NOT LIKE 'moved|%'");
| $query = $db->query(" SELECT u.uid, u.username, t.fid, t.subject, t.tid, t.firstpost, t.closed FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."users u ON t.uid=u.uid WHERE tid IN ($tid_list) AND closed NOT LIKE 'moved|%' ");
|
require_once MYBB_ROOT."inc/datahandlers/post.php";
// Loop threads adding a reply to each one while($thread = $db->fetch_array($query)) { $posthandler = new PostDataHandler("insert");
|
require_once MYBB_ROOT."inc/datahandlers/post.php";
// Loop threads adding a reply to each one while($thread = $db->fetch_array($query)) { $posthandler = new PostDataHandler("insert");
|
| $find = array('{username}', '{author}', '{subject}'); $replace = array($mybb->user['username'], $thread['username'], $thread['subject']);
|
if(empty($thread_options['replysubject']))
|
if(empty($thread_options['replysubject']))
|
{ $new_subject = 'RE: '.$thread['subject']; } else { $new_subject = str_ireplace('{username}', $mybb->user['username'], $thread_options['replysubject']); $new_subject = str_ireplace('{subject}', $thread['subject'], $new_subject); }
| { $new_subject = 'RE: '.$thread['subject']; } else { $new_subject = str_ireplace($find, $replace, $thread_options['replysubject']); }
$new_message = str_ireplace($find, $replace, $thread_options['addreply']);
$args = array( 'thread_options' => &$thread_options, 'tids' => &$tids, 'thread' => &$thread, 'new_subject' => &$new_subject, 'new_message' => &$new_message, );
$plugins->run_hooks("class_custommoderation_addreply", $args);
|
|
|
// Set the post data that came from the input to the $post array. $post = array( "tid" => $thread['tid'], "replyto" => $thread['firstpost'], "fid" => $thread['fid'], "subject" => $new_subject,
| // Set the post data that came from the input to the $post array. $post = array( "tid" => $thread['tid'], "replyto" => $thread['firstpost'], "fid" => $thread['fid'], "subject" => $new_subject,
|
"uid" => $mybb->user['uid'], "username" => $mybb->user['username'],
|
"uid" => $mybb->user['uid'], "username" => $mybb->user['username'],
|
"message" => $thread_options['addreply'], "ipaddress" => $db->escape_binary(my_inet_pton(get_ip())),
| "message" => $new_message, "ipaddress" => my_inet_pton(get_ip()),
|
);
// Set up the post options from the input.
| );
// Set up the post options from the input.
|
Zeile 480 | Zeile 553 |
---|
$tid_list = implode(',', $tids); // For each thread, we send a PM to the author
|
$tid_list = implode(',', $tids); // For each thread, we send a PM to the author
|
$query = $db->simple_select("threads", 'uid', "tid IN ($tid_list)"); while($uid = $db->fetch_field($query, 'uid'))
| $query = $db->query(" SELECT u.uid, u.username, t.subject FROM ".TABLE_PREFIX."threads t LEFT JOIN ".TABLE_PREFIX."users u ON t.uid=u.uid WHERE tid IN ($tid_list) "); while($thread = $db->fetch_array($query))
|
{
|
{
|
| $find = array('{username}', '{author}', '{subject}'); $replace = array($mybb->user['username'], $thread['username'], $thread['subject']);
$pm_subject = str_ireplace($find, $replace, $thread_options['pm_subject']); $pm_message = str_ireplace($find, $replace, $thread_options['pm_message']);
$args = array( 'thread_options' => &$thread_options, 'tids' => &$tids, 'thread' => &$thread, 'pm_subject' => &$pm_subject, 'pm_message' => &$pm_message, );
$plugins->run_hooks("class_custommoderation_pm", $args);
|
// Let's send our PM $pm = array(
|
// Let's send our PM $pm = array(
|
'subject' => $thread_options['pm_subject'], 'message' => $thread_options['pm_message'], 'touid' => $uid
| 'subject' => $pm_subject, 'message' => $pm_message, 'touid' => $thread['uid']
|
); send_pm($pm, $mybb->user['uid'], 1); } }
|
); send_pm($pm, $mybb->user['uid'], 1); } }
|
| $args = array( 'thread_options' => &$thread_options, 'tids' => &$tids, 'thread' => &$thread, );
$plugins->run_hooks("class_custommoderation_execute_thread_moderation_end", $args);
|
return true; }
| return true; }
|