From 1689b6ec10860f31981c0dec247790404035b4e4 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 11 Aug 2011 21:54:46 +0000 Subject: [PATCH] Follow-up r94289: code changes to fill the new fields on insertion and select them --- includes/Revision.php | 33 +++++++++++++++++++++++---- includes/WikiPage.php | 3 ++- includes/specials/SpecialUndelete.php | 5 ++-- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/includes/Revision.php b/includes/Revision.php index f93108017b..89599bfb3f 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -110,7 +110,9 @@ class Revision { 'minor_edit' => $row->ar_minor_edit, 'text_id' => isset( $row->ar_text_id ) ? $row->ar_text_id : null, 'deleted' => $row->ar_deleted, - 'len' => $row->ar_len); + 'len' => $row->ar_len, + 'sha1' => $row->ar_sha1 + ); if ( isset( $row->ar_text ) && !$row->ar_text_id ) { // Pre-1.5 ar_text row $attribs['text'] = self::getRevisionText( $row, 'ar_' ); @@ -301,7 +303,8 @@ class Revision { 'rev_minor_edit', 'rev_deleted', 'rev_len', - 'rev_parent_id' + 'rev_parent_id', + 'rev_sha1' ); } @@ -357,6 +360,12 @@ class Revision { $this->mSize = intval( $row->rev_len ); } + if ( !isset( $row->rev_sha1 ) ) { + $this->mSha1 = null; + } else { + $this->mSha1 = $row->rev_sha1; + } + if( isset( $row->page_latest ) ) { $this->mCurrent = ( $row->rev_id == $row->page_latest ); $this->mTitle = Title::newFromRow( $row ); @@ -375,7 +384,7 @@ class Revision { } } elseif( is_array( $row ) ) { // Build a new revision to be saved... - global $wgUser; + global $wgUser; // ugh $this->mId = isset( $row['id'] ) ? intval( $row['id'] ) : null; $this->mPage = isset( $row['page'] ) ? intval( $row['page'] ) : null; @@ -387,6 +396,7 @@ class Revision { $this->mDeleted = isset( $row['deleted'] ) ? intval( $row['deleted'] ) : 0; $this->mSize = isset( $row['len'] ) ? intval( $row['len'] ) : null; $this->mParentId = isset( $row['parent_id'] ) ? intval( $row['parent_id'] ) : null; + $this->mSha1 = isset( $row['sha1'] ) ? strval( $row['sha1'] ) : null; // Enforce spacing trimming on supplied text $this->mComment = isset( $row['comment'] ) ? trim( strval( $row['comment'] ) ) : null; @@ -899,8 +909,12 @@ class Revision { 'rev_timestamp' => $dbw->timestamp( $this->mTimestamp ), 'rev_deleted' => $this->mDeleted, 'rev_len' => $this->mSize, - 'rev_parent_id' => is_null($this->mParentId) ? - $this->getPreviousRevisionId( $dbw ) : $this->mParentId + 'rev_parent_id' => is_null( $this->mParentId ) + ? $this->getPreviousRevisionId( $dbw ) + : $this->mParentId, + 'rev_sha1' => is_null( $this->mSha1 ) + ? Revision::base36Sha1( $this->mText ) + : $this->mSha1 ), __METHOD__ ); @@ -912,6 +926,15 @@ class Revision { return $this->mId; } + /** + * Get the base 36 SHA-1 value for a string of text + * @param $text String + * @return String + */ + public static function base36Sha1( $text ) { + return wfBaseConvert( sha1( $text ), 16, 36, 31 ); + } + /** * Lazy-load the revision's text. * Currently hardcoded to the 'text' table storage engine. diff --git a/includes/WikiPage.php b/includes/WikiPage.php index 47632c05de..bc85bdc28f 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -1662,7 +1662,8 @@ class WikiPage extends Page { 'ar_flags' => '\'\'', // MySQL's "strict mode"... 'ar_len' => 'rev_len', 'ar_page_id' => 'page_id', - 'ar_deleted' => $bitfield + 'ar_deleted' => $bitfield, + 'ar_sha1' => 'rev_sha1' ), array( 'page_id' => $id, 'page_id = rev_page' diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 4e4477a136..54a792bab8 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -124,7 +124,7 @@ class PageArchive { $res = $dbr->select( 'archive', array( 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text', - 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id' + 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1' ), array( 'ar_namespace' => $this->title->getNamespace(), 'ar_title' => $this->title->getDBkey() ), @@ -464,7 +464,8 @@ class PageArchive { 'ar_text_id', 'ar_deleted', 'ar_page_id', - 'ar_len' ), + 'ar_len', + 'ar_sha1' ), /* WHERE */ array( 'ar_namespace' => $this->title->getNamespace(), 'ar_title' => $this->title->getDBkey(), -- 2.20.1