/**
  * 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;
 }
Example #2
0
 /**
  * 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('&laquo;' . $user->getFullName() . '&raquo; ' . $this->translate('SAVE_SUCCESS'), 'success');
             $this->redirect()->toUrl('/admin/user');
         }
         return $this->setLayoutMessages($form->getMessages(), 'error');
     }
     return false;
 }