Source of file HelpdeskCreateTicketForm.php
Size: 3,250 Bytes - Last Modified: 2017-09-25T22:42:21+00:00
/var/www/docs.ssmods.com/process/src/code/forms/HelpdeskCreateTicketForm.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | <?php class HelpdeskCreateTicketForm extends Form { public function __construct(Controller $controller, $name) { $isLoggedIn = Member::currentUserID() ? true : false; $fields = new FieldList(array( HiddenField::create('PageID'), HeaderField::create('TicketHeader', _t('HelpdeskTicket.YOUR_TICKET', 'Your ticket')), TextField::create('Title'), TextareaField::create('Message') )); if(!$isLoggedIn){ $fields->unshift(PasswordField::create('Password')); $fields->unshift(TextField::create('Surname')); $fields->unshift(TextField::create('FirstName')); $fields->unshift(EmailField::create('Email')); $loginURL = Controller::curr()->LoginLink(Controller::curr()->CreateTicketLink()); $fields->unshift(LiteralField::create('CreateAccount', _t('HelpdeskTicket.NEED_AN_ACCOUNT_MESSAGE', 'You need an account with us to get support, you can register for one below or you can login <a href="{LoginURL}">here</a>', 'Message displayed when someone is not logged in', array( 'LoginURL' => $loginURL )))); $fields->unshift(HeaderField::create('CreateAccountHeader', _t('HelpdeskTicket.CREATE_ACCOUNT', 'Create an account'))); }else{ $fields->unshift(TextField::create('Name')->setReadonly(true)->setDisabled(true)); $fields->unshift(EmailField::create('Email')->setReadonly(true)->setDisabled(true)); $fields->unshift(HeaderField::create('CreateAccountHeader', _t('HelpdeskTicket.LOGGED_IN_AS', 'Logged in as'))); } $actions = new FieldList(array( FormAction::create('handle', _t('HelpdeskTicket.CREATE_TICKET', 'Create ticket')) )); $validator = new RequiredFields(array( 'Title', 'Message' )); if(!$isLoggedIn){ $validator->addRequiredField('Email'); $validator->addRequiredField('FirstName'); $validator->addRequiredField('Surname'); $validator->addRequiredField('Password'); } parent::__construct($controller, $name, $fields, $actions, $validator); if($this->hasExtension('FormSpamProtectionExtension')) { $this->enableSpamProtection(); } } public function handle($data, Form $form){ if(!Member::currentUserID()){ $memberData = array( 'Email' => $data['Email'], 'FirstName' => $data['FirstName'], 'Surname' => $data['Surname'], 'Password' => $data['Password'] ); $exisitingMember = Member::get()->filter('Email', $memberData['Email'])->first(); if($exisitingMember){ $this->sessionMessage(_t('HelpdeskTicket.EMAIL_EXISTS_ERROR', 'This email address is already in use'), 'bad'); Session::set("FormInfo.{$this->FormName()}.data", $data); return $this->controller->redirectBack(); } $member = new Member($memberData); $validationResult = $member->validate(); if(!$validationResult->valid()){ $this->sessionMessage($validationResult->message(), 'bad'); Session::set("FormInfo.{$this->FormName()}.data", $data); return $this->controller->redirectBack(); } $member->write(); $member->logIn(true); } $data['MemberID'] = Member::currentUserID(); $ticket = new HelpdeskTicket($data); $ticket->write(); $ticket->sendCreatedMail(); return $this->controller->redirect($ticket->Link()); } } |