Merge "Fix TestingAccessWrapper::__call"
[lhc/web/wiklou.git] / includes / Revision.php
index d535028..356cd32 100644 (file)
@@ -121,8 +121,6 @@ class Revision implements IDBAccessObject {
                if ( $id ) {
                        // Use the specified ID
                        $conds['rev_id'] = $id;
-                       // This uses slave->master fallback with READ_NORMAL. Assuming revdelete,
-                       // moves, and merges are rare, callers can use this to reduce master queries.
                        return self::newFromConds( $conds, $flags );
                } else {
                        // Use a join to get the latest revision
@@ -150,8 +148,6 @@ class Revision implements IDBAccessObject {
                $conds = array( 'page_id' => $pageId );
                if ( $revId ) {
                        $conds['rev_id'] = $revId;
-                       // This uses slave->master fallback with READ_NORMAL. Assuming revdelete
-                       // and merges are rare, callers can use this to reduce master queries.
                        return self::newFromConds( $conds, $flags );
                } else {
                        // Use a join to get the latest revision
@@ -310,12 +306,6 @@ class Revision implements IDBAccessObject {
        private static function newFromConds( $conditions, $flags = 0 ) {
                $db = wfGetDB( ( $flags & self::READ_LATEST ) ? DB_MASTER : DB_SLAVE );
                $rev = self::loadFromConds( $db, $conditions, $flags );
-               if ( $rev === null && wfGetLB()->getServerCount() > 1 ) {
-                       if ( !( $flags & self::READ_LATEST ) ) {
-                               $dbw = wfGetDB( DB_MASTER );
-                               $rev = self::loadFromConds( $dbw, $conditions, $flags );
-                       }
-               }
                if ( $rev ) {
                        $rev->mQueryFlags = $flags;
                }
@@ -1566,7 +1556,7 @@ class Revision implements IDBAccessObject {
         * @return Revision|null Revision or null on error
         */
        public static function newNullRevision( $dbw, $pageId, $summary, $minor, $user = null ) {
-               global $wgContentHandlerUseDB;
+               global $wgContentHandlerUseDB, $wgContLang;
 
                $fields = array( 'page_latest', 'page_namespace', 'page_title',
                                                'rev_text_id', 'rev_len', 'rev_sha1' );
@@ -1591,6 +1581,9 @@ class Revision implements IDBAccessObject {
                                $user = $wgUser;
                        }
 
+                       // Truncate for whole multibyte characters
+                       $summary = $wgContLang->truncate( $summary, 255 );
+
                        $row = array(
                                'page'       => $pageId,
                                'user_text'  => $user->getName(),
@@ -1684,23 +1677,21 @@ class Revision implements IDBAccessObject {
         *
         * @param Title $title
         * @param int $id
-        * @return string
+        * @return string|bool False if not found
         */
-       static function getTimestampFromId( $title, $id ) {
-               $dbr = wfGetDB( DB_SLAVE );
+       static function getTimestampFromId( $title, $id, $flags = 0 ) {
+               $db = ( $flags & self::READ_LATEST )
+                       ? wfGetDB( DB_MASTER )
+                       : wfGetDB( DB_SLAVE );
                // Casting fix for databases that can't take '' for rev_id
                if ( $id == '' ) {
                        $id = 0;
                }
                $conds = array( 'rev_id' => $id );
                $conds['rev_page'] = $title->getArticleID();
-               $timestamp = $dbr->selectField( 'revision', 'rev_timestamp', $conds, __METHOD__ );
-               if ( $timestamp === false && wfGetLB()->getServerCount() > 1 ) {
-                       # Not in slave, try master
-                       $dbw = wfGetDB( DB_MASTER );
-                       $timestamp = $dbw->selectField( 'revision', 'rev_timestamp', $conds, __METHOD__ );
-               }
-               return wfTimestamp( TS_MW, $timestamp );
+               $timestamp = $db->selectField( 'revision', 'rev_timestamp', $conds, __METHOD__ );
+
+               return ( $timestamp !== false ) ? wfTimestamp( TS_MW, $timestamp ) : false;
        }
 
        /**