You are here

function acl_edit_form in ACL 5

Same name and namespace in other branches
  1. 8 acl.module \acl_edit_form()
  2. 6 acl.module \acl_edit_form()
  3. 7 acl.module \acl_edit_form()

Provide a form to edit the ACL that can be embedded in other forms. Pass $new_acl=TRUE if you have no ACL yet, but do supply a string like 'my_module_new_acl' as $acl_id anyway.

File

./acl.module, line 65
acl.module

Code

function acl_edit_form($acl_id, $label = NULL, $new_acl = FALSE) {
  $users = array();
  if (!$new_acl) {

    // Ensure the ACL in question even exists.
    if (!($acl_name = db_result(db_query("SELECT name FROM {acl} WHERE acl_id = %d", $acl_id)))) {
      return array();
    }
    $result = db_query("SELECT u.uid, u.name FROM {users} u LEFT JOIN {acl_user} aclu ON aclu.uid = u.uid WHERE acl_id = %d", $acl_id);
    while ($user = db_fetch_object($result)) {
      $users[$user->uid] = $user->name;
    }
  }
  if (!isset($label)) {
    $label = empty($acl_name) ? $acl_id : $acl_name;
  }
  $form = array(
    '#type' => 'fieldset',
    '#collapsible' => true,
    '#title' => $label,
    '#tree' => true,
  );
  $form['acl_id'] = array(
    '#type' => 'value',
    '#value' => $acl_id,
  );
  $form['deletions'] = array(
    '#type' => 'checkboxes',
  );

  // placeholder
  $form['delete_button'] = array(
    '#type' => 'acl_button',
    '#label' => t('Remove Checked'),
  );
  $form['add'] = array(
    '#type' => 'textfield',
    '#title' => t('Add user'),
    '#maxlength' => 60,
    '#size' => 40,
    '#autocomplete_path' => 'user/autocomplete',
  );
  $form['add_button'] = array(
    '#type' => 'acl_button',
    '#label' => t('Add User'),
  );
  $form['user_list'] = array(
    '#type' => 'hidden',
    '#default_value' => serialize($users),
  );
  $form['#after_build'] = array(
    'acl_edit_form_after_build',
  );
  return $form;
}