summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-09 08:47:30 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-09 08:47:30 +0000
commite62103b8d9463bf409881d17a4bda93f3ca3208d (patch)
treef798613fffd8e3997ac6d0befdf3cf48584e009e
parent930fb1f6976e60ec3774d837036b5a73bdbf32a8 (diff)
Move code to delete users and add/remove users from groups into the
model.
-rw-r--r--core/controllers/welcome.php7
-rw-r--r--core/helpers/access.php5
-rw-r--r--core/tests/Access_Helper_Test.php13
-rw-r--r--modules/user/helpers/group.php61
-rw-r--r--modules/user/helpers/user.php6
-rw-r--r--modules/user/helpers/user_installer.php8
-rw-r--r--modules/user/models/group.php8
-rw-r--r--modules/user/models/user.php2
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