private function showRevision($timestamp)
 {
     if (!preg_match('/[0-9]{14}/', $timestamp)) {
         return;
     }
     $archive = new PageArchive($this->mTargetObj, $this->getConfig());
     if (!Hooks::run('UndeleteForm::showRevision', array(&$archive, $this->mTargetObj))) {
         return;
     }
     $rev = $archive->getRevision($timestamp);
     $out = $this->getOutput();
     $user = $this->getUser();
     if (!$rev) {
         $out->addWikiMsg('undeleterevision-missing');
         return;
     }
     if ($rev->isDeleted(Revision::DELETED_TEXT)) {
         if (!$rev->userCan(Revision::DELETED_TEXT, $user)) {
             $out->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1\n</div>\n", $rev->isDeleted(Revision::DELETED_RESTRICTED) ? 'rev-suppressed-text-permission' : 'rev-deleted-text-permission');
             return;
         }
         $out->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1\n</div>\n", $rev->isDeleted(Revision::DELETED_RESTRICTED) ? 'rev-suppressed-text-view' : 'rev-deleted-text-view');
         $out->addHTML('<br />');
         // and we are allowed to see...
     }
     if ($this->mDiff) {
         $previousRev = $archive->getPreviousRevision($timestamp);
         if ($previousRev) {
             $this->showDiff($previousRev, $rev);
             if ($this->mDiffOnly) {
                 return;
             }
             $out->addHTML('<hr />');
         } else {
             $out->addWikiMsg('undelete-nodiff');
         }
     }
     $link = Linker::linkKnown($this->getPageTitle($this->mTargetObj->getPrefixedDBkey()), htmlspecialchars($this->mTargetObj->getPrefixedText()));
     $lang = $this->getLanguage();
     // date and time are separate parameters to facilitate localisation.
     // $time is kept for backward compat reasons.
     $time = $lang->userTimeAndDate($timestamp, $user);
     $d = $lang->userDate($timestamp, $user);
     $t = $lang->userTime($timestamp, $user);
     $userLink = Linker::revUserTools($rev);
     $content = $rev->getContent(Revision::FOR_THIS_USER, $user);
     $isText = $content instanceof TextContent;
     if ($this->mPreview || $isText) {
         $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
     } else {
         $openDiv = '<div id="mw-undelete-revision">';
     }
     $out->addHTML($openDiv);
     // Revision delete links
     if (!$this->mDiff) {
         $revdel = Linker::getRevDeleteLink($user, $rev, $this->mTargetObj);
         if ($revdel) {
             $out->addHTML("{$revdel} ");
         }
     }
     $out->addHTML($this->msg('undelete-revision')->rawParams($link)->params($time)->rawParams($userLink)->params($d, $t)->parse() . '</div>');
     if (!Hooks::run('UndeleteShowRevision', array($this->mTargetObj, $rev))) {
         return;
     }
     if (($this->mPreview || !$isText) && $content) {
         // NOTE: non-text content has no source view, so always use rendered preview
         // Hide [edit]s
         $popts = $out->parserOptions();
         $popts->setEditSection(false);
         $pout = $content->getParserOutput($this->mTargetObj, $rev->getId(), $popts, true);
         $out->addParserOutput($pout);
     }
     if ($isText) {
         // source view for textual content
         $sourceView = Xml::element('textarea', array('readonly' => 'readonly', 'cols' => $user->getIntOption('cols'), 'rows' => $user->getIntOption('rows')), $content->getNativeData() . "\n");
         $previewButton = Xml::element('input', array('type' => 'submit', 'name' => 'preview', 'value' => $this->msg('showpreview')->text()));
     } else {
         $sourceView = '';
         $previewButton = '';
     }
     $diffButton = Xml::element('input', array('name' => 'diff', 'type' => 'submit', 'value' => $this->msg('showdiff')->text()));
     $out->addHTML($sourceView . Xml::openElement('div', array('style' => 'clear: both')) . Xml::openElement('form', array('method' => 'post', 'action' => $this->getPageTitle()->getLocalURL(array('action' => 'submit')))) . Xml::element('input', array('type' => 'hidden', 'name' => 'target', 'value' => $this->mTargetObj->getPrefixedDBkey())) . Xml::element('input', array('type' => 'hidden', 'name' => 'timestamp', 'value' => $timestamp)) . Xml::element('input', array('type' => 'hidden', 'name' => 'wpEditToken', 'value' => $user->getEditToken())) . $previewButton . $diffButton . Xml::closeElement('form') . Xml::closeElement('div'));
 }
