Exemplo n.º 1
0
 /**
  * Edit My Account
  *
  * @return void
  * @author Merrick Christensen
  */
 public function action_edit()
 {
     $this->template->content = View::factory('account/edit');
     $this->template->content->user = $this->user;
     $this->template->scripts = array('public/js/vendor/word-count.js', 'public/js/account/vanity_preview.js');
     $this->template->content->set(array('tv_shows' => Helper_Favorite::get_available_answers(1), 'musical_artists' => Helper_Favorite::get_available_answers(2), 'movies' => Helper_Favorite::get_available_answers(3), 'foods' => Helper_Favorite::get_available_answers(4), 'colors' => Helper_Favorite::get_available_answers(5), 'animals' => Helper_Favorite::get_available_answers(6), 'sports' => Helper_Favorite::get_available_answers(7), 'video_games' => Helper_Favorite::get_available_answers(8), 'school_subjects' => Helper_Favorite::get_available_answers(9), 'seasons' => Helper_Favorite::get_available_answers(10), 'app' => Helper_Favorite::get_available_answers(11), 'book' => Helper_Favorite::get_available_answers(12)));
     $this->template->sidebar = Widget::factory()->add(Helper_Default::sidebar());
     if ($_POST) {
         $original_post = $_POST;
         $user = $this->user;
         $post = $user->validate_create_edit($_POST);
         if ($post->check()) {
             /* If the user wants to change the display name */
             if ($user->display_name != $post['display_name']) {
                 /* Set new display name if it isn't in use already */
                 if (Helper_Account::display_name_exists($post['display_name'])) {
                     Message::set(MESSAGE::ERROR, array('Display name already in use!', 'The display name you entered (' . $post['display_name'] . ') is already in use, please choose another one. Reverting to your previous display name (' . $user->display_name . ').'));
                 } else {
                     //$user->display_name = $post['display_name']; //as of 3.0 user may no longer update their display name.
                 }
             }
             $user->gender = $post['gender'];
             $user->vanity_url = $post['vanity_url'];
             $user->newsletter = $post['newsletter'];
             $user->save();
             $this->add_favorites($original_post);
             Message::set(Message::SUCCESS, 'Successfully edited!');
             Request::instance()->redirect('profile');
         } else {
             Message::set(Message::ERROR, $post->errors('user'));
         }
     }
 }
Exemplo n.º 2
0
 /**
  * Edit a user
  *
  * @return void
  * @author Will Robertson
  */
 public function action_edit($user_id = null)
 {
     $user = ORM::factory('user')->where('id', '=', $user_id)->find();
     /* Load the view. */
     $this->template->styles = array('public/js/vendor/datepicker/jquery-ui-1.8.5.custom.css' => 'screen');
     $this->template->scripts = array('public/js/vendor/jquery-ui-1.8.5.custom.min.js', 'public/js/vendor/word-count.js', 'public/js/account/vanity_preview.js');
     $content = $this->template->content = View::factory('admin/users/edit');
     $this->template->sidebar = Widget::factory()->add(Helper_Default::admin_sidebar());
     if ($user->loaded()) {
         $this->template->content->set(array('user' => $user));
     } else {
         Message::set(Message::NOTICE, "This user does not exist.");
         Request::instance()->redirect('admin/users');
     }
     if ($_POST) {
         /* Do they want to make this user an admin? */
         $set_admin_user = Arr::get($_POST, 'admin_user');
         /* Do they want to make this user a NG Staff member? */
         $set_ngstaff_user = Arr::get($_POST, 'ngstaff_user');
         /* Load the validation rules, filters etc.*/
         $post = $user->validate_update($_POST);
         /* If the post data validates using the rules setup in the user model. */
         if ($post->check()) {
             $admin_role = new Model_Role(array('name' => 'admin'));
             $ngstaff_role = new Model_Role(array('name' => 'ngstaff'));
             if ($set_admin_user) {
                 if (!Helper_Account::is_admin($user)) {
                     $user->add('roles', $admin_role);
                 }
             } else {
                 $user->remove('roles', $admin_role);
             }
             if ($set_ngstaff_user) {
                 if (!Helper_Account::is_ngstaff($user)) {
                     $user->add('roles', $ngstaff_role);
                 }
             } else {
                 $user->remove('roles', $ngstaff_role);
             }
             /* Affects the sanitized vars to the user object. */
             $user->email = $post['email'];
             $user->username = $post['username'];
             /* If the user wants to change the display name */
             if ($user->display_name != $post['display_name']) {
                 /* Set new display name if it isn't in use already */
                 if (Helper_Account::display_name_exists($post['display_name'])) {
                     echo 'problem';
                     Message::set(MESSAGE::ERROR, array('Display name already in use!', 'The display name you entered (' . $post['display_name'] . ') is already in use, please choose another one. Reverting to your previous display name (' . $user->display_name . ').'));
                 } else {
                     $user->display_name = $post['display_name'];
                 }
             }
             $user->birthdate = $post['birthdate'];
             $user->gender = $post['gender'];
             $user->vanity_url = $post['vanity_url'];
             /* Create the account. */
             $user->save();
             /* Redirect to users edit page. */
             Request::instance()->redirect('admin/users');
         } else {
             /* Get errors for display in view. */
             Message::set(Message::ERROR, $post->errors("user"));
         }
     }
 }