Merge "Use MediaWiki\SuppressWarnings around trigger_error('') instead @"
[lhc/web/wiklou.git] / includes / Title.php
index 8b4075b..155bee1 100644 (file)
@@ -954,6 +954,7 @@ class Title implements LinkTarget {
 
        /**
         * Get the DB key with the initial letter case as specified by the user
+        * @deprecated since 1.33; please use Title::getDBKey() instead
         *
         * @return string DB key
         */
@@ -1661,7 +1662,7 @@ class Title implements LinkTarget {
                        $p = $this->mInterwiki . ':';
                }
 
-               if ( 0 != $this->mNamespace ) {
+               if ( $this->mNamespace != 0 ) {
                        $nsText = $this->getNsText();
 
                        if ( $nsText === false ) {
@@ -3275,9 +3276,13 @@ class Title implements LinkTarget {
         * indicating who can move or edit the page from the page table, (pre 1.10) rows.
         * Edit and move sections are separated by a colon
         * Example: "edit=autoconfirmed,sysop:move=sysop"
+        * @param bool $readLatest When true, skip replicas and read from the master DB.
         */
-       public function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions = null ) {
-               $dbr = wfGetDB( DB_REPLICA );
+       public function loadRestrictionsFromRows(
+               $rows, $oldFashionedRestrictions = null, $readLatest = false
+       ) {
+               $whichDb = $readLatest ? DB_MASTER : DB_REPLICA;
+               $dbr = wfGetDB( $whichDb );
 
                $restrictionTypes = $this->getRestrictionTypes();
 
@@ -3347,9 +3352,10 @@ class Title implements LinkTarget {
         * indicating who can move or edit the page from the page table, (pre 1.10) rows.
         * Edit and move sections are separated by a colon
         * Example: "edit=autoconfirmed,sysop:move=sysop"
+        * @param bool $readLatest When true, skip replicas and read from the master DB.
         */
-       public function loadRestrictions( $oldFashionedRestrictions = null ) {
-               if ( $this->mRestrictionsLoaded ) {
+       public function loadRestrictions( $oldFashionedRestrictions = null, $readLatest = false ) {
+               if ( $this->mRestrictionsLoaded && !$readLatest ) {
                        return;
                }
 
@@ -3359,10 +3365,11 @@ class Title implements LinkTarget {
                        $fname = __METHOD__;
                        $rows = $cache->getWithSetCallback(
                                // Page protections always leave a new null revision
-                               $cache->makeKey( 'page-restrictions', $id, $this->getLatestRevID() ),
+                               $cache->makeKey( 'page-restrictions', $id, $this->getLatestRevID(), $readLatest ),
                                $cache::TTL_DAY,
-                               function ( $curValue, &$ttl, array &$setOpts ) use ( $fname ) {
-                                       $dbr = wfGetDB( DB_REPLICA );
+                               function ( $curValue, &$ttl, array &$setOpts ) use ( $fname, $readLatest ) {
+                                       $whichDb = $readLatest ? DB_MASTER : DB_REPLICA;
+                                       $dbr = wfGetDB( $whichDb );
 
                                        $setOpts += Database::getCacheSetOptions( $dbr );
 
@@ -3377,7 +3384,7 @@ class Title implements LinkTarget {
                                }
                        );
 
-                       $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions );
+                       $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions, $readLatest );
                } else {
                        $title_protection = $this->getTitleProtectionInternal();
 
@@ -3573,7 +3580,7 @@ class Title implements LinkTarget {
                        $this->mArticleID = $linkCache->addLinkObj( $this );
                        $linkCache->forUpdate( $oldUpdate );
                } else {
-                       if ( -1 == $this->mArticleID ) {
+                       if ( $this->mArticleID == -1 ) {
                                $this->mArticleID = $linkCache->addLinkObj( $this );
                        }
                }