Index: nodewords_basic/nodewords_basic.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords_basic/nodewords_basic.module,v
retrieving revision 1.1.2.46
diff -u -p -r1.1.2.46 nodewords_basic.module
--- nodewords_basic/nodewords_basic.module	6 Dec 2009 01:28:17 -0000	1.1.2.46
+++ nodewords_basic/nodewords_basic.module	7 Dec 2009 22:30:14 -0000
@@ -39,7 +39,6 @@ function nodewords_basic_nodewords_api()
 function nodewords_basic_nodewords_tags_info() {
   $tags = array(
     'abstract' => array(
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_basic_abstract',
       'tag:template' => array('abstract' => NODEWORDS_META),
       'widget:label' => t('Abstract'),
@@ -59,7 +58,6 @@ function nodewords_basic_nodewords_tags_
         NODEWORDS_TYPE_ERRORPAGE,
         NODEWORDS_TYPE_TRACKER,
       ),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_basic_canonical',
       'tag:template' => array('canonical' => NODEWORDS_LINK_REL),
       'tag:weight' => array('canonical' => -10),
@@ -67,7 +65,6 @@ function nodewords_basic_nodewords_tags_
       'widget:permission' => 'edit canonical URL meta tag',
     ),
     'copyright' => array(
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_basic_copyright',
       'tag:template' => array('copyright' => NODEWORDS_META),
       'tag:template:index' => array('copyright' => '<h3>%content</h3>'),
@@ -76,7 +73,6 @@ function nodewords_basic_nodewords_tags_
       'widget:permission' => 'edit meta tag COPYRIGHT',
     ),
     'description' => array(
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_basic_description',
       'tag:template' => array('description' => NODEWORDS_META),
       'tag:template:index' => array('description' => '<h3>%content</h3>'),
@@ -85,7 +81,6 @@ function nodewords_basic_nodewords_tags_
       'widget:permission' => 'edit meta tag DESCRIPTION',
     ),
     'keywords' => array(
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_basic_keywords',
       'tag:template' => array('keywords' => NODEWORDS_META),
       'tag:template:index' => array('keywords' => '<h2>%content</h2>'),
Index: nodewords_extra/nodewords_extra.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords_extra/nodewords_extra.module,v
retrieving revision 1.1.2.36
diff -u -p -r1.1.2.36 nodewords_extra.module
--- nodewords_extra/nodewords_extra.module	5 Dec 2009 22:29:17 -0000	1.1.2.36
+++ nodewords_extra/nodewords_extra.module	7 Dec 2009 22:30:14 -0000
@@ -62,7 +62,6 @@ function nodewords_extra_nodewords_tags_
         NODEWORDS_TYPE_NODE,
         NODEWORDS_TYPE_PAGE,
       ),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_extra_dc_contributor',
       'tag:template' => array('dc.contributor' => NODEWORDS_META),
       'widget:label' => t('Dublin Core contributor'),
@@ -74,7 +73,6 @@ function nodewords_extra_nodewords_tags_
         NODEWORDS_TYPE_NODE,
         NODEWORDS_TYPE_PAGE,
       ),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_extra_dc_creator',
       'tag:template' => array('dc.creator' => NODEWORDS_META),
       'widget:label' => t('Dublin Core creator'),
@@ -84,14 +82,12 @@ function nodewords_extra_nodewords_tags_
         NODEWORDS_TYPE_NODE,
         NODEWORDS_TYPE_PAGE,
       ),
-      'tag:db:type' => 'array',
       'tag:function:prefix' => 'nodewords_extra_dc_date',
       'tag:template' => array('dc.date' => NODEWORDS_META),
       'widget:label' => t('Dublin Core date'),
       'widget:permission' => 'edit meta tag Dublin Core DATE',
     ),
     'dc.description' => array(
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_extra_dc_description',
       'tag:template' => array('dc.description' => NODEWORDS_META),
       'widget:label' => t('Dublin Core description'),
@@ -102,7 +98,6 @@ function nodewords_extra_nodewords_tags_
         NODEWORDS_TYPE_DEFAULT,
         NODEWORDS_TYPE_PAGE,
       ),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_extra_dc_publisher',
       'tag:template' => array('dc.publisher' => NODEWORDS_META),
       'widget:label' => t('Dublin Core publisher'),
