function chado_example_load

2.x tripal_example.chado_node.inc chado_example_load($nodes)

Implementation of hook_load(). This function is necessary to load into the $node object the fields of the table form Chado. For example for the example table, the chado_example_load() function adds in a example object which contains all of the fields and sub objects for data in tables with foreign key relationships.

This function is not required if the hook_node_info() does not define any custom node types.

File

tripal_example/includes/tripal_example.chado_node.inc, line 583
This file should contain all Drupal hooks for interacting with nodes.

Code

function chado_example_load($nodes) {

  // EXPLANATION: when displaying or node or accessing the node in a template
  // we need the data from Chado. This function finds the record in Chado that
  // this node belongs to and adds the record.

  // there may be multiple nodes that get passed in so we have to iterate
  // through them all
  foreach ($nodes as $nid => $node) {
    // find the example and add in the details
    $example_id = chado_get_id_from_nid('example', $nid);

    // if the nid does not have a matching record then skip this node.
    // this can happen with orphaned nodes.
    if (!$example_id) {
      continue;
    }

    // build the example variable by using the chado_generate_var() function
    $values = array('example_id' => $example_id);
    $example = chado_generate_var('example', $values);

    // for fields in the table that are of type 'text' you may want to include
    // those by default, the chado_generate_var does not include text fields as
    // they may be very large and including a large text field can slow the page
    // load.
    // If you know a text field will never be large and it is important for the
    // other functions that will see the node to have access to a field you can
    // include it here using the chado_expand_var() function. In most
    // cases it is probably best to let the end-user decide if text fields
    // should be included by using this function in the templates.
    $example = chado_expand_var($example, 'field', 'example.description');

    // add the new example object to this node.
    $nodes[$nid]->example = $example;

    // If your module is using the Chado Node: Title & Path API to allow custom
    // titles for your node type. Every time you want the title of the node, you
    // need to use the following API function:
    $node->title = chado_get_node_title($node);

  }
}