summaryrefslogtreecommitdiff
path: root/includes/Revision.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Revision.php')
-rw-r--r--includes/Revision.php33
1 files changed, 32 insertions, 1 deletions
diff --git a/includes/Revision.php b/includes/Revision.php
index 7938d88a..8a2149c0 100644
--- a/includes/Revision.php
+++ b/includes/Revision.php
@@ -53,6 +53,10 @@ class Revision {
// Get the latest revision ID from the master
$dbw = wfGetDB( DB_MASTER );
$latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
+ if ( $latest === false ) {
+ // Page does not exist
+ return null;
+ }
$conds['rev_id'] = $latest;
} else {
// Use a join to get the latest revision
@@ -363,6 +367,7 @@ class Revision {
} else {
throw new MWException( 'Revision constructor passed invalid row format.' );
}
+ $this->mUnpatrolled = NULL;
}
/**#@+
@@ -536,6 +541,27 @@ class Revision {
public function isMinor() {
return (bool)$this->mMinorEdit;
}
+
+ /**
+ * @return int rcid of the unpatrolled row, zero if there isn't one
+ */
+ public function isUnpatrolled() {
+ if( $this->mUnpatrolled !== NULL ) {
+ return $this->mUnpatrolled;
+ }
+ $dbr = wfGetDB( DB_SLAVE );
+ $this->mUnpatrolled = $dbr->selectField( 'recentchanges',
+ 'rc_id',
+ array( // Add redundant user,timestamp condition so we can use the existing index
+ 'rc_user_text' => $this->getRawUserText(),
+ 'rc_timestamp' => $dbr->timestamp( $this->getTimestamp() ),
+ 'rc_this_oldid' => $this->getId(),
+ 'rc_patrolled' => 0
+ ),
+ __METHOD__
+ );
+ return (int)$this->mUnpatrolled;
+ }
/**
* int $field one of DELETED_* bitfield constants
@@ -819,7 +845,8 @@ class Revision {
'rev_timestamp' => $dbw->timestamp( $this->mTimestamp ),
'rev_deleted' => $this->mDeleted,
'rev_len' => $this->mSize,
- 'rev_parent_id' => $this->mParentId ? $this->mParentId : $this->getPreviousRevisionId( $dbw )
+ 'rev_parent_id' => is_null($this->mParentId) ?
+ $this->getPreviousRevisionId( $dbw ) : $this->mParentId
), __METHOD__
);
@@ -961,6 +988,10 @@ class Revision {
*/
static function getTimestampFromId( $title, $id ) {
$dbr = wfGetDB( DB_SLAVE );
+ // Casting fix for DB2
+ if ($id == '') {
+ $id = 0;
+ }
$conds = array( 'rev_id' => $id );
$conds['rev_page'] = $title->getArticleId();
$timestamp = $dbr->selectField( 'revision', 'rev_timestamp', $conds, __METHOD__ );