public function create2($group_id = null, $acl_id = null) { $group = $this->load_group($group_id); if (!$acl_id) { $acl_id = $this->GetData('acl_id'); } $acl = ACL::find_by_id($acl_id); if (!$acl) { Site::Flash('error', 'Unable to find the ACL selected'); Redirect("admin/acl/groups/{$group->id}/rules/new"); } if ($this->post) { $ids = $this->PostData('actions'); $urls = $this->PostData('urls'); if (is_array($ids)) { $count = 0; foreach ($ids as $id => $action) { if (!$action) { continue; } $rule = new ACLRule(); $rule->aclgroup_id = $group->id; $rule->acl_id = $id; $rule->action = $action; if ($rule->action == 'araRedirect') { if (isset($urls[$id])) { $rule->url = $urls[$id]; } } if ($rule->save()) { $count++; } } $plural = 's have'; if ($count == 1) { $plural = ' has'; } Site::Flash('notice', "{$count} rule{$plural} been added"); Redirect("admin/acl/groups/{$group->id}"); } else { Site::InstantFlash('error', 'No ACLs selected'); } } $controller = mysql_real_escape_string($acl->controller); $id = mysql_real_escape_string($acl->id); $ids = array(); $group_id = mysql_real_escape_string($group->id); $currentRules = ACLRule::Find_all("aclgroups.id = '{$group_id}' AND (acls.controller = '{$controller}' OR acls.id = '{$id}')"); foreach ($currentRules as $rule) { $ids[$rule->acl->id] = $rule->acl->id; } $rulesql = ''; if (count($ids) > 0) { $rulesql = ' AND NOT acls.id IN (' . implode(', ', $ids) . ')'; } $acls = ACL::find_all("(acls.controller = '{$controller}' OR acls.id = '{$id}'){$rulesql}", "acls.action ASC"); if (count($acls) == 0) { Site::Flash('error', 'There are no more ACLs to add in this section'); Redirect("admin/acl/groups/{$group->id}/rules/new"); } $this->assign('acl', $acl); $this->assign('acls', $acls); $this->assign('group', $group); $this->title = "ACL :: Groups :: {$group->name} :: New Rule"; $this->render("aclrule/create2.tpl"); }