Index: google_admanager.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/google_admanager/google_admanager.module,v
retrieving revision 1.5.2.2
diff -b -u -p -r1.5.2.2 google_admanager.module
--- google_admanager.module	31 Oct 2009 17:25:55 -0000	1.5.2.2
+++ google_admanager.module	12 Nov 2009 00:15:39 -0000
@@ -12,18 +12,22 @@ function google_admanager_block($op = 'l
   $id = variable_get('google_admanager_account', '');
   if (!empty($id)) {
     $ad_slots = variable_get('google_admanager_ad_slots', '');
-    $ad_slots = explode ("\n", str_replace("\r", '', trim($ad_slots)));
+    $ad_slots = explode("\n", str_replace(array("\r", "\t", "\0", "\x0B", " "), '', $ad_slots));
+    $block_deltas = array();
+    foreach ($ad_slots as $ad_slot) {
+      $block_deltas[truncate_utf8(drupal_strtolower($ad_slot), 32)] = $ad_slot;
+    }
     if ($op == 'list') {
-      foreach($ad_slots as $ad_slot) {
-        $blocks[] = array(
-          'info' => 'Ad Slot: ' . $ad_slot,
+      foreach ($block_deltas as $block_delta => $block_name) {
+        $blocks[$block_delta] = array(
+          'info' => 'Ad Slot: '. $block_name,
         );
       }
       return $blocks;
     }
     else if ($op == 'view') {
       
-      if ($ad_slot = $ad_slots[$delta]) {
+      if ($ad_slot = $block_deltas[$delta]) {
         $block = array(
           'subject' => '',
           'content' => theme('google_admanager_block', $id, $ad_slot),
@@ -85,6 +89,15 @@ function google_admanager_admin_settings
 }
 
 /**
+ * Implementation of hook_form_alter().
+ */
+function google_admanager_form_alter(&$form, $form_state, $form_id) {
+  if ($form_id == 'google_admanager_admin_settings_form') {
+    $form['#submit'][] = 'google_admanager_admin_settings_form_submit';
+  }
+}
+
+/**
  * Implementation of hook_admin_settings_form_validate()
  */
 function google_admanager_admin_settings_form_validate($form, &$form_state) {
@@ -94,6 +107,25 @@ function google_admanager_admin_settings
 }
 
 /**
+ * Implementation of hook_admin_settings_form_submit()
+ */
+function google_admanager_admin_settings_form_submit($form, &$form_state) {
+  $ad_slots = explode("\n", str_replace(array("\r", "\t", "\0", "\x0B", " "), '', trim($form_state['values']['google_admanager_ad_slots'])));
+  $block_deltas = array();
+  foreach ($ad_slots as $ad_slot) {
+    $block_deltas[truncate_utf8(drupal_strtolower($ad_slot), 32)] = $ad_slot;
+  }
+  
+  $result = db_query("SELECT bid, delta FROM {blocks} WHERE module = 'google_admanager'");
+  while ($block = db_fetch_object($result)) {
+    //remove the block when it is not in the list anymore
+    if (!isset($block_deltas[$block->delta])) {
+      db_query("DELETE FROM {blocks} WHERE bid = %d", $block->bid);
+    }
+  }
+}
+
+/**
  * Implemention of hook_theme()
  */ 
 function google_admanager_theme() {
Index: google_admanager.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/google_admanager/google_admanager.install,v
retrieving revision 1.2.2.1
diff -b -u -p -r1.2.2.1 google_admanager.install
--- google_admanager.install	31 Oct 2009 08:03:45 -0000	1.2.2.1
+++ google_admanager.install	12 Nov 2009 00:15:50 -0000
@@ -19,3 +19,35 @@ function google_admanager_update_6100() 
 
   return $ret;
 }
\ No newline at end of file
+
+/**
+ * Implementation of hook_update_N().
+ *
+ * Convert block deltas from integers to strings based on the 
+ * Google Ad Manager slot name. See http://drupal.org/node/624284
+ */
+function google_admanager_update_6101() {
+  $ret = array();
+  
+  $ad_slots = variable_get('google_admanager_ad_slots', '');
+  $ad_slots = explode("\n", str_replace(array("\r", "\t", "\0", "\x0B", " "), '', trim($ad_slots)));
+  $block_deltas = array();
+  foreach ($ad_slots as $i => $ad_slot) {
+    $block_deltas[$i] = truncate_utf8(drupal_strtolower($ad_slot), 32);
+  }
+  if (is_array($ad_slots)) {
+    $result = db_query("SELECT bid, delta FROM {blocks} WHERE module = 'google_admanager'");
+    while ($block = db_fetch_object($result)) {
+      if (isset($ad_slots[$block->delta])) {
+        //updating block with new delta based on the block name
+        $ret[] = update_sql("UPDATE {blocks} SET delta = '". $block_deltas[$block->delta] ."' WHERE bid = ". $block->bid);
+      }
+      else {
+        //removing the block which does not exist anymore
+        $ret[] = update_sql("DELETE FROM {blocks} WHERE bid = ". $block->bid);
+      }
+    }
+  }
+  
+  return $ret;  
+}
\ No newline at end of file
