From 8e1ab75530b2085ed5ae67e714c624b06cae3695 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Wed, 14 Oct 2009 21:07:19 -0700 Subject: Recreate group::lookup that somehow got removed. --- modules/gallery/helpers/group.php | 31 ++++++++++++++++++++++++++++--- modules/gallery/helpers/user.php | 2 +- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/modules/gallery/helpers/group.php b/modules/gallery/helpers/group.php index fbc5157d..dbfa03fe 100644 --- a/modules/gallery/helpers/group.php +++ b/modules/gallery/helpers/group.php @@ -60,15 +60,40 @@ class group_Core { return model_cache::get("group", 2); } + /** + * Look up a user by id. + * @param integer $id the user id + * @return User_Model the user object, or null if the id was invalid. + */ + static function lookup($id) { + return self::_lookup_group_by_field("id", $id); + } + /** * Look up a group by name. * @param integer $id the group name * @return Group_Model the group object, or null if the name was invalid. */ static function lookup_by_name($name) { - $group = model_cache::get("group", $name, "name"); - if ($group->loaded) { - return $group; + return self::_lookup_group_by_field("name", $name); + } + + /** + * Look up a user by field value. + * @param string search field + * @param string search value + * @return Group_Model the user object, or null if the name was invalid. + */ + private static function _lookup_group_by_field($field_name, $value) { + try { + $user = model_cache::get("group", $value, $field_name); + if ($user->loaded) { + return $user; + } + } catch (Exception $e) { + if (strpos($e->getMessage(), "MISSING_MODEL") === false) { + throw $e; + } } return null; } diff --git a/modules/gallery/helpers/user.php b/modules/gallery/helpers/user.php index 7aa990e1..cb205170 100644 --- a/modules/gallery/helpers/user.php +++ b/modules/gallery/helpers/user.php @@ -351,7 +351,7 @@ class user_Core { * @param string search value * @return User_Core the user object, or null if the name was invalid. */ - private static function _lookup_user_by_field($field_name, $value) { + private static function _lookup_user_by_field($field_name, $value) { try { $user = model_cache::get("user", $value, $field_name); if ($user->loaded) { -- cgit v1.2.3 From 0d5d4c81bcca44f037deb847a4c837752f774e49 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Wed, 14 Oct 2009 21:20:30 -0700 Subject: Move the ui for user adminsitration back to the user module. --- modules/gallery/controllers/admin_users.php | 290 ----------------------- modules/gallery/views/admin_users.html.php | 128 ---------- modules/gallery/views/admin_users_group.html.php | 38 --- modules/user/controllers/admin_users.php | 290 +++++++++++++++++++++++ modules/user/helpers/user_event.php | 30 +++ modules/user/views/admin_users.html.php | 128 ++++++++++ modules/user/views/admin_users_group.html.php | 38 +++ 7 files changed, 486 insertions(+), 456 deletions(-) delete mode 100644 modules/gallery/controllers/admin_users.php delete mode 100644 modules/gallery/views/admin_users.html.php delete mode 100644 modules/gallery/views/admin_users_group.html.php create mode 100644 modules/user/controllers/admin_users.php create mode 100644 modules/user/helpers/user_event.php create mode 100644 modules/user/views/admin_users.html.php create mode 100644 modules/user/views/admin_users_group.html.php diff --git a/modules/gallery/controllers/admin_users.php b/modules/gallery/controllers/admin_users.php deleted file mode 100644 index a8a8cd95..00000000 --- a/modules/gallery/controllers/admin_users.php +++ /dev/null @@ -1,290 +0,0 @@ -content = new View("admin_users.html"); - $view->content->users = user::get_user_list(array("orderby" => array("name" => "ASC"))); - $view->content->groups = group::get_group_list(array("orderby" => array("name" => "ASC"))); - print $view; - } - - public function add_user() { - access::verify_csrf(); - - $form = user::get_add_form_admin(); - $valid = $form->validate(); - $name = $form->add_user->inputs["name"]->value; - if ($user = user::lookup_by_name($name)) { - $form->add_user->inputs["name"]->add_error("in_use", 1); - $valid = false; - } - - if ($valid) { - $user = user::create( - $name, $form->add_user->full_name->value, $form->add_user->password->value); - $user->email = $form->add_user->email->value; - $user->admin = $form->add_user->admin->checked; - - if ($form->add_user->locale) { - $desired_locale = $form->add_user->locale->value; - $user->locale = $desired_locale == "none" ? null : $desired_locale; - } - $user->save(); - module::event("user_add_form_admin_completed", $user, $form); - - message::success(t("Created user %user_name", array("user_name" => $user->name))); - print json_encode(array("result" => "success")); - } else { - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - } - - public function add_user_form() { - print user::get_add_form_admin(); - } - - public function delete_user($id) { - access::verify_csrf(); - - if ($id == user::active()->id || $id == user::guest()->id) { - access::forbidden(); - } - - $user = user::lookup($id); - if (empty($user)) { - kohana::show_404(); - } - - $form = user::get_delete_form_admin($user); - if($form->validate()) { - $name = $user->name; - $user->delete(); - } else { - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - - $message = t("Deleted user %user_name", array("user_name" => $name)); - log::success("user", $message); - message::success($message); - print json_encode(array("result" => "success")); - } - - public function delete_user_form($id) { - $user = user::lookup($id); - if (empty($user)) { - kohana::show_404(); - } - print user::get_delete_form_admin($user); - } - - public function edit_user($id) { - access::verify_csrf(); - - $user = user::lookup($id); - if (empty($user)) { - kohana::show_404(); - } - - $form = user::get_edit_form_admin($user); - $valid = $form->validate(); - if ($valid) { - $new_name = $form->edit_user->inputs["name"]->value; - $temp_user = user::lookup_by_name($new_name); - if ($new_name != $user->name && - ($temp_user && $temp_user->id != $user->id)) { - $form->edit_user->inputs["name"]->add_error("in_use", 1); - $valid = false; - } else { - $user->name = $new_name; - } - } - - if ($valid) { - $user->full_name = $form->edit_user->full_name->value; - if ($form->edit_user->password->value) { - $user->password = $form->edit_user->password->value; - } - $user->email = $form->edit_user->email->value; - $user->url = $form->edit_user->url->value; - if ($form->edit_user->locale) { - $desired_locale = $form->edit_user->locale->value; - $user->locale = $desired_locale == "none" ? null : $desired_locale; - } - - // An admin can change the admin status for any user but themselves - if ($user->id != user::active()->id) { - $user->admin = $form->edit_user->admin->checked; - } - $user->save(); - module::event("user_edit_form_admin_completed", $user, $form); - - message::success(t("Changed user %user_name", array("user_name" => $user->name))); - print json_encode(array("result" => "success")); - } else { - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - } - - public function edit_user_form($id) { - $user = user::lookup($id); - if (empty($user)) { - kohana::show_404(); - } - - $form = user::get_edit_form_admin($user); - // Don't allow the user to control their own admin bit, else you can lock yourself out - if ($user->id == user::active()->id) { - $form->edit_user->admin->disabled(1); - } - print $form; - } - - public function add_user_to_group($user_id, $group_id) { - access::verify_csrf(); - $group = group::lookup($group_id); - $user = user::lookup($user_id); - $group->add($user); - $group->save(); - } - - public function remove_user_from_group($user_id, $group_id) { - access::verify_csrf(); - $group = group::lookup($group_id); - $user = user::lookup($user_id); - $group->remove($user); - $group->save(); - } - - public function group($group_id) { - $view = new View("admin_users_group.html"); - $view->group = group::lookup($group_id); - print $view; - } - - public function add_group() { - access::verify_csrf(); - - $form = group::get_add_form_admin(); - $valid = $form->validate(); - if ($valid) { - $new_name = $form->add_group->inputs["name"]->value; - $group = group::lookup_by_name($new_name); - if (!empty($group)) { - $form->add_group->inputs["name"]->add_error("in_use", 1); - $valid = false; - } - } - - if ($valid) { - $group = group::create($new_name); - $group->save(); - message::success( - t("Created group %group_name", array("group_name" => $group->name))); - print json_encode(array("result" => "success")); - } else { - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - } - - public function add_group_form() { - print group::get_add_form_admin(); - } - - public function delete_group($id) { - access::verify_csrf(); - - $group = group::lookup($id); - if (empty($group)) { - kohana::show_404(); - } - - $form = group::get_delete_form_admin($group); - if ($form->validate()) { - $name = $group->name; - $group->delete(); - } else { - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - - $message = t("Deleted group %group_name", array("group_name" => $name)); - log::success("group", $message); - message::success($message); - print json_encode(array("result" => "success")); - } - - public function delete_group_form($id) { - $group = group::lookup($id); - if (empty($group)) { - kohana::show_404(); - } - - print group::get_delete_form_admin($group); - } - - public function edit_group($id) { - access::verify_csrf(); - - $group = group::lookup($id); - if (empty($group)) { - kohana::show_404(); - } - - $form = group::get_edit_form_admin($group); - $valid = $form->validate(); - - if ($valid) { - $new_name = $form->edit_group->inputs["name"]->value; - $group = group::lookup_by_name($name); - if ($group->loaded) { - $form->edit_group->inputs["name"]->add_error("in_use", 1); - $valid = false; - } - } - - if ($valid) { - $group->name = $form->edit_group->inputs["name"]->value; - $group->save(); - message::success( - t("Changed group %group_name", array("group_name" => $group->name))); - print json_encode(array("result" => "success")); - } else { - message::error( - t("Failed to change group %group_name", array("group_name" => $group->name))); - print json_encode(array("result" => "error", - "form" => $form->__toString())); - } - } - - public function edit_group_form($id) { - $group = group::lookup($id); - if (empty($group)) { - kohana::show_404(); - } - - print group::get_edit_form_admin($group); - } - -} diff --git a/modules/gallery/views/admin_users.html.php b/modules/gallery/views/admin_users.html.php deleted file mode 100644 index a127bc15..00000000 --- a/modules/gallery/views/admin_users.html.php +++ /dev/null @@ -1,128 +0,0 @@ - - -
- " - class="g-dialog-link g-button g-right ui-icon-left ui-state-default ui-corner-all" - title="for_html_attr() ?>"> - - - - -

- -

- -
- - - - - - - - - - $user): ?> - user admin ? "admin" : "" ?>"> - - - - - - - -
- " - title="for_html_attr() ?>" - alt="name) ?>" - width="20" - height="20" /> - name) ?> - - full_name) ?> - - email) ?> - - last_login == 0) ? "" : gallery::date($user->last_login) ?> - - id") ?>" - open_text="" - class="g-panel-link g-button ui-state-default ui-corner-all ui-icon-left"> - - id != $user->id && !$user->guest): ?> - id") ?>" - class="g-dialog-link g-button ui-state-default ui-corner-all ui-icon-left"> - - - for_html_attr() ?>" - class="g-button ui-state-disabled ui-corner-all ui-icon-left"> - - -
-
-
- - diff --git a/modules/gallery/views/admin_users_group.html.php b/modules/gallery/views/admin_users_group.html.php deleted file mode 100644 index db3645a0..00000000 --- a/modules/gallery/views/admin_users_group.html.php +++ /dev/null @@ -1,38 +0,0 @@ - -

- name) ?> - special): ?> - id") ?>" - title=" $group->name))->for_html_attr() ?>" - class="g-dialog-link g-button ui-state-default ui-corner-all"> - - - for_html_attr() ?>" - class="g-dialog-link g-button ui-state-disabled ui-corner-all ui-icon-left"> - - -

- -users->count() > 0): ?> - - -
-

- -

-
- diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php new file mode 100644 index 00000000..a8a8cd95 --- /dev/null +++ b/modules/user/controllers/admin_users.php @@ -0,0 +1,290 @@ +content = new View("admin_users.html"); + $view->content->users = user::get_user_list(array("orderby" => array("name" => "ASC"))); + $view->content->groups = group::get_group_list(array("orderby" => array("name" => "ASC"))); + print $view; + } + + public function add_user() { + access::verify_csrf(); + + $form = user::get_add_form_admin(); + $valid = $form->validate(); + $name = $form->add_user->inputs["name"]->value; + if ($user = user::lookup_by_name($name)) { + $form->add_user->inputs["name"]->add_error("in_use", 1); + $valid = false; + } + + if ($valid) { + $user = user::create( + $name, $form->add_user->full_name->value, $form->add_user->password->value); + $user->email = $form->add_user->email->value; + $user->admin = $form->add_user->admin->checked; + + if ($form->add_user->locale) { + $desired_locale = $form->add_user->locale->value; + $user->locale = $desired_locale == "none" ? null : $desired_locale; + } + $user->save(); + module::event("user_add_form_admin_completed", $user, $form); + + message::success(t("Created user %user_name", array("user_name" => $user->name))); + print json_encode(array("result" => "success")); + } else { + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + } + + public function add_user_form() { + print user::get_add_form_admin(); + } + + public function delete_user($id) { + access::verify_csrf(); + + if ($id == user::active()->id || $id == user::guest()->id) { + access::forbidden(); + } + + $user = user::lookup($id); + if (empty($user)) { + kohana::show_404(); + } + + $form = user::get_delete_form_admin($user); + if($form->validate()) { + $name = $user->name; + $user->delete(); + } else { + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + + $message = t("Deleted user %user_name", array("user_name" => $name)); + log::success("user", $message); + message::success($message); + print json_encode(array("result" => "success")); + } + + public function delete_user_form($id) { + $user = user::lookup($id); + if (empty($user)) { + kohana::show_404(); + } + print user::get_delete_form_admin($user); + } + + public function edit_user($id) { + access::verify_csrf(); + + $user = user::lookup($id); + if (empty($user)) { + kohana::show_404(); + } + + $form = user::get_edit_form_admin($user); + $valid = $form->validate(); + if ($valid) { + $new_name = $form->edit_user->inputs["name"]->value; + $temp_user = user::lookup_by_name($new_name); + if ($new_name != $user->name && + ($temp_user && $temp_user->id != $user->id)) { + $form->edit_user->inputs["name"]->add_error("in_use", 1); + $valid = false; + } else { + $user->name = $new_name; + } + } + + if ($valid) { + $user->full_name = $form->edit_user->full_name->value; + if ($form->edit_user->password->value) { + $user->password = $form->edit_user->password->value; + } + $user->email = $form->edit_user->email->value; + $user->url = $form->edit_user->url->value; + if ($form->edit_user->locale) { + $desired_locale = $form->edit_user->locale->value; + $user->locale = $desired_locale == "none" ? null : $desired_locale; + } + + // An admin can change the admin status for any user but themselves + if ($user->id != user::active()->id) { + $user->admin = $form->edit_user->admin->checked; + } + $user->save(); + module::event("user_edit_form_admin_completed", $user, $form); + + message::success(t("Changed user %user_name", array("user_name" => $user->name))); + print json_encode(array("result" => "success")); + } else { + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + } + + public function edit_user_form($id) { + $user = user::lookup($id); + if (empty($user)) { + kohana::show_404(); + } + + $form = user::get_edit_form_admin($user); + // Don't allow the user to control their own admin bit, else you can lock yourself out + if ($user->id == user::active()->id) { + $form->edit_user->admin->disabled(1); + } + print $form; + } + + public function add_user_to_group($user_id, $group_id) { + access::verify_csrf(); + $group = group::lookup($group_id); + $user = user::lookup($user_id); + $group->add($user); + $group->save(); + } + + public function remove_user_from_group($user_id, $group_id) { + access::verify_csrf(); + $group = group::lookup($group_id); + $user = user::lookup($user_id); + $group->remove($user); + $group->save(); + } + + public function group($group_id) { + $view = new View("admin_users_group.html"); + $view->group = group::lookup($group_id); + print $view; + } + + public function add_group() { + access::verify_csrf(); + + $form = group::get_add_form_admin(); + $valid = $form->validate(); + if ($valid) { + $new_name = $form->add_group->inputs["name"]->value; + $group = group::lookup_by_name($new_name); + if (!empty($group)) { + $form->add_group->inputs["name"]->add_error("in_use", 1); + $valid = false; + } + } + + if ($valid) { + $group = group::create($new_name); + $group->save(); + message::success( + t("Created group %group_name", array("group_name" => $group->name))); + print json_encode(array("result" => "success")); + } else { + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + } + + public function add_group_form() { + print group::get_add_form_admin(); + } + + public function delete_group($id) { + access::verify_csrf(); + + $group = group::lookup($id); + if (empty($group)) { + kohana::show_404(); + } + + $form = group::get_delete_form_admin($group); + if ($form->validate()) { + $name = $group->name; + $group->delete(); + } else { + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + + $message = t("Deleted group %group_name", array("group_name" => $name)); + log::success("group", $message); + message::success($message); + print json_encode(array("result" => "success")); + } + + public function delete_group_form($id) { + $group = group::lookup($id); + if (empty($group)) { + kohana::show_404(); + } + + print group::get_delete_form_admin($group); + } + + public function edit_group($id) { + access::verify_csrf(); + + $group = group::lookup($id); + if (empty($group)) { + kohana::show_404(); + } + + $form = group::get_edit_form_admin($group); + $valid = $form->validate(); + + if ($valid) { + $new_name = $form->edit_group->inputs["name"]->value; + $group = group::lookup_by_name($name); + if ($group->loaded) { + $form->edit_group->inputs["name"]->add_error("in_use", 1); + $valid = false; + } + } + + if ($valid) { + $group->name = $form->edit_group->inputs["name"]->value; + $group->save(); + message::success( + t("Changed group %group_name", array("group_name" => $group->name))); + print json_encode(array("result" => "success")); + } else { + message::error( + t("Failed to change group %group_name", array("group_name" => $group->name))); + print json_encode(array("result" => "error", + "form" => $form->__toString())); + } + } + + public function edit_group_form($id) { + $group = group::lookup($id); + if (empty($group)) { + kohana::show_404(); + } + + print group::get_edit_form_admin($group); + } + +} diff --git a/modules/user/helpers/user_event.php b/modules/user/helpers/user_event.php new file mode 100644 index 00000000..78b009eb --- /dev/null +++ b/modules/user/helpers/user_event.php @@ -0,0 +1,30 @@ +add_after("appearance_menu", + Menu::factory("link") + ->id("users_groups") + ->label(t("Users/Groups")) + ->url(url::site("admin/users"))); + return $menu; + } +} diff --git a/modules/user/views/admin_users.html.php b/modules/user/views/admin_users.html.php new file mode 100644 index 00000000..a127bc15 --- /dev/null +++ b/modules/user/views/admin_users.html.php @@ -0,0 +1,128 @@ + + +
+ " + class="g-dialog-link g-button g-right ui-icon-left ui-state-default ui-corner-all" + title="for_html_attr() ?>"> + + + + +

+ +

+ +
+ + + + + + + + + + $user): ?> + user admin ? "admin" : "" ?>"> + + + + + + + +
+ " + title="for_html_attr() ?>" + alt="name) ?>" + width="20" + height="20" /> + name) ?> + + full_name) ?> + + email) ?> + + last_login == 0) ? "" : gallery::date($user->last_login) ?> + + id") ?>" + open_text="" + class="g-panel-link g-button ui-state-default ui-corner-all ui-icon-left"> + + id != $user->id && !$user->guest): ?> + id") ?>" + class="g-dialog-link g-button ui-state-default ui-corner-all ui-icon-left"> + + + for_html_attr() ?>" + class="g-button ui-state-disabled ui-corner-all ui-icon-left"> + + +
+
+
+ + diff --git a/modules/user/views/admin_users_group.html.php b/modules/user/views/admin_users_group.html.php new file mode 100644 index 00000000..db3645a0 --- /dev/null +++ b/modules/user/views/admin_users_group.html.php @@ -0,0 +1,38 @@ + +

+ name) ?> + special): ?> + id") ?>" + title=" $group->name))->for_html_attr() ?>" + class="g-dialog-link g-button ui-state-default ui-corner-all"> + + + for_html_attr() ?>" + class="g-dialog-link g-button ui-state-disabled ui-corner-all ui-icon-left"> + + +

+ +users->count() > 0): ?> + + +
+

+ +

+
+ -- cgit v1.2.3