Index: term_fields.module
===================================================================
--- term_fields.module	(révision 1111)
+++ term_fields.module	(copie de travail)
@@ -213,107 +213,109 @@ function term_fields_taxonomy($op, $type, $form_va
         $values = array();
 
         foreach ($fields as $field) {
-          $value = $form_values[$field->fid];
+          if (isset($form_values[$field->fid])) {
+            $value = $form_values[$field->fid];
 
-          switch ($field->type) {
-            case 'date':
-              $values[$field->fid] = $value['year'] . '-' . $value['month'] . '-' . $value['day'];
-              break;
+            switch ($field->type) {
+              case 'date':
+                $values[$field->fid] = $value['year'] . '-' . $value['month'] . '-' . $value['day'];
+                break;
 
-            case 'file':
-              $current_file_fid = db_result(db_query("SELECT %s FROM {term_fields_term} WHERE tid = %d", $field->fid, $tid));
-              $current_file = db_fetch_object(db_query("SELECT * FROM {files} WHERE fid = %d", $current_file_fid));
-              if ($form_values[$field->fid . '_delete']) {
-                // Delete from database.
-                db_query("DELETE FROM {files} WHERE fid = %d", $current_file_fid);
-                // Remove from file system.
-                file_delete($current_file->filepath);
+              case 'file':
+                $current_file_fid = db_result(db_query("SELECT %s FROM {term_fields_term} WHERE tid = %d", $field->fid, $tid));
+                $current_file = db_fetch_object(db_query("SELECT * FROM {files} WHERE fid = %d", $current_file_fid));
+                if ($form_values[$field->fid . '_delete']) {
+                  // Delete from database.
+                  db_query("DELETE FROM {files} WHERE fid = %d", $current_file_fid);
+                  // Remove from file system.
+                  file_delete($current_file->filepath);
 
-                $values[$field->fid] = 0;
-              }
-              else {
-                $options = unserialize($field->options);
-                if (!isset($options['file_max_size'])) {
-                  $file_max_size = 1;
+                  $values[$field->fid] = 0;
                 }
-
-                if (isset($options['file_allowed_exts'])) {
-                  $file_allowed_exts = implode(' ', $options['file_allowed_exts']);
-                }
                 else {
-                  $file_allowed_exts = 'txt';
-                }
+                  $options = unserialize($field->options);
+                  if (!isset($options['file_max_size'])) {
+                    $file_max_size = 1;
+                  }
 
-                $validators = array(
-                  'file_validate_size' => array($file_max_size * 1024 * 1024),
-                  'file_validate_extensions' => array($file_allowed_exts),
-                );
+                  if (isset($options['file_allowed_exts'])) {
+                    $file_allowed_exts = implode(' ', $options['file_allowed_exts']);
+                  }
+                  else {
+                    $file_allowed_exts = 'txt';
+                  }
 
-                if ($file = file_save_upload($field->fid, $validators, file_directory_path())) {
-                  file_set_status($file, 1);
-                  if ($current_file_fid) {
-                    // get rid of old file
-                    db_query("DELETE FROM {files} WHERE fid = %d", $current_file_fid);
-                    file_delete($current_file->filepath);
+                  $validators = array(
+                    'file_validate_size' => array($file_max_size * 1024 * 1024),
+                    'file_validate_extensions' => array($file_allowed_exts),
+                  );
+
+                  if ($file = file_save_upload($field->fid, $validators, file_directory_path())) {
+                    file_set_status($file, 1);
+                    if ($current_file_fid) {
+                      // get rid of old file
+                      db_query("DELETE FROM {files} WHERE fid = %d", $current_file_fid);
+                      file_delete($current_file->filepath);
+                    }
+                    $values[$field->fid] = $file->fid;
                   }
-                  $values[$field->fid] = $file->fid;
                 }
-              }
-              break;
+                break;
 
-            default:
-              $values[$field->fid] = $value;
-              break;
+              default:
+                $values[$field->fid] = $value;
+                break;
+            }
           }
-        }
 
-        // Some simple clean up and validation.
-        foreach ($values as $fid => $value) {
-          $type = $fields[$fid]->type;
-          switch ($type) {
-            case 'numeric':
-              // Validate if the entered value is numeric.
-              if (!is_numeric($value) && $value != '') {
-                drupal_set_message(t('Field %fid must be numeric. This field was not set.', array('%fid' => $fid)), 'error');
-                unset($values[$fid]);
-              }
-              // User have *not* entered a value into a numeric field. Remove the
-              // field from the list or an insert/update of an empty string into
-              // an integer field will fail.
-              elseif (!is_numeric($value) && $value == '') {
-                unset($values[$fid]);
-              }
-              break;
+          // Some simple clean up and validation.
+          foreach ($values as $fid => $value) {
+            $type = $fields[$fid]->type;
+            switch ($type) {
+              case 'numeric':
+                // Validate if the entered value is numeric.
+                if (!is_numeric($value) && $value != '') {
+                  drupal_set_message(t('Field %fid must be numeric. This field was not set.', array('%fid' => $fid)), 'error');
+                  unset($values[$fid]);
+                }
+                // User have *not* entered a value into a numeric field. Remove the
+                // field from the list or an insert/update of an empty string into
+                // an integer field will fail.
+                elseif (!is_numeric($value) && $value == '') {
+                  unset($values[$fid]);
+                }
+                break;
+            }
           }
-        }
 
-        // If there are no values to set then we need to get out of here.
-        // The exception being if the term is being deleted.
-        if ($op != 'delete' && count($values) == 0) {
-          break;
-        }
-
-        switch ($op) {
-          case 'insert':
-            term_fields_term_create_record($tid, $values);
+          // If there are no values to set then we need to get out of here.
+          // The exception being if the term is being deleted.
+          if ($op != 'delete' && count($values) == 0) {
             break;
+          }
 
-          case 'update':
-            // See if there is a record for this term already.
-            // If so, update it. If not, insert a new record.
-            $result = db_query("SELECT tid FROM {term_fields_term} WHERE tid = %d", $tid);
-            if (term_fields_fetch_fields($result)) {
-              // Update the existing record.
-              term_fields_term_update_record($tid, $values);
-            }
-            else {
-              // Insert a new record.
+          switch ($op) {
+            case 'insert':
               term_fields_term_create_record($tid, $values);
-            }
-            break;
+              break;
 
-          case 'delete':
-            db_query("DELETE FROM {term_fields_term} WHERE tid = %d", $tid);
+            case 'update':
+              // See if there is a record for this term already.
+              // If so, update it. If not, insert a new record.
+              $result = db_query("SELECT tid FROM {term_fields_term} WHERE tid = %d", $tid);
+              if (term_fields_fetch_fields($result)) {
+                // Update the existing record.
+                term_fields_term_update_record($tid, $values);
+              }
+              else {
+                // Insert a new record.
+                term_fields_term_create_record($tid, $values);
+              }
+              break;
+
+            case 'delete':
+              db_query("DELETE FROM {term_fields_term} WHERE tid = %d", $tid);
+          }
         }
       }
       break;
