summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/module.php
diff options
context:
space:
mode:
authorAndy Staudacher <andy.st@gmail.com>2009-06-09 21:10:53 -0700
committerAndy Staudacher <andy.st@gmail.com>2009-06-09 21:10:53 -0700
commit03e9cefa17f1170c8414da672f5fbc3bba9ad56c (patch)
tree4e3201b21fb9291ed844756dd05aff7a382c89bf /modules/gallery/helpers/module.php
parent5f7dfc272e3188fbced26a72881176c98481cfb0 (diff)
parentf55686c7ef2ca5f3c2c78588e39ac717064c5e09 (diff)
Merge branch 'master' of git@github.com:gallery/gallery3
Diffstat (limited to 'modules/gallery/helpers/module.php')
-rw-r--r--modules/gallery/helpers/module.php34
1 files changed, 20 insertions, 14 deletions
diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php
index 2fd5be6c..58f9b20d 100644
--- a/modules/gallery/helpers/module.php
+++ b/modules/gallery/helpers/module.php
@@ -27,6 +27,7 @@ class module_Core {
public static $active = array();
public static $modules = array();
public static $var_cache = null;
+ public static $available = array();
/**
* Set the version of the corresponding Module_Model
@@ -74,22 +75,27 @@ class module_Core {
* Return the list of available modules, including uninstalled modules.
*/
static function available() {
- $modules = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);
- foreach (glob(MODPATH . "*/module.info") as $file) {
- $module_name = basename(dirname($file));
- $modules->$module_name = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS);
- $modules->$module_name->installed = self::is_installed($module_name);
- $modules->$module_name->active = self::is_active($module_name);
- $modules->$module_name->version = self::get_version($module_name);
- $modules->$module_name->locked = false;
- }
+ if (empty(self::$available)) {
+ $modules = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);
+ foreach (glob(MODPATH . "*/module.info") as $file) {
+ $module_name = basename(dirname($file));
+ $modules->$module_name = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS);
+ $m =& $modules->$module_name;
+ $m->installed = self::is_installed($module_name);
+ $m->active = self::is_active($module_name);
+ $m->code_version = $m->version;
+ $m->version = self::get_version($module_name);
+ $m->locked = false;
+ }
- // Lock certain modules
- $modules->gallery->locked = true;
- $modules->user->locked = true;
- $modules->ksort();
+ // Lock certain modules
+ $modules->gallery->locked = true;
+ $modules->user->locked = true;
+ $modules->ksort();
+ self::$available = $modules;
+ }
- return $modules;
+ return self::$available;
}
/**