From 4bcc4cf1fba7d29cbbd6d6cecd2fee04fd7604a4 Mon Sep 17 00:00:00 2001 From: Marc Michalsky forumZFD Date: Mon, 12 Apr 2021 11:47:43 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=BE=20bug=20fix:=20project=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRM/TwingleCampaign/BAO/TwingleProject.php | 9 +++++++++ api/v3/TwingleProject/Sync.php | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CRM/TwingleCampaign/BAO/TwingleProject.php b/CRM/TwingleCampaign/BAO/TwingleProject.php index 7e24868..dd82cef 100644 --- a/CRM/TwingleCampaign/BAO/TwingleProject.php +++ b/CRM/TwingleCampaign/BAO/TwingleProject.php @@ -41,6 +41,15 @@ class CRM_TwingleCampaign_BAO_TwingleProject extends Campaign { * CiviCRM Campaign id */ public function __construct(array $values = [], int $id = NULL) { + + // If the $values originally come from the TwingleProject.get API, they + // contain the internal CiviCRM id as 'id' and the external Twingle id as + // 'project_id'. In this case 'id' gets replaced with 'project_id' + if (isset($values['project_id'])) { + $values['id'] = $values['project_id']; + unset($values['project_id']); + } + parent::__construct($values, $id); $this->prefix = 'twingle_project_'; diff --git a/api/v3/TwingleProject/Sync.php b/api/v3/TwingleProject/Sync.php index 5792a5b..7768997 100644 --- a/api/v3/TwingleProject/Sync.php +++ b/api/v3/TwingleProject/Sync.php @@ -104,7 +104,6 @@ function civicrm_api3_twingle_project_Sync(array $params): array { // instantiate project from CiviCRM $id = $result['id']; - unset($result['id']); $project = new TwingleProject($result, $id); // Synchronize projects @@ -232,9 +231,10 @@ function civicrm_api3_twingle_project_Sync(array $params): array { foreach ($projects_from_twingle as $project_from_twingle) { if ($project_from_twingle['id'] == $project_from_civicrm['project_id']) { - // store campaign id in $id + // store campaign id in $id and replace it with project_id $id = $project_from_civicrm['id']; - unset($project_from_civicrm['id']); + $project_from_civicrm['id'] = $project_from_civicrm['project_id']; + unset($project_from_civicrm['project_id']); // instantiate project with values from TwingleProject.Get $project = new TwingleProject($project_from_civicrm, $id);