Merge "Revert "MediaWiki.php: Redirect non-standard title urls to canonical""
[lhc/web/wiklou.git] / includes / utils / UIDGenerator.php
index 9ac5009..c6d1a54 100644 (file)
@@ -21,6 +21,7 @@
  * @author Aaron Schulz
  */
 use Wikimedia\Assert\Assert;
+use MediaWiki\MediaWikiServices;
 
 /**
  * Class for getting statistically unique IDs
@@ -40,7 +41,7 @@ class UIDGenerator {
        protected $lockFileUUID; // string; local file path
 
        /** @var array */
-       protected $fileHandles = array(); // cache file handles
+       protected $fileHandles = []; // cache file handles
 
        const QUICK_RAND = 1; // get randomness from fast and insecure sources
        const QUICK_VOLATILE = 2; // use an APC like in-memory counter if available
@@ -55,14 +56,14 @@ class UIDGenerator {
                if ( !preg_match( '/^[0-9a-f]{12}$/i', $nodeId ) ) {
                        MediaWiki\suppressWarnings();
                        if ( wfIsWindows() ) {
-                               // http://technet.microsoft.com/en-us/library/bb490913.aspx
+                               // https://technet.microsoft.com/en-us/library/bb490913.aspx
                                $csv = trim( wfShellExec( 'getmac /NH /FO CSV' ) );
                                $line = substr( $csv, 0, strcspn( $csv, "\n" ) );
                                $info = str_getcsv( $line );
                                $nodeId = isset( $info[0] ) ? str_replace( '-', '', $info[0] ) : '';
                        } elseif ( is_executable( '/sbin/ifconfig' ) ) { // Linux/BSD/Solaris/OS X
-                               // See http://linux.die.net/man/8/ifconfig
-                               $m = array();
+                               // See https://linux.die.net/man/8/ifconfig
+                               $m = [];
                                preg_match( '/\s([0-9a-f]{2}(:[0-9a-f]{2}){5})\s/',
                                        wfShellExec( '/sbin/ifconfig -a' ), $m );
                                $nodeId = isset( $m[1] ) ? str_replace( ':', '', $m[1] ) : '';
@@ -357,7 +358,7 @@ class UIDGenerator {
         */
        protected function getSequentialPerNodeIDs( $bucket, $bits, $count, $flags ) {
                if ( $count <= 0 ) {
-                       return array(); // nothing to do
+                       return []; // nothing to do
                } elseif ( $bits < 16 || $bits > 48 ) {
                        throw new RuntimeException( "Requested bit size ($bits) is out of range." );
                }
@@ -368,7 +369,7 @@ class UIDGenerator {
                // Counter values would not survive accross script instances in CLI mode.
                $cache = null;
                if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
-                       $cache = ObjectCache::getLocalServerInstance();
+                       $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
                }
                if ( $cache ) {
                        $counter = $cache->incrWithInit( $bucket, $cache::TTL_INDEFINITE, $count, $count );
@@ -406,7 +407,7 @@ class UIDGenerator {
                        flock( $handle, LOCK_UN );
                }
 
-               $ids = array();
+               $ids = [];
                $divisor = pow( 2, $bits );
                $currentId = floor( $counter - $count ); // pre-increment counter value
                for ( $i = 0; $i < $count; ++$i ) {
@@ -449,7 +450,7 @@ class UIDGenerator {
                $clockChanged = false; // clock set back significantly?
                if ( count( $data ) == 5 ) { // last UID info already initialized
                        $clkSeq = (int)$data[0] % $clockSeqSize;
-                       $prevTime = array( (int)$data[1], (int)$data[2] );
+                       $prevTime = [ (int)$data[1], (int)$data[2] ];
                        $offset = (int)$data[4] % $counterSize; // random counter offset
                        $counter = 0; // counter for UIDs with the same timestamp
                        // Delay until the clock reaches the time of the last ID.
@@ -497,13 +498,13 @@ class UIDGenerator {
                // Release the UID lock file
                flock( $handle, LOCK_UN );
 
-               return array(
+               return [
                        'time'          => $time,
                        'counter'       => $counter,
                        'clkSeq'        => $clkSeq,
                        'offset'        => $offset,
                        'offsetCounter' => $counter + $offset
-               );
+               ];
        }
 
        /**
@@ -516,7 +517,7 @@ class UIDGenerator {
        protected function timeWaitUntil( array $time ) {
                do {
                        $ct = self::millitime();
-                       if ( $ct >= $time ) { // http://php.net/manual/en/language.operators.comparison.php
+                       if ( $ct >= $time ) { // https://secure.php.net/manual/en/language.operators.comparison.php
                                return $ct; // current timestamp is higher than $time
                        }
                } while ( ( ( $time[0] - $ct[0] ) * 1000 + ( $time[1] - $ct[1] ) ) <= 10 );
@@ -553,9 +554,9 @@ class UIDGenerator {
                        $ts = ( 1000 * $sec + $msec ) * 10000 + (int)$offset + $delta;
                        $id_bin = str_pad( decbin( $ts % pow( 2, 60 ) ), 60, '0', STR_PAD_LEFT );
                } elseif ( extension_loaded( 'gmp' ) ) {
-                       $ts = gmp_add( gmp_mul( (string) $sec, '1000' ), (string) $msec ); // ms
+                       $ts = gmp_add( gmp_mul( (string)$sec, '1000' ), (string)$msec ); // ms
                        $ts = gmp_add( gmp_mul( $ts, '10000' ), $offset ); // 100ns intervals
-                       $ts = gmp_add( $ts, (string) $delta );
+                       $ts = gmp_add( $ts, (string)$delta );
                        $ts = gmp_mod( $ts, gmp_pow( '2', '60' ) ); // wrap around
                        $id_bin = str_pad( gmp_strval( $ts, 2 ), 60, '0', STR_PAD_LEFT );
                } elseif ( extension_loaded( 'bcmath' ) ) {
@@ -576,7 +577,7 @@ class UIDGenerator {
        protected static function millitime() {
                list( $msec, $sec ) = explode( ' ', microtime() );
 
-               return array( (int)$sec, (int)( $msec * 1000 ) );
+               return [ (int)$sec, (int)( $msec * 1000 ) ];
        }
 
        /**