/** * @return \Zend\Http\Response|ViewModel */ public function detailAction() { $id = (int) $this->params()->fromRoute('id', 0); $action = $this->params()->fromQuery('action', ''); $helper = new UserHelper($this->getDbAdapter()); $form = $helper->getForm($this->statusCombo()); $user = $this->userTable()->getUser($id); $isEdit = true; $hasImage = 'false'; $currentImage = ""; if (!$user) { $isEdit = false; $user = new User(); } else { $hasImage = is_null($user->getImage()) ? 'false' : 'true'; $currentImage = $user->getImage(); } $userRoles = $this->userRoleTable()->grantRoles($id); if ($action == 'clone') { $isEdit = false; $id = 0; $user->setUserId(0); } $form->bind($user); $request = $this->getRequest(); if ($request->isPost()) { $post_data = array_merge_recursive($request->getPost()->toArray(), $request->getFiles()->toArray()); if ($isEdit) { $post_data['password'] = $user->getPassword(); $post_data['confirmPassword'] = $user->getPassword(); } else { $post_data['password'] = $this->encryptPassword($post_data['password']); $post_data['confirmPassword'] = $this->encryptPassword($post_data['confirmPassword']); } $form->setData($post_data); $form->setInputFilter($helper->getInputFilter($isEdit ? $post_data['userId'] : 0, $post_data['userName'])); if ($form->isValid()) { $db = $this->userTable()->getAdapter(); $conn = $db->getDriver()->getConnection(); try { $image = $user->getImage(); if ($post_data['hasImage'] == 'false' && empty($image['name'])) { $user->setImage(null); } else { if ($post_data['hasImage'] == 'true' && empty($image['name']) && $isEdit) { $user->setImage($currentImage); } } $conn->beginTransaction(); $userId = $this->userTable()->saveUser($user)->getUserId(); $grant_roles = isset($post_data['grant_roles']) ? $post_data['grant_roles'] : array(); $this->userRoleTable()->saveRoles($userId, $grant_roles); $conn->commit(); $this->flashMessenger()->addSuccessMessage('Save successful'); } catch (\Exception $ex) { $conn->rollback(); $this->flashMessenger()->addErrorMessage($ex->getMessage()); } return $this->redirect()->toRoute('user'); } } return new ViewModel(array('form' => $form, 'id' => $id, 'isEdit' => $isEdit, 'hasImage' => $hasImage, 'roles' => $this->roleTreeview(), 'userRoles' => $userRoles)); }
/** * @param User $user * @return User */ public function saveUser(User $user) { $id = $user->getUserId(); $data = $user->getArrayCopy(); if (is_array($user->getImage())) { $data['image'] = $user->getImage()['tmp_name']; } if ($id > 0) { $this->update($data, array('userId' => $id)); } else { unset($data['userId']); $this->insert($data); } if (!$user->getUserId()) { $user->setUserId($this->getLastInsertValue()); } return $user; }