? coder_upgrade-643122-1.patch
? coder_upgrade.drush.inc
Index: coder_upgrade.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder_upgrade/coder_upgrade.info,v
retrieving revision 1.9
diff -u -p -r1.9 coder_upgrade.info
--- coder_upgrade.info	9 Mar 2010 01:47:35 -0000	1.9
+++ coder_upgrade.info	29 Apr 2010 23:51:25 -0000
@@ -24,6 +24,7 @@ files[] = conversions/coder_upgrade.list
 files[] = conversions/coder_upgrade.main.inc
 ; files[] = conversions/coder_upgrade.other.inc ; Deprecated
 files[] = conversions/coder_upgrade.regex.inc
+files[] = conversions/coder_upgrade.theme.inc
 
 configure = admin/config/development/coder/upgrade/settings
 
Index: conversions/coder_upgrade.list.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder_upgrade/conversions/coder_upgrade.list.inc,v
retrieving revision 1.14
diff -u -p -r1.14 coder_upgrade.list.inc
--- conversions/coder_upgrade.list.inc	8 Mar 2010 21:03:36 -0000	1.14
+++ conversions/coder_upgrade.list.inc	29 Apr 2010 23:51:25 -0000
@@ -39,6 +39,7 @@ function coder_upgrade_upgrade_info() {
       'conversions/coder_upgrade.function.inc',
       'conversions/coder_upgrade.install.inc',
       'conversions/coder_upgrade.regex.inc',
+      'conversions/coder_upgrade.theme.inc',
     ),
   );
   return array('coder_upgrade' => $upgrade);
Index: conversions/coder_upgrade.main.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/coder/coder_upgrade/conversions/coder_upgrade.main.inc,v
retrieving revision 1.21
diff -u -p -r1.21 coder_upgrade.main.inc
--- conversions/coder_upgrade.main.inc	31 Mar 2010 19:43:52 -0000	1.21
+++ conversions/coder_upgrade.main.inc	29 Apr 2010 23:51:25 -0000
@@ -430,6 +430,11 @@ function coder_upgrade_convert_functions
     $name = &$item->name;
     cdp("name = $name");
 
+    // Convert theme_X function calls.
+    if (strpos($name, 'theme_') === 0) {
+      drupal_alter('upgrade_theme', $node, $reader);
+      continue;
+    }
     /*
      * If the function name does not begin with the module name, then ignore it.
      * This assumes such a function would be an instance of an API hook defined
Index: conversions/coder_upgrade.theme.inc
===================================================================
RCS file: conversions/coder_upgrade.theme.inc
diff -N conversions/coder_upgrade.theme.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ conversions/coder_upgrade.theme.inc	29 Apr 2010 23:51:25 -0000
@@ -0,0 +1,47 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Theme specific conversion routine file for the coder_upgrade module.
+ */
+
+/**
+ * Implements hook_upgrade_theme_alter().
+ */
+function coder_upgrade_upgrade_theme_alter(&$node, &$reader) {
+  global $upgrade_theme_registry;
+
+  // Create helper objects.
+  $editor = PGPEditor::getInstance();
+
+  // Function parameters are now a single array.
+  $item = &$node->data;
+  $body = &$item->body;
+  for ($i = 0; $i < $item->parameterCount(); $i++) {
+    $parameters[] = $item->printParameter($i);
+  }
+  $item->parameters->clear();
+  $editor->setParameter($item, 0, '$variables');
+
+  // Reassign function parameters to corresponding $variables array key.
+  $theme_name = substr($item->name, strpos($item->name, "_") + 1);
+  if ($upgrade_theme_registry[$theme_name]) {
+    $hook = $upgrade_theme_registry[$theme_name];
+    if (isset($hook['render element'])) {
+      $string = $parameters[0] . ' = $variables[\'' . $hook['render element'] .'\']';
+    }
+    else {
+      foreach ($hook['variables'] as $key => $variable) {
+        $string = $parameters[$key] . ' = $variables[\'' . $variable ."'];\n";
+        $body->insertFirst($editor->textToStatements($string)->getElement(0));
+      }
+    }
+  }
+
+  // If theme function calls drupal_render, make sure last call is to drupal_render_children
+  // to avoid endless loops: http://drupal.org/node/224333#drupal_render_children
+  if ($statement = $body->searchBackward('PGPFunctionCall', 'name', 'value', 'drupal_render')) {
+    $statement->name['value'] = 'drupal_render_children';
+  }
+}
