From 00fec18b54c1403b166562726ce88f15af95d7f0 Mon Sep 17 00:00:00 2001 From: Kurund Jalmi Date: Wed, 9 Aug 2023 19:55:54 +0100 Subject: [PATCH] add status column to afform submissions table --- .../core/CRM/Afform/DAO/AfformSubmission.php | 68 +++++++++++++- ext/afform/core/CRM/Afform/Upgrader.php | 11 +++ ext/afform/core/afform.civix.php | 4 +- ext/afform/core/info.xml | 4 +- .../managed/AfformSubmissionStatus.mgd.php | 88 +++++++++++++++++++ ext/afform/core/sql/auto_install.sql | 1 + .../schema/CRM/Afform/AfformSubmission.xml | 16 ++++ 7 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 ext/afform/core/managed/AfformSubmissionStatus.mgd.php diff --git a/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php b/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php index 1f951815e3..8b922ae2b2 100644 --- a/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php +++ b/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php @@ -6,7 +6,7 @@ * * Generated from org.civicrm.afform/xml/schema/CRM/Afform/AfformSubmission.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:dd7d40185eee992de1528f12c924a8dd) + * (GenCodeChecksum:902b3352193d9030fdf583f4a1f2204f) */ use CRM_Afform_ExtensionUtil as E; @@ -72,6 +72,15 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { */ public $submission_date; + /** + * fk to Afform Submission Status options in civicrm_option_values + * + * @var int|string + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $status_id; + /** * Class constructor. */ @@ -119,6 +128,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'title' => E::ts('Form Submission ID'), 'description' => E::ts('Unique Submission ID'), 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.id', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -134,6 +149,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'name' => 'contact_id', 'type' => CRM_Utils_Type::T_INT, 'title' => E::ts('User Contact ID'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.contact_id', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -152,6 +173,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'description' => E::ts('Name of submitted afform'), 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.afform_name', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -170,6 +197,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_TEXT, 'title' => E::ts('Submission Data'), 'description' => E::ts('IDs of saved entities'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.data', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -182,6 +215,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'name' => 'submission_date', 'type' => CRM_Utils_Type::T_TIMESTAMP, 'title' => E::ts('Submission Date/Time'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.submission_date', 'default' => 'CURRENT_TIMESTAMP', 'table_name' => 'civicrm_afform_submission', @@ -194,6 +233,33 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'readonly' => TRUE, 'add' => '5.41', ], + 'status_id' => [ + 'name' => 'status_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('Submission Status'), + 'description' => E::ts('fk to Afform Submission Status options in civicrm_option_values'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_afform_submission.status_id', + 'default' => '1', + 'table_name' => 'civicrm_afform_submission', + 'entity' => 'AfformSubmission', + 'bao' => 'CRM_Afform_DAO_AfformSubmission', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'optionGroupName' => 'afform_submission_status', + 'optionEditPath' => 'civicrm/admin/options/afform_submission_status', + ], + 'add' => '5.66', + ], ]; CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); } diff --git a/ext/afform/core/CRM/Afform/Upgrader.php b/ext/afform/core/CRM/Afform/Upgrader.php index 4859a2981a..3f4011555b 100644 --- a/ext/afform/core/CRM/Afform/Upgrader.php +++ b/ext/afform/core/CRM/Afform/Upgrader.php @@ -88,4 +88,15 @@ class CRM_Afform_Upgrader extends CRM_Extension_Upgrader_Base { return TRUE; } + /** + * Upgrade 1003 - add status column to afform submissions + * @see https://lab.civicrm.org/dev/core/-/issues/4232 + * @return bool + */ + public function upgrade_1003(): bool { + $this->ctx->log->info('Applying update 1003 - add status column to afform submissions.'); + $this->addColumn('civicrm_afform_submission', 'status_id', "INT UNSIGNED NOT NULL DEFAULT 1 COMMENT 'fk to Afform Submission Status options in civicrm_option_values'"); + return TRUE; + } + } diff --git a/ext/afform/core/afform.civix.php b/ext/afform/core/afform.civix.php index 9519d92694..805881b5d5 100644 --- a/ext/afform/core/afform.civix.php +++ b/ext/afform/core/afform.civix.php @@ -133,8 +133,8 @@ function _afform_civix_insert_navigation_menu(&$menu, $path, $item) { if (empty($path)) { $menu[] = [ 'attributes' => array_merge([ - 'label' => CRM_Utils_Array::value('name', $item), - 'active' => 1, + 'label' => $item['name'] ?? NULL, + 'active' => 1, ], $item), ]; return TRUE; diff --git a/ext/afform/core/info.xml b/ext/afform/core/info.xml index 427551bbc9..8b165b68bc 100644 --- a/ext/afform/core/info.xml +++ b/ext/afform/core/info.xml @@ -21,7 +21,7 @@ The Form Core extension is required to use any dynamic form. To administer and edit forms, also install the FormBuilder extension. CRM/Afform - 23.02.0 + 23.02.1 @@ -34,7 +34,7 @@ ang-php@1.0.0 mgd-php@1.0.0 scan-classes@1.0.0 - smarty-v2@1.0.0 + smarty-v2@1.0.1 entity-types-php@1.0.0 CRM_Afform_Upgrader diff --git a/ext/afform/core/managed/AfformSubmissionStatus.mgd.php b/ext/afform/core/managed/AfformSubmissionStatus.mgd.php new file mode 100644 index 0000000000..0afae293c0 --- /dev/null +++ b/ext/afform/core/managed/AfformSubmissionStatus.mgd.php @@ -0,0 +1,88 @@ + 'AfformSubmissionStatus', + 'entity' => 'OptionGroup', + 'update' => 'always', + 'cleanup' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'afform_submission_status', + 'title' => E::ts('Afform Submission Status'), + 'description' => NULL, + 'data_type' => NULL, + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'is_locked' => FALSE, + 'option_value_fields' => [ + 'name', + 'label', + 'icon', + 'description', + ], + ], + 'match' => ['name'], + ], + ], + [ + 'name' => 'AfformSubmissionStatus:Processed', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_submission_status', + 'name' => 'Processed', + 'value' => 1, + 'label' => E::ts('Processed'), + 'grouping' => NULL, + 'filter' => 0, + 'is_default' => FALSE, + 'description' => NULL, + 'is_optgroup' => FALSE, + 'is_reserved' => FALSE, + 'is_active' => TRUE, + 'component_id' => NULL, + 'domain_id' => NULL, + 'visibility_id' => NULL, + 'icon' => 'fa-check', + 'color' => NULL, + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformSubmissionStatus:Pending', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_submission_status', + 'name' => 'Pending', + 'value' => 2, + 'label' => E::ts('Pending'), + 'grouping' => NULL, + 'filter' => 0, + 'is_default' => FALSE, + 'description' => NULL, + 'is_optgroup' => FALSE, + 'is_reserved' => FALSE, + 'is_active' => TRUE, + 'component_id' => NULL, + 'domain_id' => NULL, + 'visibility_id' => NULL, + 'icon' => 'fa-exclamation', + 'color' => NULL, + ], + 'match' => ['option_group_id', 'name'], + ], + ], +]; diff --git a/ext/afform/core/sql/auto_install.sql b/ext/afform/core/sql/auto_install.sql index e18f3df3a9..44103e8398 100644 --- a/ext/afform/core/sql/auto_install.sql +++ b/ext/afform/core/sql/auto_install.sql @@ -39,6 +39,7 @@ CREATE TABLE `civicrm_afform_submission` ( `afform_name` varchar(255) COMMENT 'Name of submitted afform', `data` text COMMENT 'IDs of saved entities', `submission_date` timestamp DEFAULT CURRENT_TIMESTAMP, + `status_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'fk to Afform Submission Status options in civicrm_option_values', PRIMARY KEY (`id`), CONSTRAINT FK_civicrm_afform_submission_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL ) diff --git a/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml b/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml index 34f064f268..655f1699ec 100644 --- a/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml +++ b/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml @@ -76,4 +76,20 @@ 5.41 + + status_id + Submission Status + int unsigned + true + + Select + + + afform_submission_status + + fk to Afform Submission Status options in civicrm_option_values + 1 + 5.66 + + -- 2.25.1