diff options
Diffstat (limited to 'lib/Minz')
| -rw-r--r-- | lib/Minz/Configuration.php | 14 | ||||
| -rw-r--r-- | lib/Minz/ExtensionManager.php | 29 | ||||
| -rw-r--r-- | lib/Minz/Translate.php | 26 |
3 files changed, 44 insertions, 25 deletions
diff --git a/lib/Minz/Configuration.php b/lib/Minz/Configuration.php index 5470dc85f..3e486d68e 100644 --- a/lib/Minz/Configuration.php +++ b/lib/Minz/Configuration.php @@ -90,15 +90,15 @@ class Minz_Configuration { private $configuration_setter = null; public function removeExtension($ext_name) { - self::$extensions_enabled = array_diff( - self::$extensions_enabled, - array($ext_name) - ); + unset(self::$extensions_enabled[$ext_name]); + $legacyKey = array_search($ext_name, self::$extensions_enabled, true); + if ($legacyKey !== false) { //Legacy format FreshRSS < 1.11.1 + unset(self::$extensions_enabled[$legacyKey]); + } } public function addExtension($ext_name) { - $found = array_search($ext_name, self::$extensions_enabled) !== false; - if (!$found) { - self::$extensions_enabled[] = $ext_name; + if (!isset(self::$extensions_enabled[$ext_name])) { + self::$extensions_enabled[$ext_name] = true; } } diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php index 10c49a8b6..b086c4001 100644 --- a/lib/Minz/ExtensionManager.php +++ b/lib/Minz/ExtensionManager.php @@ -35,6 +35,10 @@ class Minz_ExtensionManager { 'list' => array(), 'signature' => 'OneToOne', ), + 'simplepie_before_init' => array( // function($simplePie, $feed) -> none + 'list' => array(), + 'signature' => 'PassArguments', + ), ); private static $ext_to_hooks = array(); @@ -160,7 +164,8 @@ class Minz_ExtensionManager { self::$ext_list[$name] = $ext; if ($ext->getType() === 'system' && - in_array($name, self::$ext_auto_enabled)) { + (!empty(self::$ext_auto_enabled[$name]) || + in_array($name, self::$ext_auto_enabled, true))) { //Legacy format < FreshRSS 1.11.1 self::enable($ext->getName()); } @@ -189,8 +194,15 @@ class Minz_ExtensionManager { * @param string[] $ext_list the names of extensions we want to load. */ public static function enableByList($ext_list) { - foreach ($ext_list as $ext_name) { - self::enable($ext_name); + if (!is_array($ext_list)) { + return; + } + foreach ($ext_list as $ext_name => $ext_status) { + if (is_int($ext_name)) { //Legacy format int=>name + self::enable($ext_status); + } elseif ($ext_status) { //New format name=>Boolean + self::enable($ext_name); + } } } @@ -255,10 +267,15 @@ class Minz_ExtensionManager { } $signature = self::$hook_list[$hook_name]['signature']; - $signature = 'self::call' . $signature; $args = func_get_args(); - - return call_user_func_array($signature, $args); + if ($signature === 'PassArguments') { + array_shift($args); + foreach (self::$hook_list[$hook_name]['list'] as $function) { + call_user_func_array($function, $args); + } + } else { + return call_user_func_array('self::call' . $signature, $args); + } } /** diff --git a/lib/Minz/Translate.php b/lib/Minz/Translate.php index d9cd59f7e..db76e9214 100644 --- a/lib/Minz/Translate.php +++ b/lib/Minz/Translate.php @@ -64,12 +64,16 @@ class Minz_Translate { $list_langs = array(); foreach (self::$path_list as $path) { - $path_langs = array_values(array_diff( - scandir($path), - array('..', '.') - )); - - $list_langs = array_merge($list_langs, $path_langs); + $scan = scandir($path); + if (is_array($scan)) { + $path_langs = array_values(array_diff( + $scan, + array('..', '.') + )); + if (is_array($path_langs)) { + $list_langs = array_merge($list_langs, $path_langs); + } + } } return array_unique($list_langs); @@ -80,12 +84,10 @@ class Minz_Translate { * @param $path a path containing i18n directories (e.g. ./en/, ./fr/). */ public static function registerPath($path) { - if (in_array($path, self::$path_list)) { - return; + if (!in_array($path, self::$path_list) && is_dir($path)) { + self::$path_list[] = $path; + self::loadLang($path); } - - self::$path_list[] = $path; - self::loadLang($path); } /** @@ -94,7 +96,7 @@ class Minz_Translate { */ private static function loadLang($path) { $lang_path = $path . '/' . self::$lang_name; - if (!file_exists($lang_path) || is_null(self::$lang_name)) { + if (!file_exists($lang_path) || self::$lang_name == '') { // The lang path does not exist, nothing more to do. return; } |
