public function editUserAction() { /** * Check permission */ if (false == $this->checkPermission('edit_user')) { $this->_forwardToNoPermissionPage(); return; } $id = $this->_getParam('id', false); $data = $this->_getParam('data', false); if (false == $id) { $this->_redirect('user/admin/user-manager'); } $objUser = new Models_User(); $objUserExp = new Models_UserExpand(); $errors = array(); /** * Get old user */ $oldUser = $objUser->getUserWithExpand($id); if (empty($oldUser)) { /** * User doesn't exsit */ $this->session->userMessage = array('success' => false, 'message' => Vi_Language::translate('User does NOT exist')); $this->_redirect('user/admin/user-manager#listofuser'); } if (false !== $data) { /** * Update new user */ $newUser = array('group_id' => $data['group_id'], 'username' => $data['username'], 'email' => $data['email'], 'full_name' => $data['full_name'], 'password' => $data['password'], 'repeat_password' => $data['repeat_password'], 'enabled' => $data['enabled']); $newUserExp = array('admin_note' => $data['admin_note']); /** * Check permission */ if ($oldUser['group_id'] != $newUser['group_id'] && false == $this->checkPermission('change_group')) { $newUser['group_id'] = $oldUser['group_id']; } $exclude = array(); if (null == @$newUser['password'] && null == @$newUser['repeat_password']) { $exclude[] = 'password'; unset($newUser['password']); unset($newUser['repeat_password']); } if ($newUser['email'] == $oldUser['email']) { $exclude[] = 'email'; unset($newUser['email']); } if ($newUser['username'] == $oldUser['username']) { $exclude[] = 'username'; unset($newUser['username']); } $errors = $objUser->validate($newUser, $exclude); if (true === $errors) { if (null != @$newUser['password']) { $newUser['password'] = md5($newUser['password']); unset($newUser['repeat_password']); } /** * TODO Read date format from language table */ try { $objUser->update($newUser, array('user_id=?' => $id)); $objUserExp->update($newUserExp, array('user_expand_id=?' => $oldUser['user_expand_id'])); /** * Set owner email for restaurant */ if (isset($newUser['email'])) { $objRes = new Models_Restaurant(); $objRes->update(array('owner_email' => $newUser['email']), array('user_id=?' => $id)); } if (isset($newUser['full_name'])) { $objRes = new Models_Restaurant(); $objRes->update(array('owner' => $newUser['full_name']), array('user_id=?' => $id)); } /** * Reload current login user */ $loggedUser = $this->session->backendUser; if ($oldUser['user_id'] == @$loggedUser['user_id']) { $this->session->backendUser = $objUser->getByUserId($oldUser['user_id'])->toArray(); } $this->_redirect('user/admin/user-manager'); } catch (Exception $e) { $errors = array('main' => Vi_Language::translate('Can not update user now')); } } } else { /** * Get current user */ $data = $oldUser; } /** * Prepare for template */ $this->view->errors = $errors; $this->view->data = $data; $this->view->headTitle(Vi_Language::translate('Edit user')); $this->view->menu = array('usergroup', 'edituser'); /** * Get all groups */ $objGroup = new Models_Group(); $this->view->allGroups = $objGroup->getAll(array('sorting ASC', 'group_id ASC'))->toArray(); // /** // * Get all countries // */ // $objCountry = new Models_Country(); // $this->view->allCountries = $objCountry->getAll(array('sorting ASC', 'country_id ASC'))->toArray(); }