You are here

function form_builder_menu_field_access in Form Builder 7

Same name and namespace in other branches
  1. 6 form_builder.module \form_builder_menu_field_access()
  2. 7.2 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 149
form_builder.module Generic form building framework and user interface.

Code

function form_builder_menu_field_access($op, $form_type, $form_id, $element_id) {
  if (empty($form_type) || empty($form_id) || empty($element_id)) {

    // If called by menu API to check access, we should not try and check
    // with fake data, which ends up in PHP errors.
    return;
  }
  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 = FormBuilderLoader::instance()
      ->getElementTypeInfo($form_type, $form_id);
    $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;
}