|
@@ -0,0 +1,244 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_info() for fields.
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_chado module for offloading the
|
|
|
+ * hook_field_info() hook for each field to specify.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_info() {
|
|
|
+ return array(
|
|
|
+ 'label' => t('Transcripts'),
|
|
|
+ 'description' => t('Transcripts of genes.'),
|
|
|
+ 'default_widget' => 'chado_gene__transcripts_widget',
|
|
|
+ 'default_formatter' => 'chado_gene__transcripts_formatter',
|
|
|
+ 'settings' => array(),
|
|
|
+ 'storage' => array(
|
|
|
+ 'type' => 'field_chado_storage',
|
|
|
+ 'module' => 'tripal_chado',
|
|
|
+ 'active' => TRUE
|
|
|
+ ),
|
|
|
+ );
|
|
|
+}
|
|
|
+/**
|
|
|
+ * Implements hook_attach_info().
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_Chado module. It allows the field
|
|
|
+ * to specify which bundles it will attach to and to specify thee settings.
|
|
|
+ *
|
|
|
+ * @param $entity_type
|
|
|
+ * @param $entity
|
|
|
+ * @param $term
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ * A field array
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_attach_info($entity_type, $bundle, $target) {
|
|
|
+ $field_info = array();
|
|
|
+
|
|
|
+ $table_name = $target['data_table'];
|
|
|
+ $type_table = $target['type_table'];
|
|
|
+ $type_field = $target['field'];
|
|
|
+ $cv_id = $target['cv_id'];
|
|
|
+ $cvterm_id = $target['cvterm_id'];
|
|
|
+
|
|
|
+ // If the linker table does not exists or this is not a gene then we don't want to add attach.
|
|
|
+ $rel_table = $table_name . '_relationship';
|
|
|
+ if (!chado_table_exists($rel_table) || $bundle->label != 'gene') {
|
|
|
+ return $field_info;
|
|
|
+ }
|
|
|
+
|
|
|
+ $schema = chado_get_schema($rel_table);
|
|
|
+ $pkey = $schema['primary key'][0];
|
|
|
+
|
|
|
+ // Initialize the field array.
|
|
|
+ $field_info = array(
|
|
|
+ 'field_name' => 'gene__transcripts',
|
|
|
+ 'field_type' => 'chado_gene__transcripts',
|
|
|
+ 'widget_type' => 'chado_gene__transcripts_widget',
|
|
|
+ 'widget_settings' => array('display_label' => 1),
|
|
|
+ 'description' => '',
|
|
|
+ 'label' => 'Transcripts',
|
|
|
+ 'is_required' => 0,
|
|
|
+ 'cardinality' => FIELD_CARDINALITY_UNLIMITED,
|
|
|
+ 'storage' => 'field_chado_storage',
|
|
|
+ 'field_settings' => array(
|
|
|
+ 'chado_table' => $rel_table,
|
|
|
+ 'chado_column' => $pkey,
|
|
|
+ 'base_table' => $table_name,
|
|
|
+ 'semantic_web' => array(
|
|
|
+ 'type' => '',
|
|
|
+ 'ns' => '',
|
|
|
+ 'nsurl' => '',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+
|
|
|
+ return $field_info;
|
|
|
+
|
|
|
+}
|
|
|
+/**
|
|
|
+ * Implements hook_widget_info.
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_chado module for offloading
|
|
|
+ * the hook_field_widget_info() hook for each field to specify.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_widget_info() {
|
|
|
+ return array(
|
|
|
+ 'label' => t('Transcripts Settings'),
|
|
|
+ 'field types' => array('chado_gene__transcripts')
|
|
|
+ );
|
|
|
+}
|
|
|
+/**
|
|
|
+ * Implements hook_formatter_info.
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_chado module for
|
|
|
+ * offloading the hook_field_formatter_info() for each field
|
|
|
+ * to specify.
|
|
|
+ *
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_formatter_info() {
|
|
|
+ return array(
|
|
|
+ 'label' => t('Transcripts'),
|
|
|
+ 'field types' => array('chado_gene__transcripts'),
|
|
|
+ 'settings' => array(
|
|
|
+ ),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_formatter_settings_summary.
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_chado module for
|
|
|
+ * offloading the hook_field_formatter_settings_summary() for each field
|
|
|
+ * to specify.
|
|
|
+ *
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_formatter_settings_summary($field, $instance,
|
|
|
+ $view_mode) {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Provides a settings form for the formatter.
|
|
|
+ *
|
|
|
+ * This is a hook provided by the tripal_chado module for
|
|
|
+ * offloading the hook_field_formatter_settings_form() for each field
|
|
|
+ * to specify.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_formatter_settings_form($field, $instance,
|
|
|
+ $view_mode, $form, &$form_state) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Validation function for the chado_gene_featureloc_formatter_settings_form.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_formatter_settings_form_validate(&$form, &$form_state) {
|
|
|
+
|
|
|
+ // Place here as an example for validating the settings form.
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * TODO: because this field is meant to handle any xxxxx_transcripts table
|
|
|
+ * then feature hard-coding needs to be replaced as it won't work for
|
|
|
+ * stocks, etc.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_formatter(&$element, $entity_type, $entity,
|
|
|
+ $field, $instance, $langcode, $items, $display) {
|
|
|
+
|
|
|
+ // Get the settings
|
|
|
+ $settings = $display['settings'];
|
|
|
+ $record = $entity->chado_record;
|
|
|
+
|
|
|
+ foreach ($items as $delta => $item) {
|
|
|
+
|
|
|
+ $all_transcripts = key_exists('part of', $item['all_transcripts']['object']) &&
|
|
|
+ key_exists('mRNA', $item['all_transcripts']['object']['part of']) ?
|
|
|
+ $item['all_transcripts']['object']['part of']['mRNA'] : array();
|
|
|
+
|
|
|
+ $headers = array('Feature Name' ,'Unique Name', 'Location');
|
|
|
+ $rows = array();
|
|
|
+
|
|
|
+ foreach ($all_transcripts AS $transcript) {
|
|
|
+ // link the feature to it's node
|
|
|
+ $feature_name = $transcript->record->subject_id->name;
|
|
|
+ $entity_id = $transcript->record->subject_id->entity_id;
|
|
|
+ if ($entity_id) {
|
|
|
+ $feature_name = l($feature_name, "bio_data/" . $entity_id, array('attributes' => array('target' => "_blank")));
|
|
|
+ }
|
|
|
+ $locations = $transcript->child_featurelocs;
|
|
|
+ $loc = "";
|
|
|
+ foreach ($locations AS $location) {
|
|
|
+ $loc .= $location->srcfeature_name . ":" . $location->fmin . ".." . $location->fmax . "<br>";
|
|
|
+ }
|
|
|
+ $rows[] = array(
|
|
|
+ array('data' => $feature_name, 'width' => '30%'),
|
|
|
+ array('data' => $transcript->record->subject_id->uniquename, 'width' => '30%'),
|
|
|
+ array('data' => $loc, 'width' => '30%'),
|
|
|
+ );
|
|
|
+ }
|
|
|
+ $table = array(
|
|
|
+ 'header' => $headers,
|
|
|
+ 'rows' => $rows,
|
|
|
+ 'attributes' => array(
|
|
|
+ 'id' => 'tripal_feature-table-transcripts-object',
|
|
|
+ 'class' => 'tripal-data-table'
|
|
|
+ ),
|
|
|
+ 'sticky' => FALSE,
|
|
|
+ 'caption' => "",
|
|
|
+ 'colgroups' => array(),
|
|
|
+ 'empty' => '',
|
|
|
+ );
|
|
|
+
|
|
|
+ $content = theme_table($table);
|
|
|
+ }
|
|
|
+
|
|
|
+ // once we have our table array structure defined, we call Drupal's theme_table()
|
|
|
+ // function to generate the table.
|
|
|
+ $element[$delta] = array(
|
|
|
+ '#type' => 'markup',
|
|
|
+ '#markup' => $content,
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Loads the field values with appropriate data.
|
|
|
+ *
|
|
|
+ * This function is called by the tripal_chado_field_storage_load() for
|
|
|
+ * each property managed by the field_chado_storage storage type. This is
|
|
|
+ * an optional hook function that is only needed if the field has
|
|
|
+ * multiple form elements.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_load($field, $entity, $base_table, $record) {
|
|
|
+ $field_name = $field['field_name'];
|
|
|
+
|
|
|
+
|
|
|
+ $entity->{$field_name}['und'][0]['all_transcripts'] = tripal_get_feature_relationships($record);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_ws_formatter().
|
|
|
+ */
|
|
|
+// function chado_gene__transcripts_ws_formatter(&$element, $entity_type, $entity,
|
|
|
+// $field, $instance, $items) {
|
|
|
+
|
|
|
+// foreach ($items as $delta => $item) {
|
|
|
+
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_widget().
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_widget(&$widget, $form, $form_state, $field, $instance, $langcode, $items, $delta, $element) {
|
|
|
+
|
|
|
+}
|
|
|
+/**
|
|
|
+ * Callback function for validating the chado_gene_featureloc_widget.
|
|
|
+ */
|
|
|
+function chado_gene__transcripts_widget_validate($element, &$form_state) {
|
|
|
+
|
|
|
+}
|