[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/revisiondelete/ -> RevDelRevisionItem.php (source)

   1  <?php
   2  /**
   3   * This program is free software; you can redistribute it and/or modify
   4   * it under the terms of the GNU General Public License as published by
   5   * the Free Software Foundation; either version 2 of the License, or
   6   * (at your option) any later version.
   7   *
   8   * This program is distributed in the hope that it will be useful,
   9   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11   * GNU General Public License for more details.
  12   *
  13   * You should have received a copy of the GNU General Public License along
  14   * with this program; if not, write to the Free Software Foundation, Inc.,
  15   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  16   * http://www.gnu.org/copyleft/gpl.html
  17   *
  18   * @file
  19   * @ingroup RevisionDelete
  20   */
  21  
  22  /**
  23   * Item class for a live revision table row
  24   */
  25  class RevDelRevisionItem extends RevDelItem {
  26      /** @var Revision */
  27      public $revision;
  28  
  29  	public function __construct( $list, $row ) {
  30          parent::__construct( $list, $row );
  31          $this->revision = new Revision( $row );
  32      }
  33  
  34  	public function getIdField() {
  35          return 'rev_id';
  36      }
  37  
  38  	public function getTimestampField() {
  39          return 'rev_timestamp';
  40      }
  41  
  42  	public function getAuthorIdField() {
  43          return 'rev_user';
  44      }
  45  
  46  	public function getAuthorNameField() {
  47          return 'rev_user_text';
  48      }
  49  
  50  	public function canView() {
  51          return $this->revision->userCan( Revision::DELETED_RESTRICTED, $this->list->getUser() );
  52      }
  53  
  54  	public function canViewContent() {
  55          return $this->revision->userCan( Revision::DELETED_TEXT, $this->list->getUser() );
  56      }
  57  
  58  	public function getBits() {
  59          return $this->revision->getVisibility();
  60      }
  61  
  62  	public function setBits( $bits ) {
  63          $dbw = wfGetDB( DB_MASTER );
  64          // Update revision table
  65          $dbw->update( 'revision',
  66              array( 'rev_deleted' => $bits ),
  67              array(
  68                  'rev_id' => $this->revision->getId(),
  69                  'rev_page' => $this->revision->getPage(),
  70                  'rev_deleted' => $this->getBits()
  71              ),
  72              __METHOD__
  73          );
  74          if ( !$dbw->affectedRows() ) {
  75              // Concurrent fail!
  76              return false;
  77          }
  78          // Update recentchanges table
  79          $dbw->update( 'recentchanges',
  80              array(
  81                  'rc_deleted' => $bits,
  82                  'rc_patrolled' => 1
  83              ),
  84              array(
  85                  'rc_this_oldid' => $this->revision->getId(), // condition
  86                  // non-unique timestamp index
  87                  'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
  88              ),
  89              __METHOD__
  90          );
  91  
  92          return true;
  93      }
  94  
  95  	public function isDeleted() {
  96          return $this->revision->isDeleted( Revision::DELETED_TEXT );
  97      }
  98  
  99  	public function isHideCurrentOp( $newBits ) {
 100          return ( $newBits & Revision::DELETED_TEXT )
 101              && $this->list->getCurrent() == $this->getId();
 102      }
 103  
 104      /**
 105       * Get the HTML link to the revision text.
 106       * Overridden by RevDelArchiveItem.
 107       * @return string
 108       */
 109  	protected function getRevisionLink() {
 110          $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
 111              $this->revision->getTimestamp(), $this->list->getUser() ) );
 112  
 113          if ( $this->isDeleted() && !$this->canViewContent() ) {
 114              return $date;
 115          }
 116  
 117          return Linker::linkKnown(
 118              $this->list->title,
 119              $date,
 120              array(),
 121              array(
 122                  'oldid' => $this->revision->getId(),
 123                  'unhide' => 1
 124              )
 125          );
 126      }
 127  
 128      /**
 129       * Get the HTML link to the diff.
 130       * Overridden by RevDelArchiveItem
 131       * @return string
 132       */
 133  	protected function getDiffLink() {
 134          if ( $this->isDeleted() && !$this->canViewContent() ) {
 135              return $this->list->msg( 'diff' )->escaped();
 136          } else {
 137              return Linker::linkKnown(
 138                      $this->list->title,
 139                      $this->list->msg( 'diff' )->escaped(),
 140                      array(),
 141                      array(
 142                          'diff' => $this->revision->getId(),
 143                          'oldid' => 'prev',
 144                          'unhide' => 1
 145                      )
 146                  );
 147          }
 148      }
 149  
 150  	public function getHTML() {
 151          $difflink = $this->list->msg( 'parentheses' )
 152              ->rawParams( $this->getDiffLink() )->escaped();
 153          $revlink = $this->getRevisionLink();
 154          $userlink = Linker::revUserLink( $this->revision );
 155          $comment = Linker::revComment( $this->revision );
 156          if ( $this->isDeleted() ) {
 157              $revlink = "<span class=\"history-deleted\">$revlink</span>";
 158          }
 159  
 160          return "<li>$difflink $revlink $userlink $comment</li>";
 161      }
 162  
 163  	public function getApiData( ApiResult $result ) {
 164          $rev = $this->revision;
 165          $user = $this->list->getUser();
 166          $ret = array(
 167              'id' => $rev->getId(),
 168              'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ),
 169          );
 170          $ret += $rev->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
 171          $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
 172          $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? array( 'texthidden' => '' ) : array();
 173          if ( $rev->userCan( Revision::DELETED_USER, $user ) ) {
 174              $ret += array(
 175                  'userid' => $rev->getUser( Revision::FOR_THIS_USER ),
 176                  'user' => $rev->getUserText( Revision::FOR_THIS_USER ),
 177              );
 178          }
 179          if ( $rev->userCan( Revision::DELETED_COMMENT, $user ) ) {
 180              $ret += array(
 181                  'comment' => $rev->getComment( Revision::FOR_THIS_USER ),
 182              );
 183          }
 184  
 185          return $ret;
 186      }
 187  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1