function undelete()
 {
     if ($this->getConfig()->get('UploadMaintenance') && $this->mTargetObj->getNamespace() == NS_FILE) {
         throw new ErrorPageError('undelete-error', 'filedelete-maintenance');
     }
     $this->checkReadOnly();
     $out = $this->getOutput();
     $archive = new PageArchive($this->mTargetObj, $this->getConfig());
     Hooks::run('UndeleteForm::undelete', array(&$archive, $this->mTargetObj));
     $ok = $archive->undelete($this->mTargetTimestamp, $this->mComment, $this->mFileVersions, $this->mUnsuppress, $this->getUser());
     if (is_array($ok)) {
         if ($ok[1]) {
             // Undeleted file count
             Hooks::run('FileUndeleteComplete', array($this->mTargetObj, $this->mFileVersions, $this->getUser(), $this->mComment));
         }
         $link = Linker::linkKnown($this->mTargetObj);
         $out->addHTML($this->msg('undeletedpage')->rawParams($link)->parse());
     } else {
         $out->setPageTitle($this->msg('undelete-error'));
     }
     // Show revision undeletion warnings and errors
     $status = $archive->getRevisionStatus();
     if ($status && !$status->isGood()) {
         $out->addWikiText('<div class="error">' . $status->getWikiText('cannotundelete', 'cannotundelete') . '</div>');
     }
     // Show file undeletion warnings and errors
     $status = $archive->getFileStatus();
     if ($status && !$status->isGood()) {
         $out->addWikiText('<div class="error">' . $status->getWikiText('undelete-error-short', 'undelete-error-long') . '</div>');
     }
 }