? .DS_Store
Index: translation_overview.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/translation_overview/translation_overview.module,v
retrieving revision 1.6
diff -u -p -r1.6 translation_overview.module
--- translation_overview.module	8 Oct 2008 00:46:33 -0000	1.6
+++ translation_overview.module	23 Oct 2008 01:49:46 -0000
@@ -150,13 +150,7 @@ function translation_overview_nodeapi(&$
     case 'insert':
       // Only want to create a priority for translatable nodes that are untranslated.
       if (in_array($node->type, translation_overview_node_types()) && empty($node->tnid)) {
-        $languages = array_keys(language_list('language'));
-
-        $row = array('tnid' => empty($source->tnid) ? $source->nid : $source->tnid);
-        foreach ($languages as $lang_code) {
-          $row[db_escape_table($lang_code)] = TRANSLATION_OVERVIEW_NORMAL;
-        }
-        drupal_write_row($row, 'translation_overview_priority');
+        translation_overview_get_node_priority($node);
       }
   }
 }
@@ -174,17 +168,25 @@ function translation_overview_get_node_p
     return $cache[$tnid];
   }
 
+  $languages = array_keys(language_list('language'));
+  $pri = array();
   $result = db_query('SELECT * FROM {translation_overview_priority} WHERE tnid = %d', $tnid);
-  // TODO: should we insert a record if one isn't found?
   $row = db_fetch_array($result);
 
-  $pri = array();
+  // Insert a record if one isn't found.
+  if (empty($row)) {
+    $row = array('tnid' => empty($node->tnid) ? $node->nid : $node->tnid);
+    foreach ($languages as $lang_code) {
+      $row[db_escape_table($lang_code)] = TRANSLATION_OVERVIEW_NORMAL;
+    }
+    drupal_write_record('translation_overview_priority', $row);
+  }
+
+  // We need to adjust the array's keys. The fieldnames are encoded language codes.
   foreach (array_keys(language_list('language')) as $language) {
     $pri[$language] = isset($row[db_escape_table($language)]) ? $row[db_escape_table($language)] : TRANSLATION_OVERVIEW_NORMAL;
   }
-  $cache[$tnid] = $pri;
-
-  return $cache[$tnid];
+  return $cache[$tnid] = $pri;
 }
 
 /**
Index: translation_overview.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/translation_overview/translation_overview.pages.inc,v
retrieving revision 1.7
diff -u -p -r1.7 translation_overview.pages.inc
--- translation_overview.pages.inc	25 Sep 2008 20:10:38 -0000	1.7
+++ translation_overview.pages.inc	23 Oct 2008 01:49:46 -0000
@@ -103,7 +103,11 @@ function translation_overview_node_form_
   foreach ($form_state['values']['languages'] as $language => $values) {
     $row[db_escape_table($language)] = $values['priority'];
   }
-  if (drupal_write_record('translation_overview_priority', $row, 'tnid')) {
+
+  // We can assume that there will alwyas be a record with the given tnid
+  // because translation_overview_get_node_priority() has been called and it
+  // creates records if one is not present.
+  if (drupal_write_record('translation_overview_priority', $row, 'tnid') !== FALSE) {
     drupal_set_message(t('The translation priorities have been saved.'));
   }
   else {
