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')); }
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')); }
function hideArchivedRevision($dbw, $timestamp) { $archive = new PageArchive($this->mTarget); $rev = $archive->getRevision($timestamp); if (!$rev) { $dbw->rollback(); return 'hiderevision-error-missing'; } $this->insertRevision($dbw, $this->mTarget, $rev); if ($dbw->affectedRows() != 1) { $dbw->rollback(); return 'hiderevision-error-delete'; } $dbw->delete('archive', array('ar_namespace' => $this->mTarget->getNamespace(), 'ar_title' => $this->mTarget->getDBkey(), 'ar_timestamp' => $timestamp), __METHOD__); $dbw->commit(); return 'hiderevision-success'; }
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')); }
function showRevision($timestamp) { global $wgLang, $wgUser, $wgOut; if (!preg_match("/[0-9]{14}/", $timestamp)) { return 0; } $archive = new PageArchive($this->mTargetObj); $rev = $archive->getRevision($timestamp); $wgOut->setPagetitle(wfMsg("undeletepage")); $wgOut->addWikiText("(" . wfMsg("undeleterevision", $wgLang->timeAndDate($timestamp)) . ")\n"); if (!$rev) { $wgOut->addWikiText(wfMsg('undeleterevision-missing')); return; } wfRunHooks('UndeleteShowRevision', array($this->mTargetObj, $rev)); if ($this->mPreview) { $wgOut->addHtml("<hr />\n"); $article = new Article($archive->title); # OutputPage wants an Article obj $wgOut->addPrimaryWikiText($rev->getText(), $article, false); } $self = SpecialPage::getTitleFor("Undelete"); $wgOut->addHtml(wfElement('textarea', array('readonly' => true, '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' => 'hidden', 'name' => 'preview', 'value' => '1')) . wfElement('input', array('type' => 'submit', 'value' => wfMsg('showpreview'))) . wfCloseElement('form') . wfCloseElement('div')); }
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')); }
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')); }