summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/common.inc5
-rw-r--r--includes/form.inc9
2 files changed, 10 insertions, 4 deletions
diff --git a/includes/common.inc b/includes/common.inc
index cbdb54f73..79bf69b0e 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -1692,9 +1692,10 @@ function drupal_cron_run() {
* The rendered HTML.
*/
function drupal_render(&$elements) {
- if (!isset($elements)) {
+ if (!isset($elements) || (isset($elements['#access']) && !$elements['#access'])) {
return NULL;
}
+
$content = '';
uasort($elements, "_element_sort");
if (!isset($elements['#children'])) {
@@ -1792,4 +1793,4 @@ function element_child($key) {
*/
function element_children($element) {
return array_filter(array_keys((array) $element), 'element_child');
-} \ No newline at end of file
+}
diff --git a/includes/form.inc b/includes/form.inc
index cbaec8caa..14769c470 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -496,7 +496,7 @@ function form_builder($form_id, $form) {
$form['#id'] = 'edit-' . implode('-', $form['#parents']);
}
- $posted = (($form['#programmed']) || (isset($_POST['edit']) && ($_POST['edit']['form_id'] == $form_id)));
+ $posted = (($form['#programmed']) || ((!isset($form['#access']) || $form['#access']) && isset($_POST['edit']) && ($_POST['edit']['form_id'] == $form_id)));
$edit = $posted ? $form['#post']['edit'] : array();
foreach ($form['#parents'] as $parent) {
$edit = isset($edit[$parent]) ? $edit[$parent] : NULL;
@@ -585,13 +585,18 @@ function form_builder($form_id, $form) {
$form[$key]['#tree'] = $form['#tree'];
}
+ // deny access to child elements if parent is denied
+ if (isset($form['#access']) && !$form['#access']) {
+ $form[$key]['#access'] = FALSE;
+ }
+
// don't squash existing parents value
if (!isset($form[$key]['#parents'])) {
// Check to see if a tree of child elements is present. If so, continue down the tree if required.
$form[$key]['#parents'] = $form[$key]['#tree'] && $form['#tree'] ? array_merge($form['#parents'], array($key)) : array($key);
}
- # Assign a decimal placeholder weight to preserve original array order
+ // Assign a decimal placeholder weight to preserve original array order
if (!isset($form[$key]['#weight'])) {
$form[$key]['#weight'] = $count/1000;
}