* @todo document
*/
class Revision {
- const MW_REV_DELETED_TEXT = 1;
- const MW_REV_DELETED_COMMENT = 2;
- const MW_REV_DELETED_USER = 4;
- const MW_REV_DELETED_RESTRICTED = 8;
+ const DELETED_TEXT = 1;
+ const DELETED_COMMENT = 2;
+ const DELETED_USER = 4;
+ const DELETED_RESTRICTED = 8;
/**
* Load a page revision from a given revision ID number.
* @static
* @access public
*/
- function newFromId( $id ) {
+ public static function newFromId( $id ) {
return Revision::newFromConds(
array( 'page_id=rev_page',
'rev_id' => intval( $id ) ) );
* @access public
* @static
*/
- function newFromTitle( &$title, $id = 0 ) {
+ public static function newFromTitle( &$title, $id = 0 ) {
if( $id ) {
$matchId = intval( $id );
} else {
* @return Revision
* @access public
*/
- function loadFromPageId( &$db, $pageid, $id = 0 ) {
+ public static function loadFromPageId( &$db, $pageid, $id = 0 ) {
$conds=array('page_id=rev_page','rev_page'=>intval( $pageid ), 'page_id'=>intval( $pageid ));
if( $id ) {
$conds['rev_id']=intval($id);
* @static
* @access private
*/
- function newFromConds( $conditions ) {
+ private static function newFromConds( $conditions ) {
$db =& wfGetDB( DB_SLAVE );
$row = Revision::loadFromConds( $db, $conditions );
if( is_null( $row ) ) {
* @static
* @access private
*/
- function loadFromConds( &$db, $conditions ) {
+ private static function loadFromConds( &$db, $conditions ) {
$res = Revision::fetchFromConds( $db, $conditions );
if( $res ) {
$row = $res->fetchObject();
* @static
* @access public
*/
- function fetchRevision( &$title ) {
+ public static function fetchRevision( &$title ) {
return Revision::fetchFromConds(
wfGetDB( DB_SLAVE ),
array( 'rev_id=page_latest',
* @static
* @access private
*/
- function fetchFromConds( &$db, $conditions ) {
+ private static function fetchFromConds( &$db, $conditions ) {
$res = $db->select(
array( 'page', 'revision' ),
array( 'page_namespace',
$this->mTitle = null; # Load on demand if needed
$this->mCurrent = false;
} else {
- wfDebugDieBacktrace( 'Revision constructor passed invalid row format.' );
+ throw new MWException( 'Revision constructor passed invalid row format.' );
}
}
array( 'page_namespace', 'page_title' ),
array( 'page_id=rev_page',
'rev_id' => $this->mId ),
- 'Revision::getTItle' );
+ 'Revision::getTitle' );
if( $row ) {
$this->mTitle = Title::makeTitle( $row->page_namespace,
$row->page_title );
return $this->mTitle;
}
+ /**
+ * Set the title of the revision
+ * @param Title $title
+ */
+ function setTitle( $title ) {
+ $this->mTitle = $title;
+ }
+
/**
* @return int
*/
* @return int
*/
function getUser() {
- if( $this->isDeleted( self::MW_REV_DELETED_USER ) ) {
+ if( $this->isDeleted( self::DELETED_USER ) ) {
return 0;
} else {
return $this->mUser;
* @return string
*/
function getUserText() {
- if( $this->isDeleted( self::MW_REV_DELETED_USER ) ) {
+ if( $this->isDeleted( self::DELETED_USER ) ) {
return "";
} else {
return $this->mUserText;
* @return string
*/
function getComment() {
- if( $this->isDeleted( self::MW_REV_DELETED_COMMENT ) ) {
+ if( $this->isDeleted( self::DELETED_COMMENT ) ) {
return "";
} else {
return $this->mComment;
}
/**
- * int $field one of MW_REV_DELETED_* bitfield constants
+ * int $field one of DELETED_* bitfield constants
* @return bool
*/
function isDeleted( $field ) {
* @return string
*/
function getText() {
- if( $this->isDeleted( self::MW_REV_DELETED_TEXT ) ) {
+ if( $this->isDeleted( self::DELETED_TEXT ) ) {
return "";
} else {
return $this->getRawText();
$data = ExternalStore::insert( $store, $data );
if ( !$data ) {
# This should only happen in the case of a configuration error, where the external store is not valid
- wfDebugDieBacktrace( "Unable to store text to external storage $store" );
+ throw new MWException( "Unable to store text to external storage $store" );
}
if ( $flags ) {
$flags .= ',';
/**
* Determine if the current user is allowed to view a particular
* field of this revision, if it's marked as deleted.
- * @param int $field one of self::MW_REV_DELETED_TEXT,
- * self::MW_REV_DELETED_COMMENT,
- * self::MW_REV_DELETED_USER
+ * @param int $field one of self::DELETED_TEXT,
+ * self::DELETED_COMMENT,
+ * self::DELETED_USER
* @return bool
*/
function userCan( $field ) {
if( ( $this->mDeleted & $field ) == $field ) {
global $wgUser;
- $permission = ( $this->mDeleted & self::MW_REV_DELETED_RESTRICTED ) == self::MW_REV_DELETED_RESTRICTED
+ $permission = ( $this->mDeleted & self::DELETED_RESTRICTED ) == self::DELETED_RESTRICTED
? 'hiderevision'
: 'deleterevision';
wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
}
}
+
+ /**
+ * Get rev_timestamp from rev_id, without loading the rest of the row
+ * @param integer $id
+ */
+ static function getTimestampFromID( $id ) {
+ $timestamp = $dbr->selectField( 'revision', 'rev_timestamp',
+ array( 'rev_id' => $id ), __METHOD__ );
+ if ( $timestamp === false ) {
+ # Not in slave, try master
+ $dbw =& wfGetDB( DB_MASTER );
+ $timestamp = $dbw->selectField( 'revision', 'rev_timestamp',
+ array( 'rev_id' => $id ), __METHOD__ );
+ }
+ return $timestamp;
+ }
+
+ static function countByPageId( $db, $id ) {
+ $row = $db->selectRow( 'revision', 'COUNT(*) AS revCount',
+ array( 'rev_page' => $id ), __METHOD__ );
+ if( $row ) {
+ return $row->revCount;
+ }
+ return 0;
+ }
+
+ static function countByTitle( $db, $title ) {
+ $id = $title->getArticleId();
+ if( $id ) {
+ return Revision::countByPageId( $db, $id );
+ }
+ return 0;
+ }
}
+/**
+ * Aliases for backwards compatibility with 1.6
+ */
+define( 'MW_REV_DELETED_TEXT', Revision::DELETED_TEXT );
+define( 'MW_REV_DELETED_COMMENT', Revision::DELETED_COMMENT );
+define( 'MW_REV_DELETED_USER', Revision::DELETED_USER );
+define( 'MW_REV_DELETED_RESTRICTED', Revision::DELETED_RESTRICTED );
+
+
?>