LocalisationCache: Avoid use of compact()
authorKunal Mehta <legoktm@member.fsf.org>
Mon, 15 Oct 2018 07:17:38 +0000 (00:17 -0700)
committerKunal Mehta <legoktm@member.fsf.org>
Tue, 16 Oct 2018 00:14:24 +0000 (17:14 -0700)
In PHP 7.3, compact() now raises notices if the variable is undefined, which
is something that we expect. So we can check whether the key exists instead
of bothering with compat() and suppressing warnings.

Bug: T206979
Change-Id: I612049db4debd850a2e6d10bc631d31aa17be898
(cherry picked from commit d0463178dfa09b79b3a08fee939da1beed030824)

RELEASE-NOTES-1.31
includes/cache/localisation/LocalisationCache.php

index b4f95ca..81854ab 100644 (file)
@@ -11,6 +11,8 @@ THIS IS NOT A RELEASE YET
 * (T109121) Remove deprecated pear/mail_mime-decode from composer suggested libraries.
 * (T200595) Fix PHP 7.3 warnings of using "continue" in some scenarios instead
   of "break".
+* (T206979) Fix PHP 7.3 warnings of using "compact()" when some variables may
+  not be set.
 
 == MediaWiki 1.31.1 ==
 
index dd9e8e1..e7b9554 100644 (file)
@@ -527,10 +527,20 @@ class LocalisationCache {
                ini_set( 'apc.cache_by_default', $_apcEnabled );
                Wikimedia\restoreWarnings();
 
+               $data = [];
                if ( $_fileType == 'core' || $_fileType == 'extension' ) {
-                       $data = compact( self::$allKeys );
+                       foreach ( self::$allKeys as $key ) {
+                               // Not all keys are set in language files, so
+                               // check they exist first
+                               if ( isset( $$key ) ) {
+                                       $data[$key] = $$key;
+                               }
+                       }
                } elseif ( $_fileType == 'aliases' ) {
-                       $data = compact( 'aliases' );
+                       if ( isset( $aliases ) ) {
+                               /** @suppress PhanUndeclaredVariable */
+                               $data['aliases'] = $aliases;
+                       }
                } else {
                        throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
                }