/** * Get an existing contribution. * * Returns a single existing Contribution object which matches ALL property * values passed in $params. An error object is returned if there is * no match, or more than one match. This API can be used to retrieve * the CRM internal identifier (contribution_id) based on a unique property. * It can also be used to retrieve any desired * contribution properties based on a known contribution_id. * * @param array $params Associative array of property name/value * pairs to attempt to match on. * @param array $returnProperties Which properties should be included in the * returned Contribution object. If NULL, the default * set of properties will be included. * * @return CRM_Contribution|CRM_Core_Error Return the Contribution Object if found, else * Error Object * * @access public * */ function &crm_get_contribution($params, $returnProperties = null) { _crm_initialize(); // empty parameters ? if (empty($params)) { return _crm_error('$params is empty'); } // correct parameter format ? if (!is_array($params)) { return _crm_error('$params is not an array'); } if (!CRM_Utils_Array::value('contribution_id', $params)) { $returnProperties = array('trxn_id'); $contributions = crm_contribution_search($params, $returnProperties); if (count($contributions) != 1) { return _crm_error(count($contributions) . " contributions matching input params."); } $contributionIds = array_keys($contributions); $params['contribution_id'] = $contributionIds[0]; } $params['id'] = $params['contribution_id']; $ids = array(); $contribution =& CRM_Contribute_BAO_Contribution::getValues($params, $defaults, $ids); if ($contribution == null || is_a($contribution, 'CRM_Core_Error') || !$contribution->id) { return _crm_error('Did not find contribution object for ' . $params['contribution_id']); } unset($params['id']); $contribution->contribution_type_object = CRM_Contribute_BAO_Contribution::getValues($params, $defaults, $ids); $contribution->custom_values =& CRM_Core_BAO_CustomValue::getContributionValues($contribution->id); return $contribution; }