Index: better_formats.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/better_formats/better_formats.module,v
retrieving revision 1.23.2.18
diff -u -r1.23.2.18 better_formats.module
--- better_formats.module	2 May 2010 15:26:34 -0000	1.23.2.18
+++ better_formats.module	5 Aug 2010 14:55:23 -0000
@@ -227,7 +227,7 @@
 }
 
 /**
- * Creates base format default entry for a newly created role.
+ * Creates base format default entry for a newly created role from role from.
  *
  * @see better_formats_form_alter()
  */
@@ -237,14 +237,22 @@
           FROM {role}
           ORDER BY rid DESC";
   $row = db_fetch_object(db_query_range($sql, 0, 1));
-  $rid = $row->rid;
 
-  // Create stubs in per role table.
-  $sql = "INSERT INTO {better_formats_defaults}
-          VALUES (%d, '%s', %d, %d, %d)";
-  db_query($sql, $rid, 'node', 0, 1, 25);
-  db_query($sql, $rid, 'comment', 0, 1, 25);
-  db_query($sql, $rid, 'block', 0, 1, 25);
+  better_formats_create_role($row->rid);
+}
+
+/**
+ * Creates base format default entry for a newly created role.
+ *
+ * @see better_formats_new_role()
+ */
+function better_formats_create_role($rid) {
+  // Create format default stubs for a role.
+  $types = array('node', 'comment', 'block');
+  foreach ($types as $type) {
+    $values = array($rid, $type, 0, 1, 25);
+    drupal_write_record('better_formats_defaults', $values);
+  }
 }
 
 /**
@@ -260,6 +268,23 @@
 }
 
 /**
+ * Ensure that all roles have Better Format entries in the database.
+ */
+function better_formats_check_roles() {
+  // Get all roles that do not have BF entries.
+  $sql = "SELECT r.rid
+          FROM {role} r
+          LEFT JOIN {better_formats_defaults} bf
+            ON r.rid = bf.rid
+          WHERE bf.type_weight IS NULL";
+  $result = db_query($sql);
+  while ($role = db_fetch_object($result)) {
+    // Add BF entries.
+    better_formats_create_role($role->rid);
+  }
+}
+
+/**
  * Implementation of hook_node_type().
  */
 function better_formats_node_type($op, $info) {
Index: better_formats_defaults.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/better_formats/better_formats_defaults.admin.inc,v
retrieving revision 1.3.2.11
diff -u -r1.3.2.11 better_formats_defaults.admin.inc
--- better_formats_defaults.admin.inc	5 Feb 2010 13:52:48 -0000	1.3.2.11
+++ better_formats_defaults.admin.inc	5 Aug 2010 14:52:04 -0000
@@ -17,6 +17,10 @@
  * @see better_formats_defaults_admin_form_submit()
  */
 function better_formats_defaults_admin_form() {
+  // Ensure all roles have a BF default entries in the database.
+  better_formats_check_roles();
+
+  // Build defaults form.
   $form = array(
     '#tree' => TRUE,
   );

