$pub->pub_id,
'type_id' => array(
'name' => 'Citation',
),
);
$citation_rec = tripal_core_generate_chado_var('pubprop', $values);
$citation_rec = tripal_core_expand_chado_vars($citation_rec, 'field', 'pubprop.value');
// if we have the citation then use it, otherwise, just use the title
if ($citation_rec->value) {
$pub_info = $citation_rec->value;
}
else {
$pub_info = $pub->title;
}
// if the publication has a node then link to it
if ($pub->nid) {
$pub_info = l($pub_info ,'node/' . $pub->nid, array('attributes' => array('target' => '_blank')));
}
$rows[] = array(number_format($i) . ".", $pub->pyear, $pub_info);
$i++;
}
$headers = array('', 'Year', 'Publication');
$table = theme('table', $headers, $rows);
// join all to form the results
$output .= "
Found " . number_format($total_items) . ". Page " . ($page + 1) . " of $total_pages. " . " Results" . $table . '
' . $pager; } return $output; } /** * Purpose: Provides the form to search pubmed * * @ingroup tripal_pub */ function tripal_pub_search_form(&$form_state = NULL) { tripal_core_ahah_init_form(); // Set the default values. If the pub_import_id isn't already defined by the form values // and one is provided then look it up in the database $criteria = NULL; // if the session has variables then use those. This should only happen when // the 'Test Criteria' button is clicked. $num_criteria = $_SESSION['tripal_pub_search_form']['num_criteria'] ? $_SESSION['tripal_pub_search_form']['num_criteria'] : $num_criteria; $from_year = $_SESSION['tripal_pub_search_form']['from_year'] ? $_SESSION['tripal_pub_search_form']['from_year'] : ''; $to_year = $_SESSION['tripal_pub_search_form']['to_year'] ? $_SESSION['tripal_pub_search_form']['to_year'] : ''; // If the form_state has variables then use those. This happens when an error occurs on the form or the // form is resbumitted using AJAX $num_criteria = $form_state['values']['num_criteria'] ? $form_state['values']['num_criteria'] : $num_criteria; // change the number of criteria based on form_state post data. if (!$num_criteria) { $num_criteria = 0; } if($form_state['post']["add-$num_criteria"]) { $num_criteria++; } if($form_state['post']["remove-$num_criteria"]) { $num_criteria--; } $form['num_criteria']= array( '#type' => 'hidden', '#default_value' => $num_criteria, ); // get publication properties list $properties = array(); $properties[] = 'Any Field'; $sql = " SELECT CVTS.cvterm_id, CVTS.name, CVTS.definition FROM {cvtermpath} CVTP INNER JOIN {cvterm} CVTS ON CVTP.subject_id = CVTS.cvterm_id INNER JOIN {cvterm} CVTO ON CVTP.object_id = CVTO.cvterm_id INNER JOIN {cv} ON CVTO.cv_id = CV.cv_id WHERE CV.name = 'tripal_pub' and CVTO.name = 'Publication Details' and NOT CVTS.is_obsolete = 1 ORDER BY CVTS.name ASC "; $prop_types = chado_query($sql); while ($prop = db_fetch_object($prop_types)) { $properties[$prop->cvterm_id] = $prop->name; } for($i = 0; $i <= $num_criteria; $i++) { $search_terms = ''; $scope = ''; $operation = ''; $mode = ''; // if we have criteria supplied from the database then use that, othrewise look from the form_state or the session if ($criteria) { $search_terms = $criteria['criteria'][$i]['search_terms']; $scope = $criteria['criteria'][$i]['scope']; $mode = $criteria['criteria'][$i]['mode']; $operation = $criteria['criteria'][$i]['operation']; } // first populate defaults using any values in the SESSION variable $search_terms = $_SESSION['tripal_pub_search_form']['criteria'][$i]['search_terms'] ? $_SESSION['tripal_pub_search_form']['criteria'][$i]['search_terms'] : $search_terms; $scope = $_SESSION['tripal_pub_search_form']['criteria'][$i]['scope'] ? $_SESSION['tripal_pub_search_form']['criteria'][$i]['scope'] : $scope; $mode = $_SESSION['tripal_pub_search_form']['criteria'][$i]['mode'] ? $_SESSION['tripal_pub_search_form']['criteria'][$i]['mode'] : $mode; $operation = $_SESSION['tripal_pub_search_form']['criteria'][$i]['operation'] ? $_SESSION['tripal_pub_search_form']['criteria'][$i]['operation'] : $operation; // next populate defaults using any form values $search_terms = $form_state['values']["search_terms-$i"] ? $form_state['values']["search_terms-$i"] : $search_terms; $scope = $form_state['values']["scope-$i"] ? $form_state['values']["scope-$i"] : $scope; $mode = $form_state['values']["mode-$i"] ? $form_state['values']["mode-$i"] : $mode; $operation = $form_state['values']["operation-$i"] ? $form_state['values']["operation-$i"] : $operation; // default to searching the title and abstract if (!$scope) { $scope = 'abstract'; } $form['criteria'][$i]["search_terms-$i"] = array( '#type' => 'textfield', '#description' => t('Please provide a list of words for searching"'), '#default_value' => $search_terms, '#required' => TRUE, ); $form['criteria'][$i]["scope-$i"] = array( '#type' => 'select', '#description' => t('Please select the fields to search for this term.'), '#options' => $properties, '#default_value' => $scope, ); $form['criteria'][$i]["mode-$i"] = array( '#type' => 'select', '#options' => array( 'Contains' => 'Contains', 'Starts With' => 'Starts With', 'Ends With' => 'Ends With', 'Exactly' => 'Exactly'), '#default_value' => $mode, ); if ($i > 0) { $form['criteria'][$i]["operation-$i"] = array( '#type' => 'select', '#options' => array( 'AND' => 'AND', 'OR' => 'OR', 'NOT' => 'NOT'), '#default_value' => $operation, ); } if ($i == $num_criteria) { if($i > 0) { $form['criteria'][$i]["remove-$i"] = array( '#type' => 'image_button', '#value' => t('Remove'), '#src' => drupal_get_path('theme', 'tripal') . '/images/minus.png', '#ahah' => array( 'path' => "find/publications/criteria/minus/$i", 'wrapper' => 'tripal-pub-search-form', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } $form['criteria'][$i]["add-$i"] = array( '#type' => 'image_button', '#value' => t('Add'), '#src' => drupal_get_path('theme', 'tripal') . '/images/add.png', '#ahah' => array( 'path' => "find/publications/criteria/add/$i", 'wrapper' => 'tripal-pub-search-form', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } } $form['criteria']["from_year"] = array( '#type' => 'textfield', '#default_value' => $from_year, '#required' => FALSE, '#title' => 'Years from', '#size' => 4, '#maxlength' => 4, ); $form['criteria']["to_year"] = array( '#type' => 'textfield', '#default_value' => $to_year, '#required' => FALSE, '#title' => 'to', '#size' => 4, '#maxlength' => 4, ); $form['search'] = array( '#type' => 'submit', '#value' => t('Search'), ); return $form; } /* * */ function theme_tripal_pub_search_form($form) { $rows = array(); foreach ($form['criteria'] as $i => $element) { if(is_numeric($i)) { $rows[] = array( array('data' => drupal_render($element["operation-$i"]), 'width' => '10%'), array('data' => drupal_render($element["scope-$i"]), 'width' => '10%'), drupal_render($element["mode-$i"]) . drupal_render($element["search_terms-$i"]), array('data' => drupal_render($element["add-$i"]) . drupal_render($element["remove-$i"]), 'width' => '5%'), ); } } $headers = array('Operation','Scope', 'Search Terms', ''); $markup = "