/** * Class constructor. * * @param array $queryParams * Array of parameters for query. * @param \const|int $action - action of search basic or advanced. * @param string $contributionClause * If the caller wants to further restrict the search (used in contributions). * @param bool $single * Are we dealing only with one contact?. * @param int $limit * How many contributions do we want returned. * * @param string $context * @param null $compContext * * @return \CRM_Contribute_Selector_Search */ public function __construct(&$queryParams, $action = CRM_Core_Action::NONE, $contributionClause = NULL, $single = FALSE, $limit = NULL, $context = 'search', $compContext = NULL) { // submitted form values $this->_queryParams =& $queryParams; $this->_single = $single; $this->_limit = $limit; $this->_context = $context; $this->_compContext = $compContext; $this->_contributionClause = $contributionClause; // type of selector $this->_action = $action; $this->_includeSoftCredits = CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled($this->_queryParams); $this->_query = new CRM_Contact_BAO_Query($this->_queryParams, CRM_Contribute_BAO_Query::selectorReturnProperties(), NULL, FALSE, FALSE, CRM_Contact_BAO_Query::MODE_CONTRIBUTE); // @todo the function CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled should handle this // can we remove? if not why not? if ($this->_includeSoftCredits) { $this->_query->_rowCountClause = " count(civicrm_contribution.id)"; $this->_query->_groupByComponentClause = " GROUP BY contribution_search_scredit_combined.id, contribution_search_scredit_combined.contact_id, contribution_search_scredit_combined.scredit_id "; } else { $this->_query->_distinctComponentClause = " civicrm_contribution.id"; $this->_query->_groupByComponentClause = " GROUP BY civicrm_contribution.id "; } }