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>");
 }