示例#2
0
 private function showRevision($timestamp)
 {
     if (!preg_match('/[0-9]{14}/', $timestamp)) {
         return 0;
     }
     $archive = new PageArchive($this->mTargetObj);
     wfRunHooks('UndeleteForm::showRevision', array(&$archive, $this->mTargetObj));
     $rev = $archive->getRevision($timestamp);
     $out = $this->getOutput();
     $user = $this->getUser();
     if (!$rev) {
         $out->addWikiMsg('undeleterevision-missing');
         return;
     }
     if ($rev->isDeleted(Revision::DELETED_TEXT)) {
         if (!$rev->userCan(Revision::DELETED_TEXT, $user)) {
             $out->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1\n</div>\n", 'rev-deleted-text-permission');
             return;
         } else {
             $out->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1\n</div>\n", 'rev-deleted-text-view');
             $out->addHTML('<br />');
             // and we are allowed to see...
         }
     }
     if ($this->mDiff) {
         $previousRev = $archive->getPreviousRevision($timestamp);
         if ($previousRev) {
             $this->showDiff($previousRev, $rev);
             if ($this->mDiffOnly) {
                 return;
             } else {
                 $out->addHTML('<hr />');
             }
         } else {
             $out->addWikiMsg('undelete-nodiff');
         }
     }
     $link = Linker::linkKnown($this->getTitle($this->mTargetObj->getPrefixedDBkey()), htmlspecialchars($this->mTargetObj->getPrefixedText()));
     $lang = $this->getLanguage();
     // date and time are separate parameters to facilitate localisation.
     // $time is kept for backward compat reasons.
     $time = $lang->userTimeAndDate($timestamp, $user);
     $d = $lang->userDate($timestamp, $user);
     $t = $lang->userTime($timestamp, $user);
     $userLink = Linker::revUserTools($rev);
     if ($this->mPreview) {
         $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
     } else {
         $openDiv = '<div id="mw-undelete-revision">';
     }
     $out->addHTML($openDiv);
     // Revision delete links
     if (!$this->mDiff) {
         $revdel = Linker::getRevDeleteLink($user, $rev, $this->mTargetObj);
         if ($revdel) {
             $out->addHTML("{$revdel} ");
         }
     }
     $out->addHTML($this->msg('undelete-revision')->rawParams($link)->params($time)->rawParams($userLink)->params($d, $t)->parse() . '</div>');
     wfRunHooks('UndeleteShowRevision', array($this->mTargetObj, $rev));
     if ($this->mPreview) {
         // Hide [edit]s
         $popts = $out->parserOptions();
         $popts->setEditSection(false);
         $out->parserOptions($popts);
         $out->addWikiTextTitleTidy($rev->getText(Revision::FOR_THIS_USER, $user), $this->mTargetObj, true);
     }
     $out->addHTML(Xml::element('textarea', array('readonly' => 'readonly', 'cols' => intval($user->getGlobalPreference('cols')), 'rows' => intval($user->getGlobalPreference('rows'))), $rev->getText(Revision::FOR_THIS_USER, $user) . "\n") . Xml::openElement('div') . Xml::openElement('form', array('method' => 'post', 'action' => $this->getTitle()->getLocalURL(array('action' => 'submit')))) . Xml::element('input', array('type' => 'hidden', 'name' => 'target', 'value' => $this->mTargetObj->getPrefixedDbKey())) . Xml::element('input', array('type' => 'hidden', 'name' => 'timestamp', 'value' => $timestamp)) . Xml::element('input', array('type' => 'hidden', 'name' => 'wpEditToken', 'value' => $user->getEditToken())) . Xml::element('input', array('type' => 'submit', 'name' => 'preview', 'value' => $this->msg('showpreview')->text())) . Xml::element('input', array('name' => 'diff', 'type' => 'submit', 'value' => $this->msg('showdiff')->text())) . Xml::closeElement('form') . Xml::closeElement('div'));
 }
