? .DS_Store
? .patch
? dont_drupal_render_forms.patch
? t.patch
? test.php
? tmp.patch
? tmp.patch.patch
? modules/forum/t.patch
? sites/default/settings.php
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.147
diff -u -F^f -p -r1.147 install.php
--- install.php	20 Dec 2008 18:24:32 -0000	1.147
+++ install.php	3 Jan 2009 00:03:49 -0000
@@ -209,7 +209,7 @@ function install_change_settings($profil
   include_once DRUPAL_ROOT . '/includes/form.inc';
   install_task_list('database');
 
-  $output = drupal_get_form('install_settings_form', $profile, $install_locale, $settings_file, $database);
+  $output = drupal_render(drupal_get_form('install_settings_form', $profile, $install_locale, $settings_file, $database));
   drupal_set_title(st('Database configuration'));
   print theme('install_page', $output);
   exit;
@@ -438,7 +438,7 @@ function install_select_profile() {
     install_task_list('profile-select');
 
     drupal_set_title(st('Select an installation profile'));
-    print theme('install_page', drupal_get_form('install_select_profile_form', $profiles));
+    print theme('install_page', drupal_render(drupal_get_form('install_select_profile_form', $profiles)));
     exit;
   }
 }
@@ -563,7 +563,7 @@ function install_select_locale($profilen
     install_task_list('locale-select');
 
     drupal_set_title(st('Choose language'));
-    print theme('install_page', drupal_get_form('install_select_locale_form', $locales));
+    print theme('install_page', drupal_render(drupal_get_form('install_select_locale_form', $locales)));
     exit;
   }
 }
@@ -706,7 +706,7 @@ function install_tasks($profile, $task) 
       // got accidentally blown somewhere. Stop it now.
       install_already_done_error();
     }
