Frontend\Modules\Profiles\Actions\Settings::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');
            $txtFirstName = $this->frm->getField('first_name');
            $txtLastName = $this->frm->getField('last_name');
            $txtCity = $this->frm->getField('city');
            $ddmCountry = $this->frm->getField('country');
            $ddmGender = $this->frm->getField('gender');
            $ddmDay = $this->frm->getField('day');
            $ddmMonth = $this->frm->getField('month');
            $ddmYear = $this->frm->getField('year');
            // get number of display name changes
            $nameChanges = (int) FrontendProfilesModel::getSetting($this->profile->getId(), 'display_name_changes');
            // has there been a valid display name change request?
            if ($this->profile->getDisplayName() !== $txtDisplayName->getValue() && $nameChanges <= FrontendProfilesModel::MAX_DISPLAY_NAME_CHANGES) {
                // display name filled in?
                if ($txtDisplayName->isFilled(FL::getError('FieldIsRequired'))) {
                    // display name exists?
                    if (FrontendProfilesModel::existsDisplayName($txtDisplayName->getValue(), $this->profile->getId())) {
                        // set error
                        $txtDisplayName->addError(FL::getError('DisplayNameExists'));
                    }
                }
            }
            // birthdate is not required but if one is filled we need all
            if ($ddmMonth->isFilled() || $ddmDay->isFilled() || $ddmYear->isFilled()) {
                // valid birth date?
                if (!checkdate($ddmMonth->getValue(), $ddmDay->getValue(), $ddmYear->getValue())) {
                    // set error
                    $ddmYear->addError(FL::getError('DateIsInvalid'));
                }
            }
            // validate avatar when given
            $this->frm->getField('avatar')->isFilled();
            // no errors
            if ($this->frm->isCorrect()) {
                // init
                $values = array();
                $settings = array();
                // has there been a valid display name change request?
                if ($this->profile->getDisplayName() !== $txtDisplayName->getValue() && $nameChanges <= FrontendProfilesModel::MAX_DISPLAY_NAME_CHANGES) {
                    // get display name value
                    $values['display_name'] = $txtDisplayName->getValue();
                    // update url based on the new display name
                    $values['url'] = FrontendProfilesModel::getUrl($txtDisplayName->getValue(), $this->profile->getId());
                    // update display name count
                    $settings['display_name_changes'] = $nameChanges + 1;
                }
                // update values
                if (!empty($values)) {
                    FrontendProfilesModel::update($this->profile->getId(), $values);
                }
                // build settings
                $settings['first_name'] = $txtFirstName->getValue();
                $settings['last_name'] = $txtLastName->getValue();
                $settings['city'] = $txtCity->getValue();
                $settings['country'] = $ddmCountry->getValue();
                $settings['gender'] = $ddmGender->getValue();
                // birthday is filled in
                if ($ddmYear->isFilled()) {
                    // mysql format
                    $settings['birth_date'] = $ddmYear->getValue() . '-';
                    $settings['birth_date'] .= str_pad($ddmMonth->getValue(), 2, '0', STR_PAD_LEFT) . '-';
                    $settings['birth_date'] .= str_pad($ddmDay->getValue(), 2, '0', STR_PAD_LEFT);
                } else {
                    // not filled in
                    $settings['birth_date'] = null;
                }
                // avatar
                $settings['avatar'] = $this->profile->getSetting('avatar');
                // create new filename
                if ($this->frm->getField('avatar')->isFilled()) {
                    // field value
                    $settings['avatar'] = \SpoonFilter::urlise($this->profile->getDisplayName()) . '.' . $this->frm->getField('avatar')->getExtension();
                    // move the file
                    $this->frm->getField('avatar')->generateThumbnails(FRONTEND_FILES_PATH . '/Profiles/Avatars/', $settings['avatar']);
                }
                // save settings
                $this->profile->setSettings($settings);
                // trigger event
                FrontendModel::triggerEvent('Profiles', 'after_saved_settings', array('id' => $this->profile->getId()));
                // redirect
                $this->redirect(SITE_URL . FrontendNavigation::getURLForBlock('Profiles', 'Settings') . '?sent=true');
            } else {
                $this->tpl->assign('updateSettingsHasFormError', true);
            }
        }
    }