/** * Special page allowing users with the appropriate permissions to view * and hide revisions. Log items can also be hidden. * * @file * @ingroup SpecialPage */ function wfSpecialRevisiondelete($par = null) { global $wgOut, $wgRequest, $wgUser; # Handle our many different possible input types $target = $wgRequest->getText('target'); $oldid = $wgRequest->getArray('oldid'); $artimestamp = $wgRequest->getArray('artimestamp'); $logid = $wgRequest->getArray('logid'); $img = $wgRequest->getArray('oldimage'); $fileid = $wgRequest->getArray('fileid'); # For reviewing deleted files... $file = $wgRequest->getVal('file'); # If this is a revision, then we need a target page $page = Title::newFromUrl($target); if (is_null($page)) { $wgOut->addWikiMsg('undelete-header'); return; } # Only one target set at a time please! $i = (bool) $file + (bool) $oldid + (bool) $logid + (bool) $artimestamp + (bool) $fileid + (bool) $img; if ($i !== 1) { $wgOut->showErrorPage('revdelete-nooldid-title', 'revdelete-nooldid-text'); return; } # Logs must have a type given if ($logid && !strpos($page->getDBKey(), '/')) { $wgOut->showErrorPage('revdelete-nooldid-title', 'revdelete-nooldid-text'); return; } # Either submit or create our form $form = new RevisionDeleteForm($page, $oldid, $logid, $artimestamp, $fileid, $img, $file); if ($wgRequest->wasPosted()) { $form->submit($wgRequest); } else { if ($oldid || $artimestamp) { $form->showRevs(); } else { if ($fileid || $img) { $form->showImages(); } else { if ($logid) { $form->showLogItems(); } } } } # Show relevant lines from the deletion log. This will show even if said ID # does not exist...might be helpful $wgOut->addHTML("<h2>" . htmlspecialchars(LogPage::logName('delete')) . "</h2>\n"); LogEventsList::showLogExtract($wgOut, 'delete', $page->getPrefixedText()); if ($wgUser->isAllowed('suppressionlog')) { $wgOut->addHTML("<h2>" . htmlspecialchars(LogPage::logName('suppress')) . "</h2>\n"); LogEventsList::showLogExtract($wgOut, 'suppress', $page->getPrefixedText()); } }