From 6a29b0b37c05d581e6df60bd52e87b263d7c1b86 Mon Sep 17 00:00:00 2001 From: Marc Michalsky forumZFD Date: Mon, 8 Mar 2021 19:00:50 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=BE=20bug=20fix:=20don't=20call=20APIW?= =?UTF-8?q?rapper=20twice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no more double soft credits --- twinglecampaign.php | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/twinglecampaign.php b/twinglecampaign.php index 515cea0..72558e1 100644 --- a/twinglecampaign.php +++ b/twinglecampaign.php @@ -15,18 +15,32 @@ function twinglecampaign_civicrm_config(&$config) { _twinglecampaign_civix_civicrm_config($config); // This dispatchers add event listeners to TwingleDonation.submit - // (de.systopia.twingle) and call an API-Wrapper which maps incoming Twingle + // (de.systopia.twingle) to call an API-Wrapper which maps incoming Twingle // donations to TwingleCampaigns and create soft credits for event initiators. - Civi::dispatcher()->addListener( - 'civi.api.prepare', - ['CRM_TwingleCampaign_Utils_APIWrapper', 'PREPARE'], - -100 - ); - Civi::dispatcher()->addListener( - 'civi.api.respond', - ['CRM_TwingleCampaign_Utils_APIWrapper', 'RESPOND'], - -100 - ); + + // Do only add listeners once + if (!in_array( + ["CRM_TwingleCampaign_Utils_APIWrapper", "PREPARE"], + Civi::dispatcher()->getListeners('civi.api.prepare')) + ) { + Civi::dispatcher()->addListener( + 'civi.api.prepare', + ['CRM_TwingleCampaign_Utils_APIWrapper', 'PREPARE'], + -100 + ); + } + + // Do only add listeners once + if (!in_array( + ["CRM_TwingleCampaign_Utils_APIWrapper", "RESPOND"], + Civi::dispatcher()->getListeners('civi.api.respond') + )) { + Civi::dispatcher()->addListener( + 'civi.api.respond', + ['CRM_TwingleCampaign_Utils_APIWrapper', 'RESPOND'], + -100 + ); + } }