summaryrefslogtreecommitdiff
path: root/core/helpers/module.php
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-22 03:41:33 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-22 03:41:33 +0000
commitfe27bd1eb34efe95da6ffe8b6f6c137fe8a18306 (patch)
treeb89e04040d1a3fac5ce413505d5177b671e36db1 /core/helpers/module.php
parentf7b4222e3fc725c2fc4db28840c151c1ebeb801c (diff)
Change the way that we track modules.
Each module now has a "module.info" file that has information about the module, including the core. We can display the installed version, and the version in the code. Also take a first shot at a modules admin page.
Diffstat (limited to 'core/helpers/module.php')
-rw-r--r--core/helpers/module.php18
1 files changed, 10 insertions, 8 deletions
diff --git a/core/helpers/module.php b/core/helpers/module.php
index fed01921..bb6e8dad 100644
--- a/core/helpers/module.php
+++ b/core/helpers/module.php
@@ -74,7 +74,7 @@ class module_Core {
* @param string $module_name
*/
public static function is_installed($module_name) {
- return in_array($module_name, self::$module_names);
+ return !empty(self::$module_names[$module_name]);
}
/**
@@ -88,11 +88,13 @@ class module_Core {
* Return the list of available modules.
*/
public static function available() {
- $modules = array();
- foreach (glob(MODPATH . "*/helpers/*_installer.php") as $file) {
- if (empty($modules[basename(dirname(dirname($file)))])) {
- $modules[basename(dirname(dirname($file)))] = 0;
- }
+ $modules = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);
+ foreach (array_merge(array("core/module.info"), 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 =
+ empty(self::$modules[$module_name]) ?
+ null : self::$modules[$module_name]->version;
}
return $modules;
@@ -152,8 +154,8 @@ class module_Core {
try {
foreach ($modules as $module) {
- self::$module_names[] = $module->name;
- self::$modules[] = $module;
+ self::$module_names[$module->name] = $module->name;
+ self::$modules[$module->name] = $module;
$kohana_modules[] = MODPATH . $module->name;
}