@@ -110,14 +105,12 @@ function nodewords_extra_nodewords_tags_
     ),
     'dc.title' => array(
       'tag:context:denied' => array(NODEWORDS_TYPE_DEFAULT),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_extra_dc_title',
       'tag:template' => array('dc.title' => NODEWORDS_META),
       'widget:label' => t('Dublin Core title'),
       'widget:permission' => 'edit meta tag Dublin Core TITLE',
     ),
     'location' => array(
-      'tag:db:type' => 'array',
       'tag:function:prefix' => 'nodewords_extra_location',
       'tag:template' => array(
         'geo.position' => NODEWORDS_META,
@@ -132,7 +125,6 @@ function nodewords_extra_nodewords_tags_
         NODEWORDS_TYPE_NODE,
         NODEWORDS_TYPE_PAGE,
       ),
-      'tag:db:type' => 'string',
       'tag:attributes' => array(
         'meta' => array(
           'title' => 'ICRA labels',
Index: nodewords_verification_tags/nodewords_verification_tags.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords_verification_tags/nodewords_verification_tags.module,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 nodewords_verification_tags.module
--- nodewords_verification_tags/nodewords_verification_tags.module	18 Nov 2009 14:21:55 -0000	1.1.2.5
+++ nodewords_verification_tags/nodewords_verification_tags.module	7 Dec 2009 22:30:14 -0000
@@ -31,7 +31,6 @@ function nodewords_verification_tags_nod
   $tags = array(
     'bing_webmaster_center' => array(
       'tag:context:allowed' => array(NODEWORDS_TYPE_FRONTPAGE),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_verification_tags_bing_webmaster_center',
       'tag:template' => array(
         'msvalidate.01' => NODEWORDS_META,
@@ -41,7 +40,6 @@ function nodewords_verification_tags_nod
     ),
     'google_webmaster_tools' => array(
       'tag:context:allowed' => array(NODEWORDS_TYPE_FRONTPAGE),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_verification_tags_google_webmaster_tools',
       'tag:template' => array(
         'google-site-verification' => NODEWORDS_META,
@@ -51,7 +49,6 @@ function nodewords_verification_tags_nod
     ),
     'yahoo_site_explorer' => array(
       'tag:context:allowed' => array(NODEWORDS_TYPE_FRONTPAGE),
-      'tag:db:type' => 'string',
       'tag:function:prefix' => 'nodewords_verification_tags_yahoo_site_explorer',
       'tag:template' => array(
         'y_key' => NODEWORDS_META,
Index: nodewords.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords.install,v
retrieving revision 1.10.2.137
diff -u -p -r1.10.2.137 nodewords.install
--- nodewords.install	7 Dec 2009 14:59:30 -0000	1.10.2.137
+++ nodewords.install	7 Dec 2009 22:30:15 -0000
@@ -1097,8 +1097,37 @@ function nodewords_update_6154() {
 /**
  * Implementation of hook_update_N().
  */
-function nodewords_update_6155() {
-  return array();
+function nodewords_update_6156(&$sandbox) {
+  $names = array('location', 'dc.date');
+  $ret = array();
+
+  if (!isset($sandbox['progress'])) {
+    $sandbox['progress'] = 0;
+    $sandbox['max'] = db_result(db_query("SELECT COUNT(*) FROM {nodewords} WHERE name NOT IN (" . db_placeholders($names, 'varchar') . ")"));
+  }
+
+  if ($sandbox['max']) {
+    $metatags = db_query_range("SELECT * FROM {nodewords} WHERE name NOT IN (" . db_placeholders($names, 'varchar') . ") ORDER BY mtid ASC", $names, $sandbox['progress'], 10);
+
+    while ($metatag = db_fetch_object($metatags)) {
+      $content = serialize(array('value' => $metatag->content));
+
+      db_query(
+        "UPDATE {nodewords} SET content = '%s' WHERE mtid = %d",
+        $content, $metatag->mtid
+      );
+
+      $sandbox['progress']++;
+    }
+  }
+
+  $ret['#finished'] = empty($sandbox['max']) ? 1 : ($sandbox['progress'] / $sandbox['max']);
+
+  if ($ret['#finished'] == 1) {
+    variable_set('nodewords_update_6156', TRUE);
+  }
+
+  return $ret;
 }
 
 /**
@@ -1127,6 +1156,7 @@ function nodewords_uninstall() {
   variable_del('nodewords_update_6139');
   variable_del('nodewords_update_6145');
   variable_del('nodewords_update_6147');
+  variable_del('nodewords_update_6156');
   variable_del('nodewords_use_alt_attribute');
   variable_del('nodewords_use_frontpage_tags');
 
Index: nodewords.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords.module,v
retrieving revision 1.57.2.263
diff -u -p -r1.57.2.263 nodewords.module
--- nodewords.module	6 Dec 2009 14:14:45 -0000	1.57.2.263
+++ nodewords.module	7 Dec 2009 22:30:21 -0000
@@ -405,7 +405,7 @@ function nodewords_nodeapi(&$node, $op, 
         $node->nodewords = $node->translation_source->nodewords;
       }
       break;
-    
+
     case 'update index':
       $output_tags = array();
       $tag_options = array(
@@ -860,7 +860,7 @@ function nodewords_load_tags($type = NOD
 
   while ($row = db_fetch_object($result)) {
     if (isset($tags_info[$row->name])) {
-      $tags[$row->name] = $tags_info[$row->name]['tag:db:type'] != 'string' ? unserialize($row->content) : array('value' => $row->content);
+      $tags[$row->name] = unserialize($row->content);
     }
   }
 
@@ -935,7 +935,7 @@ function nodewords_metatag_from_teaser($
 
   // Remove the strings added from third-party modules.
   $modules = array_filter(variable_get('nodewords_filter_modules_output', array()));
-  
+
   if (isset($modules['imagebrowser'])) {
     $text = preg_replace('/\[ibimage[^\]]*\]/i', '', $text);
   }
@@ -1066,23 +1066,13 @@ function nodewords_page_load($pid) {
  */
 function nodewords_save_tags($type, $id, $tags, $log_message = FALSE) {
   global $user;
-  static $tags_info;
-
-  if (!isset($tags_info)) {
-    $tags_info = nodewords_get_possible_tags();
-  }
 
   $done = FALSE;
+  $tags_info = nodewords_get_possible_tags();
 
   foreach ($tags as $name => $content) {
     if (isset($tags_info[$name])) {
-      if ($tags_info[$name]['tag:db:type'] != 'string') {
-        $content = serialize($content);
-      }
-      else {
-        $content = $content['value'];
-      }
-
+      $content = serialize($content);
       $result = db_fetch_object(db_query("SELECT * FROM {nodewords} WHERE type = '%s' AND id = '%s' AND name = '%s'", $type, $id, $name));
 
       if ($result === FALSE) {
