Source of file CustomFormPageSubmission.php
Size: 2,458 Bytes - Last Modified: 2021-12-23T10:10:55+00:00
/var/www/docs.ssmods.com/process/src/code/CustomFormPageSubmission.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?php class CustomFormPageSubmission extends \SilverStripe\ORM\DataObject { private static $db = [ 'SubmittedData' => 'Text', 'SendToEmail' => 'Varchar(500)', 'IsSended' => 'Boolean', ]; private static $summary_fields = [ 'Created', 'IsSended', 'SendToEmail', 'ListOfSubmittedData', ]; private static $casting = array( 'ListOfSubmittedData' => 'HTMLText', ); private static $has_one = [ 'Page' => \SilverStripe\CMS\Model\SiteTree::class, ]; private static $belongs_to = [ 'Page' => \SilverStripe\CMS\Model\SiteTree::class, ]; private static $default_sort = "\"ID\" DESC"; public function addAllowedFormData($data) { #{{ Captcha | | Recaptcha }} $excluded = $this->config()->excludeParameters ? $this->config()->excludeParameters : []; $allowedKeys = $this->Page()->formFieldsFromDescription()['keys']; $filteredData = []; foreach ($allowedKeys as $key) { if (!in_array($key, $excluded)) { $filteredData[$key] = $data[$key] ?? null; } } $this->SerializeData($filteredData); } public function SerializeData($data) { $this->SubmittedData = json_encode($data, JSON_PRETTY_PRINT); } public function DeserializeData() { if ($this->SubmittedData) { return json_decode($this->SubmittedData, true); } else { return null; } } public function DataAsList() { $data = \SilverStripe\ORM\ArrayList::create(); if ($this->SubmittedData) { foreach ($this->DeserializeData() as $key => $value) { $data->push(\SilverStripe\View\ArrayData::create(['Key' => $key, 'Value' => $value])); } } return $data; } public function ListOfSubmittedData() { $list = []; if ($data = $this->DeserializeData()) { foreach ($data as $key => $value) { $list[] = "<li><strong>" . $key . ": </strong><code>" . $value . "</code></li>"; } } $html = \SilverStripe\ORM\FieldType\DBHTMLText::create(); $html->setValue("<ul>" . join($list, "\n") . "</ul>"); return $html; } public function Data() { return \SilverStripe\View\ArrayData::create($this->DeserializeData()); } } |