/** * This is common function used by add and edit actions (to avoid code duplication). * * @param Administrator|null $administrator * * @return false|object */ private function initForm(Administrator $administrator = null) { if (!$administrator instanceof Administrator) { $administrator = new Administrator([]); } /* * @var AdministratorForm */ $form = $this->administratorForm; $form->bind($administrator); $this->getView()->setVariable('form', $form); /** @var \Zend\Http\Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $form->setInputFilter($form->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $formData = $form->getData(); $userId = $formData->getUser(); $adminExist = $this->administratorTable->queryBuilder()->getEntityManager()->createQuery('SELECT a.user, u.name, u.admin FROM SD\\Admin\\Entity\\Administrator AS a LEFT JOIN SD\\Admin\\Entity\\User AS u WITH a.user=u.id WHERE u.id = :userId')->setParameter('userId', $userId)->getResult(); $user = $this->userTable->getUser($userId); if (!isset($adminExist[0])) { $user->setAdmin(1); $this->userTable->saveUser($user); $this->administratorTable->saveAdministrator($administrator); return $this->setLayoutMessages('«' . $user->getName() . '» ' . $this->translate('SAVE_SUCCESS'), 'success'); } return $this->setLayoutMessages($user->getName() . $this->translate('ALREADY_ADMIN'), 'info'); } return $this->setLayoutMessages($form->getMessages(), 'error'); } return false; }
/** * This is common function used by add and edit actions (to avoid code duplication). * * @param User|null $user * * @return false|object */ private function initForm(User $user = null) { if (!$user instanceof User) { throw new AuthorizationException($this->translate('ERROR_AUTHORIZATION')); } $form = $this->userForm; $form->bind($user); $this->getView()->setVariable('form', $form); /** @var \Zend\Http\Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $form->setInputFilter($form->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $formData = $form->getData(); // check for existing email $existingEmail = $this->userTable->queryBuilder()->select(['u'])->from('SD\\Admin\\Entity\\User', 'u')->where('u.email = :email')->setParameter(':email', (string) $formData->getEmail())->getQuery()->getResult(); if (count($existingEmail) > 1) { return $this->setLayoutMessages($this->translate('EMAIL_EXIST') . ' <b>' . $formData->getEmail() . '</b> ' . $this->translate('ALREADY_EXIST'), 'info'); } $this->userTable->saveUser($user); $this->setLayoutMessages('«' . $user->getFullName() . '» ' . $this->translate('SAVE_SUCCESS'), 'success'); $this->redirect()->toUrl('/admin/user'); } return $this->setLayoutMessages($form->getMessages(), 'error'); } return false; }