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() { $modules = Kohana::config('core.modules'); foreach (array_keys(self::available()) as $module_name) { $modules[] = MODPATH . $module_name; } Kohana::config_set('core.modules', $modules); } }