From 32b709b4d01d5b1dc269c6b7f9950aa34abadf3d Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Fri, 17 Mar 2017 15:48:15 -0400 Subject: [PATCH] CRM-20297 CiviContribute: avoid fatal error on line item w/o price set ---------------------------------------- * CRM-20297: Fatal error viewing a contribution having a line item with no price field https://issues.civicrm.org/jira/browse/CRM-20297 --- CRM/Contribute/Form/ContributionView.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/CRM/Contribute/Form/ContributionView.php b/CRM/Contribute/Form/ContributionView.php index 05d467bbc8..abf86af52f 100644 --- a/CRM/Contribute/Form/ContributionView.php +++ b/CRM/Contribute/Form/ContributionView.php @@ -155,8 +155,23 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { if ($id) { $lineItems = array(CRM_Price_BAO_LineItem::getLineItemsByContributionID(($id))); $firstLineItem = reset($lineItems[0]); - $priceSet = civicrm_api3('PriceSet', 'getsingle', array('id' => $firstLineItem['price_set_id'], 'return' => 'is_quick_config, id')); - $displayLineItems = !$priceSet['is_quick_config']; + if (empty($firstLineItem['price_set_id'])) { + // CRM-20297 All we care is that it's not QuickConfig, so no price set + // is no problem. + $displayLineItems = TRUE; + } + else { + try { + $priceSet = civicrm_api3('PriceSet', 'getsingle', array( + 'id' => $firstLineItem['price_set_id'], + 'return' => 'is_quick_config, id', + )); + $displayLineItems = !$priceSet['is_quick_config']; + } + catch (CiviCRM_API3_Exception $e) { + throw new CRM_Core_Exception('Cannot find price set by ID'); + } + } } $this->assign('lineItem', $lineItems); $this->assign('displayLineItems', $displayLineItems); -- 2.25.1