function chado_analysis_insert

2.x tripal_analysis.chado_node.inc chado_analysis_insert($node)
1.x tripal_analysis.module chado_analysis_insert($node)

Implements hook_insert(). When a new chado_analysis node is created we also need to add information to our chado_analysis table. This function is called on insert of a new node of type 'chado_analysis' and inserts the necessary information.

Related topics

File

tripal_analysis/includes/tripal_analysis.chado_node.inc, line 407
Implements Drupal Node hooks to create the chado_analysis node content type.

Code

function chado_analysis_insert($node) {

  $node->analysisname = trim($node->analysisname);
  $node->program = trim($node->program);
  $node->programversion = trim($node->programversion);
  $node->algorithm = trim($node->algorithm);
  $node->sourcename = trim($node->sourcename);
  $node->sourceversion = trim($node->sourceversion);
  $node->sourceuri = trim($node->sourceuri);
  $node->description = trim($node->description['value']);

  // if there is an analysis_id in the $node object then this must be a sync so
  // we can skip adding the analysis as it is already there, although
  // we do need to proceed with the rest of the insert
  if (!property_exists($node, 'analysis_id')) {

    // Create a timestamp so we can insert it into the chado database
    $time = $node->timeexecuted;
    $month = $time['month'];
    $day = $time['day'];
    $year = $time['year'];
    $timestamp = $month . '/' . $day . '/' . $year;

    // Insert and then get the newly inserted analysis record
    $values = array(
      'name' => $node->analysisname,
      'description' => $node->description,
      'program' => $node->program,
      'programversion' => $node->programversion,
      'algorithm' => $node->algorithm,
      'sourcename' => $node->sourcename,
      'sourceversion' => $node->sourceversion,
      'sourceuri' => $node->sourceuri,
      'timeexecuted' => $timestamp
    );
    $analysis = chado_insert_record('analysis', $values);
    if (!$analysis) {
      drupal_set_message(t('Unable to add analysis.'), 'warning');
      tripal_report_error('tripal_analysis', TRIPAL_ERROR, 'Insert analysis: Unable to create analysis where values:%values', 
      array('%values' => print_r($values, TRUE)));
      return;
    }
    $analysis_id = $analysis['analysis_id'];

    // now add in the properties
    $details = array(
      'property_table' => 'analysisprop',
      'base_table' => 'analysis',
      'foreignkey_name' => 'analysis_id',
      'foreignkey_value' => $analysis_id
    );
    chado_update_node_form_properties($node, $details);
  }
  else {
    $analysis_id = $node->analysis_id;
  }

  // Make sure the entry for this analysis doesn't already exist in the
  // chado_analysis table if it doesn't exist then we want to add it.
  $check_org_id = chado_get_id_from_nid('analysis', $node->nid);
  if (!$check_org_id) {
    $record = new stdClass();
    $record->nid = $node->nid;
    $record->vid = $node->vid;
    $record->analysis_id = $analysis_id;
    drupal_write_record('chado_analysis', $record);
  }

  // add the analysis to the node object for
  // use by other analysis modules that may be using this function
  $node->analysis = $analysis;
  $node->analysis_id = $analysis_id; // we need to set this for children
}