aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Minz')
-rw-r--r--lib/Minz/Configuration.php14
-rw-r--r--lib/Minz/ExtensionManager.php29
-rw-r--r--lib/Minz/Translate.php26
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;
}