Ejemplo n.º 1
0
 /**
  * Fetch file upload comment if it's available to this user
  *
  * @param File|ArchivedFile $file
  * @return string HTML fragment
  */
 function getFileComment($file)
 {
     if (!$file->userCan(File::DELETED_COMMENT, $this->getUser())) {
         return '<span class="history-deleted"><span class="comment">' . $this->msg('rev-deleted-comment')->escaped() . '</span></span>';
     }
     $link = Linker::commentBlock($file->getRawDescription());
     if ($file->isDeleted(File::DELETED_COMMENT)) {
         $link = '<span class="history-deleted">' . $link . '</span>';
     }
     return $link;
 }
Ejemplo n.º 2
0
 function execute($par)
 {
     $this->checkPermissions();
     $user = $this->getUser();
     $this->setHeaders();
     $this->outputHeader();
     $this->loadRequest($par);
     $out = $this->getOutput();
     if (is_null($this->mTargetObj)) {
         $out->addWikiMsg('undelete-header');
         # Not all users can just browse every deleted page from the list
         if ($user->isAllowed('browsearchive')) {
             $this->showSearchForm();
         }
         return;
     }
     if ($this->mAllowed) {
         $out->setPageTitle($this->msg('undeletepage'));
     } else {
         $out->setPageTitle($this->msg('viewdeletedpage'));
     }
     $this->getSkin()->setRelevantTitle($this->mTargetObj);
     if ($this->mTimestamp !== '') {
         $this->showRevision($this->mTimestamp);
     } elseif ($this->mFilename !== null) {
         $file = new ArchivedFile($this->mTargetObj, '', $this->mFilename);
         // Check if user is allowed to see this file
         if (!$file->exists()) {
             $out->addWikiMsg('filedelete-nofile', $this->mFilename);
         } elseif (!$file->userCan(File::DELETED_FILE, $user)) {
             if ($file->isDeleted(File::DELETED_RESTRICTED)) {
                 throw new PermissionsError('suppressrevision');
             } else {
                 throw new PermissionsError('deletedtext');
             }
         } elseif (!$user->matchEditToken($this->mToken, $this->mFilename)) {
             $this->showFileConfirmationForm($this->mFilename);
         } else {
             $this->showFile($this->mFilename);
         }
     } elseif ($this->mRestore && $this->mAction == 'submit') {
         $this->undelete();
     } else {
         $this->showHistory();
     }
 }
Ejemplo n.º 3
0
 /**
  * Wrap and format the given file's comment block, if the current
  * user is allowed to view it.
  *
  * @param ArchivedFile $file
  * @return string HTML
  */
 private function fileComment($file)
 {
     if ($file->userCan(File::DELETED_COMMENT)) {
         $block = $this->skin->commentBlock($file->description);
     } else {
         $block = ' ' . wfMsgHtml('rev-deleted-comment');
     }
     if ($file->isDeleted(File::DELETED_COMMENT)) {
         return "<span class=\"history-deleted\">{$block}</span>";
     }
     return $block;
 }
Ejemplo n.º 4
0
 function execute($par)
 {
     $this->setHeaders();
     if (!$this->userCanExecute($this->getUser())) {
         $this->displayRestrictionError();
         return;
     }
     $this->outputHeader();
     $this->loadRequest();
     $out = $this->getOutput();
     if ($this->mAllowed) {
         $out->setPageTitle(wfMsg('undeletepage'));
     } else {
         $out->setPageTitle(wfMsg('viewdeletedpage'));
     }
     if ($par != '') {
         $this->mTarget = $par;
     }
     if ($this->mTarget !== '') {
         $this->mTargetObj = Title::newFromURL($this->mTarget);
         $this->getSkin()->setRelevantTitle($this->mTargetObj);
     } else {
         $this->mTargetObj = null;
     }
     if (is_null($this->mTargetObj)) {
         # Not all users can just browse every deleted page from the list
         if ($this->getUser()->isAllowed('browsearchive')) {
             $this->showSearchForm();
             # List undeletable articles
             if ($this->mSearchPrefix) {
                 $result = PageArchive::listPagesByPrefix($this->mSearchPrefix);
                 $this->showList($result);
             }
         } else {
             $out->addWikiMsg('undelete-header');
         }
         return;
     }
     if ($this->mTimestamp !== '') {
         return $this->showRevision($this->mTimestamp);
     }
     if ($this->mFilename !== null) {
         $file = new ArchivedFile($this->mTargetObj, '', $this->mFilename);
         // Check if user is allowed to see this file
         if (!$file->exists()) {
             $out->addWikiMsg('filedelete-nofile', $this->mFilename);
             return;
         } elseif (!$file->userCan(File::DELETED_FILE)) {
             if ($file->isDeleted(File::DELETED_RESTRICTED)) {
                 $out->permissionRequired('suppressrevision');
             } else {
                 $out->permissionRequired('deletedtext');
             }
             return false;
         } elseif (!$this->getUser()->matchEditToken($this->mToken, $this->mFilename)) {
             $this->showFileConfirmationForm($this->mFilename);
             return false;
         } else {
             return $this->showFile($this->mFilename);
         }
     }
     if ($this->mRestore && $this->mAction == 'submit') {
         global $wgUploadMaintenance;
         if ($wgUploadMaintenance && $this->mTargetObj && $this->mTargetObj->getNamespace() == NS_FILE) {
             $out->wrapWikiMsg("<div class='error'>\n\$1\n</div>\n", array('filedelete-maintenance'));
             return;
         }
         return $this->undelete();
     }
     if ($this->mInvert && $this->mAction == 'submit') {
         return $this->showHistory();
     }
     return $this->showHistory();
 }