You are here

function forum_access_form_submit in Forum Access 5

File

./forum_access.module, line 291
forum_access.module

Code

function forum_access_form_submit($form_id, $form_values) {
  db_query("DELETE FROM {forum_access} WHERE tid = %d", $form_values['tid']);
  $access = $form_values['forum_access'];

  // shortcut
  if (array_key_exists('acl', $access)) {
    acl_save_form($access['acl']);
  }
  foreach ($access['view'] as $rid => $checked) {
    $grants[] = array(
      'realm' => 'forum_access',
      'gid' => $rid,
      'grant_view' => (bool) $checked,
      'grant_update' => !empty($access['update'][$rid]),
      'grant_delete' => !empty($access['delete'][$rid]),
    );
    db_query("INSERT INTO {forum_access} (tid, rid, grant_view, grant_update, grant_delete, grant_create) VALUES (%d, %d, %d, %d, %d, %d)", $form_values['tid'], $rid, (bool) $checked, !empty($access['update'][$rid]), !empty($access['delete'][$rid]), !empty($access['create'][$rid]));
  }

  // mass update
  $result = db_query("SELECT n.nid FROM {node} n LEFT JOIN {term_node} tn ON tn.nid = n.nid WHERE tn.tid = %d", $form_values['tid']);
  while ($node = db_fetch_object($result)) {
    node_access_write_grants($node, $grants, 'forum_access');
  }
}