[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |