From 0fe8d444722e6051a10fddd9e6b01b7c4849c5de Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 13 Nov 2008 10:38:28 +0000 Subject: [PATCH] Create module helper and refactor all the code that creates, updates and deletes modules into it. --- core/helpers/core_installer.php | 15 +++---- core/helpers/module.php | 43 +++++++++++++++++++ modules/comment/helpers/comment_installer.php | 22 +++------- modules/user/helpers/user_installer.php | 22 +++------- 4 files changed, 59 insertions(+), 43 deletions(-) create mode 100644 core/helpers/module.php diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php index a3350f22..680d44a3 100644 --- a/core/helpers/core_installer.php +++ b/core/helpers/core_installer.php @@ -20,17 +20,17 @@ class core_installer { public static function install() { $db = Database::instance(); + $version = 0; try { - $base_version = ORM::factory("module")->where("name", "core")->find()->version; + $version = module::get_version("core"); } catch (Exception $e) { - if ($e->getCode() == E_DATABASE_ERROR) { - $base_version = 0; - } else { + if ($e->getCode() != E_DATABASE_ERROR) { + Kohana::log("error", $e); throw $e; } } - if ($base_version == 0) { + if ($version == 0) { $db->query("CREATE TABLE `modules` ( `id` int(9) NOT NULL auto_increment, `name` char(255) default NULL, @@ -63,10 +63,7 @@ class core_installer { @mkdir(VARPATH . $dir); } - $core = ORM::factory("module")->where("name", "core")->find(); - $core->name = "core"; - $core->version = 1; - $core->save(); + module::set_version("core", 1); $root = ORM::factory("item"); $root->type = 'album'; diff --git a/core/helpers/module.php b/core/helpers/module.php new file mode 100644 index 00000000..92077f72 --- /dev/null +++ b/core/helpers/module.php @@ -0,0 +1,43 @@ +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(); + } + + public static function delete ($module_name) { + ORM::factory("module")->where("name", $module_name)->find()->delete(); + } +} diff --git a/modules/comment/helpers/comment_installer.php b/modules/comment/helpers/comment_installer.php index 7e47ce8f..ac035929 100644 --- a/modules/comment/helpers/comment_installer.php +++ b/modules/comment/helpers/comment_installer.php @@ -21,19 +21,10 @@ class comment_installer { public static function install() { Kohana::log("debug", "comment_installer::install"); $db = Database::instance(); - try { - $base_version = ORM::factory("module")->where("name", "comment")->find()->version; - } catch (Exception $e) { - if ($e->getCode() == E_DATABASE_ERROR) { - $base_version = 0; - } else { - Kohana::log("error", $e); - throw $e; - } - } - Kohana::log("debug", "base_version: $base_version"); + $version = module::get_version("comment"); + Kohana::log("debug", "version: $version"); - if ($base_version == 0) { + if ($version == 0) { $db->query("CREATE TABLE IF NOT EXISTS `comments` ( `id` int(9) NOT NULL auto_increment, `author` varchar(255) default NULL, @@ -44,16 +35,13 @@ class comment_installer { PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - $comment_module = ORM::factory("module")->where("name", "comment")->find(); - $comment_module->name = "comment"; - $comment_module->version = 1; - $comment_module->save(); + module::set_version("comment", 1); } } public static function uninstall() { $db = Database::instance(); $db->query("DROP TABLE IF EXISTS `comments`;"); - ORM::factory("module")->where("name", "comment")->find()->delete(); + module::delete("comment"); } } diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php index ed54a182..6b74200c 100644 --- a/modules/user/helpers/user_installer.php +++ b/modules/user/helpers/user_installer.php @@ -23,19 +23,10 @@ class user_installer { public static function install() { Kohana::log("debug", "user_installer::install"); $db = Database::instance(); - try { - $base_version = ORM::factory("module")->where("name", "user")->find()->version; - } catch (Exception $e) { - if ($e->getCode() == E_DATABASE_ERROR) { - $base_version = 0; - } else { - Kohana::log("error", $e); - throw $e; - } - } - Kohana::log("debug", "base_version: $base_version"); + $version = module::get_version("user"); + Kohana::log("debug", "version: $version"); - if ($base_version == 0) { + if ($version == 0) { $db->query("CREATE TABLE IF NOT EXISTS `users` ( `id` int(9) NOT NULL auto_increment, `name` varchar(255) NOT NULL, @@ -62,10 +53,7 @@ class user_installer { UNIQUE KEY(`user_id`, `group_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); - $user_module = ORM::factory("module")->where("name", "user")->find(); - $user_module->name = "user"; - $user_module->version = 1; - $user_module->save(); + module::set_version("user", 1); $user = ORM::factory("user")->where("name", "admin")->find(); $user->name = "admin"; @@ -92,6 +80,6 @@ class user_installer { $db->query("DROP TABLE IF EXISTS `users`;"); $db->query("DROP TABLE IF EXISTS `groups`;"); $db->query("DROP TABLE IF EXISTS `groups_users`;"); - ORM::factory("module")->where("name", "user")->find()->delete(); + module::delete("user"); } } \ No newline at end of file