From f01de8604b9ce9a0d52693f0c9a47ca7b9af0f6c Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap@edeveloper.nl> Date: Tue, 13 Mar 2018 09:40:59 +0100 Subject: [PATCH] added default data actions --- .../BAO/FormProcessorDefaultDataAction.php | 199 ++++++++++++++++++ .../BAO/FormProcessorInstance.php | 2 + .../DAO/FormProcessorDefaultDataAction.php | 132 ++++++++++++ .../Converttitletoname.php | 2 +- api/v3/FormProcessorAction/Delete.php | 2 +- api/v3/FormProcessorAction/Get.php | 2 +- api/v3/FormProcessorAction/Validatename.php | 2 +- .../Converttitletoname.php | 34 +++ .../FormProcessorDefaultDataAction/Create.php | 72 +++++++ .../FormProcessorDefaultDataAction/Delete.php | 37 ++++ api/v3/FormProcessorDefaultDataAction/Get.php | 33 +++ .../Validatename.php | 41 ++++ api/v3/FormProcessorInstance/Get.php | 5 + form_processor.php | 8 + sql/create_civicrm_form_processor.sql | 12 ++ sql/uninstall.sql | 1 + 16 files changed, 580 insertions(+), 4 deletions(-) create mode 100644 CRM/FormProcessor/BAO/FormProcessorDefaultDataAction.php create mode 100644 CRM/FormProcessor/DAO/FormProcessorDefaultDataAction.php create mode 100644 api/v3/FormProcessorDefaultDataAction/Converttitletoname.php create mode 100644 api/v3/FormProcessorDefaultDataAction/Create.php create mode 100644 api/v3/FormProcessorDefaultDataAction/Delete.php create mode 100644 api/v3/FormProcessorDefaultDataAction/Get.php create mode 100644 api/v3/FormProcessorDefaultDataAction/Validatename.php diff --git a/CRM/FormProcessor/BAO/FormProcessorDefaultDataAction.php b/CRM/FormProcessor/BAO/FormProcessorDefaultDataAction.php new file mode 100644 index 0000000..64d1487 --- /dev/null +++ b/CRM/FormProcessor/BAO/FormProcessorDefaultDataAction.php @@ -0,0 +1,199 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org> + * @license http://www.gnu.org/licenses/agpl-3.0.html + */ +class CRM_FormProcessor_BAO_FormProcessorDefaultDataAction extends CRM_FormProcessor_DAO_FormProcessorDefaultDataAction { + + /** + * Function to get values + * + * @return array $result found rows with data + * @access public + * @static + */ + public static function getValues($params) { + $result = array(); + $action = new CRM_FormProcessor_BAO_FormProcessorDefaultDataAction(); + if (!empty($params)) { + $fields = self::fields(); + foreach ($params as $key => $value) { + if (isset($fields[$key])) { + $action->$key = $value; + } + } + } + $action->orderBy('weight'); + $action->find(); + while ($action->fetch()) { + $row = array(); + self::storeValues($action, $row); + if (!empty($row['form_processor_instance_id'])) { + $provider = form_processor_get_action_provider(); + $action_type = $provider->getActionByName($row['type']); + + if ($action_type) { + $configuration = $action_type->getDefaultConfiguration(); + if (isset($row['configuration']) && is_string($row['configuration'])) { + $row['configuration'] = json_decode($row['configuration'], true); + } + if (empty($row['configuration']) || !is_array($row['configuration'])) { + $row['configuration'] = array(); + } + foreach($row['configuration'] as $name => $value) { + $configuration->setParameter($name, $value); + } + $action_type->setConfiguration($configuration); + + $row['type'] = $action_type; + } + + if (isset($row['mapping']) && is_string($row['mapping'])) { + $row['mapping'] = json_decode($row['mapping'], true); + } + if (empty($row['mapping']) || !is_array($row['mapping'])) { + $row['mapping'] = array(); + } + + $result[$row['id']] = $row; + } else { + //invalid input because no there is no form processor + CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::deleteWithId($row['id']); + } + } + return $result; + } + + /** + * Function to add or update form processor action + * + * @param array $params + * @return array $result + * @access public + * @throws Exception when params is empty + * @static + */ + public static function add($params) { + $result = array(); + if (empty($params)) { + throw new Exception('Params can not be empty when adding or updating a form processor action'); + } + + if (!empty($params['id'])) { + CRM_Utils_Hook::pre('edit', 'FormProcessorDefaultDataAction', $params['id'], $params); + } + else { + CRM_Utils_Hook::pre('create', 'FormProcessorDefaultDataAction', NULL, $params); + } + + $action = new CRM_FormProcessor_BAO_FormProcessorDefaultDataAction(); + $fields = self::fields(); + foreach ($params as $key => $value) { + if (isset($fields[$key])) { + $action->$key = $value; + } + } + + if (is_array($action->configuration)) { + $action->configuration = json_encode($action->configuration); + } + if (is_array($action->mapping)) { + $action->mapping = json_encode($action->mapping); + } + $action->save(); + self::storeValues($action, $result); + + if (!empty($params['id'])) { + CRM_Utils_Hook::post('edit', 'FormProcessorDefaultDataAction', $action->id, $action); + } + else { + CRM_Utils_Hook::post('create', 'FormProcessorDefaultDataAction', $action->id, $action); + } + + return $result; + } + + /** + * Function to delete a form processor action with id + * + * @param int $id + * @throws Exception when $id is empty + * @access public + * @static + */ + public static function deleteWithId($id) { + if (empty($id)) { + throw new Exception('id can not be empty when attempting to delete a form processor action'); + } + + CRM_Utils_Hook::pre('delete', 'FormProcessorDefaultDataAction', $id, CRM_Core_DAO::$_nullArray); + + $action = new CRM_FormProcessor_BAO_FormProcessorDefaultDataAction(); + $action->id = $id; + if ($action->find(true)) { + $action->delete(); + } + + CRM_Utils_Hook::post('delete', 'FormProcessorDefaultDataAction', $id, CRM_Core_DAO::$_nullArray); + + return; + } + + /** + * Function to delete all actions with a form processor instance id + * + * @param int $formProcessorInstanceId + * @access public + * @static + */ + public static function deleteWithFormProcessorInstanceId($formProcessorInstanceId) { + $action = new CRM_FormProcessor_BAO_FormProcessorDefaultDataAction(); + $action->form_processor_instance_id = $formProcessorInstanceId; + $action->find(FALSE); + while ($action->fetch()) { + CRM_Utils_Hook::pre('delete', 'FormProcessorDefaultDataAction', $action->id, CRM_Core_DAO::$_nullArray); + + $action->delete(); + + CRM_Utils_Hook::post('delete', 'FormProcessorDefaultDataAction', $action->id, CRM_Core_DAO::$_nullArray); + } + } + + /** + * Public function to generate name from title + * + * @param $title + * @return string + * @access public + * @static + */ + public static function buildNameFromTitle($title) { + $titleParts = explode(' ', strtolower($title)); + $nameString = implode('_', $titleParts); + return substr($nameString, 0, 80); + } + + /** + * Returns whether the name is valid or not + * + * @param string $name + * @param int $id optional + * @return bool + * @static + */ + public static function isNameValid($name, $id=null) { + $sql = "SELECT COUNT(*) FROM `civicrm_form_processor_default_data_action` WHERE `name` = %1"; + $params[1] = array($name, 'String'); + if ($id) { + $sql .= " AND `id` != %2"; + $params[2] = array($id, 'Integer'); + } + $count = CRM_Core_DAO::singleValueQuery($sql, $params); + return ($count > 0) ? false : true; + } + + +} \ No newline at end of file diff --git a/CRM/FormProcessor/BAO/FormProcessorInstance.php b/CRM/FormProcessor/BAO/FormProcessorInstance.php index 22a0358..ab965b4 100644 --- a/CRM/FormProcessor/BAO/FormProcessorInstance.php +++ b/CRM/FormProcessor/BAO/FormProcessorInstance.php @@ -30,6 +30,7 @@ self::storeValues($formProcessorInstance, $row); $row['inputs'] = array_values(CRM_FormProcessor_BAO_FormProcessorInput::getValues(array('form_processor_instance_id' => $formProcessorInstance->id))); $row['actions'] = array_values(CRM_FormProcessor_BAO_FormProcessorAction::getValues(array('form_processor_instance_id' => $formProcessorInstance->id))); + $row['default_data_actions'] = array_values(CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::getValues(array('form_processor_instance_id' => $formProcessorInstance->id))); $handler = \Civi::service('form_processor_output_handler_factory')->getHandlerByName($row['output_handler']); if ($handler) { @@ -123,6 +124,7 @@ CRM_FormProcessor_BAO_FormProcessorInput::deleteWithFormProcessorInstanceId($id); // And all actions CRM_FormProcessor_BAO_FormProcessorAction::deleteWithFormProcessorInstanceId($id); + CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::deleteWithFormProcessorInstanceId($id); $formProcessorInstance = new CRM_FormProcessor_BAO_FormProcessorInstance(); $formProcessorInstance->id = $id; diff --git a/CRM/FormProcessor/DAO/FormProcessorDefaultDataAction.php b/CRM/FormProcessor/DAO/FormProcessorDefaultDataAction.php new file mode 100644 index 0000000..a692ab7 --- /dev/null +++ b/CRM/FormProcessor/DAO/FormProcessorDefaultDataAction.php @@ -0,0 +1,132 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * @author Jaap Jansma (CiviCooP) <jaap.jansma@civicoop.org> + * @license http://www.gnu.org/licenses/agpl-3.0.html + */ +class CRM_FormProcessor_DAO_FormProcessorDefaultDataAction extends CRM_Core_DAO { + /** + * static instance to hold the field values + * + * @var array + * @static + */ + static $_fields = null; + static $_export = null; + /** + * empty definition for virtual function + */ + static function getTableName() { + return 'civicrm_form_processor_default_data_action'; + } + /** + * returns all the column names of this table + * + * @access public + * @return array + */ + public static function &fields() { + if (!(self::$_fields)) { + self::$_fields = array( + 'id' => array( + 'name' => 'id', + 'title' => E::ts('ID'), + 'type' => CRM_Utils_Type::T_INT, + 'required' => true + ), + 'form_processor_instance_id' => array( + 'name' => 'form_processor_instance_id', + 'title' => E::ts('Form Processor ID'), + 'type' => CRM_Utils_Type::T_INT, + 'required' => true, + 'FKApiName' => 'FormProcessorInstance', + ), + 'weight' => array( + 'name' => 'weight', + 'title' => E::ts('Weight'), + 'type' => CRM_Utils_Type::T_INT, + 'required' => true, + ), + 'name' => array( + 'name' => 'name', + 'title' => E::ts('Name'), + 'type' => CRM_Utils_Type::T_STRING, + 'maxlength' => 80, + ) , + 'title' => array( + 'name' => 'title', + 'title' => E::ts('Title'), + 'type' => CRM_Utils_Type::T_STRING, + 'maxlength' => 80, + 'required' => true, + ) , + 'type' => array( + 'name' => 'type', + 'title' => E::ts('Type'), + 'type' => CRM_Utils_Type::T_STRING, + 'maxlength' => 80, + 'required' => true, + ), + 'configuration' => array( + 'name' => 'configuration', + 'title' => E::ts('Configuration'), + 'type' => CRM_Utils_Type::T_TEXT, + ), + 'mapping' => array( + 'name' => 'mapping', + 'title' => E::ts('Mapping'), + 'type' => CRM_Utils_Type::T_TEXT, + ), + ); + } + return self::$_fields; + } + /** + * Returns an array containing, for each field, the array key used for that + * field in self::$_fields. + * + * @access public + * @return array + */ + public static function &fieldKeys() { + if (!(self::$_fieldKeys)) { + self::$_fieldKeys = array( + 'id' => 'id', + 'form_processor_instance_id' => 'form_processor_instance_id', + 'weight' => 'weight', + 'name' => 'name', + 'title' => 'title', + 'type' => 'type', + 'configuration' => 'configuration', + 'mapping' => 'mapping', + ); + } + return self::$_fieldKeys; + } + /** + * returns the list of fields that can be exported + * + * @access public + * return array + * @static + */ + static function &export($prefix = false) + { + if (!(self::$_export)) { + self::$_export = array(); + $fields = self::fields(); + foreach($fields as $name => $field) { + if (CRM_Utils_Array::value('export', $field)) { + if ($prefix) { + self::$_export['form_porcessor_default_dataaction'] = & $fields[$name]; + } else { + self::$_export[$name] = & $fields[$name]; + } + } + } + } + return self::$_export; + } +} \ No newline at end of file diff --git a/api/v3/FormProcessorAction/Converttitletoname.php b/api/v3/FormProcessorAction/Converttitletoname.php index 34d924f..45a7c43 100644 --- a/api/v3/FormProcessorAction/Converttitletoname.php +++ b/api/v3/FormProcessorAction/Converttitletoname.php @@ -18,7 +18,7 @@ function civicrm_api3_form_processor_action_converttitletoname($params) { } /** - * FormProcessor.Convgerttitletoname API specification (optional) + * FormProcessorAction.Converttitletoname API specification (optional) * This is used for documentation and validation. * * @param array $spec description of fields supported by this API call diff --git a/api/v3/FormProcessorAction/Delete.php b/api/v3/FormProcessorAction/Delete.php index 8e2f905..bbe5c29 100644 --- a/api/v3/FormProcessorAction/Delete.php +++ b/api/v3/FormProcessorAction/Delete.php @@ -19,7 +19,7 @@ function _civicrm_api3_form_processor_action_Delete_spec(&$spec) { } /** - * FormProcessorInput.Delete API + * FormProcessorAction.Delete API * * @param array $params * @return array API result descriptor diff --git a/api/v3/FormProcessorAction/Get.php b/api/v3/FormProcessorAction/Get.php index 8814605..30c35fe 100644 --- a/api/v3/FormProcessorAction/Get.php +++ b/api/v3/FormProcessorAction/Get.php @@ -13,7 +13,7 @@ function civicrm_api3_form_processor_action_get($params) { foreach($returnValues as $index => $action) { $returnValues[$index]['type'] = $action['type']->toArray(); } - return civicrm_api3_create_success($returnValues, $params, 'FormProcessorInput', 'Get'); + return civicrm_api3_create_success($returnValues, $params, 'FormProcessorAction', 'Get'); } /** diff --git a/api/v3/FormProcessorAction/Validatename.php b/api/v3/FormProcessorAction/Validatename.php index 518b53d..7efbe39 100644 --- a/api/v3/FormProcessorAction/Validatename.php +++ b/api/v3/FormProcessorAction/Validatename.php @@ -20,7 +20,7 @@ function civicrm_api3_form_processor_action_validatename($params) { } /** - * FormProcessor.Validatename API specification (optional) + * FormProcessorAction.Validatename API specification (optional) * This is used for documentation and validation. * * @param array $spec description of fields supported by this API call diff --git a/api/v3/FormProcessorDefaultDataAction/Converttitletoname.php b/api/v3/FormProcessorDefaultDataAction/Converttitletoname.php new file mode 100644 index 0000000..7f17d66 --- /dev/null +++ b/api/v3/FormProcessorDefaultDataAction/Converttitletoname.php @@ -0,0 +1,34 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * FormProcessorDefaultDataAction.Converttitletoname API + * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * @throws API_Exception + */ +function civicrm_api3_form_processor_default_data_action_converttitletoname($params) { + $title = $params['title']; + $returnValues['name'] = CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::buildNameFromTitle($title); + return $returnValues; +} + +/** + * FormProcessorDefaultDataAction.Converttitletoname API specification (optional) + * This is used for documentation and validation. + * + * @param array $spec description of fields supported by this API call + * @return void + * @see http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards + */ +function _civicrm_api3_form_processor_default_data_action_converttitletoname_spec(&$spec) { + $spec['title'] = array( + 'title' => E::ts('Title'), + 'type' => CRM_Utils_Type::T_STRING, + 'api.required' => true + ); +} \ No newline at end of file diff --git a/api/v3/FormProcessorDefaultDataAction/Create.php b/api/v3/FormProcessorDefaultDataAction/Create.php new file mode 100644 index 0000000..3ce4cc8 --- /dev/null +++ b/api/v3/FormProcessorDefaultDataAction/Create.php @@ -0,0 +1,72 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * FormProcessorDefaultDataAction.Create API specification (optional) + * This is used for documentation and validation. + * + * @param array $spec description of fields supported by this API call + * @return void + * @see http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards + */ +function _civicrm_api3_form_processor_default_data_action_create_spec(&$spec) { + $spec['id'] = array( + 'title' => E::ts('ID'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => false + ); + $spec['form_processor_instance_id'] = array( + 'title' => E::ts('Form Processor Instance ID'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => true, + 'FKApiName' => 'FormProcessorInstance', + ); + $spec['weight'] = array( + 'title' => E::ts('Weight'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => true, + ); + $spec['name'] = array( + 'title' => E::ts('Name'), + 'type' => CRM_Utils_Type::T_STRING, + 'api.required' => true + ); + $spec['title'] = array( + 'title' => E::ts('Title'), + 'type' => CRM_Utils_Type::T_STRING, + 'api.required' => true + ); + $spec['type'] = array( + 'title' => E::ts('Type'), + 'type' => CRM_Utils_Type::T_STRING, + 'api.required' => true + ); + $spec['configuration'] = array( + 'title' => E::ts('Configuration'), + 'type' => CRM_Utils_Type::T_TEXT, + 'api.required' => false + ); + $spec['mapping'] = array( + 'title' => E::ts('Mapping'), + 'type' => CRM_Utils_Type::T_TEXT, + 'api.required' => false + ); +} + +/** + * FormProcessorAction.Create API + * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * + * + */ +function civicrm_api3_form_processor_default_data_action_create($params) { + $returnValue = CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::add($params); + $returnValues[$returnValue['id']] = $returnValue; + return civicrm_api3_create_success($returnValues, $params, 'FormProcessorDefaultDataAction', 'Create'); +} + diff --git a/api/v3/FormProcessorDefaultDataAction/Delete.php b/api/v3/FormProcessorDefaultDataAction/Delete.php new file mode 100644 index 0000000..5fe438e --- /dev/null +++ b/api/v3/FormProcessorDefaultDataAction/Delete.php @@ -0,0 +1,37 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * FormProcessorDefaultDataAction.Delete API specification (optional) + * This is used for documentation and validation. + * + * @param array $spec description of fields supported by this API call + * @return void + * @see http://wiki.civicrm.org/confluence/display/CRMDOC/API+Architecture+Standards + */ +function _civicrm_api3_form_processor_default_data_action_Delete_spec(&$spec) { + $spec['id'] = array( + 'title' => E::ts('ID'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => true + ); +} + +/** + * FormProcessorDefaultDataAction.Delete API + * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * @throws API_Exception + */ +function civicrm_api3_form_processor_default_data_action_Delete($params) { + if (!array_key_exists('id', $params) || empty($params['id'])) { + throw new API_Exception('Parameter id is mandatory and can not be empty in ' . __METHOD__, 0010); + } else { + return civicrm_api3_create_success(CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::deleteWithId($params['id']), $params, 'FormProcessorDefaultDataAction', 'Delete'); + } +} + diff --git a/api/v3/FormProcessorDefaultDataAction/Get.php b/api/v3/FormProcessorDefaultDataAction/Get.php new file mode 100644 index 0000000..f034a10 --- /dev/null +++ b/api/v3/FormProcessorDefaultDataAction/Get.php @@ -0,0 +1,33 @@ +<?php +/** + * FormProcessorDefaultDataAction.Get API + * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * @throws API_Exception + */ +function civicrm_api3_form_processor_default_data_action_get($params) { + $returnValues = CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::getValues($params); + foreach($returnValues as $index => $action) { + $returnValues[$index]['type'] = $action['type']->toArray(); + } + return civicrm_api3_create_success($returnValues, $params, 'FormProcessorDefaultDataAction', 'Get'); +} + +/** + * FormProcessorAction.Get API specification (optional) + * This is used for documentation and validation. + * + * @param array $spec description of fields supported by this API call + * @return void + * @see http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards + */ +function _civicrm_api3_form_processor_default_data_action_get_spec(&$spec) { + $fields = CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::fields(); + foreach($fields as $fieldname => $field) { + $spec[$fieldname] = $field; + } +} + diff --git a/api/v3/FormProcessorDefaultDataAction/Validatename.php b/api/v3/FormProcessorDefaultDataAction/Validatename.php new file mode 100644 index 0000000..9488043 --- /dev/null +++ b/api/v3/FormProcessorDefaultDataAction/Validatename.php @@ -0,0 +1,41 @@ +<?php + +use CRM_FormProcessor_ExtensionUtil as E; + +/** + * FormProcessorDefaultDataAction.Validatename API + * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * @throws API_Exception + */ +function civicrm_api3_form_processor_default_data_action_validatename($params) { + $name = $params['name']; + $id = isset($params['id']) ? $params['id'] : null; + $returnValues['name'] = $name; + $returnValues['is_valid'] = CRM_FormProcessor_BAO_FormProcessorDefaultDataAction::isNameValid($name, $id); + return $returnValues; +} + +/** + * FormProcessorDefaultDataAction.Validatename API specification (optional) + * This is used for documentation and validation. + * + * @param array $spec description of fields supported by this API call + * @return void + * @see http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards + */ +function _civicrm_api3_form_processor_default_data_action_validatename_spec(&$spec) { + $spec['id'] = array( + 'title' => E::ts('ID'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => false + ); + $spec['name'] = array( + 'title' => E::ts('Name'), + 'type' => CRM_Utils_Type::T_STRING, + 'api.required' => true + ); +} \ No newline at end of file diff --git a/api/v3/FormProcessorInstance/Get.php b/api/v3/FormProcessorInstance/Get.php index 085b7b8..026d7da 100644 --- a/api/v3/FormProcessorInstance/Get.php +++ b/api/v3/FormProcessorInstance/Get.php @@ -24,6 +24,11 @@ function civicrm_api3_form_processor_instance_get($params) { $returnValues[$index]['actions'][$key]['type'] = $action['type']->toArray(); } + // Convert action object to arrays + foreach($formProcessor['default_data_actions'] as $key => $action) { + $returnValues[$index]['default_data_actions'][$key]['type'] = $action['type']->toArray(); + } + // Convert output handler object to array $returnValues[$index]['output_handler'] = $returnValues[$index]['output_handler']->toArray(); } diff --git a/form_processor.php b/form_processor.php index f1d633a..c368f4c 100644 --- a/form_processor.php +++ b/form_processor.php @@ -54,6 +54,14 @@ function form_processor_civicrm_alterAPIPermissions($entity, $action, &$params, $permissions['form_processor_action']['get'] = array('administer CiviCRM'); $permissions['form_processor_action']['create'] = array('administer CiviCRM'); $permissions['form_processor_action']['delete'] = array('administer CiviCRM'); + $permissions['form_processor_action']['converttitletoname'] = array('administer CiviCRM'); + $permissions['form_processor_action']['validatename'] = array('administer CiviCRM'); + + $permissions['form_processor_default_data_action']['get'] = array('administer CiviCRM'); + $permissions['form_processor_default_data_action']['create'] = array('administer CiviCRM'); + $permissions['form_processor_default_data_action']['delete'] = array('administer CiviCRM'); + $permissions['form_processor_default_data_action']['converttitletoname'] = array('administer CiviCRM'); + $permissions['form_processor_default_data_action']['validatename'] = array('administer CiviCRM'); } /** diff --git a/sql/create_civicrm_form_processor.sql b/sql/create_civicrm_form_processor.sql index 5062f63..741937a 100644 --- a/sql/create_civicrm_form_processor.sql +++ b/sql/create_civicrm_form_processor.sql @@ -45,3 +45,15 @@ CREATE TABLE IF NOT EXISTS `civicrm_form_processor_action` ( `mapping` TEXT NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB; + +CREATE TABLE IF NOT EXISTS `civicrm_form_processor_default_data_action` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `form_processor_instance_id` INT UNSIGNED NOT NULL, + `weight` INT UNSIGNED NOT NULL, + `name` VARCHAR(80) NOT NULL, + `title` VARCHAR(80) NOT NULL, + `type` VARCHAR(80) NOT NULL, + `configuration` TEXT NULL, + `mapping` TEXT NULL, + PRIMARY KEY (`id`) +) ENGINE = InnoDB; diff --git a/sql/uninstall.sql b/sql/uninstall.sql index 0372944..53a0c7f 100644 --- a/sql/uninstall.sql +++ b/sql/uninstall.sql @@ -1,4 +1,5 @@ DROP TABLE IF EXISTS `civicrm_form_processor_input_validation`; DROP TABLE IF EXISTS `civicrm_form_processor_input`; DROP TABLE IF EXISTS `civicrm_form_processor_action`; +DROP TABLE IF EXISTS `civicrm_form_processor_default_data_action`; DROP TABLE IF EXISTS `civicrm_form_processor_instance`; -- GitLab