function akismet_moderation_start() { global $mybb, $db, $akismet, $lang, $cache, $fid, $pid; if (!$mybb->settings['akismetswitch'] || $mybb->input['action'] != 'mark_as_spam') { return; } $lang->load("akismet", false, true); if (!$mybb->input['pid']) { error("No Post ID specified."); } $pid = intval($mybb->input['pid']); if (!$mybb->input['fid']) { error("No Forum ID specified."); } $fid = intval($mybb->input['fid']); if (!is_moderator($fid)) { error("No Permissions to do this action."); } $query = $db->query("\r\n\t\tSELECT p.uid, p.username, u.email, u.website, u.akismetstopped, p.message, p.ipaddress, p.tid, p.replyto, p.fid, f.usepostcounts\r\n\t\tFROM " . TABLE_PREFIX . "posts p\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=p.uid)\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "forums f ON (f.fid=p.fid)\r\n\t\tWHERE p.pid = '{$pid}'\r\n\t"); $post = $db->fetch_array($query); if (!$post) { error("Invalid Post ID."); } if (!$mybb->input['my_post_key'] || $mybb->request_method != "post") { akismet_show_confirm_page(); } verify_post_check($mybb->input['my_post_key']); $akismet_array = array('type' => 'post', 'username' => $post['username'], 'email' => $post['email'], 'website' => $post['website'], 'message' => $post['message'], 'user_ip' => $post['ipaddress']); if ($post['replyto'] == 0) { $db->update_query("threads", array('visible' => '-4'), "tid = '{$post['tid']}'"); $db->update_query("posts", array('visible' => '-4'), "tid = '{$post['tid']}'"); $snippit = "thread"; } else { $db->update_query("posts", array('visible' => '-4'), "pid = '{$pid}'"); $snippit = "post"; } if (!$akismet) { $akismet = new Akismet($mybb->settings['bburl'], $mybb->settings['akismetapikey'], $akismet_array); } $akismet->submit_spam(); $numakismetthread = $numakismetpost = 0; if ($snippit == "thread") { $query = $db->query("\r\n\t\t\tSELECT p.uid, u.usergroup\r\n\t\t\tFROM " . TABLE_PREFIX . "posts p\r\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=p.uid)\r\n\t\t\tWHERE p.tid = '{$post['tid']}'\r\n\t\t"); while ($post2 = $db->fetch_array($query)) { ++$numakismetpost; if ($post['usepostcounts'] != 0) { $db->write_query("UPDATE " . TABLE_PREFIX . "users SET postnum=postnum-1 WHERE uid = '{$post2['uid']}'"); } if ($mybb->settings['akismetuidsignore']) { $akismet_uids_ignore = explode(',', $mybb->settings['akismetuidsignore']); if (in_array($post2['usergroup'], $akismet_uids_ignore) || is_super_admin($post2['uid'])) { continue; } } if (is_super_admin($post2['uid'])) { continue; } $db->write_query("UPDATE " . TABLE_PREFIX . "users SET akismetstopped=akismetstopped+1 WHERE uid = '{$post2['uid']}'"); $query1 = $db->simple_select("users", "akismetstopped", "uid = '{$post2['uid']}'"); $akismetstopped = $db->fetch_field($query1, 'akismetstopped'); // Check if the person should be banned if ($mybb->settings['akismetnumtillban'] > 0 && $akismetstopped >= $mybb->settings['akismetnumtillban']) { $banned_user = array("uid" => $post2['uid'], "admin" => 0, "gid" => 7, "oldgroup" => $post2['usergroup'], "dateline" => TIME_NOW, "bantime" => 'perm', "lifted" => 'perm', "reason" => "Automatically banned by the Akismet system for spamming.", "oldadditionalgroups" => ''); $db->insert_query("banned", $banned_user); $db->update_query("users", array('usergroup' => 7), "uid = '{$post2['uid']}'"); $cache->update_moderators(); } } ++$numakismetthread; } else { $db->write_query("UPDATE " . TABLE_PREFIX . "users SET akismetstopped=akismetstopped+1 WHERE uid = '{$post['uid']}'"); $query = $db->simple_select("users", "akismetstopped, usergroup", "uid = '{$post['uid']}'"); $akismetstopped = $db->fetch_field($query, 'akismetstopped'); $usergroup = $db->fetch_field($query, 'usergroup'); if ($mybb->settings['akismetuidsignore']) { $akismet_uids_ignore = explode(',', $mybb->settings['akismetuidsignore']); if (in_array($usergroup, $akismet_uids_ignore)) { continue; } } if (is_super_admin($post['uid'])) { continue; } // Check if the person should be banned if ($mybb->settings['akismetnumtillban'] > 0 && $akismetstopped >= $mybb->settings['akismetnumtillban']) { $banned_user = array("uid" => $post['uid'], "admin" => 0, "gid" => 7, "oldgroup" => $usergroup, "dateline" => TIME_NOW, "bantime" => 'perm', "lifted" => 'perm', "reason" => "Automatically banned by the Akismet system for spamming.", "oldadditionalgroups" => ''); $db->insert_query("banned", $banned_user); $db->update_query("users", array('usergroup' => 7), "uid = '{$post['uid']}'"); $cache->update_moderators(); } ++$numakismetpost; if ($post['usepostcounts'] != 0) { $db->write_query("UPDATE " . TABLE_PREFIX . "users SET postnum=postnum-1 WHERE uid = '{$post['uid']}'"); } } update_thread_counters($post['tid'], array('replies' => '-' . $numakismetpost)); update_forum_counters($post['fid'], array('threads' => '-' . $numakismetthread, 'posts' => '-' . $numakismetpost)); if ($snippit == "thread") { redirect(get_forum_link($post['fid']), $lang->thread_spam_success); } else { redirect(get_thread_link($post['tid']), $lang->post_spam_success); } }