/** * @param array $queryParams * * @return bool */ public static function isSoftCreditOptionEnabled($queryParams = array()) { static $tempTableFilled = FALSE; if (!empty($queryParams)) { foreach (array_keys($queryParams) as $id) { if (empty($queryParams[$id][0])) { continue; } if ($queryParams[$id][0] == 'contribution_or_softcredits') { self::$_contribOrSoftCredit = $queryParams[$id][2]; } } } if (in_array(self::$_contribOrSoftCredit, array("only_scredits", "both_related", "both"))) { if (!$tempTableFilled) { // build a temp table which is union of contributions and soft credits // note: group-by in first part ensures uniqueness in counts $tempQuery = "\n CREATE TEMPORARY TABLE IF NOT EXISTS contribution_search_scredit_combined AS\n SELECT con.id as id, con.contact_id, cso.id as filter_id, NULL as scredit_id\n FROM civicrm_contribution con\n LEFT JOIN civicrm_contribution_soft cso ON con.id = cso.contribution_id\n GROUP BY id, contact_id, scredit_id\n UNION ALL\n SELECT scredit.contribution_id as id, scredit.contact_id, scredit.id as filter_id, scredit.id as scredit_id\n FROM civicrm_contribution_soft as scredit"; CRM_Core_DAO::executeQuery($tempQuery); $tempTableFilled = TRUE; } return TRUE; } return FALSE; }