X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FGlobalFunctions.php;h=25876fb99a28fb63aba843c8a450e5933024c615;hb=22bf875d152751f5590508a1f44976c9db30cb44;hp=3931be369af81ca419a2ff9b81f356696b600674;hpb=6733f81d33a71755428a55f2723f4066a141cbb8;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 3931be369a..25876fb99a 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -170,13 +170,13 @@ if ( !function_exists( 'hash_equals' ) ) { * This queues an extension to be loaded through * the ExtensionRegistry system. * - * @param string $name Name of the extension to load + * @param string $ext Name of the extension to load * @param string|null $path Absolute path of where to find the extension.json file */ -function wfLoadExtension( $name, $path = null ) { +function wfLoadExtension( $ext, $path = null ) { if ( !$path ) { - global $IP; - $path = "$IP/extensions/$name/extension.json"; + global $wgExtensionDirectory; + $path = "$wgExtensionDirectory/$ext/extension.json"; } ExtensionRegistry::getInstance()->queue( $path ); } @@ -194,10 +194,10 @@ function wfLoadExtension( $name, $path = null ) { * @param string[] $exts Array of extension names to load */ function wfLoadExtensions( array $exts ) { - global $IP; + global $wgExtensionDirectory; $registry = ExtensionRegistry::getInstance(); foreach ( $exts as $ext ) { - $registry->queue( "$IP/extensions/$ext/extension.json" ); + $registry->queue( "$wgExtensionDirectory/$ext/extension.json" ); } } @@ -205,13 +205,13 @@ function wfLoadExtensions( array $exts ) { * Load a skin * * @see wfLoadExtension - * @param string $name Name of the extension to load + * @param string $skin Name of the extension to load * @param string|null $path Absolute path of where to find the skin.json file */ -function wfLoadSkin( $name, $path = null ) { +function wfLoadSkin( $skin, $path = null ) { if ( !$path ) { - global $IP; - $path = "$IP/skins/$name/skin.json"; + global $wgStyleDirectory; + $path = "$wgStyleDirectory/$skin/skin.json"; } ExtensionRegistry::getInstance()->queue( $path ); } @@ -223,10 +223,10 @@ function wfLoadSkin( $name, $path = null ) { * @param string[] $skins Array of extension names to load */ function wfLoadSkins( array $skins ) { - global $IP; + global $wgStyleDirectory; $registry = ExtensionRegistry::getInstance(); foreach ( $skins as $skin ) { - $registry->queue( "$IP/skins/$skin/skin.json" ); + $registry->queue( "$wgStyleDirectory/$skin/skin.json" ); } } @@ -1346,9 +1346,14 @@ function wfReadOnlyReason() { } // Callers use this method to be aware that data presented to a user // may be very stale and thus allowing submissions can be problematic. - if ( $wgReadOnly === false && wfGetLB()->getLaggedSlaveMode() ) { + try { + if ( $wgReadOnly === false && wfGetLB()->getLaggedSlaveMode() ) { + $wgReadOnly = 'The database has been automatically locked ' . + 'while the slave database servers catch up to the master'; + } + } catch ( DBConnectionError $e ) { $wgReadOnly = 'The database has been automatically locked ' . - 'while the slave database servers catch up to the master'; + 'until the slave database servers become available'; } } @@ -2124,15 +2129,14 @@ function wfVarDump( $var ) { */ function wfHttpError( $code, $label, $desc ) { global $wgOut; - header( "HTTP/1.0 $code $label" ); - header( "Status: $code $label" ); + HttpStatus::header( $code ); if ( $wgOut ) { $wgOut->disable(); $wgOut->sendCacheControl(); } header( 'Content-type: text/html; charset=utf-8' ); - print "" . + print '' . '' . htmlspecialchars( $label ) . '

' . @@ -2459,7 +2463,7 @@ function wfTimestampNow() { function wfIsWindows() { static $isWindows = null; if ( $isWindows === null ) { - $isWindows = substr( php_uname(), 0, 7 ) == 'Windows'; + $isWindows = strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN'; } return $isWindows; } @@ -3348,7 +3352,7 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, // Removing leading zeros works around broken base detection code in // some PHP versions (see and // ). - $result = gmp_strval( gmp_init( ltrim( $input, '0' ), $sourceBase ), $destBase ); + $result = gmp_strval( gmp_init( ltrim( $input, '0' ) ?: '0', $sourceBase ), $destBase ); } elseif ( extension_loaded( 'bcmath' ) && ( $engine == 'auto' || $engine == 'bcmath' ) ) { $decimal = '0'; foreach ( str_split( strtolower( $input ) ) as $char ) { @@ -3750,6 +3754,7 @@ function wfWaitForSlaves( } // Figure out which clusters need to be checked + /** @var LoadBalancer[] $lbs */ $lbs = array(); if ( $cluster === '*' ) { wfGetLBFactory()->forEachLB( function ( LoadBalancer $lb ) use ( &$lbs ) { @@ -3766,20 +3771,14 @@ function wfWaitForSlaves( // time needed to wait on the next clusters. $masterPositions = array_fill( 0, count( $lbs ), false ); foreach ( $lbs as $i => $lb ) { - // bug 27975 - Don't try to wait for slaves if there are none - // Prevents permission error when getting master position - if ( $lb->getServerCount() > 1 ) { - if ( $ifWritesSince && !$lb->hasMasterConnection() ) { - continue; // assume no writes done - } - // Use the empty string to not trigger selectDB() since the connection - // may have been to a server that does not have a DB for the current wiki. - $dbw = $lb->getConnection( DB_MASTER, array(), '' ); - if ( $ifWritesSince && $dbw->lastDoneWrites() < $ifWritesSince ) { - continue; // no writes since the last wait - } - $masterPositions[$i] = $dbw->getMasterPos(); + if ( $lb->getServerCount() <= 1 ) { + // Bug 27975 - Don't try to wait for slaves if there are none + // Prevents permission error when getting master position + continue; + } elseif ( $ifWritesSince && $lb->lastMasterChangeTimestamp() < $ifWritesSince ) { + continue; // no writes since the last wait } + $masterPositions[$i] = $lb->getMasterPos(); } $ok = true;