You are here

function form_builder_menu_field_access in Form Builder 6

Same name and namespace in other branches
  1. 7.2 form_builder.module \form_builder_menu_field_access()
  2. 7 form_builder.module \form_builder_menu_field_access()

Access callback for field configuration, viewing, addition, and deletion.

1 call to form_builder_menu_field_access()
theme_form_builder_element_wrapper in includes/form_builder.admin.inc
Output the wrapper around a form_builder element with configure/remove links.
1 string reference to 'form_builder_menu_field_access'
form_builder_menu in ./form_builder.module
Implementation of hook_menu().

File

./form_builder.module, line 146
form_builder.module Generic form building framework and user interface.

Code

function form_builder_menu_field_access($op, $form_type, $form_id, $element_id) {
  module_load_include('inc', 'form_builder', 'includes/form_builder.api');
  module_load_include('inc', 'form_builder', 'includes/form_builder.cache');
  $element = form_builder_cache_field_load($form_type, $form_id, $element_id);
  $access = FALSE;
  if ($op == 'add' || $op == 'view') {
    $access = TRUE;
  }
  if ($op == 'clone') {

    // Unique fields cannot be cloned (or otherwise they would not be unique).
    // Cloning fieldsets is also not currently supported.
    $fields = form_builder_get_form_type($form_type);
    $access = !empty($element['#form_builder']['element_type']) && empty($fields[$element['#form_builder']['element_type']]['unique']) && $element['#form_builder']['element_type'] != 'fieldset';
  }
  if ($op == 'configure' && !empty($element['#form_builder']['configurable'])) {
    $access = TRUE;
  }
  if ($op == 'remove' && !empty($element['#form_builder']['removable'])) {
    $access = TRUE;
  }
  $module_accesses = module_invoke_all('form_builder_field_access', $op, $form_type, $form_id, $element);
  if (!empty($module_accesses)) {
    $access = array_pop($module_accesses);
  }
  return $access;
}