| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 | 
							- <?php
 
- class chado_linker__contact extends TripalField {
 
-   /**
 
-    * @see TripalField::field_info()
 
-    */
 
-   public function field_info() {
 
-     return array(
 
-       'label' => t('Contacts'),
 
-       'description' => t('Associates an indviddual or organization with
 
-           this record.'),
 
-       'default_widget' => 'chado_linker__contact_widget',
 
-       'default_formatter' => 'chado_linker__contact_formatter',
 
-       'settings' => array(),
 
-       'storage' => array(
 
-         'type' => 'field_chado_storage',
 
-         'module' => 'tripal_chado',
 
-         'active' => TRUE
 
-       ),
 
-     );
 
-   }
 
-   /**
 
-    * @see TripalField::can_attach()
 
-    */
 
-   protected function can_attach($entity_type, $bundle, $details) {
 
-     $table_name = $details['chado_table'];
 
-     $type_table = $details['chado_type_table'];
 
-     $type_field = $details['chado_type_column'];
 
-     $cv_id      = $details['chado_cv_id'];
 
-     $cvterm_id  = $details['chado_cvterm_id'];;
 
-     // If the linker table does not exists then we don't want to add attach.
 
-     $contact_table = $table_name . '_contact';
 
-     if (chado_table_exists($contact_table)) {
 
-       return TRUE;
 
-     }
 
-     return FALSE;
 
-   }
 
-   /**
 
-    * @see TripalField::create_info()
 
-    */
 
-   function create_info($entity_type, $bundle, $details) {
 
-     if (!$this->can_attach($entity_type, $bundle, $details)) {
 
-       return;
 
-     }
 
-     $table_name = $details['chado_table'];
 
-     $type_table = $details['chado_type_table'];
 
-     $type_field = $details['chado_type_column'];
 
-     $cv_id      = $details['chado_cv_id'];
 
-     $cvterm_id  = $details['chado_cvterm_id'];
 
-     $contact_table = $table_name . '_contact';
 
-     $schema = chado_get_schema($contact_table);
 
-     $pkey = $schema['primary key'][0];
 
-     return array(
 
-       'field_name' => $contact_table,
 
-       'type' => 'chado_linker__contact',
 
-       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
 
-       'locked' => FALSE,
 
-       'storage' => array(
 
-         'type' => 'field_chado_storage',
 
-       ),
 
-       'settings' => array(
 
-         'chado_table' => $contact_table,
 
-         'chado_column' => $pkey,
 
-         'base_table' => $table_name,
 
-         'semantic_web' => 'local:contact'
 
-       ),
 
-     );
 
-   }
 
-   /**
 
-    * @see TripalField::create_instance_info()
 
-    */
 
-   function create_instance_info($entity_type, $bundle, $details) {
 
-     if (!$this->can_attach($entity_type, $bundle, $details)) {
 
-       return;
 
-     }
 
-     $table_name = $details['chado_table'];
 
-     $type_table = $details['chado_type_table'];
 
-     $type_field = $details['chado_type_column'];
 
-     $cv_id      = $details['chado_cv_id'];
 
-     $cvterm_id  = $details['chado_cvterm_id'];;
 
-     $contact_table = $table_name . '_contact';
 
-     return array(
 
-       'field_name' => $contact_table,
 
-       'entity_type' => $entity_type,
 
-       'bundle' => $bundle->name,
 
-       'label' => 'Contacts',
 
-       'description' => 'An individual, organization or entity that has had
 
-         some responsibility for the creation, delivery or maintenance of
 
-         the associated data.',
 
-       'required' => FALSE,
 
-       'settings' => array(
 
-         'auto_attach' => FALSE,
 
-       ),
 
-       'widget' => array(
 
-         'type' => 'chado_linker__contact_widget',
 
-         'settings' => array(
 
-           'display_label' => 1,
 
-         ),
 
-       ),
 
-       'display' => array(
 
-         'deafult' => array(
 
-           'label' => 'above',
 
-           'type' => 'chado_linker__contact_formatter',
 
-           'settings' => array(),
 
-         ),
 
-       ),
 
-     );
 
-   }
 
-   /**
 
-    * @see TripalField::widget_info()
 
-    */
 
-   function widget_info() {
 
-     return array(
 
-       'label' => t('Contacts'),
 
-       'field types' => array('chado_linker__contact'),
 
-     );
 
-   }
 
-   /**
 
-    * @see TripalField::formatter_info()
 
-    */
 
-   public function formatter_info() {
 
-     return array(
 
-       'label' => t('Contacts'),
 
-       'field types' => array('chado_linker__contact'),
 
-       'settings' => array(
 
-       ),
 
-     );
 
-   }
 
-   /**
 
-    * @see TripalField::formatter_view()
 
-    */
 
-   public function formatter_view(&$element, $entity_type, $entity,
 
-       $field, $instance, $langcode, $items, $display) {
 
-     // Get the settings
 
-     $settings = $display['settings'];
 
-     $record = $entity->chado_record;
 
-     $headers = array('Name', 'Description', 'Type');
 
-     $rows = array();
 
-     foreach ($items as $delta => $item) {
 
-       $contact = $item['value'];
 
-       if (!$contact) {
 
-         continue;
 
-       }
 
-       // Get the field values
 
-       $contact_name = $contact['name'];
 
-       $description = $contact['description'];
 
-       $type = $contact['type'];
 
-       // Add a link i there is an entity.
 
-       if (array_key_exists('entity_id', $item) and $item['entity_id']) {
 
-         $entity_id = $item['entity_id'];
 
-         $contact_name = l($contact_name, "bio_data/" . $entity_id, array('attributes' => array('target' => "_blank")));
 
-       }
 
-       $rows[] = array($contact_name, $description, $type);
 
-     }
 
-     $table = array(
 
-       'header' => $headers,
 
-       'rows' => $rows,
 
-       'attributes' => array(
 
-         'id' => 'tripal_linker-table-contact-object',
 
-         'class' => 'tripal-data-table'
 
-       ),
 
-       'sticky' => FALSE,
 
-       'caption' => "",
 
-       'colgroups' => array(),
 
-       'empty' => 'No contacts available',
 
-     );
 
-     $content = theme_table($table);
 
-     if (count($items) > 0) {
 
-       // once we have our table array structure defined, we call Drupal's theme_table()
 
-       // function to generate the table.
 
-       $element[0] = array(
 
-         '#type' => 'markup',
 
-         '#markup' => $content,
 
-       );
 
-     }
 
-   }
 
-   /**
 
-    * @see TripalField::widget_form()
 
-    */
 
-   public function widget_form(&$widget, &$form, &$form_state, $field, $instance,
 
-       $langcode, $items, $delta, $element) {
 
-   }
 
-   /**
 
-    * @see TripalField::load()
 
-    */
 
-   public function load($field, $entity, $details) {
 
-     $record = $details['record'];
 
-     $field_name = $field['field_name'];
 
-     $field_type = $field['type'];
 
-     $field_table = $field['settings']['chado_table'];
 
-     $field_column = $field['settings']['chado_column'];
 
-     // Get the FK that links to the base record.
 
-     $schema = chado_get_schema($field_table);
 
-     $base_table = $details['record']->tablename;
 
-     $pkey = $schema['primary key'][0];
 
-     $fkey_lcolumn = key($schema['foreign keys'][$base_table]['columns']);
 
-     $fkey_rcolumn = $schema['foreign keys'][$base_table]['columns'][$fkey_lcolumn];
 
-     // Set some defaults for the empty record.
 
-     $entity->{$field_name}['und'][0] = array(
 
-       'value' => array(),
 
-       $field_table . '__' . $pkey => '',
 
-       $field_table . '__' . $fkey_lcolumn => '',
 
-       $field_table . '__' . 'contact_id' => '',
 
-       // Ignore the synonym_sgml column for now.
 
-     );
 
-     $linker_table = $base_table . '_contact';
 
-     $options = array(
 
-       'return_array' => 1,
 
-       'include_fk' => array(
 
-         'contact_id' => array(
 
-           'type_id' => array(
 
-             'dbxref_id' => array(
 
-               'db_id' => TRUE,
 
-             ),
 
-           ),
 
-         ),
 
-         $fkey_lcolumn => TRUE,
 
-       ),
 
-     );
 
-     $record = chado_expand_var($record, 'table', $linker_table, $options);
 
-     $contact_linkers = $record->$linker_table;
 
-     if ($contact_linkers) {
 
-       foreach ($contact_linkers as $i => $contact_linker) {
 
-         $contact = $contact_linker->contact_id;
 
-         $entity->{$field_name}['und'][$i] = array(
 
-           'value' => array(
 
-             '@type' => $contact->type_id->dbxref_id->db_id->name . ':' . $contact->type_id->dbxref_id->accession,
 
-             'type' => $contact->type_id->name,
 
-             'name' => $contact->name,
 
-             'description' => $contact->description,
 
-           ),
 
-           $field_table . '__' . $pkey => $contact_linker->$pkey,
 
-           $field_table . '__' . $fkey_lcolumn => $contact_linker->$fkey_lcolumn->$fkey_lcolumn,
 
-           $field_table . '__' . 'contact_id' => $contact->contact_id
 
-         );
 
-         if (property_exists($contact, 'entity_id')) {
 
-           $entity->{$field_name}['und'][$i]['entity_id'] = $contact->entity_id;
 
-           $entity->{$field_name}['und'][$i]['entity_type'] = 'TripalEntity';
 
-         }
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |