? .cache
? .project
? .settings
? 296624-fix-do-search.patch
? access_10-D7.patch
? access_11-D7.patch
? pgsql_2.patch
? sites/sites.php
? sites/sub.drupal7
? sites/all/modules
? sites/all/themes
? sites/default/files
? sites/default/settings.php
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.831
diff -u -p -r1.831 common.inc
--- includes/common.inc	23 Nov 2008 16:54:47 -0000	1.831
+++ includes/common.inc	29 Nov 2008 13:06:13 -0000
@@ -3031,7 +3031,7 @@ function drupal_alter($type, &$data) {
  *   The rendered HTML.
  */
 function drupal_render(&$elements) {
-  if (!isset($elements) || (isset($elements['#access']) && !$elements['#access'])) {
+  if (!isset($elements) || !element_access($elements)) {
     return NULL;
   }
 
@@ -3121,6 +3121,17 @@ function drupal_render(&$elements) {
 }
 
 /**
+ * Determine whether the user has access to view or edit an array element.
+ */
+function element_access(&$element, $op = 'view') {
+  if (isset($element['#access'])) {
+    $access = $element['#access'];
+    return is_string($access) ? drupal_function_exists($access) && $access($element, $op) : $access;
+  }
+  return TRUE;
+}
+
+/**
  * Function used by uasort to sort structured arrays by weight.
  */
 function element_sort($a, $b) {
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.307
diff -u -p -r1.307 form.inc
--- includes/form.inc	24 Nov 2008 00:40:44 -0000	1.307
+++ includes/form.inc	29 Nov 2008 13:06:14 -0000
@@ -889,7 +889,7 @@ function form_builder($form_id, $form, &
     }
 
     // Deny access to child elements if parent is denied.
-    if (isset($form['#access']) && !$form['#access']) {
+    if (!element_access($form, 'edit')) {
       $form[$key]['#access'] = FALSE;
     }
 
@@ -991,7 +991,7 @@ function _form_builder_handle_input_elem
 
   if (!isset($form['#value']) && !array_key_exists('#value', $form)) {
     $function = !empty($form['#value_callback']) ? $form['#value_callback'] : 'form_type_' . $form['#type'] . '_value';
-    if (($form['#programmed']) || ((!isset($form['#access']) || $form['#access']) && isset($form['#post']) && (isset($form['#post']['form_id']) && $form['#post']['form_id'] == $form_id))) {
+    if (($form['#programmed']) || (element_access($form, 'edit') && isset($form['#post']) && (isset($form['#post']['form_id']) && $form['#post']['form_id'] == $form_id))) {
       $edit = $form['#post'];
       foreach ($form['#parents'] as $parent) {
         $edit = isset($edit[$parent]) ? $edit[$parent] : NULL;
