summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php')
-rw-r--r--www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php30
1 files changed, 16 insertions, 14 deletions
diff --git a/www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php b/www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php
index 1dae741e..040521d5 100644
--- a/www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php
+++ b/www/wiki/extensions/Translate/messagegroups/AggregateMessageGroup.php
@@ -5,7 +5,7 @@
* @file
* @author Niklas Laxström
* @copyright Copyright © 2010-2013, Niklas Laxström
- * @license GPL-2.0+
+ * @license GPL-2.0-or-later
*/
/**
@@ -24,7 +24,7 @@ class AggregateMessageGroup extends MessageGroupBase {
}
public function load( $code ) {
- $messages = array();
+ $messages = [];
/**
* @var $group MessageGroup
@@ -46,7 +46,7 @@ class AggregateMessageGroup extends MessageGroupBase {
public function getGroups() {
if ( !isset( $this->groups ) ) {
- $groups = array();
+ $groups = [];
$ids = (array)$this->conf['GROUPS'];
$ids = MessageGroups::expandWildcards( $ids );
@@ -76,14 +76,14 @@ class AggregateMessageGroup extends MessageGroupBase {
}
protected function loadMessagesFromCache( $groups ) {
- $messages = array();
+ $messages = [];
foreach ( $groups as $group ) {
if ( $group instanceof MessageGroupOld ) {
$messages += $group->getDefinitions();
continue;
}
- if ( $group instanceof AggregateMessageGroup ) {
+ if ( $group instanceof self ) {
$messages += $this->loadMessagesFromCache( $group->getGroups() );
continue;
}
@@ -143,7 +143,7 @@ class AggregateMessageGroup extends MessageGroupBase {
}
public function getTags( $type = null ) {
- $tags = array();
+ $tags = [];
/**
* @var $group MessageGroup
@@ -156,23 +156,25 @@ class AggregateMessageGroup extends MessageGroupBase {
}
public function getKeys() {
- $keys = array();
+ $keys = [];
/**
* @var $group MessageGroup
*/
foreach ( $this->getGroups() as $group ) {
// @todo Not all oldstyle groups have getKeys yet
if ( method_exists( $group, 'getKeys' ) ) {
- $keys = array_merge( $keys, $group->getKeys() );
+ $moreKeys = $group->getKeys();
} else {
- $keys = array_keys( $group->getDefinitions() );
+ $moreKeys = array_keys( $group->getDefinitions() );
+ }
+
+ // Array merge is *really* slow (tested in PHP 7.1), so avoiding it. A loop
+ // followed by array_unique (which we need anyway) is magnitudes faster.
+ foreach ( $moreKeys as $key ) {
+ $keys[] = $key;
}
}
- /* In case some groups are included directly and indirectly
- * via other subgroup, we might get the same keys multiple
- * times. Since this is a list we need to remove duplicates
- * manually */
- return array_unique( $keys );
+ return array_values( array_unique( $keys ) );
}
}