Contao\ModulePassword::compile PHP Method

compile() protected method

Generate the module
protected compile ( )
    protected function compile()
    {
        /** @var PageModel $objPage */
        global $objPage;
        $GLOBALS['TL_LANGUAGE'] = $objPage->language;
        \System::loadLanguageFile('tl_member');
        $this->loadDataContainer('tl_member');
        // Set new password
        if (strlen(\Input::get('token'))) {
            $this->setNewPassword();
            return;
        }
        // Username widget
        if (!$this->reg_skipName) {
            $arrFields['username'] = $GLOBALS['TL_DCA']['tl_member']['fields']['username'];
            $arrFields['username']['name'] = 'username';
        }
        // E-mail widget
        $arrFields['email'] = $GLOBALS['TL_DCA']['tl_member']['fields']['email'];
        $arrFields['email']['name'] = 'email';
        // Captcha widget
        if (!$this->disableCaptcha) {
            $arrFields['captcha'] = array('name' => 'lost_password', 'label' => $GLOBALS['TL_LANG']['MSC']['securityQuestion'], 'inputType' => 'captcha', 'eval' => array('mandatory' => true));
        }
        $row = 0;
        $strFields = '';
        $doNotSubmit = false;
        $strFormId = 'tl_lost_password_' . $this->id;
        // Initialize the widgets
        foreach ($arrFields as $arrField) {
            /** @var Widget $strClass */
            $strClass = $GLOBALS['TL_FFL'][$arrField['inputType']];
            // Continue if the class is not defined
            if (!class_exists($strClass)) {
                continue;
            }
            $arrField['eval']['required'] = $arrField['eval']['mandatory'];
            /** @var Widget $objWidget */
            $objWidget = new $strClass($strClass::getAttributesFromDca($arrField, $arrField['name']));
            $objWidget->storeValues = true;
            $objWidget->rowClass = 'row_' . $row . ($row == 0 ? ' row_first' : '') . ($row % 2 == 0 ? ' even' : ' odd');
            ++$row;
            // Validate the widget
            if (\Input::post('FORM_SUBMIT') == $strFormId) {
                $objWidget->validate();
                if ($objWidget->hasErrors()) {
                    $doNotSubmit = true;
                }
            }
            $strFields .= $objWidget->parse();
        }
        $this->Template->fields = $strFields;
        $this->Template->hasError = $doNotSubmit;
        // Look for an account and send the password link
        if (\Input::post('FORM_SUBMIT') == $strFormId && !$doNotSubmit) {
            if ($this->reg_skipName) {
                $objMember = \MemberModel::findActiveByEmailAndUsername(\Input::post('email', true), null);
            } else {
                $objMember = \MemberModel::findActiveByEmailAndUsername(\Input::post('email', true), \Input::post('username'));
            }
            if ($objMember === null) {
                sleep(2);
                // Wait 2 seconds while brute forcing :)
                $this->Template->error = $GLOBALS['TL_LANG']['MSC']['accountNotFound'];
            } else {
                $this->sendPasswordLink($objMember);
            }
        }
        $this->Template->formId = $strFormId;
        $this->Template->username = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['username']);
        $this->Template->email = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['emailAddress']);
        $this->Template->action = \Environment::get('indexFreeRequest');
        $this->Template->slabel = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['requestPassword']);
        $this->Template->rowLast = 'row_' . $row . ' row_last' . ($row % 2 == 0 ? ' even' : ' odd');
    }