'.t('Use the search options below to find individuals by name, address, group, or more.').'

'; } } /** * Implementation of hook_menu(). */ function civicrm_search_menu($may_cache) { $items = array(); if ($may_cache) { $items[] = array('title' => t('CiviCRM Search'), 'path' => 'civicrm/search', 'access' => user_access('access CiviCRM'), 'callback' => 'civicrm_search_i_form', ); } return $items; } /** * Search form for individuals. */ function civicrm_search_i_form($query_string = NULL) { $output = NULL; // prenup our output and our search queries. $query = array(); if (isset($query_string)) { $query = _decode_search_request($query_string); } $form = array(); $form['name-based'] = array( '#type' => 'fieldset', '#title' => t('Name-based Searching'), '#collapsible' => TRUE, '#collapsed' => isset($query_string) ? ($query['type'] == 'name-based' ? FALSE : TRUE) : FALSE, ); $form['name-based']['first_name'] = array( '#type' => 'textfield', '#title' => t('First Name'), '#default_value' => isset($query['first_name']) ? $query['first_name'] : NULL, ); $form['name-based']['last_name'] = array( '#type' => 'textfield', '#title' => t('Last Name'), '#default_value' => isset($query['last_name']) ? $query['last_name'] : NULL, ); // soothing ocean sounds mixed with sleep inducing melodies. $form['name-based']['type'] = array('#type' => 'value', '#value' => 'name-based', ); $form['name-based']['submit'] = array('#type' => 'submit', '#value' => t('Search for Matching Individuals'), ); $output .= drupal_get_form('civicrm_search_i_form_name_based', $form); if (isset($query_string) && isset($query['type'])) { } return $output; } /* all our search forms redirect back to the main URL, transformed slightly. */ function civicrm_search_i_form_submit($form_values) { return 'civicrm/search/i/'._encode_search_request($form_values); } function civicrm_search_i_form_name_based_submit($form_id, $form_values) { return civicrm_search_i_form_submit($form_values); } /** * Turns a string of keypairs into an array. */ function _decode_search_request($query) { $params = array(); // result returned. $query = str_replace('+', ' ', $query); $pairs = explode(' ', $query); foreach ($pairs as $pair) { $fpair = explode(':', $pair); $params[$fpair[0]] = strstr($fpair[1], ',') ? explode(',', $fpair[1]) : $fpair[1]; } return $params; } /** * Turns an array into a string of keypairs. */ function _encode_search_request($form_values) { $params = array(); // holds our returned result. $valid_keys = array('type', 'first_name', 'last_name', 'county', 'postal_code', 'interest', ); foreach ($valid_keys as $valid_key) { if (isset($form_values[$valid_key])) { if (is_array($form_values[$valid_key])) { $params[] = "$valid_key:".implode(',', $form_values[$valid_key]); } else { $params[] = "$valid_key:$form_values[$valid_key]"; } } } return implode(' ', $params); }