Source of file FlexiFormBasicHandler.php
Size: 3,051 Bytes - Last Modified: 2021-12-24T06:34:15+00:00
/var/www/docs.ssmods.com/process/src/code/model/flexiformhandlers/FlexiFormBasicHandler.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php class FlexiFormBasicHandler extends FlexiFormHandler { private static $handler_label = 'Basic Handler'; private static $handler_description = 'Submissions are stored. Presents a thank you message.'; // references the current submission (for use by child classes) protected $submission = null; /** * Define setting fields configurable by forms using this handler. * Limited to $db fields ATM, component name MUST match $db component name. * <component> : <setting classname> * * @var Array */ private static $handler_settings = array( 'SuccessMessage' => 'FlexiFormHTMLTextHandlerSetting' ); private static $db = array( 'SuccessMessage' => 'HTMLText' ); public function populateDefaults() { $this->SuccessMessage = '<p>' . _t("FlexiFormBasicHandler.DEFAULT_SUCCESS_MESSAGE", "Thank You.") . '</p>'; return parent::populateDefaults(); } public function updateCMSFlexiTabs(TabSet $fields, TabSet $settings_tab, $flexi) { parent::updateCMSFlexiTabs($fields, $settings_tab, $flexi); // Submissions ////////////// $submissions_tab = new Tab('Submissions'); $fields->insertBefore($submissions_tab, 'Settings'); $submissions_tab->push( new GridField('FlexiFormSubmissions', 'Submissions', $this->getFormSubmissions($flexi), new GridFieldConfig_FlexiFormSubmission($flexi))); } public function getFormSubmissions($flexi) { return FlexiFormSubmission::get()->filter( array( 'FlexiFormID' => $flexi->ID, 'FlexiFormClass' => $flexi->class )); } // Submission Handling ////////////////////// public function onSubmit(Array $data, FlexiForm $form, SS_HTTPRequest $request, DataObject $flexi) { // persist the submission $this->saveSubmission($data, $flexi); return true; } public function onSuccess(FlexiForm $form, DataObject $flexi) { return $flexi->FlexiFormSetting('SuccessMessage'); } // Utility Methods ////////////////// protected function saveSubmission($data, $flexi) { $submission = new FlexiFormSubmission(); $submission->FlexiFormID = $flexi->ID; $submission->FlexiFormClass = $flexi->class; $submission->write(); $this->submission = $submission; $values = $submission->Values(); foreach ($flexi->FlexiFormFields() as $field) { if (isset($data[$field->SafeName()])) { $value = new FlexiFormSubmissionValue(); $value->FormFieldID = $field->ID; $value->FormFieldClass = $field->class; $value->Name = $field->getName(); $value->Value = (is_array($data[$field->SafeName()])) ? implode(",", $data[$field->SafeName()]) : $data[$field->SafeName()]; $values->add($value); } } } } |