diff options
-rw-r--r-- | modules/user/controllers/admin_users.php | 19 | ||||
-rw-r--r-- | modules/user/controllers/users.php | 21 | ||||
-rw-r--r-- | modules/user/helpers/user.php | 56 |
3 files changed, 46 insertions, 50 deletions
diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php index 4f3ea65a..70a5c417 100644 --- a/modules/user/controllers/admin_users.php +++ b/modules/user/controllers/admin_users.php @@ -96,28 +96,12 @@ class Admin_Users_Controller extends Controller { } $form = user::get_edit_form_admin($user); - $form->edit_user->password->rules("-required"); $valid = $form->validate(); if ($valid) { - $new_name = $form->edit_user->inputs["name"]->value; - if (ORM::factory("user") - ->where("name", $new_name) - ->where("id !=", $id) - ->find() - ->loaded) { - $form->edit_user->inputs["name"]->add_error("in_use", 1); - $valid = false; - } + $valid = user::update($user, $form); } if ($valid) { - $user->name = $new_name; - $user->full_name = $form->edit_user->full_name->value; - $user->password = $form->edit_user->password->value; - $user->email = $form->edit_user->email->value; - $desired_locale = $form->edit_user->locale->value; - $user->locale = $desired_locale == "none" ? null : $desired_locale; - $user->save(); message::success(t("Changed user %user_name", array("user_name" => $user->name))); print json_encode(array("result" => "success")); } else { @@ -159,7 +143,6 @@ class Admin_Users_Controller extends Controller { 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; diff --git a/modules/user/controllers/users.php b/modules/user/controllers/users.php index eb49b5b1..55970ded 100644 --- a/modules/user/controllers/users.php +++ b/modules/user/controllers/users.php @@ -26,21 +26,12 @@ class Users_Controller extends REST_Controller { } $form = user::get_edit_form($user); - $form->edit_user->password->rules("-required"); - if ($form->validate()) { - // @todo: allow the user to change their 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; - $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; - } - $user->save(); - + $valid = $form->validate(); + if ($valid) { + $valid = user::update($user, $form); + } + + if ($valid) { print json_encode( array("result" => "success", "resource" => url::site("users/{$user->id}"))); diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php index d08ad1bd..527db145 100644 --- a/modules/user/helpers/user.php +++ b/modules/user/helpers/user.php @@ -24,25 +24,16 @@ * Note: by design, this class does not do any permission checking. */ class user_Core { - static function get_edit_form($user, $action = NULL) { - $form = new Forge("users/$user->id?_method=put", "", "post", array("id" => "gUserEditForm")); - $group = $form->group("edit_user")->label(t("Edit User")); - $group->input("name")->label(t("Name"))->id("gName")->value($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($user) { + return self::_get_edit_form($user, "users/$user->id?_method=put", t("Save")); } static function get_edit_form_admin($user) { - $form = new Forge( - "admin/users/edit_user/$user->id", "", "post", array("id" => "gEditUserForm")); + 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")); $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( @@ -54,8 +45,9 @@ 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(t("Modify User")); + $group->submit("")->value($save_text); $form->add_rules_from($user); + $form->edit_user->password->rules("-required"); return $form; } @@ -307,4 +299,34 @@ 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 |