👾 fix bug: #2 CiviCRM Error on independent API Call on campaign

Thanks to  @iTobi for reporting the bug!
This commit is contained in:
Marc Michalsky 2021-07-23 16:56:15 +02:00
parent 9ad97c11e1
commit 397ba57343

View file

@ -59,11 +59,21 @@ function twinglecampaign_civicrm_config(&$config) {
*/
function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
$twingle_project_campaign_type_id = _get_campaign_type_id_twingle_project();
$twingle_campaign_campaign_type_id = _get_campaign_type_id_twingle_campaign();
// If $campaign_type_id is a TwingleProject or TwingleCampaign campaign,
// synchronize it
if (
$dao->campaign_type_id == $twingle_project_campaign_type_id ||
$dao->campaign_type_id == $twingle_campaign_campaign_type_id
) {
if (empty($_SESSION['CiviCRM']['de.forumzfd.twinglecampaign']['no_hook']) ||
$_SESSION['CiviCRM']['de.forumzfd.twinglecampaign']['no_hook'] != TRUE) {
// If request is not an API-Call
if ($_GET['action'] != 'create') {
if ($_GET['action'] != 'create' && $_POST['action'] != 'create') {
// If the db transaction is still running, add a function to it that will
// be called afterwards
@ -95,6 +105,7 @@ function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
}
// Remove no hook flag
unset($_SESSION['CiviCRM']['de.forumzfd.twinglecampaign']['no_hook']);
}
}
/**
@ -115,13 +126,6 @@ function twinglecampaign_postSave_campaign_update_callback(
$twingle_project_campaign_type_id = _get_campaign_type_id_twingle_project();
$twingle_campaign_campaign_type_id = _get_campaign_type_id_twingle_campaign();
// If $campaign_type_id is a TwingleProject or TwingleCampaign campaign,
// synchronize it
if (
$campaign_type_id == $twingle_project_campaign_type_id ||
$campaign_type_id == $twingle_campaign_campaign_type_id
) {
// Set $entity for $campaign_type_id
if ($campaign_type_id == $twingle_project_campaign_type_id) {
$entity = 'TwingleProject';
@ -132,7 +136,7 @@ function twinglecampaign_postSave_campaign_update_callback(
if (isset($_POST['action'])) {
if ($_POST['action'] == 'clone' && $entity == 'TwingleProject') {
unset($_POST['action']);
$_POST['action'] = 'create';
$result = civicrm_api3('TwingleProject', 'getsingle',
['id' => $campaign_id]
);
@ -188,7 +192,6 @@ function twinglecampaign_postSave_campaign_update_callback(
);
}
}
}
}
function _get_campaign_type_id_twingle_project() {
@ -203,6 +206,7 @@ function _get_campaign_type_id_twingle_campaign() {
/**
* Callback to sync a project after its creation.
*
* @param int $campaign_id
*/
function twinglecampaign_postSave_project_create_callback(