Exemplo n.º 1
0
 function edit()
 {
     // Init
     $data = array();
     $data['breadcrumb'] = set_crumbs(array('users/groups' => 'User Groups', current_url() => 'Group Edit'));
     $data['Group'] = $Group = $this->load->model('groups_model');
     $data['permissions'] = array();
     $group_id = $this->uri->segment(5);
     $data['edit_mode'] = $edit_mode = FALSE;
     $data['permission_options'] = unserialize(ADMIN_ACCESS_OPTIONS);
     // Edit Mode
     if ($group_id) {
         $data['edit_mode'] = $edit_mode = TRUE;
         $Group->get_by_id($group_id);
         // Stop non-super admins from editing super admins
         if ($this->secure->get_group_session()->type != SUPER_ADMIN && $Group->type == SUPER_ADMIN) {
             show_404();
         }
         if ($Group->exists()) {
             $data['permissions'] = unserialize($Group->permissions);
         } else {
             show_404();
         }
     }
     // Validate Form
     $this->form_validation->set_rules('name', 'Group Name', "trim|required|callback_name_check[{$group_id}]");
     $this->form_validation->set_rules('permissions[access][]', 'Access Permissions', "trim");
     if ($edit_mode && $Group->modifiable_permissions) {
         $this->form_validation->set_rules('type', 'Group Type', "trim|required");
     } else {
         $this->form_validation->set_rules('type', 'Group Type', "trim");
     }
     if ($this->form_validation->run() == TRUE) {
         $Group = new Groups_model();
         // Load group to update if in edit mode
         if (!empty($group_id)) {
             $Group->get_by_id($group_id);
         }
         $Group->from_array($this->input->post());
         // If permissions posted serialize for db
         if ($this->input->post('permissions') && $this->input->post('type') == 'administrator') {
             $Group->permissions = serialize($this->input->post('permissions'));
         } elseif ($edit_mode && $data['Group']->modifiable_permissions || !$edit_mode || $edit_mode && $Group->type == ADMINISTRATOR && $this->Group_session->type == SUPER_ADMIN) {
             $Group->permissions = NULL;
         }
         // Save Changes
         $Group->save();
         $this->session->set_flashdata('message', '<p class="success">User Group Saved.</p>');
         redirect(ADMIN_PATH . '/users/groups');
     }
     $this->template->view('admin/groups/edit', $data);
 }