Exemplo n.º 1
0
 function delete()
 {
     $this->load->model('groups_model');
     $message = '';
     if ($this->input->post('selected')) {
         $selected = $this->input->post('selected');
     } else {
         $selected = (array) $this->uri->segment(5);
     }
     // Show error if default layout was requested to be deleted
     if (in_array($this->settings->users_module->default_group, $selected)) {
         $Default_group = new Groups_model();
         $Default_group->get_by_id($this->settings->users_module->default_group);
         if ($Default_group->exists()) {
             unset($selected[array_search($Default_group->id, $selected)]);
             $message .= '<p class="error">The group ' . $Default_group->name . ' is set as the default group and cannot be deleted.</p>';
         }
     }
     // Check if any of the selected are required
     $Required_groups = new Groups_model();
     if (!empty($selected)) {
         $Required_groups->where('required', 1)->where_in('id', $selected)->get();
     }
     foreach ($Required_groups as $Required_group) {
         unset($selected[array_search($Required_group->id, $selected)]);
         $message .= '<p class="error">The group ' . $Required_group->name . ' is required by the system and cannot be deleted.</p>';
     }
     // Check if any of the selected are associated to pages
     $Associated_groups = new Groups_model();
     if (!empty($selected)) {
         $Associated_groups->where_in_related('users', 'group_id', $selected)->group_by('group_id')->get();
     }
     foreach ($Associated_groups as $Associated_group) {
         unset($selected[array_search($Associated_group->id, $selected)]);
         $message .= '<p class="error">The group ' . $Associated_group->name . ' is associated to one or more users and cannot be deleted.</p>';
     }
     $Group = new Groups_model();
     // Non-super admins cannot delete super admins nor can they delete themselves
     if (!empty($selected)) {
         if ($this->Group_session->type == SUPER_ADMIN) {
             $Group->where_in('id', $selected)->get();
         } else {
             $Group->where('type !=', SUPER_ADMIN)->where_in('id', $selected)->get();
         }
         if ($Group->exists()) {
             $Group->delete_all();
             $message = '<p class="success">The selected items were successfully deleted.</p>' . $message;
         }
     }
     $this->session->set_flashdata('message', $message);
     redirect(ADMIN_PATH . '/users/groups');
 }