diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-12-09 08:47:30 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-12-09 08:47:30 +0000 |
commit | e62103b8d9463bf409881d17a4bda93f3ca3208d (patch) | |
tree | f798613fffd8e3997ac6d0befdf3cf48584e009e | |
parent | 930fb1f6976e60ec3774d837036b5a73bdbf32a8 (diff) |
Move code to delete users and add/remove users from groups into the
model.
-rw-r--r-- | core/controllers/welcome.php | 7 | ||||
-rw-r--r-- | core/helpers/access.php | 5 | ||||
-rw-r--r-- | core/tests/Access_Helper_Test.php | 13 | ||||
-rw-r--r-- | modules/user/helpers/group.php | 61 | ||||
-rw-r--r-- | modules/user/helpers/user.php | 6 | ||||
-rw-r--r-- | modules/user/helpers/user_installer.php | 8 | ||||
-rw-r--r-- | modules/user/models/group.php | 8 | ||||
-rw-r--r-- | modules/user/models/user.php | 2 |
8 files changed, 33 insertions, 77 deletions
diff --git a/core/controllers/welcome.php b/core/controllers/welcome.php index ce9d3219..2839b2f1 100644 --- a/core/controllers/welcome.php +++ b/core/controllers/welcome.php @@ -456,12 +456,13 @@ class Welcome_Controller extends Template_Controller { } public function delete_group($id) { - group::delete($id); + ORM::factory("group", $id)->delete(); url::redirect("welcome"); } public function remove_from_group($group_id, $user_id) { - group::remove_user($group_id, $user_id); + ORM::factory("group", $group_id)->remove( + ORM::factory("user", $user_id)); url::redirect("welcome"); } @@ -469,7 +470,7 @@ class Welcome_Controller extends Template_Controller { $group_name = $this->input->post("group_name"); $group = ORM::factory("group")->where("name", $group_name)->find(); if ($group->loaded) { - group::add_user($group->id, $user_id); + $group->add(ORM::factory("user", $user_id)); } url::redirect("welcome"); } diff --git a/core/helpers/access.php b/core/helpers/access.php index 8f2453df..f4e98082 100644 --- a/core/helpers/access.php +++ b/core/helpers/access.php @@ -200,7 +200,10 @@ class access_Core { self::_drop_columns($name, $group->id); } self::_drop_columns($name, 0); - ORM::factory("permission")->where("name", $name)->find()->delete(); + $permission = ORM::factory("permission")->where("name", $name)->find(); + if ($permission->loaded) { + $permission->delete(); + } } /** diff --git a/core/tests/Access_Helper_Test.php b/core/tests/Access_Helper_Test.php index 96a28ada..41f2770e 100644 --- a/core/tests/Access_Helper_Test.php +++ b/core/tests/Access_Helper_Test.php @@ -24,7 +24,7 @@ class Access_Helper_Test extends Unit_Test_Case { try { $group = ORM::factory("group")->where("name", "access_test")->find(); if ($group->loaded) { - group::delete($group->id); + $group->delete(); } } catch (Exception $e) { } @@ -33,7 +33,10 @@ class Access_Helper_Test extends Unit_Test_Case { } catch (Exception $e) { } try { - ORM::factory("user")->where("name", "access_test")->find()->delete(); + $user = ORM::factory("user")->where("name", "access_test")->find(); + if ($user->loaded) { + $user->delete(); + } } catch (Exception $e) { } } @@ -46,7 +49,7 @@ class Access_Helper_Test extends Unit_Test_Case { $this->assert_true(array_key_exists("access_test_{$group->id}", $fields)); access::delete_permission("access_test"); - group::delete($group->id); + $group->delete(); // Now the column has gone away $fields = Database::instance()->list_fields("access_caches"); @@ -230,7 +233,7 @@ class Access_Helper_Test extends Unit_Test_Case { // Create a new user that belongs to no groups $user = user::create("access_test", "Access Test", ""); foreach ($user->groups as $group) { - group::remove_user($group->id, $user->id); + $user->remove($group); } Session::instance()->set("user", $user); @@ -239,7 +242,7 @@ class Access_Helper_Test extends Unit_Test_Case { // Now add them to a group that has edit permission $group = group::create("access_test"); - group::add_user($group->id, $user->id); + $group->add($user); access::allow($group->id, "edit", 1); Session::instance()->set("user", $user->reload()); diff --git a/modules/user/helpers/group.php b/modules/user/helpers/group.php index 12118432..f4d57275 100644 --- a/modules/user/helpers/group.php +++ b/modules/user/helpers/group.php @@ -34,7 +34,7 @@ class group_Core { * @return Group_Model */ static function create($name) { - $group = ORM::factory("group"); + $group = ORM::factory("group")->where("name", $name); if ($group->loaded) { throw new Exception("@todo GROUP_ALREADY_EXISTS $name"); } @@ -45,63 +45,4 @@ class group_Core { module::event("group_created", $group); return $group; } - - /** - * Delete a group - * - * @param string $name the group name - */ - static function delete($id) { - $group = ORM::factory("group", $id); - - if ($group->loaded) { - module::event("group_before_delete", $group); - $group->delete(); - } - } - - /** - * Remove a user from a group - * - * @param integer $group_id the id of the group - * @param integer $user_id the id of the user - * @return Group_Model - */ - static function remove_user($group_id, $user_id) { - $group = ORM::factory("group", $group_id); - if (!$group->loaded) { - throw new Exception("@todo MISSING_GROUP $group_id"); - } - - $user = ORM::factory("user", $user_id); - if (!$user->loaded) { - throw new Exception("@todo MISSING_USER $user_id"); - } - - $group->remove($user); - return $group; - } - - - /** - * Add a user to a group - * - * @param integer $group_id the id of the group - * @param integer $user_id the id of the user - * @return Group_Model - */ - static function add_user($group_id, $user_id) { - $group = ORM::factory("group", $group_id); - if (!$group->loaded) { - throw new Exception("@todo MISSING_GROUP $group_id"); - } - - $user = ORM::factory("user", $user_id); - if (!$user->loaded) { - throw new Exception("@todo MISSING_USER $user_id"); - } - - $group->add($user); - return $group; - } }
\ No newline at end of file diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php index 8dfbb21a..dfaa90f2 100644 --- a/modules/user/helpers/user.php +++ b/modules/user/helpers/user.php @@ -68,7 +68,7 @@ class user_Core { * @return User_Model */ static function create($name, $display_name, $password, $admin=false) { - $user = ORM::factory("user"); + $user = ORM::factory("user")->where("name", $name); if ($user->loaded) { throw new Exception("@todo USER_ALREADY_EXISTS $name"); } @@ -79,10 +79,10 @@ class user_Core { $user->admin = $admin; $user->save(); - group::add_user(group::REGISTERED_USERS, $user->id); + $group = ORM::factory("group", group::REGISTERED_USERS); + $group->add($user); module::event("user_created", $user); - return $user; } diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php index 58066acd..3dbdaf25 100644 --- a/modules/user/helpers/user_installer.php +++ b/modules/user/helpers/user_installer.php @@ -56,8 +56,8 @@ class user_installer { $admin = user::create("admin", "Gallery Administrator", "admin", true); $user = user::create("joe", "Joe User", "joe"); - group::add_user($registered->id, $admin->id); - group::add_user($registered->id, $user->id); + $registered->add($admin); + $registered->add($user); // Let the admin own everything $db->query("UPDATE `items` SET `owner_id` = {$admin->id} WHERE `owner_id` IS NULL"); @@ -68,11 +68,11 @@ class user_installer { public static function uninstall() { // Delete all users and groups so that we give other modules an opportunity to clean up foreach (ORM::factory("user")->find_all() as $user) { - user::delete($user->id); + $user->delete(); } foreach (ORM::factory("group")->find_all() as $group) { - group::delete($group->id); + $group->delete(); } try { diff --git a/modules/user/models/group.php b/modules/user/models/group.php index 794c0549..55b5ea97 100644 --- a/modules/user/models/group.php +++ b/modules/user/models/group.php @@ -22,4 +22,12 @@ class Group_Model extends ORM { var $rules = array( "name" => "required|length[4,255]"); + + /** + * @see ORM::delete() + */ + public function delete($id=null) { + module::event("group_before_delete", $this); + parent::delete($id); + } }
\ No newline at end of file diff --git a/modules/user/models/user.php b/modules/user/models/user.php index bb01fd49..82834930 100644 --- a/modules/user/models/user.php +++ b/modules/user/models/user.php @@ -39,7 +39,7 @@ class User_Model extends ORM { * @see ORM::delete() */ public function delete($id=null) { + module::event("user_before_delete", $this); parent::delete($id); - module::event("user_deleted", $user); } }
\ No newline at end of file |