diff --git a/wp-content/civi-extensions/goonjcustom/Civi/InstitutionCampaignService.php b/wp-content/civi-extensions/goonjcustom/Civi/InstitutionCampaignService.php new file mode 100644 index 000000000..186dd31f7 --- /dev/null +++ b/wp-content/civi-extensions/goonjcustom/Civi/InstitutionCampaignService.php @@ -0,0 +1,77 @@ + [ + ['linkCampaignToOrganization'], + ], + ]; + } + + /** + * + */ + public static function linkCampaignToOrganization(string $op, string $objectName, int $objectId, &$objectRef) { + + if ($objectName != 'Campaign' || !$objectId) { + return; + } + + $institutionCampaign = Campaign::get(TRUE) + ->addSelect( + 'id', + 'Additional_Details.Institution', + 'title' + ) + ->addWhere('id', '=', $objectId) + ->execute(); + + $currentInstitutionCampaign = $institutionCampaign->first(); + $currentInstitutionId = $currentInstitutionCampaign['Additional_Details.Institution']; + if (!$currentInstitutionId) { + return; + } + $campaignTitle = $currentInstitutionCampaign['title']; + $campaignId = $currentInstitutionCampaign['id']; + + // Check for status change. + if ($currentInstitutionId) { + self::createInstitutionCampaignActivity($currentInstitutionId, $campaignTitle, $campaignId); + } + } + + /** + * Log an activity in CiviCRM. + */ + private static function createInstitutionCampaignActivity($currentInstitutionId, $campaignTitle, $campaignId) { + try { + $results = Activity::create(FALSE) + ->addValue('subject', $campaignTitle) + ->addValue('activity_type_id:name', 'Institution Campaign') + ->addValue('status_id:name', 'Completed') + ->addValue('activity_date_time', date('Y-m-d H:i:s')) + ->addValue('source_contact_id', $currentInstitutionId) + ->addValue('target_contact_id', $currentInstitutionId) + ->execute(); + + } + catch (\CiviCRM_API4_Exception $ex) { + \Civi::log()->debug("Exception while creating Institution Campaign activity: " . $ex->getMessage()); + } + } + +}