X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContribute%2FBAO%2FContribution.php;h=ac0767209262144a3fa68479e3defd8398d4bcbb;hb=aaffa79f9a2efa14d079d843f11befffd413935c;hp=d50b3285bf14531a6f3add0fabc9c8a7ccb97e55;hpb=10b0b876976ece060f78819ed879a94c79b43ab4;p=civicrm-core.git diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index d50b3285bf..ac07672092 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -848,7 +848,7 @@ LEFT JOIN civicrm_line_item i ON ( i.contribution_id = c.id AND i.entity_table GROUP BY currency "; - $dao = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); + $dao = CRM_Core_DAO::executeQuery($query); $amount = array(); $count = 0; while ($dao->fetch()) { @@ -1093,6 +1093,12 @@ LEFT JOIN civicrm_line_item i ON ( i.contribution_id = c.id AND i.entity_table 'headerPattern' => '/^soft_credit_contact_id$/i', 'where' => 'civicrm_contribution_soft.contact_id', ), + 'contribution_pcp_title' => array( + 'name' => 'contribution_pcp_title', + 'title' => 'Personal Campaign Page Title', + 'headerPattern' => '/^contribution_pcp_title$/i', + 'where' => 'contribution_pcp.title', + ), ); return $extraFields; @@ -1181,7 +1187,7 @@ FROM civicrm_contribution, civicrm_contact WHERE civicrm_contribution.contact_id = civicrm_contact.id AND civicrm_contribution.id = {$id} "; - return CRM_Core_DAO::singleValueQuery($query, CRM_Core_DAO::$_nullArray); + return CRM_Core_DAO::singleValueQuery($query); } /** @@ -2214,47 +2220,9 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } } - if ($this->_component == 'contribute') { - // retrieve the other optional objects first so - // stuff down the line can use this info and do things - // CRM-6056 - //in any case get the memberships associated with the contribution - //because we now support multiple memberships w/ price set - // see if there are any other memberships to be considered for same contribution. - $query = " - SELECT membership_id - FROM civicrm_membership_payment -WHERE contribution_id = %1 "; - $params = array(1 => array($this->id, 'Integer')); - - $dao = CRM_Core_DAO::executeQuery($query, $params); - while ($dao->fetch()) { - if ($dao->membership_id) { - if (!is_array($ids['membership'])) { - $ids['membership'] = array(); - } - $ids['membership'][] = $dao->membership_id; - } - } + $this->loadRelatedMembershipObjects($ids); - if (array_key_exists('membership', $ids) && is_array($ids['membership'])) { - foreach ($ids['membership'] as $id) { - if (!empty($id)) { - $membership = new CRM_Member_BAO_Membership(); - $membership->id = $id; - if (!$membership->find(TRUE)) { - throw new Exception("Could not find membership record: $id"); - } - $membership->join_date = CRM_Utils_Date::isoToMysql($membership->join_date); - $membership->start_date = CRM_Utils_Date::isoToMysql($membership->start_date); - $membership->end_date = CRM_Utils_Date::isoToMysql($membership->end_date); - $this->_relatedObjects['membership'][$membership->membership_type_id] = $membership; - $membership->free(); - } - } - } - } - else { + if ($this->_component != 'contribute') { // we are in event mode // make sure event exists and is valid $event = new CRM_Event_BAO_Event(); @@ -3386,7 +3354,7 @@ WHERE contribution_id = %1 "; CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds); if ($fieldValues['tax_amount']) { - $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings'); + $invoiceSettings = Civi::settings()->get('contribution_invoice_settings'); $taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings); $itemParams['amount'] = $diff * $fieldValues['tax_amount']; $itemParams['description'] = $taxTerm; @@ -4442,7 +4410,7 @@ LIMIT 1;"; * Credit Note Id. */ public static function createCreditNoteId() { - $prefixValue = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings'); + $prefixValue = Civi::settings()->get('contribution_invoice_settings'); $creditNoteNum = CRM_Core_DAO::singleValueQuery("SELECT count(creditnote_id) as creditnote_number FROM civicrm_contribution"); $creditNoteId = NULL; @@ -4459,4 +4427,54 @@ LIMIT 1;"; return $creditNoteId; } + /** + * Load related memberships. + * + * Note that in theory it should be possible to retrieve these from the line_item table + * with the membership_payment table being deprecated. Attempting to do this here causes tests to fail + * as it seems the api is not correctly linking the line items when the contribution is created in the flow + * where the contribution is created in the API, followed by the membership (using the api) followed by the membership + * payment. The membership payment BAO does have code to address this but it doesn't appear to be working. + * + * I don't know if it never worked or broke as a result of https://issues.civicrm.org/jira/browse/CRM-14918. + * + * @param array $ids + * + * @throws Exception + */ + public function loadRelatedMembershipObjects(&$ids) { + $query = " + SELECT membership_id + FROM civicrm_membership_payment + WHERE contribution_id = %1 "; + $params = array(1 => array($this->id, 'Integer')); + + $dao = CRM_Core_DAO::executeQuery($query, $params); + while ($dao->fetch()) { + if ($dao->membership_id) { + if (!is_array($ids['membership'])) { + $ids['membership'] = array(); + } + $ids['membership'][] = $dao->membership_id; + } + } + + if (array_key_exists('membership', $ids) && is_array($ids['membership'])) { + foreach ($ids['membership'] as $id) { + if (!empty($id)) { + $membership = new CRM_Member_BAO_Membership(); + $membership->id = $id; + if (!$membership->find(TRUE)) { + throw new Exception("Could not find membership record: $id"); + } + $membership->join_date = CRM_Utils_Date::isoToMysql($membership->join_date); + $membership->start_date = CRM_Utils_Date::isoToMysql($membership->start_date); + $membership->end_date = CRM_Utils_Date::isoToMysql($membership->end_date); + $this->_relatedObjects['membership'][$membership->membership_type_id] = $membership; + $membership->free(); + } + } + } + } + }