public function execute($par) { global $wgOut, $wgLang; $this->setHeaders(); $wgOut->addWikiMsg('closewikis-list-intro'); $wgOut->addHTML('<table class="mw-datatable TablePager" style="width: 100%"><tr>'); foreach (array('wiki', 'by', 'timestamp', 'dispreason') as $column) { $wgOut->addHTML('<th>' . wfMsgExt("closewikis-list-header-{$column}", 'parseinline') . '</th>'); } $wgOut->addHTML('</tr>'); $list = CloseWikis::getAll(); foreach ($list as $entry) { $wgOut->addHTML('<tr>'); $wgOut->addHTML('<td>' . $entry->getWiki() . '</td>'); $wgOut->addHTML('<td>' . $entry->getBy() . '</td>'); $wgOut->addHTML('<td>' . $wgLang->timeanddate($entry->getTimestamp()) . '</td>'); $wgOut->addHTML('<td>'); $wgOut->addWikiText($entry->getReason()); $wgOut->addHTML('</td>'); $wgOut->addHTML('</tr>'); } $wgOut->addHTML('</table>'); }
/** * @static * @param $title * @param $user User * @param $action * @param $result * @return bool */ static function userCan(&$title, &$user, $action, &$result) { static $closed = null; global $wgLang; if ($action == 'read') { return true; } if (is_null($closed)) { $closed = CloseWikis::getClosedRow(wfWikiID()); } if ($closed->isClosed() && !$user->isAllowed('editclosedwikis')) { $reason = $closed->getReason(); $ts = $closed->getTimestamp(); $by = $closed->getBy(); $result[] = array('closewikis-closed', $reason, $by, $wgLang->timeanddate($ts), $wgLang->time($ts), $wgLang->date($ts)); return false; } return true; }
protected function reopenForm() { global $wgOut, $wgUser, $wgRequest; $status = ''; $statusOK = false; if ($wgRequest->wasPosted() && $wgUser->matchEditToken($wgRequest->getVal('wprEdittoken'))) { global $wgLocalDatabases; $wiki = $wgRequest->getVal('wprWiki'); $lreason = $wgRequest->getVal('wprReason'); if (!in_array($wiki, $wgLocalDatabases)) { $status = wfMsgExt('closewikis-page-err-nowiki', 'parseinline'); } else { $statusOK = CloseWikis::reopen($wiki); if ($statusOK) { $status = wfMsgExt('closewikis-page-reopen-success', 'parseinline'); $logpage = new LogPage('closewiki'); $logpage->addEntry('reopen', $this->getTitle(), $lreason, array($wiki)); } else { $status = wfMsgExt('closewikis-page-err-opened', 'parseinline'); } } } $legend = wfMsgHtml('closewikis-page-reopen'); // If operation was successful, empty all fields $defaultWiki = $statusOK ? '' : $wgRequest->getVal('wprWiki'); $defaultReason = $statusOK ? '' : $wgRequest->getVal('wprReason'); $wgOut->addHTML("<fieldset><legend>{$legend}</legend>"); if ($status) { $statusStyle = $statusOK ? 'success' : 'error'; $wgOut->addHTML("<p><strong class=\"{$statusStyle}\">{$status}</strong></p>"); } $wgOut->addHTML('<form method="post" action="' . htmlspecialchars($this->getTitle()->getLocalURL()) . '">'); $form = array(); $form['closewikis-page-reopen-wiki'] = $this->buildSelect(CloseWikis::getList(), 'wprWiki', $defaultWiki); $form['closewikis-page-reopen-reason'] = Xml::input('wprReason', false, $defaultReason); $wgOut->addHTML(Xml::buildForm($form, 'closewikis-page-reopen-submit')); $wgOut->addHTML(Html::hidden('wprEdittoken', $wgUser->editToken())); $wgOut->addHTML("</form></fieldset>"); }