where("name", $module_name)->find()->version; } public static function set_version($module_name, $version) { $module = ORM::factory("module")->where("name", $module_name)->find(); if (!$module->loaded) { $module->name = $module_name; } $module->version = 1; $module->save(); Kohana::log("debug", "$module_name: version is now $version"); } public static function get($module_name) { return ORM::factory("module")->where("name", $module_name)->find(); } public static function delete ($module_name) { ORM::factory("module")->where("name", $module_name)->find()->delete(); Kohana::log("debug", "$module_name: module deleted"); } public static function is_installed($module_name) { return ORM::factory("module")->where("name", $module_name)->find()->loaded; } public static function installed() { return ORM::factory("module")->find_all(); } public static function event($name, &$data=null) { foreach (self::installed() as $module) { $class = "{$module->name}_event"; $function = str_replace(".", "_", $name); if (method_exists($class, $function)) { call_user_func_array(array($class, $function), array(&$data)); } } } 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; } } return $modules; } public static function load_modules() { // Lightweight hack to make sure that we've got a real install. // @todo replace this when we have a better way of detecting that the core is installed if (Kohana::config('database.default.connection.pass') == 'p@ssw0rd') { return array(); } try { $modules = Kohana::config('core.modules'); foreach (self::installed() as $module) { $modules[] = MODPATH . $module->name; } Kohana::config_set('core.modules', $modules); } catch (Exception $e) { } } public function get_var($module_name, $name, $default_value=null) { $module = ORM::factory("module")->where("name", $module_name)->find(); $var = ORM::factory("var") ->where("module_id", $module->id) ->where("name", $name) ->find(); return $var->loaded ? $var->value : $default_value; } public function set_var($module_name, $name, $value) { $module = ORM::factory("module")->where("name", $module_name)->find(); $var = ORM::factory("var") ->where("module_id", $module->id) ->where("name", $name) ->find(); if (!$var->loaded) { $var = ORM::factory("var"); $var->module_id = $module->id; $var->name = $name; } $var->value = $value; $var->save(); } }