-    $form = drupal_get_form('install_configure_form', $url);
+    $form = drupal_render(drupal_get_form('install_configure_form', $url));
 
     if (!variable_get('site_name', FALSE) && !variable_get('site_mail', FALSE)) {
       // Not submitted yet: Prepare to display the form.
Index: update.php
===================================================================
RCS file: /cvs/drupal/drupal/update.php,v
retrieving revision 1.268
diff -u -F^f -p -r1.268 update.php
--- update.php	20 Dec 2008 18:24:32 -0000	1.268
+++ update.php	3 Jan 2009 00:03:49 -0000
@@ -195,7 +195,7 @@ function update_do_one($module, $number,
 
 function update_selection_page() {
   drupal_set_title('Drupal database update');
-  $output = drupal_get_form('update_script_selection_form');
+  $output = drupal_render(drupal_get_form('update_script_selection_form'));
 
   update_task_list('select');
 
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.310
diff -u -F^f -p -r1.310 form.inc
--- includes/form.inc	30 Dec 2008 16:43:14 -0000	1.310
+++ includes/form.inc	3 Jan 2009 00:03:50 -0000
@@ -29,12 +29,13 @@
  * presentation, while simplifying code and reducing the amount of HTML that
  * must be explicitly generated by modules.
  *
- * The drupal_get_form() function handles retrieving, processing, and
- * displaying a rendered HTML form for modules automatically. For example:
+ * The drupal_get_form() function handles retrieving and processing forms. It
+ * will not however, render the form for you - for that it's necessary to use
+ * drupal_render. For example:
  *
  * @code
  * // Display the user registration form.
- * $output = drupal_get_form('user_register');
+ * $output = drupal_render(drupal_get_form('user_register'));
  * @endcode
  *
  * Forms can also be built and submitted programmatically without any user input
@@ -49,7 +50,7 @@
 /**
  * Retrieves a form from a constructor function, or from the cache if
  * the form was built in a previous page-load. The form is then passed
- * on for processing, after and rendered for display if necessary.
+ * on for processing.
  *
  * @param $form_id
  *   The unique string identifying the desired form. If a function
@@ -64,7 +65,7 @@
  *   For example, the node_edit form requires that a node object be passed
  *   in here when it is called.
  * @return
- *   The rendered form.
+ *   The built form, ready to be rendered with drupal_render.
  */
 function drupal_get_form($form_id) {
   $form_state = array('storage' => NULL, 'submitted' => FALSE);
@@ -602,8 +603,7 @@ function drupal_render_form($form_id, &$
     }
   }
 
-  $output = drupal_render($form);
-  return $output;
+  return array('form' => $form);
 }
 
 /**
Index: includes/locale.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/locale.inc,v
retrieving revision 1.198
diff -u -F^f -p -r1.198 locale.inc
--- includes/locale.inc	19 Dec 2008 03:55:23 -0000	1.198
+++ includes/locale.inc	3 Jan 2009 00:03:50 -0000
@@ -151,9 +151,9 @@ function locale_languages_overview_form_
  * User interface for the language addition screen.
  */
 function locale_languages_add_screen() {
-  $output = drupal_get_form('locale_languages_predefined_form');
-  $output .= drupal_get_form('locale_languages_custom_form');
-  return $output;
+  $page['predefined'] = drupal_get_form('locale_languages_predefined_form');
+  $page['custom'] = drupal_get_form('locale_languages_custom_form');
+  return $page;
 }
 
 /**
@@ -536,7 +536,7 @@ function locale_translate_overview_scree
  */
 function locale_translate_seek_screen() {
   $output = _locale_translate_seek();
-  $output .= drupal_get_form('locale_translate_seek_form');
+  $output .= drupal_render(drupal_get_form('locale_translate_seek_form'));
   return $output;
 }
 
@@ -699,9 +699,9 @@ function locale_translate_export_screen(
   $output = '';
   // Offer translation export if any language is set up.
   if (count($names)) {
-    $output = drupal_get_form('locale_translate_export_po_form', $names);
+    $output = drupal_render(drupal_get_form('locale_translate_export_po_form', $names));
   }
-  $output .= drupal_get_form('locale_translate_export_pot_form');
+  $output .= drupal_render(drupal_get_form('locale_translate_export_pot_form'));
   return $output;
 }
 
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.458
diff -u -F^f -p -r1.458 theme.inc
--- includes/theme.inc	31 Dec 2008 12:02:21 -0000	1.458
+++ includes/theme.inc	3 Jan 2009 00:03:51 -0000
@@ -1885,7 +1885,7 @@ function template_preprocess_page(&$vari
   $variables['mission']           = isset($mission) ? $mission : '';
   $variables['main_menu']     = theme_get_setting('toggle_main_menu') ? menu_main_menu() : array();
   $variables['secondary_menu']   = theme_get_setting('toggle_secondary_menu') ? menu_secondary_menu() : array();
-  $variables['search_box']        = (theme_get_setting('toggle_search') ? drupal_get_form('search_theme_form') : '');
+  $variables['search_box']        = (theme_get_setting('toggle_search') ? drupal_render(drupal_get_form('search_theme_form')) : '');
   $variables['site_name']         = (theme_get_setting('toggle_name') ? variable_get('site_name', 'Drupal') : '');
   $variables['site_slogan']       = (theme_get_setting('toggle_slogan') ? variable_get('site_slogan', '') : '');
   $variables['css']               = drupal_add_css();
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.678
diff -u -F^f -p -r1.678 comment.module
--- modules/comment/comment.module	2 Jan 2009 21:17:35 -0000	1.678
+++ modules/comment/comment.module	3 Jan 2009 00:03:53 -0000
@@ -1563,7 +1563,7 @@ function comment_form(&$form_state, $edi
  *   The form title.
  */
 function comment_form_box($edit, $title = NULL) {
-  return theme('box', $title, drupal_get_form('comment_form', $edit, $title));
+  return theme('box', $title, drupal_render(drupal_get_form('comment_form', $edit, $title)));
 }
 
 /**
Index: modules/dblog/dblog.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.admin.inc,v
retrieving revision 1.9
diff -u -F^f -p -r1.9 dblog.admin.inc
--- modules/dblog/dblog.admin.inc	24 Dec 2008 10:38:41 -0000	1.9
+++ modules/dblog/dblog.admin.inc	3 Jan 2009 00:03:53 -0000
@@ -51,8 +51,8 @@ function dblog_overview() {
     WATCHDOG_EMERG    => 'dblog-emerg',
   );
 
-  $output = drupal_get_form('dblog_filter_form');
-  $output .= drupal_get_form('dblog_clear_log_form');
+  $output = drupal_render(drupal_get_form('dblog_filter_form'));
+  $output .= drupal_render(drupal_get_form('dblog_clear_log_form'));
 
   $header = array(
     ' ',
Index: modules/openid/openid.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.inc,v
retrieving revision 1.13
diff -u -F^f -p -r1.13 openid.inc
--- modules/openid/openid.inc	1 Nov 2008 19:51:06 -0000	1.13
+++ modules/openid/openid.inc	3 Jan 2009 00:03:54 -0000
@@ -69,7 +69,7 @@ function openid_redirect_http($url, $mes
  */
 function openid_redirect($url, $message) {
   $output = '<html><head><title>' . t('OpenID redirect') . "</title></head>\n<body>";
-  $output .= drupal_get_form('openid_redirect_form', $url, $message);
+  $output .= drupal_render(drupal_get_form('openid_redirect_form', $url, $message));
   $output .= '<script type="text/javascript">document.getElementById("openid-redirect-form").submit();</script>';
   $output .= "</body></html>\n";
   print $output;
Index: modules/openid/openid.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.pages.inc,v
retrieving revision 1.12
diff -u -F^f -p -r1.12 openid.pages.inc
--- modules/openid/openid.pages.inc	22 Nov 2008 10:32:42 -0000	1.12
+++ modules/openid/openid.pages.inc	3 Jan 2009 00:03:54 -0000
@@ -48,7 +48,7 @@ function openid_user_identities($account
   }
 
   $output = theme('table', $header, $rows);
-  $output .= drupal_get_form('openid_user_add');
+  $output .= drupal_render(drupal_get_form('openid_user_add'));
   return $output;
 }
 
Index: modules/path/path.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.admin.inc,v
retrieving revision 1.16
diff -u -F^f -p -r1.16 path.admin.inc
--- modules/path/path.admin.inc	5 Dec 2008 12:50:27 -0000	1.16
+++ modules/path/path.admin.inc	3 Jan 2009 00:03:54 -0000
@@ -13,7 +13,7 @@
  */
 function path_admin_overview($keys = NULL) {
   // Add the filter form above the overview table.
-  $output = drupal_get_form('path_admin_filter_form', $keys);
+  $output = drupal_render(drupal_get_form('path_admin_filter_form', $keys));
   // Enable language column if locale is enabled or if we have any alias with language
   $count = db_result(db_query("SELECT COUNT(*) FROM {url_alias} WHERE language != ''"));
   $multilanguage = (module_exists('locale') || $count);
Index: modules/poll/poll.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v
retrieving revision 1.283
diff -u -F^f -p -r1.283 poll.module
--- modules/poll/poll.module	31 Dec 2008 12:02:23 -0000	1.283
+++ modules/poll/poll.module	3 Jan 2009 00:03:54 -0000
@@ -543,9 +543,7 @@ function poll_view($node, $teaser = FALS
   }
 
   if (!empty($node->allowvotes) && ($block || empty($node->show_results))) {
-    $node->content['body'] = array(
-      '#markup' => drupal_get_form('poll_view_voting', $node, $block),
-    );
+    $node->content['body'] = drupal_get_form('poll_view_voting', $node, $block);
   }
   else {
     $node->content['body'] = array(
@@ -748,7 +746,7 @@ function theme_poll_choices($form) {
 function template_preprocess_poll_results(&$variables) {
   $variables['links'] = theme('links', $variables['raw_links']);
   if (isset($variables['vote']) && $variables['vote'] > -1 && user_access('cancel own vote')) {
-    $variables['cancel_form'] = drupal_get_form('poll_cancel_form', $variables['nid']);
+    $variables['cancel_form'] = drupal_render(drupal_get_form('poll_cancel_form', $variables['nid']));
   }
   $variables['title'] = check_plain($variables['raw_title']);
 
Index: modules/search/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.module,v
retrieving revision 1.282
diff -u -F^f -p -r1.282 search.module
--- modules/search/search.module	31 Dec 2008 12:02:23 -0000	1.282
+++ modules/search/search.module	3 Jan 2009 00:03:55 -0000
@@ -172,7 +172,7 @@ function search_block_list() {
  */
 function search_block_view($delta = '') {
   if (user_access('search content')) {
-    $block['content'] = drupal_get_form('search_block_form');
+    $block['content'] = drupal_render(drupal_get_form('search_block_form'));
     $block['subject'] = t('Search');
     return $block;
   }
Index: modules/search/search.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.pages.inc,v
retrieving revision 1.5
diff -u -F^f -p -r1.5 search.pages.inc
--- modules/search/search.pages.inc	14 Apr 2008 17:48:41 -0000	1.5
+++ modules/search/search.pages.inc	3 Jan 2009 00:03:55 -0000
@@ -40,8 +40,8 @@ function search_view($type = 'node') {
     }
 
     // Construct the search form.
-    $output = drupal_get_form('search_form', NULL, $keys, $type);
-    $output .= $results;
+    $output['form'] = drupal_get_form('search_form', NULL, $keys, $type);
+    $output['results'] = $results;
 
     return $output;
   }
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.111
diff -u -F^f -p -r1.111 system.admin.inc
--- modules/system/system.admin.inc	30 Dec 2008 16:43:19 -0000	1.111
+++ modules/system/system.admin.inc	3 Jan 2009 00:03:56 -0000
@@ -1110,7 +1110,7 @@ function system_ip_blocking() {
     );
   }
 
-  $output .= drupal_get_form('system_ip_blocking_form');
+  $output .= drupal_render(drupal_get_form('system_ip_blocking_form'));
 
   $output .= theme('table', $header, $rows);
 
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.655
diff -u -F^f -p -r1.655 system.module
--- modules/system/system.module	2 Jan 2009 20:28:09 -0000	1.655
+++ modules/system/system.module	3 Jan 2009 00:03:56 -0000
@@ -1638,7 +1638,7 @@ function system_actions_manage() {
   }
 
   if ($actions_map) {
-    $output .= drupal_get_form('system_actions_manage_form', $options);
+    $output .= drupal_render(drupal_get_form('system_actions_manage_form', $options));
   }
 
   return $output;
Index: modules/trigger/trigger.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.admin.inc,v
retrieving revision 1.7
diff -u -F^f -p -r1.7 trigger.admin.inc
--- modules/trigger/trigger.admin.inc	16 Jul 2008 21:59:28 -0000	1.7
+++ modules/trigger/trigger.admin.inc	3 Jan 2009 00:03:57 -0000
@@ -24,17 +24,16 @@ function trigger_assign($type = NULL) {
     $type = 'nodeapi';
   }
 
-  $output = '';
   $hooks = module_invoke_all('hook_info');
   foreach ($hooks as $module => $hook) {
     if (isset($hook[$type])) {
       foreach ($hook[$type] as $op => $description) {
         $form_id = 'trigger_' . $type . '_' . $op . '_assign_form';
-        $output .= drupal_get_form($form_id, $type, $op, $description['runs when']);
+        $page[$form_id] = drupal_get_form($form_id, $type, $op, $description['runs when']);
       }
     }
   }
-  return $output;
+  return $page;
 }
 
 /**
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.33
diff -u -F^f -p -r1.33 user.admin.inc
--- modules/user/user.admin.inc	16 Nov 2008 15:10:49 -0000	1.33
+++ modules/user/user.admin.inc	3 Jan 2009 00:03:57 -0000
@@ -12,18 +12,18 @@ function user_admin($callback_arg = '') 
   switch ($op) {
     case t('Create new account'):
     case 'create':
-      $output = drupal_get_form('user_register');
+      $page = drupal_get_form('user_register');
       break;
     default:
       if (!empty($_POST['accounts']) && isset($_POST['operation']) && ($_POST['operation'] == 'delete')) {
-        $output = drupal_get_form('user_multiple_delete_confirm');
+        $page = drupal_get_form('user_multiple_delete_confirm');
       }
       else {
-        $output = drupal_get_form('user_filter_form');
-        $output .= drupal_get_form('user_admin_account');
+        $page['filter'] = drupal_get_form('user_filter_form');
+        $page['accounts'] = drupal_get_form('user_admin_account');
       }
   }
-  return $output;
+  return $page;
 }
 
 /**
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.951
diff -u -F^f -p -r1.951 user.module
--- modules/user/user.module	30 Dec 2008 16:43:20 -0000	1.951
+++ modules/user/user.module	3 Jan 2009 00:03:58 -0000
@@ -111,7 +111,7 @@ function user_external_load($authname) {
  *    TRUE if the login succeeds, FALSE otherwise.
  */
 function user_external_login($account, $edit = array()) {
-  $form = drupal_get_form('user_login');
+  $form = drupal_render(drupal_get_form('user_login'));
 
   $state['values'] = $edit;
   if (empty($state['values']['name'])) {
@@ -813,7 +813,7 @@ function user_block_view($delta = '') {
       if (!$user->uid && !(arg(0) == 'user' && !is_numeric(arg(1)))) {
 
         $block['subject'] = t('User login');
-        $block['content'] = drupal_get_form('user_login_block');
+        $block['content'] = drupal_render(drupal_get_form('user_login_block'));
       }
       return $block;
 
