|  | @@ -5,141 +5,126 @@ $organism = $variables['node']->organism;
 | 
											
												
													
														|  |  // get the list of available sequence ontology terms for which
 |  |  // get the list of available sequence ontology terms for which
 | 
											
												
													
														|  |  // we will build drupal pages from features in chado.  If a feature
 |  |  // we will build drupal pages from features in chado.  If a feature
 | 
											
												
													
														|  |  // is not one of the specified typse we won't build a node for it.
 |  |  // is not one of the specified typse we won't build a node for it.
 | 
											
												
													
														|  | -$allowed_types = variable_get('chado_browser_feature_types', 'gene mRNA');
 |  | 
 | 
											
												
													
														|  | 
 |  | +$allowed_types = variable_get('chado_browser_feature_types');
 | 
											
												
													
														|  |  $allowed_types = preg_replace("/[\s\n\r]+/", " ", $allowed_types);
 |  |  $allowed_types = preg_replace("/[\s\n\r]+/", " ", $allowed_types);
 | 
											
												
													
														|  |  $so_terms = explode(' ', $allowed_types);
 |  |  $so_terms = explode(' ', $allowed_types);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -// get the feature_id's of the feature that belong to this organism.  But we only
 |  | 
 | 
											
												
													
														|  | -// want 25 and we want a pager to let the user cycle between pages of features.
 |  | 
 | 
											
												
													
														|  | -// so we, use the chado_select_record API function to get the results and
 |  | 
 | 
											
												
													
														|  | -// generate the pager.  The function is smart enough to know which page the user is
 |  | 
 | 
											
												
													
														|  | -// on and retrieves the proper set of features
 |  | 
 | 
											
												
													
														|  | -$element = 0;        // an index to specify the pager if more than one is on the page
 |  | 
 | 
											
												
													
														|  | -$num_per_page = 25;  // the number of features to show per page
 |  | 
 | 
											
												
													
														|  | -$values = array(
 |  | 
 | 
											
												
													
														|  | -  'organism_id' => $organism->organism_id,
 |  | 
 | 
											
												
													
														|  | -  'type_id' => array(
 |  | 
 | 
											
												
													
														|  | -    'name' => $so_terms
 |  | 
 | 
											
												
													
														|  | -  ),
 |  | 
 | 
											
												
													
														|  | -);
 |  | 
 | 
											
												
													
														|  | -$columns = array('feature_id');
 |  | 
 | 
											
												
													
														|  | -$options = array(
 |  | 
 | 
											
												
													
														|  | -  'pager' => array(
 |  | 
 | 
											
												
													
														|  | -    'limit' => $num_per_page,
 |  | 
 | 
											
												
													
														|  | -    'element' => $element
 |  | 
 | 
											
												
													
														|  | -   ),
 |  | 
 | 
											
												
													
														|  | -  'order_by' => array('name' => 'ASC'),
 |  | 
 | 
											
												
													
														|  | -);
 |  | 
 | 
											
												
													
														|  | -$results = chado_select_record('feature', $columns, $values, $options);
 |  | 
 | 
											
												
													
														|  | 
 |  | +// Don't show the browser if there are no terms
 | 
											
												
													
														|  | 
 |  | +if (count($so_terms) > 0) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -// now that we have all of the feature IDs, we want to expand each one so that we
 |  | 
 | 
											
												
													
														|  | -// have all of the neccessary values, including the node ID, if one exists, and the
 |  | 
 | 
											
												
													
														|  | -// cvterm type name.
 |  | 
 | 
											
												
													
														|  | -$features = array();
 |  | 
 | 
											
												
													
														|  | -foreach ($results as $result) {
 |  | 
 | 
											
												
													
														|  | -  $values = array('feature_id' => $result->feature_id);
 |  | 
 | 
											
												
													
														|  | 
 |  | +  // get the feature_id's of the feature that belong to this organism.  But we only
 | 
											
												
													
														|  | 
 |  | +  // want 25 and we want a pager to let the user cycle between pages of features.
 | 
											
												
													
														|  | 
 |  | +  // so we, use the chado_select_record API function to get the results and
 | 
											
												
													
														|  | 
 |  | +  // generate the pager.  The function is smart enough to know which page the user is
 | 
											
												
													
														|  | 
 |  | +  // on and retrieves the proper set of features
 | 
											
												
													
														|  | 
 |  | +  $element = 0;        // an index to specify the pager if more than one is on the page
 | 
											
												
													
														|  | 
 |  | +  $num_per_page = 25;  // the number of features to show per page
 | 
											
												
													
														|  | 
 |  | +  $values = array(
 | 
											
												
													
														|  | 
 |  | +    'organism_id' => $organism->organism_id,
 | 
											
												
													
														|  | 
 |  | +    'type_id' => array(
 | 
											
												
													
														|  | 
 |  | +      'name' => $so_terms
 | 
											
												
													
														|  | 
 |  | +    ),
 | 
											
												
													
														|  | 
 |  | +  );
 | 
											
												
													
														|  | 
 |  | +  $columns = array('feature_id');
 | 
											
												
													
														|  |    $options = array(
 |  |    $options = array(
 | 
											
												
													
														|  | -    'include_fk' => array(
 |  | 
 | 
											
												
													
														|  | -      'type_id' => 1
 |  | 
 | 
											
												
													
														|  | -    )
 |  | 
 | 
											
												
													
														|  | 
 |  | +    'pager' => array(
 | 
											
												
													
														|  | 
 |  | +      'limit' => $num_per_page,
 | 
											
												
													
														|  | 
 |  | +      'element' => $element
 | 
											
												
													
														|  | 
 |  | +     ),
 | 
											
												
													
														|  | 
 |  | +    'order_by' => array('name' => 'ASC'),
 | 
											
												
													
														|  |    );
 |  |    );
 | 
											
												
													
														|  | -  $features[] = chado_generate_var('feature', $values, $options);
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | 
 |  | +  $results = chado_select_record('feature', $columns, $values, $options);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -if (count($features) > 0) { ?>
 |  | 
 | 
											
												
													
														|  | -  <div class="tripal_organism-data-block-desc tripal-data-block-desc">The following browser provides a quick view for new visitors.  Use the searching mechanism to find specific features.</div> <?php
 |  | 
 | 
											
												
													
														|  | 
 |  | +  // now that we have all of the feature IDs, we want to expand each one so that we
 | 
											
												
													
														|  | 
 |  | +  // have all of the neccessary values, including the node ID, if one exists, and the
 | 
											
												
													
														|  | 
 |  | +  // cvterm type name.
 | 
											
												
													
														|  | 
 |  | +  $features = array();
 | 
											
												
													
														|  | 
 |  | +  foreach ($results as $result) {
 | 
											
												
													
														|  | 
 |  | +    $values = array('feature_id' => $result->feature_id);
 | 
											
												
													
														|  | 
 |  | +    $options = array(
 | 
											
												
													
														|  | 
 |  | +      'include_fk' => array(
 | 
											
												
													
														|  | 
 |  | +        'type_id' => 1
 | 
											
												
													
														|  | 
 |  | +      )
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +    $features[] = chado_generate_var('feature', $values, $options);
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  // the $headers array is an array of fields to use as the colum headers.
 |  | 
 | 
											
												
													
														|  | -  // additional documentation can be found here
 |  | 
 | 
											
												
													
														|  | -  // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 |  | 
 | 
											
												
													
														|  | -  $headers = array('Feature Name' ,'Unique Name', 'Type');
 |  | 
 | 
											
												
													
														|  | 
 |  | +  if (count($features) > 0) { ?>
 | 
											
												
													
														|  | 
 |  | +    <div class="tripal_organism-data-block-desc tripal-data-block-desc">The following browser provides a quick view for new visitors.  Use the searching mechanism to find specific features.</div> <?php
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  // the $rows array contains an array of rows where each row is an array
 |  | 
 | 
											
												
													
														|  | -  // of values for each column of the table in that row.  Additional documentation
 |  | 
 | 
											
												
													
														|  | -  // can be found here:
 |  | 
 | 
											
												
													
														|  | -  // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 |  | 
 | 
											
												
													
														|  | -  $rows = array();
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // the $headers array is an array of fields to use as the colum headers.
 | 
											
												
													
														|  | 
 |  | +    // additional documentation can be found here
 | 
											
												
													
														|  | 
 |  | +    // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 | 
											
												
													
														|  | 
 |  | +    $headers = array('Feature Name' ,'Unique Name', 'Type');
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  // let admins know they can customize the terms that appear in the list
 |  | 
 | 
											
												
													
														|  | -  print tripal_set_message("Administrators, you can specify the feature types ".
 |  | 
 | 
											
												
													
														|  | -    "that should appear in this browser or remove it from the list of resources ".
 |  | 
 | 
											
												
													
														|  | -    "by navigating to the ".
 |  | 
 | 
											
												
													
														|  | -    l("Tripal feature settings page", "admin/tripal/chado/tripal_feature/configuration", array('attributes' => array('target' => '_blank'))),
 |  | 
 | 
											
												
													
														|  | -    TRIPAL_INFO,
 |  | 
 | 
											
												
													
														|  | -    array('return_html' => 1)
 |  | 
 | 
											
												
													
														|  | -  );
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // the $rows array contains an array of rows where each row is an array
 | 
											
												
													
														|  | 
 |  | +    // of values for each column of the table in that row.  Additional documentation
 | 
											
												
													
														|  | 
 |  | +    // can be found here:
 | 
											
												
													
														|  | 
 |  | +    // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 | 
											
												
													
														|  | 
 |  | +    $rows = array();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // let admins know they can customize the terms that appear in the list
 | 
											
												
													
														|  | 
 |  | +    print tripal_set_message("Administrators, you can specify the feature types ".
 | 
											
												
													
														|  | 
 |  | +      "that should appear in this browser or remove it from the list of resources ".
 | 
											
												
													
														|  | 
 |  | +      "by navigating to the ".
 | 
											
												
													
														|  | 
 |  | +      l("Tripal feature settings page", "admin/tripal/chado/tripal_feature/configuration", array('attributes' => array('target' => '_blank'))),
 | 
											
												
													
														|  | 
 |  | +      TRIPAL_INFO,
 | 
											
												
													
														|  | 
 |  | +      array('return_html' => 1)
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  foreach ($features as $feature){
 |  | 
 | 
											
												
													
														|  | -    $fname =  $feature->name;
 |  | 
 | 
											
												
													
														|  | -    if (property_exists($feature, 'nid')) {
 |  | 
 | 
											
												
													
														|  | -      $fname =   l($fname, "node/$feature->nid", array('attributes' => array('target' => '_blank')));
 |  | 
 | 
											
												
													
														|  | 
 |  | +    foreach ($features as $feature){
 | 
											
												
													
														|  | 
 |  | +      $fname =  $feature->name;
 | 
											
												
													
														|  | 
 |  | +      if (property_exists($feature, 'nid')) {
 | 
											
												
													
														|  | 
 |  | +        $fname =   l($fname, "node/$feature->nid", array('attributes' => array('target' => '_blank')));
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +      $rows[] = array(
 | 
											
												
													
														|  | 
 |  | +        $fname,
 | 
											
												
													
														|  | 
 |  | +        $feature->uniquename,
 | 
											
												
													
														|  | 
 |  | +        $feature->type_id->name
 | 
											
												
													
														|  | 
 |  | +      );
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    $rows[] = array(
 |  | 
 | 
											
												
													
														|  | -      $fname,
 |  | 
 | 
											
												
													
														|  | -      $feature->uniquename,
 |  | 
 | 
											
												
													
														|  | -      $feature->type_id->name
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // the $table array contains the headers and rows array as well as other
 | 
											
												
													
														|  | 
 |  | +    // options for controlling the display of the table.  Additional
 | 
											
												
													
														|  | 
 |  | +    // documentation can be found here:
 | 
											
												
													
														|  | 
 |  | +    // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 | 
											
												
													
														|  | 
 |  | +    $table = array(
 | 
											
												
													
														|  | 
 |  | +      'header' => $headers,
 | 
											
												
													
														|  | 
 |  | +      'rows' => $rows,
 | 
											
												
													
														|  | 
 |  | +      'attributes' => array(
 | 
											
												
													
														|  | 
 |  | +        'id' => 'tripal_organism-table-features',
 | 
											
												
													
														|  | 
 |  | +        'class' => 'tripal-data-table'
 | 
											
												
													
														|  | 
 |  | +      ),
 | 
											
												
													
														|  | 
 |  | +      'sticky' => FALSE,
 | 
											
												
													
														|  | 
 |  | +      'caption' => '',
 | 
											
												
													
														|  | 
 |  | +      'colgroups' => array(),
 | 
											
												
													
														|  | 
 |  | +      'empty' => '',
 | 
											
												
													
														|  |      );
 |  |      );
 | 
											
												
													
														|  | -  }
 |  | 
 | 
											
												
													
														|  | -  // the $table array contains the headers and rows array as well as other
 |  | 
 | 
											
												
													
														|  | -  // options for controlling the display of the table.  Additional
 |  | 
 | 
											
												
													
														|  | -  // documentation can be found here:
 |  | 
 | 
											
												
													
														|  | -  // https://api.drupal.org/api/drupal/includes%21theme.inc/function/theme_table/7
 |  | 
 | 
											
												
													
														|  | -  $table = array(
 |  | 
 | 
											
												
													
														|  | -    'header' => $headers,
 |  | 
 | 
											
												
													
														|  | -    'rows' => $rows,
 |  | 
 | 
											
												
													
														|  | -    'attributes' => array(
 |  | 
 | 
											
												
													
														|  | -      'id' => 'tripal_organism-table-features',
 |  | 
 | 
											
												
													
														|  | -      'class' => 'tripal-data-table'
 |  | 
 | 
											
												
													
														|  | -    ),
 |  | 
 | 
											
												
													
														|  | -    'sticky' => FALSE,
 |  | 
 | 
											
												
													
														|  | -    'caption' => '',
 |  | 
 | 
											
												
													
														|  | -    'colgroups' => array(),
 |  | 
 | 
											
												
													
														|  | -    'empty' => '',
 |  | 
 | 
											
												
													
														|  | -  );
 |  | 
 | 
											
												
													
														|  | -  // once we have our table array structure defined, we call Drupal's theme_table()
 |  | 
 | 
											
												
													
														|  | -  // function to generate the table.
 |  | 
 | 
											
												
													
														|  | -  print theme_table($table);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // once we have our table array structure defined, we call Drupal's theme_table()
 | 
											
												
													
														|  | 
 |  | +    // function to generate the table.
 | 
											
												
													
														|  | 
 |  | +    print theme_table($table);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -  // the $pager array values that control the behavior of the pager.  For
 |  | 
 | 
											
												
													
														|  | -  // documentation on the values allows in this array see:
 |  | 
 | 
											
												
													
														|  | -  // https://api.drupal.org/api/drupal/includes!pager.inc/function/theme_pager/7
 |  | 
 | 
											
												
													
														|  | -  // here we add the paramter 'block' => 'feature_browser'. This is because
 |  | 
 | 
											
												
													
														|  | -  // the pager is not on the default block that appears. When the user clicks a
 |  | 
 | 
											
												
													
														|  | -  // page number we want the browser to re-appear with the page is loaded.
 |  | 
 | 
											
												
													
														|  | -  $pager = array(
 |  | 
 | 
											
												
													
														|  | -    'tags' => array(),
 |  | 
 | 
											
												
													
														|  | -    'element' => $element,
 |  | 
 | 
											
												
													
														|  | -    'parameters' => array(
 |  | 
 | 
											
												
													
														|  | -      'block' => 'feature_browser'
 |  | 
 | 
											
												
													
														|  | -    ),
 |  | 
 | 
											
												
													
														|  | -    'quantity' => $num_per_page,
 |  | 
 | 
											
												
													
														|  | -  );
 |  | 
 | 
											
												
													
														|  | -  print theme_pager($pager);
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -else {  ?>
 |  | 
 | 
											
												
													
														|  | -  <p>There are no results.</p><?php
 |  | 
 | 
											
												
													
														|  | -  print tripal_set_message("
 |  | 
 | 
											
												
													
														|  | -    Administrators, perform the following to show features in this browser:
 |  | 
 | 
											
												
													
														|  | -    <ul>
 |  | 
 | 
											
												
													
														|  | -      <li>Load features for this organism using the " .
 |  | 
 | 
											
												
													
														|  | -        l("FASTA loader", 'admin/tripal/loaders/fasta_loader') . ",  ".
 |  | 
 | 
											
												
													
														|  | -        l("GFF Loader",   'admin/tripal/loaders/gff3_load') . " or ".
 |  | 
 | 
											
												
													
														|  | -        l("Bulk Loader",  'admin/tripal/loaders/bulk'). "</li>
 |  | 
 | 
											
												
													
														|  | -      <li>Sync the features that should have pages using the ".
 |  | 
 | 
											
												
													
														|  | -        l("Sync features page", 'admin/tripal/chado/tripal_feature/sync'). "</li>
 |  | 
 | 
											
												
													
														|  | -      <li>Return to this page to browse features.</li>
 |  | 
 | 
											
												
													
														|  | -      <li>Ensure the user " .
 |  | 
 | 
											
												
													
														|  | -       l("has permission", 'admin/people/permissions') . " to view the feature content</li>
 |  | 
 | 
											
												
													
														|  | -    </ul>
 |  | 
 | 
											
												
													
														|  | -    <br>
 |  | 
 | 
											
												
													
														|  | -    <br>
 |  | 
 | 
											
												
													
														|  | -    You can specify the feature types
 |  | 
 | 
											
												
													
														|  | -    that should appear in this browser or remove it from the list of resources by navigating to the " .
 |  | 
 | 
											
												
													
														|  | -    l("Tripal feature settings page", "admin/tripal/chado/tripal_feature/configuration", array('attributes' => array('target' => '_blank')))  . "
 |  | 
 | 
											
												
													
														|  | -    The feature browser will not appear to site visitors unless features are present. ",
 |  | 
 | 
											
												
													
														|  | -    TRIPAL_INFO,
 |  | 
 | 
											
												
													
														|  | -    array('return_html' => 1));
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // the $pager array values that control the behavior of the pager.  For
 | 
											
												
													
														|  | 
 |  | +    // documentation on the values allows in this array see:
 | 
											
												
													
														|  | 
 |  | +    // https://api.drupal.org/api/drupal/includes!pager.inc/function/theme_pager/7
 | 
											
												
													
														|  | 
 |  | +    // here we add the paramter 'block' => 'feature_browser'. This is because
 | 
											
												
													
														|  | 
 |  | +    // the pager is not on the default block that appears. When the user clicks a
 | 
											
												
													
														|  | 
 |  | +    // page number we want the browser to re-appear with the page is loaded.
 | 
											
												
													
														|  | 
 |  | +    $pager = array(
 | 
											
												
													
														|  | 
 |  | +      'tags' => array(),
 | 
											
												
													
														|  | 
 |  | +      'element' => $element,
 | 
											
												
													
														|  | 
 |  | +      'parameters' => array(
 | 
											
												
													
														|  | 
 |  | +        'block' => 'feature_browser'
 | 
											
												
													
														|  | 
 |  | +      ),
 | 
											
												
													
														|  | 
 |  | +      'quantity' => $num_per_page,
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +    print theme_pager($pager);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    print tripal_set_message("
 | 
											
												
													
														|  | 
 |  | +      Administrators, please note that the feature browser will be retired in
 | 
											
												
													
														|  | 
 |  | +      a future version of Tripal.",
 | 
											
												
													
														|  | 
 |  | +      TRIPAL_INFO,
 | 
											
												
													
														|  | 
 |  | +      array('return_html' => 1));
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 |