diff --git a/roblib_search.module b/roblib_search.module index aec1c95..69d0a1b 100644 --- a/roblib_search.module +++ b/roblib_search.module @@ -29,6 +29,17 @@ function roblib_search_menu() { } +/** + * A form for managing the modules configuration. + * + * @param array $form + * A Drupal form array + * @param array $form_state + * A Drupal formstate array + * + * @return array + * A Drupal form + */ function roblib_search_config_form($form, &$form_state) { $form['roblib_search_panel_page'] = array( @@ -69,6 +80,9 @@ function roblib_search_permission() { } +/** + * Implements hook_block_info(). + */ function roblib_search_block_info() { $blocks['roblib_search_form'] = array( @@ -87,7 +101,6 @@ function roblib_search_block_info() { * Implements hook_theme(). */ function roblib_search_theme() { - // set path $path = drupal_get_path('module', 'roblib_search'); $file = 'theme.inc'; @@ -101,16 +114,25 @@ function roblib_search_theme() { ); } +/** + * Hook the panels pane preprocessor so we can wrap it in a div for themeing. + * + * @param array $variables + * Drupal variables array + * @param $hook + */ function roblib_search_preprocess_panels_pane(&$variables, $hook){ switch ($variables['pane']->subtype) { case 'roblib_search-roblib_search_other': $variables['title_prefix'] = '
'; $variables['title_suffix'] = '
'; break; - } } +/** + * Implements hook_init(). + */ function roblib_search_init() { // Make qtip available for all targets js. drupal_add_js(drupal_get_path('module', 'roblib_search') . '/js/jquery.qtip.min.js'); @@ -119,6 +141,9 @@ function roblib_search_init() { drupal_add_css(drupal_get_path('module', 'roblib_search') . '/css/jquery.qtip.min.css'); } +/** + * Implements hook_block_view(). + */ function roblib_search_block_view($delta = '') { switch ($delta) { case 'roblib_search_form': @@ -137,8 +162,9 @@ function roblib_search_block_view($delta = '') { * Roblib search simple search form submit. * * @param array $form + * Drupal form array * @param array $form_state - * + * Drupal formstate array */ function roblib_search_simple_form_submit($form, &$form_state) { global $base_url; @@ -151,6 +177,12 @@ function roblib_search_simple_form_submit($form, &$form_state) { drupal_goto($redirect_url, array('query' => array('roblib_query' => $search_string))); } +/** + * Logs a search query to a database table. + * + * @param string $search_string + * The query to log + */ function roblib_search_log_query($search_string) { $eid = db_insert('roblib_search_log') ->fields(array( @@ -162,11 +194,15 @@ function roblib_search_log_query($search_string) { } /** - * Roblib search simple search form + * Roblib search simple search form. * * @param array $form + * Drupal form array * @param array $form_state + * Drupal formstate + * * @return array + * A Drupal formapi array */ function roblib_search_simple_form($form, &$form_state) { if (isset($_GET['roblib_query'])) { @@ -188,6 +224,7 @@ function roblib_search_simple_form($form, &$form_state) { '#size' => '15', '#type' => 'textfield', '#title' => '', + '#required' => TRUE, '#default_value' => $query, ); $form['simple']['submit'] = array( @@ -199,10 +236,6 @@ function roblib_search_simple_form($form, &$form_state) { /** * Implements hook_help(). - * - * @param type $path - * @param type $arg - * @return type */ function roblib_search_help($path, $arg) { switch ($path) { diff --git a/targets/solr_site/roblib_search_solr_site.module b/targets/solr_site/roblib_search_solr_site.module index e68c3af..1b49bd4 100755 --- a/targets/solr_site/roblib_search_solr_site.module +++ b/targets/solr_site/roblib_search_solr_site.module @@ -57,6 +57,17 @@ function roblib_search_solr_site_menu() { return $items; } +/** + * A form to manage the modules configuration. + * + * @param array $form + * A Drupal form array + * @param array $form_state + * A Drupal formstate array + * + * @return array + * A Drupal form array + */ function roblib_search_solr_site_config_form($form, &$form_state) { $form['roblib_search_solr_site_url'] = array( '#type' => 'textfield', @@ -129,6 +140,9 @@ function roblib_search_solr_site_theme() { ); } +/** + * Implements hook_block_info(). + */ function roblib_search_solr_site_block_info() { $blocks['roblib_search_solr_site_bestbet'] = array( @@ -167,10 +181,11 @@ function roblib_search_solr_site_block_info() { * * By adding our divs we can theme ours without affecting other drupal panels. * - * @param $variables - * @param $hook + * @param array $variables + * Drupal variables array + * @param array $hook */ -function roblib_search_solr_site_preprocess_panels_pane(&$variables, $hook){ +function roblib_search_solr_site_preprocess_panels_pane(&$variables, $hook) { switch ($variables['pane']->subtype) { case 'roblib_search_solr_site-roblib_search_solr_site_bestbet': $variables['title_prefix'] = '
'; @@ -194,6 +209,9 @@ function roblib_search_solr_site_preprocess_panels_pane(&$variables, $hook){ } } +/** + * Implements hook_block_view(). + */ function roblib_search_solr_site_block_view($delta = '') { switch ($delta) { case 'roblib_search_solr_site_bestbet': @@ -219,27 +237,56 @@ function roblib_search_solr_site_block_view($delta = '') { return $block; } +/** + * Send the query to solr but limit the results so it doesn't include certain content. + * + * Print json and exit so the javascript can consume the json. + * + * @param string $query + * The solr search string. + */ function roblib_search_solr_site_results($query) { print roblib_search_solr_site_get_results($query, '-bundle:bestbet OR -im_field_keywords:627 OR -bundle:database'); exit(); } +/** + * Send the query to solr but limit the results so it only includes content of type bestbet. + * + * Print json and exit so the javascript can consume the json. + * + * @param string $query + * The solr search string. + */ function roblib_search_solr_site_bestbet($query) { - // Bestbet is a very strict search with an exact match on node title only. - // We have to surround the search with quotes but we don't want double quotes. - // If they have quotes anywhere else in the string we shouldn't get a match anyway. - $query = str_replace('"', '', $query); + $query = preg_replace('/\'\"/', '', $query); $json = roblib_search_solr_site_get_results("sort_label:\"$query\"", 'bundle:bestbet'); - $json = roblib_search_solr_site_add_url($json); + $json = roblib_search_solr_site_add_url($json); print $json; exit(); } +/** + * Send the query to solr but limit the results so it only includes content of type database. + * + * Print json and exit so the javascript can consume the json. + * + * @param string $query + * The solr search string. + */ function roblib_search_solr_site_databases($query) { print roblib_search_solr_site_get_results($query, 'bundle:database'); exit(); } +/** + * Send the query to solr but limit the results so it only includes content of tagged with the guide keyword. + * + * Print json and exit so the javascript can consume the json. + * + * @param string $query + * The solr search string. + */ function roblib_search_solr_site_guides($query) { // TODO make the field and value searched configurable instead of hardcoded. // sm_vid_SearchKeywords:guides is another field we might use. @@ -253,6 +300,7 @@ function roblib_search_solr_site_guides($query) { * Updates the json passed in with a url directly to the target of the link field. * This information is not in solr as it comes from a custom field. * + * * @param string $json * The json string returned from the solr query. * @@ -271,12 +319,17 @@ function roblib_search_solr_site_add_url($json) { } /** + * Sends a query to Solr. * * @param string $query + * A string to search for + * @param string $type + * A string to filter the query against field:value + * * @return string - * json + * Solr results as json. */ -function roblib_search_solr_site_get_results($query = NULL, $type ) { +function roblib_search_solr_site_get_results($query = NULL, $type) { $solr_url = variable_get('roblib_search_solr_site_url', 'http://localhost:8983/solr'); $num_results = variable_get('roblib_search_solr_site_num_results', '5'); $data = array(