瀏覽代碼

Fixed synonym field

Chun-Huai Cheng 8 年之前
父節點
當前提交
1dd780a3c1
共有 1 個文件被更改,包括 11 次插入51 次删除
  1. 11 51
      tripal_chado/includes/TripalFields/chado_linker__synonym.inc

+ 11 - 51
tripal_chado/includes/TripalFields/chado_linker__synonym.inc

@@ -32,7 +32,7 @@ class chado_linker__synonym extends TripalField {
     foreach ($items as $delta => $item) {
       if (array_key_exists('chado-' . $chado_table . '__synonym_id', $item) and
           $item['chado-' . $chado_table . '__synonym_id']) {
-        $synonym = chado_generate_var('synonym', array('synonym_id' => $item[$chado_table . '__synonym_id']));
+        $synonym = chado_generate_var('synonym', array('synonym_id' => $item['chado-' . $chado_table . '__synonym_id']));
         $name = $synonym->name;
         if ($synonym->type_id->name != 'exact') {
           $name .= ' (<i>' . $synonym->type_id->name . '</i>)';
@@ -75,7 +75,6 @@ class chado_linker__synonym extends TripalField {
     // array.  This happens when editing an existing record.
     if (array_key_exists($delta, $items)) {
       $record_id = $items[$delta]['chado-' . $table_name . '__' . $pkey];
-      $fkey_value = $items[$delta]['chado-' . $table_name . '__' . $fkey];
       $synonym_id = $items[$delta]['chado-' . $table_name . '__synonym_id'];
       $pub_id = $items[$delta]['chado-' . $table_name . '__pub_id'];
       $is_current = $items[$delta]['chado-' . $table_name . '__is_current'];
@@ -87,7 +86,6 @@ class chado_linker__synonym extends TripalField {
     // Check $form_state['values'] to see if an AJAX call set the values.
     if (array_key_exists('values', $form_state) and array_key_exists($delta, $form_state['values'])) {
       $record_id = $form_state['values'][$field_name]['und'][$delta]['chado-' . $table_name . '__' . $pkey];
-      $fkey_value = $form_state['values'][$field_name]['und'][$delta]['chado-' . $table_name . '__' . $fkey];
       $synonym_id = $form_state['values'][$field_name]['und'][$delta]['chado-' . $table_name . '__synonym_id'];
       $pub_id = $form_state['values'][$field_name]['und'][$delta]['chado-' . $table_name . '__pub_id'];
       $is_current = $form_state['values'][$field_name]['und'][$delta]['chado-' . $table_name . '__is_current'];
@@ -97,6 +95,14 @@ class chado_linker__synonym extends TripalField {
     }
 
     $options = array();
+    $value = array('cv_id' => array('name' => 'synonym_type'));
+    $op = array('return_array' => 1);
+    $types = chado_generate_var('cvterm', $value, $op);
+    if ($types) {
+      foreach($types AS $type) {
+        $options[$type->cvterm_id] = $type->name;
+      }
+    }
 
     // Get the schema for the synonym table so we can make sure we limit the
     // size of the name field to the proper size.
@@ -119,7 +125,7 @@ class chado_linker__synonym extends TripalField {
     );
     $widget['chado-' . $table_name . '__synonym_id'] = array(
       '#type' => 'value',
-      '#default_value' => $fkey_value,
+      '#default_value' => $synonym_id,
     );
     $widget['chado-' . $table_name . '__' . $fkey] = array(
       '#type' => 'value',
@@ -158,52 +164,6 @@ class chado_linker__synonym extends TripalField {
     );
   }
 
-  /**
-   * @see TripalField::validate()
-   */
-  public function validate($entity_type, $entity, $field, $items, &$errors) {
-
-    $field_name = $this->field['field_name'];
-    $field_type = $this->field['type'];
-    $table_name = $this->field['settings']['chado_table'];
-    $field_table = $this->field['settings']['chado_table'];
-    $field_column = $this->field['settings']['chado_column'];
-    $base_table = $this->field['settings']['base_table'];
-    $schema = chado_get_schema($table_name);
-    $pkey = $schema['primary key'][0];
-    $fkeys = array_values($schema['foreign keys'][$base_table]['columns']);
-    $fkey = $fkeys[0];
-
-    // Get the field values.
-    foreach ($items as $delta => $values) {
-
-      $record_id = $values['chado-' . $table_name . '__' . $pkey];
-      $fkey_value = $values['chado-' . $table_name . '__' . $fkey];
-      $synonym_id = $values['chado-' . $table_name . '__synonym_id'];
-      $pub_id = $values['chado-' . $table_name . '__pub_id'];
-      $is_current = $values['chado-' . $table_name . '__is_current'];
-      $is_internal = $values['chado-' . $table_name . '__is_internal'];
-      $syn_name = $values['name'];
-      $syn_type = $values['type_id'];
-
-
-      // Make sure that if a synonym is provided that a type is also
-      // provided.
-      if ($syn_name and !$syn_type) {
-        $errors[$field_name][$delta]['und'][] = array(
-          'message' => t("Please set a synonym type."),
-          'error' => 'chado_linker__synonym',
-        );
-      }
-      if (!$syn_name and $syn_type) {
-        $errors[$field_name][$delta]['und'][] = array(
-          'message' => t("Please set a synonym name."),
-          'error' => 'chado_linker__synonym',
-        );
-      }
-    }
-  }
-
   /**
    * @see TripalField::widgetFormSubmit()
    */
@@ -312,7 +272,7 @@ class chado_linker__synonym extends TripalField {
             'type' => $synonym->type_id->name,
             'name' => $synonym->name,
           ),
-          'chado-' . $field_table . '__' . $pkey = $linker->$pkey,
+          'chado-' . $field_table . '__' . $pkey => $linker->$pkey,
           'chado-' . $field_table . '__' . $fkey_lcolumn => $linker->$fkey_lcolumn->$fkey_lcolumn,
           'chado-' . $field_table . '__' . 'synonym_id' => $synonym->synonym_id,
           'chado-' . $field_table . '__' . 'pub_id' => $linker->pub_id->pub_id,