? sites/default/files
? sites/default/settings.php
Index: modules/system/system.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.api.php,v
retrieving revision 1.164
diff -u -p -r1.164 system.api.php
--- modules/system/system.api.php	30 Apr 2010 19:21:52 -0000	1.164
+++ modules/system/system.api.php	1 May 2010 04:59:59 -0000
@@ -3934,5 +3934,23 @@ function hook_filetransfer_backends() {
 }
 
 /**
+ * @param &$list
+ *   List of the available regions from a specified theme.
+ * @param $theme_key
+ *   The name of the theme.
+ * @param $show
+ *   Possible values: REGIONS_ALL or REGIONS_VISIBLE. Visible excludes hidden
+ *   regions.
+ */
+function hook_region_list_alter(&$list, $theme_key, $show) {
+  // The 'sidebar_visible' field instance on 'page' node types controls the
+  // 'sidebar' region.
+  if (($node = menu_get_object()) && $node->type == 'page' && !$node->sidebar_visible[LANGUAGE_NONE][0]['value']) {
+    unset($list[$theme_key][$show]['sidebar']);
+  }
+}
+
+
+/**
  * @} End of "addtogroup hooks".
  */
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.926
diff -u -p -r1.926 system.module
--- modules/system/system.module	30 Apr 2010 01:33:17 -0000	1.926
+++ modules/system/system.module	1 May 2010 05:00:00 -0000
@@ -2531,6 +2531,7 @@ function system_region_list($theme_key, 
         $list[$theme_key][$show][$name] = $label;
       }
     }
+    drupal_alter('region_list', $list, $theme_key, $show);
   }
   return $list[$theme_key][$show];
 }
