function execute($par) { global $wgOut, $wgUser, $wgShowRatings, $wgRequest, $wgLang; $err = ""; $target = isset($par) ? $par : $wgRequest->getVal('target'); $restore = $wgRequest->getVal('restore', null); $sk = $wgUser->getSkin(); $wgOut->setHTMLTitle('Clear Ratings - Accuracy Patrol'); $t = Title::newFromText($target); if ($t == '') { $wgOut->addHTML(wfMsg('clearratings_notitle')); $this->addClearForm($target); return; } $me = SpecialPage::getTitleFor('Clearratings', $t->getText()); if ($wgUser->getID() == 0) { return; } if ($wgRequest->wasPosted()) { // clearing ratings $clear = $wgRequest->getVal('clear', null); $confirm = $wgRequest->getVal('confirm', null); if ($clear != null && $confirm == null && false) { $id = $t->getArticleID(); $wgOut->addHTML(wfMsg('clearratings_clear_confirm_prompt', $sk->makeLinkObj($t, $t->getFullText())) . "\n\t\t\t\t\t\t<br/><br/>\n\t\t\t\t\t\t<form id='clear_ratings' method='POST'>\n\t\t\t\t\t\t\t<input type=hidden value='{$id}' name='clear'>\n\t\t\t\t\t\t\t<input type=hidden value='true' name='confirm'>\n\t\t\t\t\t\t\t<input type=hidden value='" . htmlspecialchars($target) . "' name='target'>\n\t\t\t\t\t\t\t<input type=submit value='" . wfMsg('clearratings_clear_confirm') . "'>\n\t\t\t\t\t\t</form>"); return; } else { if ($clear != null) { RateArticle::clearRatingForPage($clear, $t, $wgUser); $wgOut->addHTML(wfMsg('clearratings_clear_finished') . "<br/><br/>"); } } } if ($restore != null && $wgRequest->getVal('reason', null) == null) { $wgOut->addHTML(wfMsg('clearreating_reason_restore') . "<br/><br/>"); $wgOut->addHTML("<form id='clear_ratings' method='POST' action='{$me->getFullURL()}'>"); $wgOut->addHTML(wfMsg('clearratings_reason') . " <input type='text' name='reason' size='40'><br/><br/>"); foreach ($_GET as $k => $v) { $wgOut->addHTML("<input type='hidden' value='{$v}' name='{$k}'/>"); } $wgOut->addHTML("<input type='submit' value='" . wfMsg('clearratings_submit') . "'/>"); $wgOut->addHTML("</form>"); return; } else { if ($restore != null) { $dbw =& wfGetDB(DB_MASTER); $user = $wgRequest->getVal('user'); $page = $wgRequest->getVal('page'); $u = new User(); $u->setID($user); $up = $u->getUserPage(); $hi = $wgRequest->getVal('hi'); $low = $wgRequest->getVal('low'); $count = $dbw->selectField('rating', 'count(*)', array("rat_page={$page}", "rat_isdeleted=1")); $sql = "update rating set rat_isdeleted= 0 where rat_user_deleted = {$user} and rat_page={$page} and rat_id <= {$hi} and rat_id >= {$low};"; $dbw->query($sql); $wgOut->addHTML("<br/><br/>" . wfMsg('clearratings_clear_restored', $sk->makeLinkObj($up, $u->getName()), $when) . "<br/><br/>"); // add the log entry $t = Title::newFromId($page); $params = array($page, $min, $max); $log = new LogPage('accuracy', true); $reason = $wgRequest->getVal('reason'); $log->addEntry('accuracy', $t, wfMsg('clearratings_logrestore', $reason, $t->getFullText(), $count), $params); } } if ($target != null) { $t = Title::newFromText($target); $id = $t->getArticleID(); if ($id == 0) { $err = wfMsg('clearratings_no_such_title', $wgRequest->getVal('target')); } else { if ($t->getNamespace() != NS_MAIN) { $err = wfMsg('clearratings_only_main', $wgRequest->getVal('target')); } else { // clearing info $dbr =& wfGetDB(DB_MASTER); // get log $res = $dbr->select(array('logging'), array('log_timestamp', 'log_user', 'log_comment', 'log_params'), array('log_type' => 'accuracy', "log_title" => $t->getDBKey()), "wfSpecialClearratings"); $count = 0; $wgOut->addHTML(wfMsg('clearratings_previous_clearings') . "<ul>"); while ($row = $dbr->fetchObject($res)) { $d = $wgLang->date($row->log_timestamp); $u = new User(); $u->setID($row->log_user); $up = $u->getUserPage(); $params = split("\n", $row->log_params); $wgOut->addHTML("<li>" . $sk->makeLinkObj($up, $u->getName()) . " ({$d}): "); $wgOut->addHTML(preg_replace('/<?p>/', '', $wgOut->parse($row->log_comment))); $wgOut->addHTML("</i>"); if (strpos($row->log_comment, wfMsg('clearratings_restore')) === false) { $wgOut->addHTML("(" . $sk->makeLinkObj($me, wfMsg('clearratings_previous_clearings_restore'), "page={$id}&hi={$params[2]}&low={$params[1]}&target={$target}&user={$row->log_user}&restore=1") . ")"); } $wgOut->addHTML("</li>"); $count++; } $wgOut->addHTML("</ul>"); if ($count == 0) { $wgOut->addHTML(wfMsg('clearratings_previous_clearings_none') . "<br/><br/>"); } $dbr->freeResult($res); $res = $dbr->select(array("rating"), array("COUNT(*) AS C", "AVG(rat_rating) AS R"), array("rat_page" => $id, "rat_isdeleted" => "0"), __METHOD__); if ($row = $dbr->fetchObject($res)) { $percent = $row->R * 100; $wgOut->addHTML($sk->makeLinkObj($t, $t->getFullText()) . "<br/><br/>" . wfMsg('clearratings_number_votes') . " {$row->C}<br/>" . wfMsg('clearratings_avg_rating') . " {$percent} %<br/><br/>\n\t\t\t\t\t\t<form id='clear_ratings' method='POST' action='{$me->getFullURL()}'>\n\t\t\t\t\t\t\t<input type=hidden value='{$id}' name='clear'>\n\t\t\t\t\t\t\t<input type=hidden value='" . htmlspecialchars($target) . "' name='target'>\n\t\t\t\t\t\t\t" . wfMsg('clearratings_reason') . " <input type='text' name='reason' size='40'><br/><br/>\n\t\t\t\t\t\t\t<input type=submit value='" . wfMsg('clearratings_clear_submit') . "'>\n\t\t\t\t\t\t</form><br/><br/>\n\t\t\t\t\t\t"); } $dbr->freeResult($res); $ap = Title::makeTitle(NS_SPECIAL, "AccuracyPatrol"); $wgOut->addHTML($sk->makeLinkObj($ap, "Return to accuracy patrol")); } } } $this->addClearForm($target); }