Browse Source

code cleanup and comments

2.x-ebsco
Paul Pound 11 years ago
parent
commit
8a3563c82d
  1. 49
      roblib_search.module
  2. 73
      targets/solr_site/roblib_search_solr_site.module

49
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) { function roblib_search_config_form($form, &$form_state) {
$form['roblib_search_panel_page'] = array( $form['roblib_search_panel_page'] = array(
@ -69,6 +80,9 @@ function roblib_search_permission() {
} }
/**
* Implements hook_block_info().
*/
function roblib_search_block_info() { function roblib_search_block_info() {
$blocks['roblib_search_form'] = array( $blocks['roblib_search_form'] = array(
@ -87,7 +101,6 @@ function roblib_search_block_info() {
* Implements hook_theme(). * Implements hook_theme().
*/ */
function roblib_search_theme() { function roblib_search_theme() {
// set path
$path = drupal_get_path('module', 'roblib_search'); $path = drupal_get_path('module', 'roblib_search');
$file = 'theme.inc'; $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){ function roblib_search_preprocess_panels_pane(&$variables, $hook){
switch ($variables['pane']->subtype) { switch ($variables['pane']->subtype) {
case 'roblib_search-roblib_search_other': case 'roblib_search-roblib_search_other':
$variables['title_prefix'] = '<div class="roblib-search-header roblib-search-other-sources-header">'; $variables['title_prefix'] = '<div class="roblib-search-header roblib-search-other-sources-header">';
$variables['title_suffix'] = '</div>'; $variables['title_suffix'] = '</div>';
break; break;
} }
} }
/**
* Implements hook_init().
*/
function roblib_search_init() { function roblib_search_init() {
// Make qtip available for all targets js. // Make qtip available for all targets js.
drupal_add_js(drupal_get_path('module', 'roblib_search') . '/js/jquery.qtip.min.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'); drupal_add_css(drupal_get_path('module', 'roblib_search') . '/css/jquery.qtip.min.css');
} }
/**
* Implements hook_block_view().
*/
function roblib_search_block_view($delta = '') { function roblib_search_block_view($delta = '') {
switch ($delta) { switch ($delta) {
case 'roblib_search_form': case 'roblib_search_form':
@ -137,8 +162,9 @@ function roblib_search_block_view($delta = '') {
* Roblib search simple search form submit. * Roblib search simple search form submit.
* *
* @param array $form * @param array $form
* Drupal form array
* @param array $form_state * @param array $form_state
* * Drupal formstate array
*/ */
function roblib_search_simple_form_submit($form, &$form_state) { function roblib_search_simple_form_submit($form, &$form_state) {
global $base_url; 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))); 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) { function roblib_search_log_query($search_string) {
$eid = db_insert('roblib_search_log') $eid = db_insert('roblib_search_log')
->fields(array( ->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 * @param array $form
* Drupal form array
* @param array $form_state * @param array $form_state
* Drupal formstate
*
* @return array * @return array
* A Drupal formapi array
*/ */
function roblib_search_simple_form($form, &$form_state) { function roblib_search_simple_form($form, &$form_state) {
if (isset($_GET['roblib_query'])) { if (isset($_GET['roblib_query'])) {
@ -188,6 +224,7 @@ function roblib_search_simple_form($form, &$form_state) {
'#size' => '15', '#size' => '15',
'#type' => 'textfield', '#type' => 'textfield',
'#title' => '', '#title' => '',
'#required' => TRUE,
'#default_value' => $query, '#default_value' => $query,
); );
$form['simple']['submit'] = array( $form['simple']['submit'] = array(
@ -199,10 +236,6 @@ function roblib_search_simple_form($form, &$form_state) {
/** /**
* Implements hook_help(). * Implements hook_help().
*
* @param type $path
* @param type $arg
* @return type
*/ */
function roblib_search_help($path, $arg) { function roblib_search_help($path, $arg) {
switch ($path) { switch ($path) {

73
targets/solr_site/roblib_search_solr_site.module

@ -57,6 +57,17 @@ function roblib_search_solr_site_menu() {
return $items; 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) { function roblib_search_solr_site_config_form($form, &$form_state) {
$form['roblib_search_solr_site_url'] = array( $form['roblib_search_solr_site_url'] = array(
'#type' => 'textfield', '#type' => 'textfield',
@ -129,6 +140,9 @@ function roblib_search_solr_site_theme() {
); );
} }
/**
* Implements hook_block_info().
*/
function roblib_search_solr_site_block_info() { function roblib_search_solr_site_block_info() {
$blocks['roblib_search_solr_site_bestbet'] = array( $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. * By adding our divs we can theme ours without affecting other drupal panels.
* *
* @param $variables * @param array $variables
* @param $hook * 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) { switch ($variables['pane']->subtype) {
case 'roblib_search_solr_site-roblib_search_solr_site_bestbet': case 'roblib_search_solr_site-roblib_search_solr_site_bestbet':
$variables['title_prefix'] = '<div class="roblib-search-header roblib-search-solr-bestbet-header">'; $variables['title_prefix'] = '<div class="roblib-search-header roblib-search-solr-bestbet-header">';
@ -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 = '') { function roblib_search_solr_site_block_view($delta = '') {
switch ($delta) { switch ($delta) {
case 'roblib_search_solr_site_bestbet': case 'roblib_search_solr_site_bestbet':
@ -219,27 +237,56 @@ function roblib_search_solr_site_block_view($delta = '') {
return $block; 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) { 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'); print roblib_search_solr_site_get_results($query, '-bundle:bestbet OR -im_field_keywords:627 OR -bundle:database');
exit(); 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) { function roblib_search_solr_site_bestbet($query) {
// Bestbet is a very strict search with an exact match on node title only. $query = preg_replace('/\'\"/', '', $query);
// 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);
$json = roblib_search_solr_site_get_results("sort_label:\"$query\"", 'bundle:bestbet'); $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; print $json;
exit(); 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) { function roblib_search_solr_site_databases($query) {
print roblib_search_solr_site_get_results($query, 'bundle:database'); print roblib_search_solr_site_get_results($query, 'bundle:database');
exit(); 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) { function roblib_search_solr_site_guides($query) {
// TODO make the field and value searched configurable instead of hardcoded. // TODO make the field and value searched configurable instead of hardcoded.
// sm_vid_SearchKeywords:guides is another field we might use. // 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. * 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. * This information is not in solr as it comes from a custom field.
* *
*
* @param string $json * @param string $json
* The json string returned from the solr query. * 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 * @param string $query
* A string to search for
* @param string $type
* A string to filter the query against field:value
*
* @return string * @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'); $solr_url = variable_get('roblib_search_solr_site_url', 'http://localhost:8983/solr');
$num_results = variable_get('roblib_search_solr_site_num_results', '5'); $num_results = variable_get('roblib_search_solr_site_num_results', '5');
$data = array( $data = array(

Loading…
Cancel
Save