diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-05-13 03:56:50 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-05-13 03:56:50 +0000 |
commit | 9c24b5d94dec36e5c3c1f6450dea77f6c2c623a9 (patch) | |
tree | 0706453686bbbd68fd5d2df132d862bcfe18c9a2 /modules/user/helpers | |
parent | b9aeec634d8aca1848233a88ab18a732e3df5914 (diff) |
Variety of changes to the way we do user editing:
1) Allow admins to edit the admin bit of other admins
2) Don't allow admins to delete themselves (partial fix for ticket #213)
3) Inline user::update(). Don't do form processing in helper methods!
4) Inline user::_get_edit_form() so that we can treat edit forms differently.
Trying to hard to make common functions makes for weird edge cases.
Diffstat (limited to 'modules/user/helpers')
-rw-r--r-- | modules/user/helpers/user.php | 58 |
1 files changed, 18 insertions, 40 deletions
diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php index 8bb9dc98..570f6282 100644 --- a/modules/user/helpers/user.php +++ b/modules/user/helpers/user.php @@ -25,15 +25,22 @@ */ class user_Core { static function get_edit_form($user) { - return self::_get_edit_form($user, "users/$user->id?_method=put", t("Save")); + $form = new Forge("users/$user->id?_method=put", "", "post", array("id" => "gEditUserForm")); + $group = $form->group("edit_user")->label(t("Edit User: %name", array("name" => $user->name))); + $group->input("full_name")->label(t("Full Name"))->id("gFullName")->value($user->full_name); + self::_add_locale_dropdown($group, $user); + $group->password("password")->label(t("Password"))->id("gPassword"); + $group->password("password2")->label(t("Confirm Password"))->id("gPassword2") + ->matches($group->password); + $group->input("email")->label(t("Email"))->id("gEmail")->value($user->email); + $group->input("url")->label(t("URL"))->id("gUrl")->value($user->url); + $group->submit("")->value(t("Save")); + $form->add_rules_from($user); + return $form; } static function get_edit_form_admin($user) { - return self::_get_edit_form($user, "admin/users/edit_user/$user->id", t("Modify User")); - } - - private static function _get_edit_form($user, $action, $save_text) { - $form = new Forge($action, "", "post", array("id" => "gEditUserForm")); + $form = new Forge("admin/users/edit_user/$user->id", "", "post", array("id" => "gEditUserForm")); $group = $form->group("edit_user")->label(t("Edit User")); $group->input("name")->label(t("Name"))->id("gName")->value($user->name); $group->inputs["name"]->error_messages( @@ -45,7 +52,8 @@ class user_Core { ->matches($group->password); $group->input("email")->label(t("Email"))->id("gEmail")->value($user->email); $group->input("url")->label(t("URL"))->id("gUrl")->value($user->url); - $group->submit("")->value($save_text); + $group->checkbox("admin")->label(t("Admin"))->id("gAdmin")->checked($user->admin); + $group->submit("")->value(t("Modify User")); $form->add_rules_from($user); $form->edit_user->password->rules("-required"); return $form; @@ -54,9 +62,8 @@ class user_Core { static function get_add_form_admin() { $form = new Forge("admin/users/add_user", "", "post", array("id" => "gAddUserForm")); $group = $form->group("add_user")->label(t("Add User")); - $group->input("name")->label(t("Name"))->id("gName"); - $group->inputs["name"]->error_messages( - "in_use", t("There is already a user with that name")); + $group->input("name")->label(t("Name"))->id("gName") + ->error_messages("in_use", t("There is already a user with that name")); $group->input("full_name")->label(t("Full Name"))->id("gFullName"); $group->password("password")->label(t("Password"))->id("gPassword"); $group->password("password2")->label(t("Confirm Password"))->id("gPassword2") @@ -64,6 +71,7 @@ class user_Core { $group->input("email")->label(t("Email"))->id("gEmail"); $group->input("url")->label(t("URL"))->id("gUrl"); self::_add_locale_dropdown($group); + $group->checkbox("admin")->label(t("Admin"))->id("gAdmin"); $group->submit("")->value(t("Add User")); $user = ORM::factory("user"); $form->add_rules_from($user); @@ -312,34 +320,4 @@ class user_Core { } return $salt . md5($salt . $password); } - - /** - * - */ - static function update($user, $form) { - $valid = true; - $new_name = $form->edit_user->inputs["name"]->value; - if ($new_name != $user->name && - ORM::factory("user") - ->where("name", $new_name) - ->where("id !=", $user->id) - ->find() - ->loaded) { - $form->edit_user->inputs["name"]->add_error("in_use", 1); - $valid = false; - } else { - $user->name = $new_name; - $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; - if ($form->edit_user->locale) { - $desired_locale = $form->edit_user->locale->value; - $user->locale = $desired_locale == "none" ? null : $desired_locale; - } - $user->save(); - } - return $valid; - } }
\ No newline at end of file |