public function data__protein_sequence::load

3.x data__protein_sequence.inc public data__protein_sequence::load($entity)

Overrides TripalField::load

See also

TripalField::load()

File

tripal_chado/includes/TripalFields/data__protein_sequence/data__protein_sequence.inc, line 75

Class

data__protein_sequence

Code

public function load($entity) {
  $field_name = $this->field['field_name'];
  $feature = $entity->chado_record;
  $num_seqs = 0;

  // Set some defauls for the empty record
  $entity->{$field_name}['und'][0] = array(
    'value' => '',
  );

  // Look for protein sequences based on the relationship of this field.
  $sql = "
      SELECT F.*
      FROM {feature_relationship} FR
        INNER JOIN {feature} F on FR.subject_id = F.feature_id
        INNER JOIN {cvterm} CVT on CVT.cvterm_id = F.type_id
        INNER JOIN {cvterm} RCVT on RCVT.cvterm_id = FR.type_id
      WHERE
        FR.object_id = :feature_id and
        CVT.name = 'polypeptide' and
        RCVT.name = 'derives_from'
      ORDER BY FR.rank ASC
    ";
  $proteins = chado_query($sql, array(':feature_id' => $feature->feature_id));
  while ($protein = $proteins->fetchObject()) {
    $entity->{$field_name}['und'][$num_seqs]['value'] = $protein->residues;
    // Because we'll be saving a feature we need to maintain all of it's
    // columns in the feature table. The following will add them all.
    $columns = get_object_vars($protein);
    foreach ($columns as $colname => $value) {
      $entity->{$field_name}['und'][$num_seqs]['chado-feature__' . $colname] = $value;
    }
    $num_seqs++;
  }
}