core-bundle/src/Resources/contao/modules/ModulePassword.php
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 (strncmp(Input::get('token'), 'pw-', 3) === 0)
		{
			$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');
	}
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 (strncmp(Input::get('token'), 'pw-', 3) === 0)
		{
			$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');
	}
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 ( strncmp ( Input :: get ( 'token' ) , 'pw-' , 3 ) === 0 ) { $ 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' ) ; }
Generate the module
Generate the module