diff options
-rw-r--r-- | modules/field/field.api.php | 6 | ||||
-rw-r--r-- | modules/field/field.default.inc | 2 | ||||
-rw-r--r-- | modules/field/field.form.inc | 2 | ||||
-rw-r--r-- | modules/field/field.module | 10 |
4 files changed, 14 insertions, 6 deletions
diff --git a/modules/field/field.api.php b/modules/field/field.api.php index 461789a1b..9e9924f9b 100644 --- a/modules/field/field.api.php +++ b/modules/field/field.api.php @@ -1433,11 +1433,15 @@ function hook_field_build_modes($obj_type) { * - "view" * @param $field * The field on which the operation is to be performed. + * @param $obj_type + * The type of $object; e.g. 'node' or 'user'. + * @param $object + * (optional) The object for the operation. * @param $account * (optional) The account to check, if not given use currently logged in user. * @return * TRUE if the operation is allowed; * FALSE if the operation is denied. */ -function hook_field_access($op, $field, $account) { +function hook_field_access($op, $field, $obj_type, $object, $account) { } diff --git a/modules/field/field.default.inc b/modules/field/field.default.inc index 50e71e30e..10f3f7bc1 100644 --- a/modules/field/field.default.inc +++ b/modules/field/field.default.inc @@ -84,7 +84,7 @@ function field_default_view($obj_type, $object, $field, $instance, $langcode, $i '#theme' => 'field', '#weight' => $display['weight'], '#title' => check_plain(t($instance['label'])), - '#access' => field_access('view', $field), + '#access' => field_access('view', $field, $obj_type, $object), '#label_display' => $label_display, '#build_mode' => $build_mode, '#language' => $langcode, diff --git a/modules/field/field.form.inc b/modules/field/field.form.inc index 11b065df4..581869278 100644 --- a/modules/field/field.form.inc +++ b/modules/field/field.form.inc @@ -22,7 +22,7 @@ function field_default_form($obj_type, $object, $field, $instance, $langcode, $i // If the field is not accessible, don't add anything. The field value will // be left unchanged on update, or considered empty on insert (default value // will be inserted if applicable). - if (!field_access('edit', $field)) { + if (!field_access('edit', $field, $obj_type, $object)) { return $addition; } diff --git a/modules/field/field.module b/modules/field/field.module index 7ad0c50b9..080091b68 100644 --- a/modules/field/field.module +++ b/modules/field/field.module @@ -499,7 +499,7 @@ function field_format($obj_type, $object, $field, $item, $formatter_type = NULL, $field = field_info_field($field); } - if (field_access('view', $field)) { + if (field_access('view', $field, $obj_type, $object)) { $field_type = field_info_field_types($field['type']); // We need $field, $instance, $obj_type, $object to be able to display a value... @@ -624,20 +624,24 @@ function field_has_data($field) { * - "view" * @param $field * The field on which the operation is to be performed. + * @param $obj_type + * The type of $object; e.g. 'node' or 'user'. + * @param $object + * (optional) The object for the operation. * @param $account * (optional) The account to check, if not given use currently logged in user. * @return * TRUE if the operation is allowed; * FALSE if the operation is denied. */ -function field_access($op, $field, $account = NULL) { +function field_access($op, $field, $obj_type, $object = NULL, $account = NULL) { global $user; if (is_null($account)) { $account = $user; } - $field_access = module_invoke_all('field_access', $op, $field, $account); + $field_access = module_invoke_all('field_access', $op, $field, $obj_type, $object, $account); foreach ($field_access as $value) { if ($value === FALSE) { return FALSE; |