/** * Handles POST requests to a group's page. */ public function post_group() { $group = UserGroup::get_by_id($this->handler_vars['id']); $tokens = ACL::all_tokens(); if (isset($this->handler_vars['nonce'])) { $wsse = Utils::WSSE($this->handler_vars['nonce'], $this->handler_vars['timestamp']); if (isset($this->handler_vars['digest']) && $this->handler_vars['digest'] != $wsse['digest']) { Session::error(_t('WSSE authentication failed.')); } if (isset($this->handler_vars['delete'])) { $group->delete(); Utils::redirect(URL::get('admin', 'page=groups')); } if (isset($this->handler_vars['user'])) { $users = $this->handler_vars['user']; foreach ($users as $user => $status) { if ($status == 1) { $group->add($user); } else { $group->remove($user); } } foreach ($tokens as $token) { $bitmask = new Bitmask(ACL::$access_names); if (isset($this->handler_vars['tokens'][$token->id]['deny'])) { $bitmask->value = 0; $group->deny($token->id); } else { foreach (ACL::$access_names as $name) { if (isset($this->handler_vars['tokens'][$token->id][$name])) { $bitmask->{$name} = true; } } if (isset($this->handler_vars['tokens'][$token->id]['full'])) { $bitmask->value = $bitmask->full; } if ($bitmask->value != 0) { $group->grant($token->id, $bitmask); } else { $group->revoke($token->id); } } } } } Session::notice(_t('Updated permissions.'), 'permissions'); Utils::redirect(URL::get('admin', 'page=group') . '?id=' . $group->id); }
/** * Get tokens created by this module. * @param integer $num number of tokens to get, or all if not specified. * @return array tokens found. */ private function populate_tokens_get($num = null) { // get all tokens $alltokens = ACL::all_tokens(); // internal loop to get only our tokens. $tokens = array(); $count = 0; foreach ($alltokens as $id => $token) { if (strpos($token->name, 'opulate_')) { $tokens[] = $token; if (isset($num) && $num == ++$count) { break; } } } return $tokens; }