function tripal_pub_preprocess_tripal_pub_relationships

2.x tripal_pub.theme.inc tripal_pub_preprocess_tripal_pub_relationships(&$variables)
3.x tripal_pub.theme.inc tripal_pub_preprocess_tripal_pub_relationships(&$variables)
1.x tripal_pub.module tripal_pub_preprocess_tripal_pub_relationships(&$variables)

File

tripal_pub/tripal_pub.module, line 815
The Tripal Publication module allows you to search the PubMed databse for academic articles, that relate to user specified tpoic\s. As well, it allows management of publications so that a user can enter specified details regarding a desired…

Code

function tripal_pub_preprocess_tripal_pub_relationships(&$variables) {
  // we want to provide a new variable that contains the matched pubs.
  $pub = $variables['node']->pub;

  // normally we would use tripal_core_expand_chado_vars to expand our
  // organism object and add in the relationships, however whan a large
  // number of relationships are present this significantly slows the
  // query, therefore we will manually perform the query
  $sql = "
    SELECT P.title, P.pub_id, CP.nid, CVT.name as rel_type
    FROM {pub_relationship} PR
      INNER JOIN {pub} P            ON PR.object_id = P.pub_id
      INNER JOIN {cvterm} CVT       ON PR.type_id   = CVT.cvterm_id
      LEFT JOIN public.chado_pub CP ON P.pub_id     = CP.pub_id
    WHERE PR.subject_id = %d
  ";
  $as_subject = chado_query($sql, $pub->pub_id);
  $sql = "
    SELECT P.title, P.pub_id, CP.nid, CVT.name as rel_type
    FROM {pub_relationship} PR
      INNER JOIN {pub} P            ON PR.subject_id = P.pub_id
      INNER JOIN {cvterm} CVT       ON PR.type_id    = CVT.cvterm_id
      LEFT JOIN public.chado_pub CP ON P.pub_id      = CP.pub_id
    WHERE PR.object_id = %d
  ";
  $as_object = chado_query($sql, $pub->pub_id);

  // combine both object and subject relationshisp into a single array
  $relationships = array();
  $relationships['object'] = array();
  $relationships['subject'] = array();

  // iterate through the object relationships
  while ($relationship = db_fetch_object($as_object)) {

    // get the relationship and child types
    $rel_type = t(preg_replace('/_/', " ", $relationship->rel_type));
    $sub_type = t(preg_replace('/_/', " ", $relationship->sub_type));

    if (!array_key_exists($rel_type, $relationships['object'])) {
      $relationships['object'][$rel_type] = array();
    }
    if (!array_key_exists($sub_type, $relationships['object'][$rel_type])) {
      $relationships['object'][$rel_type][$sub_type] = array();
    }
    $relationships['object'][$rel_type][$sub_type][] = $relationship;
  }

  // now add in the subject relationships
  while ($relationship = db_fetch_object($as_subject)) {

    // get the relationship and child types
    $rel_type = t(preg_replace('/_/', " ", $relationship->rel_type));
    $obj_type = t(preg_replace('/_/', " ", $relationship->obj_type));

    if (!array_key_exists($rel_type, $relationships['subject'])) {
      $relationships['subject'][$rel_type] = array();
    }
    if (!array_key_exists($obj_type, $relationships['subject'][$rel_type])) {
      $relationships['subject'][$rel_type][$obj_type] = array();
    }
    $relationships['subject'][$rel_type][$obj_type][] = $relationship;
  }

  $pub->all_relationships = $relationships;
}