public function registraceAction() { if (!isset($this->logged->nick)) { $form = new RegisterForm(); $request = $this->getRequest(); if ($request->isPost()) { $register = new User(); $register->setInputs(['nick', 'heslo', 'email']); $form->setInputFilter($register->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { if ($form->getData()['heslo'] == $form->getData()['heslo_repeat']) { $table = $this->getUserTable(); $data = array('nick' => $form->getData()['nick'], 'heslo' => $form->getData()['heslo'], 'email' => $form->getData()['email']); $register->exchangeArray($data); $bool = $table->register($register); if ($bool === true) { $this->logged->nick = $register->nick; $this->logged->admin = 0; // redirect } else { if ($bool == 'nick') { $error = $this->msg->get('login.error.nickUsed', ['nick' => $data['nick']]); } else { if ($bool == 'email') { $error = $this->msg->get('login.error.emailUsed', ['email' => $data['email']]); } else { $error = $this->msg->get('other.error.unknownError'); } } } } else { $error = $this->msg->get('login.error.passwordsNotMatching'); } } else { $error = $this->msg->get('form.error.invalidData'); } } return array('form' => $form, 'error' => isset($error) ? $error : null, 'menu' => new Menu($this->url()->fromRoute("application"), array("login", "registrace", "obnovit" => "zapomenuté heslo"), "registrace")); } else { return $this->redirect()->toRoute('application/default', array('controller' => 'profil')); } }
/** * Cria o registro e gera todas as dependĂȘncias do mesmo. * * @return Register|bool */ public function save() { if ($this->_form && $this->_job && $this->_isValid === true) { $recruiterValidator = new RecruiterValidator(); $recruiterValidator->setData($this->_form->getData(), true); $recruiterValidator->setRules($this->_job->getRules()); $recruiterValidator->setDefaultRule($this->_job->getDefaultRule()); $result = $recruiterValidator->run(); if ($result !== false) { $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $jobQuestionRepository = $objectManager->getRepository('\\Application\\Entity\\JobQuestion'); $jobRuleRepository = $objectManager->getRepository('\\Application\\Entity\\JobRule'); $registerRepository = $objectManager->getRepository('\\Application\\Entity\\Register'); $data = (array) $this->_form->getData(); $register = new Register(); $register->job = $this->_job; $register->name = $data['name']; $register->email = $data['email']; $answersData = $recruiterValidator->prepareData(); $rulesData = $recruiterValidator->prepareRules($result->rules); $objectManager->persist($register); foreach ($answersData as $aData) { $registerQuestion = new RegisterQuestion(); $registerQuestion->register = $register; $registerQuestion->questions = $jobQuestionRepository->find($aData['job_question_id']); $registerQuestion->value = $aData['value']; $objectManager->persist($registerQuestion); } foreach ($rulesData as $rData) { $registerRule = new RegisterJobRule(); $registerRule->register = $register; $registerRule->rules = $jobRuleRepository->find($rData['job_rule_id']); $objectManager->persist($registerRule); } $objectManager->flush(); $registerRepository->clear(); $register = $registerRepository->find($register->id); $this->prepareEmails($register); return $register; } } return false; }