示例#3
0
 private function showRevision($timestamp)
 {
     global $wgLang, $wgUser, $wgOut;
     $self = SpecialPage::getTitleFor('Undelete');
     $skin = $wgUser->getSkin();
     if (!preg_match("/[0-9]{14}/", $timestamp)) {
         return 0;
     }
     $archive = new PageArchive($this->mTargetObj);
     $rev = $archive->getRevision($timestamp);
     if (!$rev) {
         $wgOut->addWikiMsg('undeleterevision-missing');
         return;
     }
     if ($rev->isDeleted(Revision::DELETED_TEXT)) {
         if (!$rev->userCan(Revision::DELETED_TEXT)) {
             $wgOut->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1</div>\n", 'rev-deleted-text-permission');
             return;
         } else {
             $wgOut->wrapWikiMsg("<div class='mw-warning plainlinks'>\n\$1</div>\n", 'rev-deleted-text-view');
             $wgOut->addHTML('<br />');
             // and we are allowed to see...
         }
     }
     $wgOut->setPageTitle(wfMsg('undeletepage'));
     $link = $skin->linkKnown(SpecialPage::getTitleFor('Undelete', $this->mTargetObj->getPrefixedDBkey()), htmlspecialchars($this->mTargetObj->getPrefixedText()));
     if ($this->mDiff) {
         $previousRev = $archive->getPreviousRevision($timestamp);
         if ($previousRev) {
             $this->showDiff($previousRev, $rev);
             if ($wgUser->getOption('diffonly')) {
                 return;
             } else {
                 $wgOut->addHTML('<hr />');
             }
         } else {
             $wgOut->addWikiMsg('undelete-nodiff');
         }
     }
     // date and time are separate parameters to facilitate localisation.
     // $time is kept for backward compat reasons.
     $time = htmlspecialchars($wgLang->timeAndDate($timestamp, true));
     $d = htmlspecialchars($wgLang->date($timestamp, true));
     $t = htmlspecialchars($wgLang->time($timestamp, true));
     $user = $skin->revUserTools($rev);
     if ($this->mPreview) {
         $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
     } else {
         $openDiv = '<div id="mw-undelete-revision">';
     }
     // Revision delete links
     $canHide = $wgUser->isAllowed('deleterevision');
     if ($this->mDiff) {
         $revdlink = '';
         // diffs already have revision delete links
     } else {
         if ($canHide || $rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) {
             if (!$rev->userCan(Revision::DELETED_RESTRICTED)) {
                 $revdlink = $skin->revDeleteLinkDisabled($canHide);
                 // revision was hidden from sysops
             } else {
                 $query = array('type' => 'archive', 'target' => $this->mTargetObj->getPrefixedDBkey(), 'ids' => $rev->getTimestamp());
                 $revdlink = $skin->revDeleteLink($query, $rev->isDeleted(File::DELETED_RESTRICTED), $canHide);
             }
         } else {
             $revdlink = '';
         }
     }
     $wgOut->addHTML($openDiv . $revdlink . wfMsgWikiHtml('undelete-revision', $link, $time, $user, $d, $t) . '</div>');
     wfRunHooks('UndeleteShowRevision', array($this->mTargetObj, $rev));
     if ($this->mPreview) {
         //Hide [edit]s
         $popts = $wgOut->parserOptions();
         $popts->setEditSection(false);
         $wgOut->parserOptions($popts);
         $wgOut->addWikiTextTitleTidy($rev->getText(Revision::FOR_THIS_USER), $this->mTargetObj, true);
     }
     $wgOut->addHTML(Xml::element('textarea', array('readonly' => 'readonly', 'cols' => intval($wgUser->getOption('cols')), 'rows' => intval($wgUser->getOption('rows'))), $rev->getText(Revision::FOR_THIS_USER) . "\n") . Xml::openElement('div') . Xml::openElement('form', array('method' => 'post', 'action' => $self->getLocalURL(array('action' => 'submit')))) . Xml::element('input', array('type' => 'hidden', 'name' => 'target', 'value' => $this->mTargetObj->getPrefixedDbKey())) . Xml::element('input', array('type' => 'hidden', 'name' => 'timestamp', 'value' => $timestamp)) . Xml::element('input', array('type' => 'hidden', 'name' => 'wpEditToken', 'value' => $wgUser->editToken())) . Xml::element('input', array('type' => 'submit', 'name' => 'preview', 'value' => wfMsg('showpreview'))) . Xml::element('input', array('name' => 'diff', 'type' => 'submit', 'value' => wfMsg('showdiff'))) . Xml::closeElement('form') . Xml::closeElement('div'));
 }
 function showRevision($timestamp)
 {
     global $wgLang, $wgUser, $wgOut;
     $self = SpecialPage::getTitleFor('Undelete');
     $skin = $wgUser->getSkin();
     if (!preg_match("/[0-9]{14}/", $timestamp)) {
         return 0;
     }
     $archive = new PageArchive($this->mTargetObj);
     $rev = $archive->getRevision($timestamp);
     if (!$rev) {
         $wgOut->addWikiMsg('undeleterevision-missing');
         return;
     }
     $wgOut->setPageTitle(wfMsg('undeletepage'));
     $link = $skin->makeKnownLinkObj(SpecialPage::getTitleFor('Undelete', $this->mTargetObj->getPrefixedDBkey()), htmlspecialchars($this->mTargetObj->getPrefixedText()));
     $time = htmlspecialchars($wgLang->timeAndDate($timestamp, true));
     $user = $skin->userLink($rev->getUser(), $rev->getUserText()) . $skin->userToolLinks($rev->getUser(), $rev->getUserText());
     if ($this->mDiff) {
         $previousRev = $archive->getPreviousRevision($timestamp);
         if ($previousRev) {
             $this->showDiff($previousRev, $rev);
             if ($wgUser->getOption('diffonly')) {
                 return;
             } else {
                 $wgOut->addHtml('<hr />');
             }
         } else {
             $wgOut->addHtml(wfMsgHtml('undelete-nodiff'));
         }
     }
     $wgOut->addHtml('<p>' . wfMsgHtml('undelete-revision', $link, $time, $user) . '</p>');
     wfRunHooks('UndeleteShowRevision', array($this->mTargetObj, $rev));
     if ($this->mPreview) {
         $wgOut->addHtml("<hr />\n");
         $wgOut->addWikiTextTitleTidy($rev->getText(), $this->mTargetObj, false);
     }
     $wgOut->addHtml(wfElement('textarea', array('readonly' => 'readonly', 'cols' => intval($wgUser->getOption('cols')), 'rows' => intval($wgUser->getOption('rows'))), $rev->getText() . "\n") . wfOpenElement('div') . wfOpenElement('form', array('method' => 'post', 'action' => $self->getLocalURL("action=submit"))) . wfElement('input', array('type' => 'hidden', 'name' => 'target', 'value' => $this->mTargetObj->getPrefixedDbKey())) . wfElement('input', array('type' => 'hidden', 'name' => 'timestamp', 'value' => $timestamp)) . wfElement('input', array('type' => 'hidden', 'name' => 'wpEditToken', 'value' => $wgUser->editToken())) . wfElement('input', array('type' => 'submit', 'name' => 'preview', 'value' => wfMsg('showpreview'))) . wfElement('input', array('name' => 'diff', 'type' => 'submit', 'value' => wfMsg('showdiff'))) . wfCloseElement('form') . wfCloseElement('div'));
 }
