|
@@ -88,6 +88,48 @@ class chado_linker__expression extends TripalField {
|
|
|
|
|
|
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('Uniquename', 'Description', 'Publication');
|
|
|
+ $rows = array();
|
|
|
+ foreach ($items as $delta => $item) {
|
|
|
+
|
|
|
+ $expression = $item['value'];
|
|
|
+
|
|
|
+ // Get the field values
|
|
|
+ $expression_uname = $expression['uniquename'];
|
|
|
+ $description = $expression['description'];
|
|
|
+ $pub = $expression['publication'];
|
|
|
+
|
|
|
+ // Add a link i there is an entity.
|
|
|
+ if (array_key_exists('entity_id', $expression) and $expression['$entity_id']) {
|
|
|
+ $entity_id = $expression['entity_id'];
|
|
|
+ $expression_uname = l($expression_uname, "bio_data/" . $entity_id, array('attributes' => array('target' => "_blank")));
|
|
|
+ }
|
|
|
+ $rows[] = array($expression_uname, $description, $pub->title);
|
|
|
+ }
|
|
|
+ $table = array(
|
|
|
+ 'header' => $headers,
|
|
|
+ 'rows' => $rows,
|
|
|
+ 'attributes' => array(
|
|
|
+ 'id' => 'tripal_linker-table-expression-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,
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
|
|
@@ -96,7 +138,7 @@ class chado_linker__expression extends TripalField {
|
|
|
|
|
|
}
|
|
|
|
|
|
- public function load($field, $entity, $record) {
|
|
|
+ public function load($field, $entity, $details) {
|
|
|
$field_name = $field['field_name'];
|
|
|
$field_type = $field['type'];
|
|
|
$field_table = $field['settings']['chado_table'];
|
|
@@ -104,41 +146,29 @@ class chado_linker__expression extends TripalField {
|
|
|
|
|
|
// Get the FK that links to the base record.
|
|
|
$schema = chado_get_schema($field_table);
|
|
|
- $base_table = $record['record']->tablename;
|
|
|
+ $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' => '',
|
|
|
- $field_table . '__' . $fkey_lcolumn => '',
|
|
|
- $field_table . '__' . 'expression_id' => '',
|
|
|
- $field_table . '--' . 'expression__name' => '',
|
|
|
- );
|
|
|
-
|
|
|
$linker_table = $base_table . '_expression';
|
|
|
$options = array(
|
|
|
'return_array' => 1,
|
|
|
);
|
|
|
- $record = chado_expand_var($record, 'table', $linker_table, $options);
|
|
|
-
|
|
|
- if (count($record->$linker_table) > 0) {
|
|
|
+ $details = chado_expand_var($details, 'table', $linker_table, $options);
|
|
|
+ $record = $details['record'];
|
|
|
+ $exp = $record->$linker_table;
|
|
|
+ $exp = is_array($exp) ? $exp : array($exp);
|
|
|
+ if (count($exp) > 0) {
|
|
|
$i = 0;
|
|
|
- foreach ($record->$linker_table as $index => $linker) {
|
|
|
+ foreach ($exp as $index => $linker) {
|
|
|
$expression = $linker->expression_id;
|
|
|
- $entity->{$field_name}['und'][$i] = array(
|
|
|
- 'value' => $linker->$pkey,
|
|
|
- $field_table . '__' . $fkey_lcolumn => $linker->$fkey_lcolumn->$fkey_lcolumn,
|
|
|
- $field_table . '__' . 'expression_id' => $expression->expression_id,
|
|
|
- $field_table . '--' . 'expression__name' => $expression->uniquename,
|
|
|
+ $entity->{$field_name}['und'][$i]['value'] = array(
|
|
|
+ 'expression_id' => $expression->expression_id,
|
|
|
+ 'uniquename' => $expression->uniquename,
|
|
|
+ 'description' => $expression->description,
|
|
|
+ 'publication' => $linker->pub_id
|
|
|
);
|
|
|
- if (property_exists($entity->chado_record->$field_column, 'entity_id')) {
|
|
|
- $fk_entity_id = $entity->chado_record->$field_column->entity_id;
|
|
|
- $entity->{$field_name}['und'][$i]['entity_id'] = $fk_entity_id;
|
|
|
- $entity->{$field_name}['und'][$i]['entity_type'] = 'TripalEntity';
|
|
|
- }
|
|
|
-
|
|
|
$i++;
|
|
|
}
|
|
|
}
|