X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FBAO%2FContribution.php;h=ebc06b6e47f08a349f547e878b8cb02809fee4c6;hb=de6c59caa2ef291ec946cb929d7c68c400919acc;hp=24e1d8ea11d60ce4218f140fb48d5a92f51bbbf5;hpb=a0424ea1850d425822152552802802f4b4023f02;p=civicrm-core.git diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 24e1d8ea11..ebc06b6e47 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -110,7 +110,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { $contributionID = CRM_Utils_Array::value('contribution', $ids, CRM_Utils_Array::value('id', $params)); $duplicates = []; if (self::checkDuplicate($params, $duplicates, $contributionID)) { - $message = ts("Duplicate error - existing contribution record(s) have a matching Transaction ID or Invoice ID. Contribution record ID(s) are: " . implode(', ', $duplicates)); + $message = ts("Duplicate error - existing contribution record(s) have a matching Transaction ID or Invoice ID. Contribution record ID(s) are: %1", [1 => implode(', ', $duplicates)]); throw new CRM_Core_Exception($message); } @@ -2913,6 +2913,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * The set of ids related to the input. * * @return array + * @throws \CRM_Core_Exception */ public function _gatherMessageValues($input, &$values, $ids = []) { // set display address of contributor @@ -2961,7 +2962,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac if (!empty($lineItems)) { $firstLineItem = reset($lineItems); $priceSet = []; - if (CRM_Utils_Array::value('price_set_id', $firstLineItem)) { + if (!empty($firstLineItem['price_set_id'])) { $priceSet = civicrm_api3('PriceSet', 'getsingle', [ 'id' => $firstLineItem['price_set_id'], 'return' => 'is_quick_config, id', @@ -2994,92 +2995,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } } else { - // event - $eventParams = [ - 'id' => $this->_relatedObjects['event']->id, - ]; - $values['event'] = []; - - CRM_Event_BAO_Event::retrieve($eventParams, $values['event']); - // add custom fields for event - $eventGroupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->_relatedObjects['event']->id); - - $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' => $this->_relatedObjects['participant']->id, - ]; - - $values['participant'] = []; - - CRM_Event_BAO_Participant::getValues($participantParams, $values['participant'], $participantIds); - // add custom fields for event - $participantGroupTree = CRM_Core_BAO_CustomGroup::getTree('Participant', NULL, $this->_relatedObjects['participant']->id); - $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' => $this->_relatedObjects['event']->id, - 'entity_table' => 'civicrm_event', - ]; - $values['location'] = CRM_Core_BAO_Location::getValues($locationParams); - - $ufJoinParams = [ - 'entity_table' => 'civicrm_event', - 'entity_id' => $ids['event'], - '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 ($this->id) { - $participantIds = CRM_Event_BAO_Participant::getParticipantIds($this->id); - if (!empty($participantIds)) { - foreach ($participantIds as $pIDs) { - $lineItem = CRM_Price_BAO_LineItem::getLineItems($pIDs); - if (!CRM_Utils_System::isNull($lineItem)) { - $values['lineItem'][] = $lineItem; - } - } - } - } + $values = array_merge($values, $this->loadEventMessageTemplateParams((int) $ids['event'], (int) $this->_relatedObjects['participant']->id, $this->id)); } $groupTree = CRM_Core_BAO_CustomGroup::getTree('Contribution', NULL, $this->id); @@ -4097,7 +4013,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $baseTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contributionId); $baseTrxnId = $baseTrxnId['financialTrxnId']; } - if (!CRM_Utils_Array::value('total_amount', $total) || $usingLineTotal) { + if (empty($total['total_amount']) || $usingLineTotal) { $total = CRM_Price_BAO_LineItem::getLineTotal($contributionId); } else { @@ -4622,7 +4538,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); // Add new soft credit against current $contribution. - if (CRM_Utils_Array::value('contributionRecur', $objects) && $objects['contributionRecur']->id) { + if (!empty($objects['contributionRecur']) && $objects['contributionRecur']->id) { CRM_Contribute_BAO_ContributionRecur::addrecurSoftCredit($objects['contributionRecur']->id, $contribution->id); } @@ -5130,7 +5046,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac public static function checkContributeSettings($name = NULL, $checkInvoicing = FALSE) { $contributeSettings = Civi::settings()->get('contribution_invoice_settings'); - if ($checkInvoicing && !CRM_Utils_Array::value('invoicing', $contributeSettings)) { + if ($checkInvoicing && empty($contributeSettings['invoicing'])) { return NULL; } @@ -5959,4 +5875,104 @@ LIMIT 1;"; return NULL; } + /** + * 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; + } + }