示例#5
0
 private function showRevision($timestamp)
 {
     global $wgLang, $wgUser, $wgOut;
     $self = SpecialPage::getTitleFor('Undelete');
     $skin = $wgUser->getSkin();
     if (!preg_match("/[0-9]{14}/", $timestamp)) {
         return 0;
     }
     $archive = new PageArchive($this->mTargetObj);
     $rev = $archive->getRevision($timestamp);
     if (!$rev) {
         $wgOut->addWikiMsg('undeleterevision-missing');
         return;
     }
     if ($rev->isDeleted(Revision::DELETED_TEXT)) {
         if (!$rev->userCan(Revision::DELETED_TEXT)) {
             $wgOut->addWikiText(wfMsg('rev-deleted-text-permission'));
             return;
         } else {
             $wgOut->addWikiText(wfMsg('rev-deleted-text-view'));
             $wgOut->addHTML('<br/>');
             // and we are allowed to see...
         }
     }
     $wgOut->setPageTitle(wfMsg('undeletepage'));
     $link = $skin->makeKnownLinkObj(SpecialPage::getTitleFor('Undelete', $this->mTargetObj->getPrefixedDBkey()), htmlspecialchars($this->mTargetObj->getPrefixedText()));
     if ($this->mDiff) {
         $previousRev = $archive->getPreviousRevision($timestamp);
         if ($previousRev) {
             $this->showDiff($previousRev, $rev);
             if ($wgUser->getOption('diffonly')) {
                 return;
             } else {
                 $wgOut->addHTML('<hr />');
             }
         } else {
             $wgOut->addHTML(wfMsgHtml('undelete-nodiff'));
         }
     }
     // date and time are separate parameters to facilitate localisation.
     // $time is kept for backward compat reasons.
     $time = htmlspecialchars($wgLang->timeAndDate($timestamp, true));
     $d = htmlspecialchars($wgLang->date($timestamp, true));
     $t = htmlspecialchars($wgLang->time($timestamp, true));
     $user = $skin->revUserTools($rev);
     $wgOut->addHTML('<p>' . wfMsgHtml('undelete-revision', $link, $time, $user, $d, $t) . '</p>');
     wfRunHooks('UndeleteShowRevision', array($this->mTargetObj, $rev));
     if ($this->mPreview) {
         $wgOut->addHTML("<hr />\n");
         //Hide [edit]s
         $popts = $wgOut->parserOptions();
         $popts->setEditSection(false);
         $wgOut->parserOptions($popts);
         $wgOut->addWikiTextTitleTidy($rev->getText(Revision::FOR_THIS_USER), $this->mTargetObj, true);
     }
     $wgOut->addHTML(Xml::element('textarea', array('readonly' => 'readonly', 'cols' => intval($wgUser->getOption('cols')), 'rows' => intval($wgUser->getOption('rows'))), $rev->getText(Revision::FOR_THIS_USER) . "\n") . Xml::openElement('div') . Xml::openElement('form', array('method' => 'post', 'action' => $self->getLocalURL("action=submit"))) . Xml::element('input', array('type' => 'hidden', 'name' => 'target', 'value' => $this->mTargetObj->getPrefixedDbKey())) . Xml::element('input', array('type' => 'hidden', 'name' => 'timestamp', 'value' => $timestamp)) . Xml::element('input', array('type' => 'hidden', 'name' => 'wpEditToken', 'value' => $wgUser->editToken())) . Xml::element('input', array('type' => 'submit', 'name' => 'preview', 'value' => wfMsg('showpreview'))) . Xml::element('input', array('name' => 'diff', 'type' => 'submit', 'value' => wfMsg('showdiff'))) . Xml::closeElement('form') . Xml::closeElement('div'));
 }