-
-
Notifications
You must be signed in to change notification settings - Fork 825
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Afform - Store submissions in a new database table
This adds the civicrm_afform_submission table and accompanying api entity, and writes a new submission record whenever a form is submitted.
- Loading branch information
Showing
13 changed files
with
825 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?php | ||
use CRM_Afform_ExtensionUtil as E; | ||
|
||
class CRM_Afform_BAO_AfformSubmission extends CRM_Afform_DAO_AfformSubmission { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,226 @@ | ||
<?php | ||
|
||
/** | ||
* @package CRM | ||
* @copyright CiviCRM LLC https://civicrm.org/licensing | ||
* | ||
* Generated from org.civicrm.afform/xml/schema/CRM/Afform/AfformSubmission.xml | ||
* DO NOT EDIT. Generated by CRM_Core_CodeGen | ||
* (GenCodeChecksum:d3a28982caad0eed10f7dbe8b41d9398) | ||
*/ | ||
use CRM_Afform_ExtensionUtil as E; | ||
|
||
/** | ||
* Database access object for the AfformSubmission entity. | ||
*/ | ||
class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { | ||
const EXT = E::LONG_NAME; | ||
const TABLE_ADDED = ''; | ||
|
||
/** | ||
* Static instance to hold the table name. | ||
* | ||
* @var string | ||
*/ | ||
public static $_tableName = 'civicrm_afform_submission'; | ||
|
||
/** | ||
* Should CiviCRM log any modifications to this table in the civicrm_log table. | ||
* | ||
* @var bool | ||
*/ | ||
public static $_log = TRUE; | ||
|
||
/** | ||
* Unique Submission ID | ||
* | ||
* @var int | ||
*/ | ||
public $id; | ||
|
||
/** | ||
* @var int | ||
*/ | ||
public $contact_id; | ||
|
||
/** | ||
* IDs of saved entities | ||
* | ||
* @var text | ||
*/ | ||
public $data; | ||
|
||
/** | ||
* @var timestamp | ||
*/ | ||
public $submission_date; | ||
|
||
/** | ||
* Class constructor. | ||
*/ | ||
public function __construct() { | ||
$this->__table = 'civicrm_afform_submission'; | ||
parent::__construct(); | ||
} | ||
|
||
/** | ||
* Returns localized title of this entity. | ||
* | ||
* @param bool $plural | ||
* Whether to return the plural version of the title. | ||
*/ | ||
public static function getEntityTitle($plural = FALSE) { | ||
return $plural ? E::ts('Form Builder Submissions') : E::ts('Form Builder Submission'); | ||
} | ||
|
||
/** | ||
* Returns foreign keys and entity references. | ||
* | ||
* @return array | ||
* [CRM_Core_Reference_Interface] | ||
*/ | ||
public static function getReferenceColumns() { | ||
if (!isset(Civi::$statics[__CLASS__]['links'])) { | ||
Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__); | ||
Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'contact_id', 'civicrm_contact', 'id'); | ||
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); | ||
} | ||
return Civi::$statics[__CLASS__]['links']; | ||
} | ||
|
||
/** | ||
* Returns all the column names of this table | ||
* | ||
* @return array | ||
*/ | ||
public static function &fields() { | ||
if (!isset(Civi::$statics[__CLASS__]['fields'])) { | ||
Civi::$statics[__CLASS__]['fields'] = [ | ||
'id' => [ | ||
'name' => 'id', | ||
'type' => CRM_Utils_Type::T_INT, | ||
'description' => E::ts('Unique Submission ID'), | ||
'required' => TRUE, | ||
'where' => 'civicrm_afform_submission.id', | ||
'table_name' => 'civicrm_afform_submission', | ||
'entity' => 'AfformSubmission', | ||
'bao' => 'CRM_Afform_DAO_AfformSubmission', | ||
'localizable' => 0, | ||
'html' => [ | ||
'type' => 'Number', | ||
], | ||
'readonly' => TRUE, | ||
'add' => '5.41', | ||
], | ||
'contact_id' => [ | ||
'name' => 'contact_id', | ||
'type' => CRM_Utils_Type::T_INT, | ||
'title' => E::ts('User Contact ID'), | ||
'where' => 'civicrm_afform_submission.contact_id', | ||
'table_name' => 'civicrm_afform_submission', | ||
'entity' => 'AfformSubmission', | ||
'bao' => 'CRM_Afform_DAO_AfformSubmission', | ||
'localizable' => 0, | ||
'FKClassName' => 'CRM_Contact_DAO_Contact', | ||
'add' => '5.41', | ||
], | ||
'data' => [ | ||
'name' => 'data', | ||
'type' => CRM_Utils_Type::T_TEXT, | ||
'title' => E::ts('Submission Data'), | ||
'description' => E::ts('IDs of saved entities'), | ||
'where' => 'civicrm_afform_submission.data', | ||
'table_name' => 'civicrm_afform_submission', | ||
'entity' => 'AfformSubmission', | ||
'bao' => 'CRM_Afform_DAO_AfformSubmission', | ||
'localizable' => 0, | ||
'serialize' => self::SERIALIZE_JSON, | ||
'add' => '5.41', | ||
], | ||
'submission_date' => [ | ||
'name' => 'submission_date', | ||
'type' => CRM_Utils_Type::T_TIMESTAMP, | ||
'title' => E::ts('Submission Date/Time'), | ||
'where' => 'civicrm_afform_submission.submission_date', | ||
'default' => 'CURRENT_TIMESTAMP', | ||
'table_name' => 'civicrm_afform_submission', | ||
'entity' => 'AfformSubmission', | ||
'bao' => 'CRM_Afform_DAO_AfformSubmission', | ||
'localizable' => 0, | ||
'readonly' => TRUE, | ||
'add' => '5.41', | ||
], | ||
]; | ||
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); | ||
} | ||
return Civi::$statics[__CLASS__]['fields']; | ||
} | ||
|
||
/** | ||
* Return a mapping from field-name to the corresponding key (as used in fields()). | ||
* | ||
* @return array | ||
* Array(string $name => string $uniqueName). | ||
*/ | ||
public static function &fieldKeys() { | ||
if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { | ||
Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); | ||
} | ||
return Civi::$statics[__CLASS__]['fieldKeys']; | ||
} | ||
|
||
/** | ||
* Returns the names of this table | ||
* | ||
* @return string | ||
*/ | ||
public static function getTableName() { | ||
return self::$_tableName; | ||
} | ||
|
||
/** | ||
* Returns if this table needs to be logged | ||
* | ||
* @return bool | ||
*/ | ||
public function getLog() { | ||
return self::$_log; | ||
} | ||
|
||
/** | ||
* Returns the list of fields that can be imported | ||
* | ||
* @param bool $prefix | ||
* | ||
* @return array | ||
*/ | ||
public static function &import($prefix = FALSE) { | ||
$r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'afform_submission', $prefix, []); | ||
return $r; | ||
} | ||
|
||
/** | ||
* Returns the list of fields that can be exported | ||
* | ||
* @param bool $prefix | ||
* | ||
* @return array | ||
*/ | ||
public static function &export($prefix = FALSE) { | ||
$r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'afform_submission', $prefix, []); | ||
return $r; | ||
} | ||
|
||
/** | ||
* Returns the list of indices | ||
* | ||
* @param bool $localize | ||
* | ||
* @return array | ||
*/ | ||
public static function indices($localize = TRUE) { | ||
$indices = []; | ||
return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
use CRM_Afform_ExtensionUtil as E; | ||
|
||
/** | ||
* Collection of upgrade steps. | ||
*/ | ||
class CRM_Afform_Upgrader extends CRM_Afform_Upgrader_Base { | ||
|
||
/** | ||
* Upgrade 1000 - install civicrm_afform_submission table | ||
* @return bool | ||
*/ | ||
public function upgrade_1000() { | ||
$this->ctx->log->info('Applying update 1000 - install civicrm_afform_submission table.'); | ||
if (!CRM_Core_DAO::singleValueQuery("SHOW TABLES LIKE 'civicrm_afform_submission'")) { | ||
$this->executeSqlFile('sql/auto_install.sql'); | ||
} | ||
return TRUE; | ||
} | ||
|
||
} |
Oops, something went wrong.