Source of file MemberRegistrationForm.php
Size: 2,535 Bytes - Last Modified: 2021-12-24T06:34:52+00:00
/var/www/docs.ssmods.com/process/src/code/forms/MemberRegistrationForm.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | <?php class MemberRegistrationForm extends Form{ private static $allowed_actions = array( 'register' ); function __construct($controller,$name = "MemberRegistrationForm", $fields = null){ if(!$fields){ $restrictfields = array( Member::get_unique_identifier_field(),'FirstName','Surname' ); $fields = singleton('Member')->scaffoldFormFields(array( 'restrictFields' => $restrictfields, 'fieldClasses' => array( 'Email' => 'EmailField' ) )); } $fields->push(new ConfirmedPasswordField("Password")); $actions = new FieldList( $register = new FormAction('register',"Register") ); $validator = new MemberRegistration_Validator( Member::get_unique_identifier_field(), 'FirstName', 'Surname' ); parent::__construct($controller, $name, $fields, $actions, $validator); if(class_exists('SpamProtectorManager')) { $this->enableSpamProtection(); } $this->extend('updateMemberRegistrationForm'); } public function register($data, $form){ //log out existing user if($member = Member::currentUser()){ $member->logOut(); } $member = Member::create(); $form->saveInto($member); $member->write(); $this->extend('onRegister', $member); $member->logIn(); if($back = Session::get("BackURL")){ Session::clear("BackURL"); return $this->Controller()->redirect($back); } if($link = $member->getProfileLink()){ return $this->controller->redirect($link); } return $this->controller->redirect($this->controller->Link()); } } class MemberRegistration_Validator extends Member_Validator{ public function php($data) { $valid = parent::php($data); $identifierField = Member::config()->unique_identifier_field; $member = Member::get() ->filter($identifierField, $data[$identifierField]) ->first(); if(is_object($member) && $member->isInDB()) { $uniqueField = $this->form->Fields()->dataFieldByName($identifierField); $this->validationError( $uniqueField->id(), sprintf( _t( 'Member.VALIDATIONMEMBEREXISTS', 'A member already exists with the same %s' ), strtolower($identifierField) ), 'required' ); $valid = false; } // Execute the validators on the extensions if($this->extension_instances) { foreach($this->extension_instances as $extension) { if(method_exists($extension, 'hasMethod') && $extension->hasMethod('updatePHP')) { $valid &= $extension->updatePHP($data, $this->form); } } } return $valid; } } |