✨️ implement upgrade function to create new custom fields
This commit is contained in:
parent
4dc3644bb3
commit
ab8c16fac2
4 changed files with 65 additions and 11 deletions
|
@ -29,7 +29,7 @@ class CRM_TwingleCampaign_BAO_CampaignType {
|
|||
/**
|
||||
* @throws \CiviCRM_API3_Exception
|
||||
*/
|
||||
public function create() {
|
||||
public function create(bool $upgrade = false) {
|
||||
|
||||
$field = civicrm_api3(
|
||||
'OptionValue',
|
||||
|
@ -59,7 +59,7 @@ class CRM_TwingleCampaign_BAO_CampaignType {
|
|||
for \"$this->label\": $error_message");
|
||||
}
|
||||
}
|
||||
else {
|
||||
elseif (!$upgrade) {
|
||||
$campaignType = self::fetch($this->name);
|
||||
foreach ($this as $var => $value) {
|
||||
if (array_key_exists($var, $campaignType->getSetAttributes())) {
|
||||
|
@ -67,6 +67,9 @@ class CRM_TwingleCampaign_BAO_CampaignType {
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$this->value = $field['values'][0]['value'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -65,9 +65,12 @@ class CRM_TwingleCampaign_BAO_CustomField {
|
|||
/**
|
||||
* Creates a CustomField by calling CiviCRM API v.3
|
||||
*
|
||||
* @param bool $upgrade
|
||||
* If true: Does not show UF message if custom field already exists
|
||||
*
|
||||
* @throws \CiviCRM_API3_Exception
|
||||
*/
|
||||
public function create() {
|
||||
public function create(bool $upgrade = false) {
|
||||
|
||||
// Check if the field already exists
|
||||
$field = civicrm_api3(
|
||||
|
@ -118,14 +121,10 @@ class CRM_TwingleCampaign_BAO_CustomField {
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
CRM_Utils_System::setUFMessage("Creation of custom field '$this->name'
|
||||
failed, because a custom field with that name already exists.
|
||||
Find more information in the logs.");
|
||||
elseif (!$upgrade) {
|
||||
CRM_Utils_System::setUFMessage(E::ts('Creation of custom field \'%1\' failed, because a custom field with that name already exists. Find more information in the logs.', [1 => $this->name]));
|
||||
Civi::log()
|
||||
->error("$this->extensionName could not create new custom field
|
||||
\"$this->name\" for group \"$this->custom_group_id\" because a
|
||||
field with that name already exists.");
|
||||
->error("$this->extensionName could not create new custom field \"$this->name\" for group \"$this->custom_group_id\" because a field with that name already exists.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,9 +41,12 @@ class CRM_TwingleCampaign_BAO_CustomGroup {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param bool $upgrade
|
||||
* If true: Does not show UF message if custom group already exists
|
||||
*
|
||||
* @throws \CiviCRM_API3_Exception
|
||||
*/
|
||||
public function create() {
|
||||
public function create(bool $upgrade = false) {
|
||||
|
||||
$field = civicrm_api3(
|
||||
'CustomGroup',
|
||||
|
@ -86,6 +89,11 @@ class CRM_TwingleCampaign_BAO_CustomGroup {
|
|||
|
||||
}
|
||||
}
|
||||
elseif (!$upgrade) {
|
||||
CRM_Utils_System::setUFMessage(E::ts('Creation of custom group \'%1\' failed, because a custom group with that name already exists. Find more information in the logs.', [1 => $this->name]));
|
||||
Civi::log()
|
||||
->error("$this->extensionName could not create new custom group \"$this->name\" because a group with that name already exists.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,6 +16,50 @@ class CRM_TwingleCampaign_Upgrader extends CRM_TwingleCampaign_Upgrader_Base {
|
|||
// By convention, functions that look like "function upgrade_NNNN()" are
|
||||
// upgrade tasks. They are executed in order (like Drupal's hook_update_N).
|
||||
|
||||
/**
|
||||
* @throws \CiviCRM_API3_Exception
|
||||
*/
|
||||
public function upgrade_01() {
|
||||
|
||||
$campaign_info = require E::path() .
|
||||
'/CRM/TwingleCampaign/resources/campaigns.php';
|
||||
$option_values = require E::path() .
|
||||
'/CRM/TwingleCampaign/resources/option_values.php';
|
||||
|
||||
// Create campaign types
|
||||
foreach ($campaign_info['campaign_types'] as $campaign_type) {
|
||||
new CampaignType($campaign_type);
|
||||
}
|
||||
foreach (CampaignType::getCampaignTypes() as $campaign_type) {
|
||||
$campaign_type->create(true);
|
||||
}
|
||||
|
||||
// Create custom groups
|
||||
foreach ($campaign_info['custom_groups'] as $custom_group) {
|
||||
foreach (CampaignType::getCampaignTypes() as $campaign_type) {
|
||||
if ($campaign_type->getName() == $custom_group['campaign_type']) {
|
||||
$custom_group['extends_entity_column_value'] = $campaign_type->getValue();
|
||||
}
|
||||
}
|
||||
$cg = new CustomGroup($custom_group);
|
||||
$cg->create(true);
|
||||
}
|
||||
|
||||
// Create custom fields
|
||||
foreach ($campaign_info['custom_fields'] as $custom_field) {
|
||||
$cf = new CustomField($custom_field);
|
||||
$cf->create(true);
|
||||
}
|
||||
|
||||
// Create option values
|
||||
foreach ($option_values as $option_value) {
|
||||
$ov = new OptionValue($option_value);
|
||||
$ov->create();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Exception
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue