1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
|
<?php
/**
* Holders of revision list for a single page
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\RevisionList;
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\MediaWikiServices;
use stdClass;
/**
* Abstract base class for revision items
*/
abstract class RevisionItemBase {
/** @var RevisionListBase The parent */
protected $list;
/** @var stdClass The database result row */
protected $row;
/**
* @param RevisionListBase $list
* @param stdClass $row DB result row
*/
public function __construct( RevisionListBase $list, $row ) {
$this->list = $list;
$this->row = $row;
}
/**
* Get the DB field name associated with the ID list.
* Override this function.
* @return string|null
*/
public function getIdField() {
return null;
}
/**
* Get the DB field name storing timestamps.
* Override this function.
* @return string|false
*/
public function getTimestampField() {
return false;
}
/**
* Get the DB field name storing user ids.
* Override this function.
* @return string|false
*/
public function getAuthorIdField() {
return false;
}
/**
* Get the DB field name storing user names.
* Override this function.
* @return string|false
*/
public function getAuthorNameField() {
return false;
}
/**
* Get the DB field name storing actor ids.
* Override this function.
* @since 1.31
* @return string|false
*/
public function getAuthorActorField() {
return false;
}
/**
* Get the ID, as it would appear in the ids URL parameter
* @return int|string
*/
public function getId() {
$field = $this->getIdField();
return intval( $this->row->$field );
}
/**
* Get the date, formatted in user's language
* @return string
*/
public function formatDate() {
return $this->list->getLanguage()->userDate( $this->getTimestamp(),
$this->list->getUser() );
}
/**
* Get the time, formatted in user's language
* @return string
*/
public function formatTime() {
return $this->list->getLanguage()->userTime( $this->getTimestamp(),
$this->list->getUser() );
}
/**
* Get the timestamp in MW 14-char form
* @return string|false
*/
public function getTimestamp() {
$field = $this->getTimestampField();
return wfTimestamp( TS_MW, $this->row->$field );
}
/**
* Get the author user ID
* @return int
*/
public function getAuthorId() {
$field = $this->getAuthorIdField();
return intval( $this->row->$field );
}
/**
* Get the author user name
* @return string
*/
public function getAuthorName() {
$field = $this->getAuthorNameField();
return strval( $this->row->$field );
}
/**
* Get the author actor ID
* @since 1.31
* @return string
*/
public function getAuthorActor() {
$field = $this->getAuthorActorField();
return strval( $this->row->$field );
}
/**
* Returns true if the current user can view the item
* @return bool
*/
abstract public function canView();
/**
* Returns true if the current user can view the item text/file
* @return bool
*/
abstract public function canViewContent();
/**
* Get the HTML of the list item. Should be include "<li></li>" tags.
* This is used to show the list in HTML form, by the special page.
* @return string HTML
*/
abstract public function getHTML();
/**
* Returns an instance of LinkRenderer
* @return LinkRenderer
*/
protected function getLinkRenderer() {
return MediaWikiServices::getInstance()->getLinkRenderer();
}
}
/** @deprecated class alias since 1.43 */
class_alias( RevisionItemBase::class, 'RevisionItemBase' );
|