/**
* 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
*/
}
$errors = [];
- while ( count( $checks ) > 0 &&
- !( $short && count( $errors ) > 0 ) ) {
- $method = array_shift( $checks );
+ foreach ( $checks as $method ) {
$errors = $this->$method( $action, $user, $errors, $rigor, $short );
+
+ if ( $short && $errors !== [] ) {
+ break;
+ }
}
return $errors;
* 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();
* 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;
}
$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 );
}
);
- $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions );
+ $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions, $readLatest );
} else {
$title_protection = $this->getTitleProtectionInternal();
if ( MWNamespace::hasSubpages( $this->mNamespace ) ) {
// Optional notice for page itself and any parent page
- $parts = explode( '/', $this->mDbkeyform );
$editnotice_base = $editnotice_ns;
- while ( count( $parts ) > 0 ) {
- $editnotice_base .= '-' . array_shift( $parts );
+ foreach ( explode( '/', $this->mDbkeyform ) as $part ) {
+ $editnotice_base .= '-' . $part;
$msg = wfMessage( $editnotice_base );
if ( $msg->exists() ) {
$html = $msg->parseAsBlock();