+ /**
+ * Load the values needed for the event message.
+ *
+ * @param int $eventID
+ * @param int $participantID
+ * @param int|null $contributionID
+ *
+ * @return array
+ * @throws \CRM_Core_Exception
+ */
+ protected function loadEventMessageTemplateParams(int $eventID, int $participantID, $contributionID): array {
+
+ $eventParams = [
+ 'id' => $eventID,
+ ];
+ $values = ['event' => []];
+
+ CRM_Event_BAO_Event::retrieve($eventParams, $values['event']);
+ // add custom fields for event
+ $eventGroupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $eventID);
+
+ $eventCustomGroup = [];
+ foreach ($eventGroupTree as $key => $group) {
+ if ($key === 'info') {
+ continue;
+ }
+
+ foreach ($group['fields'] as $k => $customField) {
+ $groupLabel = $group['title'];
+ if (!empty($customField['customValue'])) {
+ foreach ($customField['customValue'] as $customFieldValues) {
+ $eventCustomGroup[$groupLabel][$customField['label']] = CRM_Utils_Array::value('data', $customFieldValues);
+ }
+ }
+ }
+ }
+ $values['event']['customGroup'] = $eventCustomGroup;
+
+ //get participant details
+ $participantParams = [
+ 'id' => $participantID,
+ ];
+
+ $values['participant'] = [];
+
+ CRM_Event_BAO_Participant::getValues($participantParams, $values['participant'], $participantIds);
+ // add custom fields for event
+ $participantGroupTree = CRM_Core_BAO_CustomGroup::getTree('Participant', NULL, $participantID);
+ $participantCustomGroup = [];
+ foreach ($participantGroupTree as $key => $group) {
+ if ($key === 'info') {
+ continue;
+ }
+
+ foreach ($group['fields'] as $k => $customField) {
+ $groupLabel = $group['title'];
+ if (!empty($customField['customValue'])) {
+ foreach ($customField['customValue'] as $customFieldValues) {
+ $participantCustomGroup[$groupLabel][$customField['label']] = CRM_Utils_Array::value('data', $customFieldValues);
+ }
+ }
+ }
+ }
+ $values['participant']['customGroup'] = $participantCustomGroup;
+
+ //get location details
+ $locationParams = [
+ 'entity_id' => $eventID,
+ 'entity_table' => 'civicrm_event',
+ ];
+ $values['location'] = CRM_Core_BAO_Location::getValues($locationParams);
+
+ $ufJoinParams = [
+ 'entity_table' => 'civicrm_event',
+ 'entity_id' => $eventID,
+ 'module' => 'CiviEvent',
+ ];
+
+ list($custom_pre_id,
+ $custom_post_ids
+ ) = CRM_Core_BAO_UFJoin::getUFGroupIds($ufJoinParams);
+
+ $values['custom_pre_id'] = $custom_pre_id;
+ $values['custom_post_id'] = $custom_post_ids;
+
+ // set lineItem for event contribution
+ if ($contributionID) {
+ $participantIds = CRM_Event_BAO_Participant::getParticipantIds($contributionID);
+ if (!empty($participantIds)) {
+ foreach ($participantIds as $pIDs) {
+ $lineItem = CRM_Price_BAO_LineItem::getLineItems($pIDs);
+ if (!CRM_Utils_System::isNull($lineItem)) {
+ $values['lineItem'][] = $lineItem;
+ }
+ }
+ }
+ }
+ return $values;
+ }
+