Frontend\Modules\Profiles\Actions\Register::validateForm PHP Method

validateForm() private method

Validate the form
private validateForm ( )
    private function validateForm()
    {
        // is the form submitted
        if ($this->frm->isSubmitted()) {
            // get fields
            $txtDisplayName = $this->frm->getField('display_name');
            $txtEmail = $this->frm->getField('email');
            $txtPassword = $this->frm->getField('password');
            // check email
            if ($txtEmail->isFilled(FL::getError('EmailIsRequired'))) {
                // valid email?
                if ($txtEmail->isEmail(FL::getError('EmailIsInvalid'))) {
                    // email already exists?
                    if (FrontendProfilesModel::existsByEmail($txtEmail->getValue())) {
                        // set error
                        $txtEmail->setError(FL::getError('EmailExists'));
                    }
                }
            }
            // check password
            $txtPassword->isFilled(FL::getError('PasswordIsRequired'));
            $txtDisplayName->isFilled(FL::getError('FieldIsRequired'));
            // no errors
            if ($this->frm->isCorrect()) {
                // init values
                $settings = array();
                $values = array();
                // generate salt
                $settings['salt'] = FrontendProfilesModel::getRandomString();
                $settings['language'] = LANGUAGE;
                // values
                $values['email'] = $txtEmail->getValue();
                $values['password'] = FrontendProfilesModel::getEncryptedString($txtPassword->getValue(), $settings['salt']);
                $values['status'] = 'inactive';
                $values['display_name'] = $txtDisplayName->getValue();
                $values['registered_on'] = FrontendModel::getUTCDate();
                $values['last_login'] = FrontendModel::getUTCDate(null, 0);
                /*
                 * Add a profile.
                 * We use a try-catch statement to catch errors when more users sign up simultaneously.
                 */
                try {
                    // insert profile
                    $profileId = FrontendProfilesModel::insert($values);
                    // use the profile id as url until we have an actual url
                    FrontendProfilesModel::update($profileId, array('url' => FrontendProfilesModel::getUrl($values['display_name'])));
                    // trigger event
                    FrontendModel::triggerEvent('Profiles', 'after_register', array('id' => $profileId));
                    // generate activation key
                    $settings['activation_key'] = FrontendProfilesModel::getEncryptedString($profileId . microtime(), $settings['salt']);
                    // set settings
                    FrontendProfilesModel::setSettings($profileId, $settings);
                    // login
                    FrontendProfilesAuthentication::login($profileId);
                    // activation URL
                    $mailValues['activationUrl'] = SITE_URL . FrontendNavigation::getURLForBlock('Profiles', 'Activate') . '/' . $settings['activation_key'];
                    // send email
                    $from = $this->get('fork.settings')->get('Core', 'mailer_from');
                    $replyTo = $this->get('fork.settings')->get('Core', 'mailer_reply_to');
                    $message = Message::newInstance(FL::getMessage('RegisterSubject'))->setFrom(array($from['email'] => $from['name']))->setTo(array($txtEmail->getValue() => ''))->setReplyTo(array($replyTo['email'] => $replyTo['name']))->parseHtml('/Profiles/Layout/Templates/Mails/Register.html.twig', $mailValues, true);
                    $this->get('mailer')->send($message);
                    // redirect
                    $this->redirect(SITE_URL . $this->URL->getQueryString() . '?sent=true');
                } catch (\Exception $e) {
                    // make sure RedirectExceptions get thrown
                    if ($e instanceof RedirectException) {
                        throw $e;
                    }
                    // when debugging we need to see the exceptions
                    if ($this->getContainer()->getParameter('kernel.debug')) {
                        throw $e;
                    }
                    // show error
                    $this->tpl->assign('registerHasFormError', true);
                }
            } else {
                $this->tpl->assign('registerHasFormError', true);
            }
        }
    }