You are here

function find_perm_form_submit in Util 7

Module settings form submission handler.

File

contribs/find_perm/find_perm.module, line 82
Find permission common to selected roles.

Code

function find_perm_form_submit($form, &$form_state) {
  $roles = $form['#roles'];
  $perms = $form['#perms'];
  $selected = array_filter($form_state['values']['roles']);
  $which = array_intersect_key($roles, $selected);
  $perm_query = "SELECT permission FROM {role_permission} WHERE rid = :rid ";
  $common = array_keys($perms);
  foreach ($selected as $rid) {
    $permission = db_query($perm_query, array(
      ':rid' => $rid,
    ))
      ->fetchCol();
    $common = array_intersect($common, $permission);
  }
  $query = "SELECT DISTINCT permission FROM {role_permission} " . "WHERE rid NOT IN (:rids) AND permission IN (:perms) ";
  $others = db_query($query, array(
    ':rids' => $selected,
    ':perms' => $common,
  ))
    ->fetchCol();
  $exclusive = array_diff($common, $others);
  $common_titles = $common;
  foreach ($common as $rid => $name) {
    $common_titles[$rid] = array(
      'data' => strip_tags($perms[$name]['title']),
      'class' => array(
        in_array($name, $exclusive) ? 'exclusive' : 'not-exclusive',
      ),
    );
  }
  $form_state['storage']['common'] = $common_titles;
  $form_state['rebuild'] = TRUE;
}