コード例 #1
0
 /**
  * @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;
 }
コード例 #2
0
 /**
  * @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));
 }
コード例 #3
0
 /**
  * {@inheritDoc}
  */
 public function setUserId($userId)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUserId', array($userId));
     return parent::setUserId($userId);
 }