/** * Update user profile * * @param int * @access public * @return void */ public function action_update($id = false) { if (!is_numeric($id)) { \Response::redirect('admin/settings/user/list'); } // Cast user id param to int $id = (int) $id; // Redirect if user don't exists if (!\Sentry::user_exists($id)) { \Response::redirect('admin/settings/user/list'); } $user = \Sentry::user($id); $user_group = new \Sentry_User((int) $id); $user_group1 = $user_group->groups(); $user_group2 = current($user_group1); $user_data = array('id' => $user->get('id'), 'first_name' => $user->get('metadata.first_name'), 'last_name' => $user->get('metadata.last_name'), 'email' => $user->get('email'), 'username' => $user->get('username'), 'user_group' => $user_group2['name']); if (\Input::post()) { // Validate input parameters $val = \Validation::forge('admin_details_validation'); $val->add('first_name', 'First Name')->add_rule('required')->add_rule('min_length', 2)->add_rule('max_length', 255); $val->add('last_name', 'Last Name')->add_rule('required')->add_rule('min_length', 2)->add_rule('max_length', 255); $val->add('email', 'Email')->add_rule('required')->add_rule('valid_email'); $val->add('password', 'Password')->add_rule('min_length', 8); $val->add('confirm_password', 'Confirm Password')->add_rule('required_with', 'password')->add_rule('match_field', 'password'); $val->add('username', 'Username')->add_rule('required')->add_rule('unique', array('users', 'username', $id)); if ($val->run()) { // Get Input parameters $post_data = \Input::post(); try { $fields = array('username' => $post_data['username'], 'email' => $post_data['email'], 'password' => $post_data['password'], 'user_group' => $post_data['user_group'], 'metadata' => array('first_name' => $post_data['first_name'], 'last_name' => $post_data['last_name'])); if (empty($post_data['password'])) { unset($fields['password']); } $item = new \Sentry_User((int) $id); $update = $item->update($fields); // $item->remove_from_group((int)$fields['user_group']); // $item->add_to_group((int)$fields['user_group']); if ($update) { $user_groups = $item->groups(); if (!empty($user_groups)) { // Remove user from all other groups... foreach ($user_groups as $value) { $item->remove_from_group((int) $value['id']); } } $item = new \Sentry_User((int) $id); // ...and add it to selected one $item->add_to_group((int) $fields['user_group']); \Messages::success('User Details Successfully updated.'); \Response::redirect(\Uri::admin('current')); } else { \Messages::error('There was an error while trying to update User details.'); } } catch (Sentry\SentryException $e) { \Messages::error($e->get_message()); } } else { if ($val->error() != array()) { // Show validation errors \Messages::error('<strong>There was an error while trying to update User details</strong>'); foreach ($val->error() as $e) { \Messages::error($e->get_message()); } } } } \View::set_global('title', 'Update User Details'); \Theme::instance()->set_partial('content', $this->view_dir . 'update')->set('user_data', $user_data); }