From 8a36c24f39e7a6111f7872ec443e6efa63580c82 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 6 Sep 2010 18:20:46 -0700 Subject: Fix some broken identity APIs: - add_user_to_group and remove_user_from_group should take Group_Definition instances to be consistent - add_user_to_group and remove_user_from_group in drivers/IdentityProvider.php should not be static --- modules/user/helpers/group.php | 8 ++++---- modules/user/libraries/drivers/IdentityProvider/Gallery.php | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) (limited to 'modules/user') diff --git a/modules/user/helpers/group.php b/modules/user/helpers/group.php index c84910f1..88bfac35 100644 --- a/modules/user/helpers/group.php +++ b/modules/user/helpers/group.php @@ -68,13 +68,13 @@ class group_Core { */ private static function _lookup_by_field($field_name, $value) { try { - $user = model_cache::get("group", $value, $field_name); - if ($user->loaded()) { - return $user; + $group = model_cache::get("group", $value, $field_name); + if ($group->loaded()) { + return $group; } } catch (Exception $e) { if (strpos($e->getMessage(), "MISSING_MODEL") === false) { - throw $e; + throw $e; } } return null; diff --git a/modules/user/libraries/drivers/IdentityProvider/Gallery.php b/modules/user/libraries/drivers/IdentityProvider/Gallery.php index 1ed7dd4f..44433ad7 100644 --- a/modules/user/libraries/drivers/IdentityProvider/Gallery.php +++ b/modules/user/libraries/drivers/IdentityProvider/Gallery.php @@ -148,9 +148,7 @@ class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver { /** * @see IdentityProvider_Driver::add_user_to_group. */ - static function add_user_to_group($user, $group_id) { - $group = self::lookup_group($group_id); - + public function add_user_to_group($user, $group) { $group->add($user); $group->save(); } @@ -158,8 +156,7 @@ class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver { /** * @see IdentityProvider_Driver::remove_user_to_group. */ - static function remove_user_from_group($user, $group_id) { - $group = self::lookup_group_by_name($group_id); + public function remove_user_from_group($user, $group_id) { $group->remove($user); $group->save(); } -- cgit v1.2.3 From 90ba0f9237d67ddf73ca1e3235ffb466f2eb0a69 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 8 Sep 2010 00:50:30 -0700 Subject: Show the number of photos/albums the user owns in the Admin > Users page, and improve the message to explain what's going to happen to the deleted user's items. Partial fix for #1344, which I can't reproduce now. --- modules/user/controllers/admin_users.php | 9 ++++++--- modules/user/views/admin_users.html.php | 4 ++++ modules/user/views/admin_users_delete_user.html.php | 7 +++++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 modules/user/views/admin_users_delete_user.html.php (limited to 'modules/user') diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php index 24478aa5..c22fcc2e 100644 --- a/modules/user/controllers/admin_users.php +++ b/modules/user/controllers/admin_users.php @@ -95,7 +95,10 @@ class Admin_Users_Controller extends Admin_Controller { if (empty($user)) { throw new Kohana_404_Exception(); } - print $this->_get_user_delete_form_admin($user); + $v = new View("admin_users_delete_user.html"); + $v->user = $user; + $v->form = $this->_get_user_delete_form_admin($user); + print $v; } public function edit_user($id) { @@ -364,8 +367,8 @@ class Admin_Users_Controller extends Admin_Controller { $form = new Forge("admin/users/delete_user/$user->id", "", "post", array("id" => "g-delete-user-form")); $group = $form->group("delete_user")->label( - t("Are you sure you want to delete user %name?", array("name" => $user->name))); - $group->submit("")->value(t("Delete user %name", array("name" => $user->name))); + t("Delete user %name?", array("name" => $user->display_name()))); + $group->submit("")->value(t("Delete")); return $form; } diff --git a/modules/user/views/admin_users.html.php b/modules/user/views/admin_users.html.php index b2526bd8..f067cae8 100644 --- a/modules/user/views/admin_users.html.php +++ b/modules/user/views/admin_users.html.php @@ -64,6 +64,7 @@ + @@ -86,6 +87,9 @@ last_login == 0) ? "" : gallery::date($user->last_login) ?> + + from("items")->where("owner_id", "=", $user->id)->count_records() ?> + id") ?>" open_text="" diff --git a/modules/user/views/admin_users_delete_user.html.php b/modules/user/views/admin_users_delete_user.html.php new file mode 100644 index 00000000..4b79a305 --- /dev/null +++ b/modules/user/views/admin_users_delete_user.html.php @@ -0,0 +1,7 @@ + +
+

+ %name? Any photos, movies or albums owned by this user will transfer ownership to %new_owner.", array("name" => $user->display_name(), "new_owner" => identity::admin_user()->display_name())) ?> +

+ +
-- cgit v1.2.3 From d698a19e0e9acdcb81c5245d1f681546b604a1f3 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Fri, 10 Sep 2010 08:40:30 -0700 Subject: Transfer deleted files to the active user. Or at least say that's what we're going to do, we actually transfer them to one of the admins --- modules/user/views/admin_users_delete_user.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/user') diff --git a/modules/user/views/admin_users_delete_user.html.php b/modules/user/views/admin_users_delete_user.html.php index 4b79a305..44777ae5 100644 --- a/modules/user/views/admin_users_delete_user.html.php +++ b/modules/user/views/admin_users_delete_user.html.php @@ -1,7 +1,7 @@

- %name? Any photos, movies or albums owned by this user will transfer ownership to %new_owner.", array("name" => $user->display_name(), "new_owner" => identity::admin_user()->display_name())) ?> + %name? Any photos, movies or albums owned by this user will transfer ownership to %new_owner.", array("name" => $user->display_name(), "new_owner" => identity::active_user()->display_name())) ?>

-- cgit v1.2.3 From a88b3f580812e7670933a6d695c89ef93f0142d4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 11 Sep 2010 00:47:48 -0700 Subject: Implement IdentityProvider_Gallery_Driver::admin_user() properly such that it's not hardcoded to return the user with id 2. Create user::admin_user() which finds an appropriate admin and returns it. Fixes #1358. --- modules/user/helpers/user.php | 14 ++++++++++++++ .../user/libraries/drivers/IdentityProvider/Gallery.php | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'modules/user') diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php index 55153263..be50d6d1 100644 --- a/modules/user/helpers/user.php +++ b/modules/user/helpers/user.php @@ -35,6 +35,20 @@ class user_Core { return model_cache::get("user", 1); } + /** + * Return an admin user. Prefer the currently logged in user, if possible. + * + * @return User_Model + */ + static function admin_user() { + $active = identity::active_user(); + if ($active->admin) { + return $active; + } + + return ORM::factory("user")->where("admin", "=", 1)->order_by("id", "ASC")->find(); + } + /** * Is the password provided correct? * diff --git a/modules/user/libraries/drivers/IdentityProvider/Gallery.php b/modules/user/libraries/drivers/IdentityProvider/Gallery.php index 44433ad7..73ac9bd0 100644 --- a/modules/user/libraries/drivers/IdentityProvider/Gallery.php +++ b/modules/user/libraries/drivers/IdentityProvider/Gallery.php @@ -32,7 +32,7 @@ class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver { * @see IdentityProvider_Driver::guest. */ public function admin_user() { - return self::lookup_user(2); + return user::admin_user(); } /** -- cgit v1.2.3 From af24aa5abea99818f5f38592f6294ff88f559723 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 14 Sep 2010 11:47:53 -0700 Subject: The full_name field is required to be NOT NULL. Not really sure why this is a hard requirement, but for now in User_Model::save() let's use the empty string if the field itself is null. Fixes ticket #1371. --- modules/user/models/user.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'modules/user') diff --git a/modules/user/models/user.php b/modules/user/models/user.php index 78d74aa3..b28288be 100644 --- a/modules/user/models/user.php +++ b/modules/user/models/user.php @@ -88,6 +88,10 @@ class User_Model extends ORM implements User_Definition { * @return ORM User_Model */ public function save() { + if ($this->full_name === null) { + $this->full_name = ""; + } + if (!$this->loaded()) { // New user $this->add(group::everybody()); -- cgit v1.2.3