Files
api/services/nginx/app/objects/form_submissions_o.php
T
Jepp9350 ef6f009ad9 Add support for customer number in form submissions
Introduced a new `customer_number` property across the form handling codebase, enabling forms to store and manage customer numbers where applicable. Updated methods to handle this property, including sanitization, validation, and saving processes. Added a `beforeSave` method to set `customer_number` during form submission.
2025-03-24 11:35:06 +01:00

94 lines
3.2 KiB
PHP

<?php
namespace objects;
use classes\db;
use classes\object_property;
use Exception;
use traits\db_object_t;
class form_submissions_o extends db
{
use db_object_t;
public object_property $form_identifier;
public object_property $data;
public object_property $user_id;
public object_property $customer_number;
public object_property $department_id;
public object_property $created_at;
public function structure(): void
{
$this->setTable('form_submissions');
}
/**
* Add a form submission object, and set this object to the new object
* @param string $form_identifier The form identifier
* @param array $data The form data
* @param int|null $user_id The user id (If applicable)
* @param int|null $customer_number The customer number (If applicable)
* @param int|null $department_id The department id (If applicable)
* @return void
* @throws Exception If the object was not created successfully
*/
public function add(string $form_identifier, array $data, ?int $user_id = null, ?int $department_id = null, ?int $customer_number = null): void
{
global /** @var db $db */
$db;
// Sanitize the input
$form_identifier = $db->escape_string($form_identifier);
$encoded_data = $db->escape_string(json_encode($data));
// Add the object
$tmp_arr = [
'form_identifier' => $form_identifier,
'data' => $encoded_data,
];
// Add the user id and department id if they are set
if (!empty($user_id)) {
$tmp_arr['user_id'] = (int)$user_id;
}
if (!empty($customer_number)) {
$tmp_arr['customer_number'] = (int)$customer_number;
}
if (!empty($department_id)) {
$tmp_arr['department_id'] = (int)$department_id;
}
$tmp_id = self::add_object($tmp_arr);
$this->id = $tmp_id;
self::getObjectProperties();
self::objectChanged();
}
public function getObjectProperties(): void
{
$this->form_identifier = new object_property($this->table, $this->id, 'form_identifier', 'string', false);
$this->data = new object_property($this->table, $this->id, 'data', 'string', false);
$this->user_id = new object_property($this->table, $this->id, 'user_id', 'int', false);
$this->customer_number = new object_property($this->table, $this->id, 'customer_number', 'int', false);
$this->department_id = new object_property($this->table, $this->id, 'department_id', 'int', false);
$this->created_at = new object_property($this->table, $this->id, 'created_at', 'string', false);
}
public function objectChanged(): void
{
//TODO: Add cache invalidation
}
public function asArray(): array
{
return [
'id' => (int)$this->id,
'form_identifier' => (string)$this->form_identifier->value(),
'data' => (string)$this->data->value(),
'user_id' => (int)$this->user_id->value(),
'customer_number' => (int)$this->customer_number->value(),
'department_id' => (int)$this->department_id->value(),
'created_at' => (string)$this->created_at->value(),
];
}
}