/** * Get Event record. * * * @param array $params an associative array of name/value property values of civicrm_event * * @return Array of all found event property values. * @access public */ function civicrm_event_search(&$params) { if (!is_array($params)) { return civicrm_create_error(ts('Input parameters is not an array.')); } $inputParams = array(); $returnProperties = array(); $returnCustomProperties = array(); $otherVars = array('sort', 'offset', 'rowCount'); $sort = false; // don't check if empty, more meaningful error for API user instead of siletn defaults $offset = array_key_exists('return.offset', $params) ? $params['return.offset'] : 0; $rowCount = array_key_exists('return.max_results', $params) ? $params['return.max_results'] : 25; foreach ($params as $n => $v) { if (substr($n, 0, 7) == 'return.') { if (substr($n, 0, 14) == 'return.custom_') { //take custom return properties separate $returnCustomProperties[] = substr($n, 7); } elseif (!in_array(substr($n, 7), array('offset', 'max_results'))) { $returnProperties[] = substr($n, 7); } } elseif (in_array($n, $otherVars)) { ${$n} = $v; } else { $inputParams[$n] = $v; } } if (!empty($returnProperties)) { $returnProperties[] = 'id'; $returnProperties[] = 'event_type_id'; } require_once 'CRM/Core/BAO/CustomGroup.php'; require_once 'CRM/Event/BAO/Event.php'; $eventDAO = new CRM_Event_BAO_Event(); $eventDAO->copyValues($inputParams); $event = array(); if (!empty($returnProperties)) { $eventDAO->selectAdd(); $eventDAO->selectAdd(implode(',', $returnProperties)); } $eventDAO->whereAdd('( is_template IS NULL ) OR ( is_template = 0 )'); $eventDAO->orderBy($sort); $eventDAO->limit((int) $offset, (int) $rowCount); $eventDAO->find(); while ($eventDAO->fetch()) { $event[$eventDAO->id] = array(); CRM_Core_DAO::storeValues($eventDAO, $event[$eventDAO->id]); $groupTree =& CRM_Core_BAO_CustomGroup::getTree('Event', CRM_Core_DAO::$_nullObject, $eventDAO->id, false, $eventDAO->event_type_id); $groupTree = CRM_Core_BAO_CustomGroup::formatGroupTree($groupTree, 1, CRM_Core_DAO::$_nullObject); $defaults = array(); CRM_Core_BAO_CustomGroup::setDefaults($groupTree, $defaults); if (!empty($defaults)) { foreach ($defaults as $key => $val) { if (!empty($returnCustomProperties)) { $customKey = explode('_', $key); //show only return properties if (in_array('custom_' . $customKey['1'], $returnCustomProperties)) { $event[$eventDAO->id][$key] = $val; } } else { $event[$eventDAO->id][$key] = $val; } } } } //end of the loop $eventDAO->free(); return $event; }