Source of file AccountDetailsForm.php
Size: 2,120 Bytes - Last Modified: 2020-05-30T11:30:26+00:00
/var/www/docs.ssmods.com/process/src/code/forms/AccountDetailsForm.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | <?php class AccountDetailsForm extends Form { /** * AccountDetailsForm constructor. * @param Controller $controller */ public function __construct(Controller $controller) { //Current member $member = Member::currentUser(); //Form fields $fields = $member->getMemberFormFields(); if($hiddenFields = Member::config()->hidden_fields_accountform){ $fields->removeByName($hiddenFields); } //Password field: do not require current password because social logins do not have a password $passwordField = $fields->dataFieldByName('Password'); if($passwordField && $passwordField->class == 'ConfirmedPasswordField'){ $passwordField->setRequireExistingPassword(false); } //Form actions $actions = new FieldList(array( FormAction::create('handle', _t('AccountDetailsForm.SAVE', 'Save')) )); //Validator $validator = $member->getValidator(); //Construct parent::__construct($controller, 'AccountDetailsForm', $fields, $actions, $validator); //Load data $this->loadDataFrom($member); } /** * Handle form post * @param $data * @param Form $form * @return bool|SS_HTTPResponse */ public function handle($data, Form $form) { //Current member $member = Member::currentUser(); //Password check if (array_key_exists('Password', $data) && array_key_exists('_Password', $data['Password']) && $data['Password']['_Password'] != '') { $data['Password'] = $data['Password']['_Password']; } else { unset($data['Password']); } //Update member $member->update($data); //Validate $validationResult = $member->validate(); if (!$validationResult->valid()) { $this->sessionMessage($validationResult->message(), 'bad'); return $this->controller->redirectBack(); } //Write member $member->write(); //Result $this->sessionMessage(_t('AccountDetailsForm.SAVE_SUCCESS_MESSAGE', 'Your details are saved successful'), 'success'); return $this->controller->redirectBack(); } } |