Esempio n. 1
0
 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);
 }