function delete() { $this->load->helper('file'); $this->load->model('content_types_model'); $this->load->model('content_types_admin_groups_model'); $this->load->model('entries_model'); if ($this->input->post('selected')) { $selected = $this->input->post('selected'); } else { $selected = (array) $this->uri->segment(5); } $Content_types = new Content_types_model(); $Content_types->where_in('id', $selected)->get(); if ($Content_types->exists()) { $message = ''; $content_types_deleted = FALSE; $this->load->model('content_fields_model'); foreach ($Content_types as $Content_type) { if ($Content_type->required) { $message .= '<p class="error">Content type ' . $Content_type->title . ' (' . $Content_type->short_name . ') is required by the system and cannot be deleted.</p>'; } else { if ($Content_type->entries->limit(1)->get()->exists()) { $message .= '<p class="error">Content type ' . $Content_type->title . ' (' . $Content_type->short_name . ') is associated to one or more entries and cannot be deleted.</p>'; } else { // Delete content type fields and entries data coloumns $Content_fields = new Content_fields_model(); $Content_fields->where('content_type_id', $Content_type->id)->get(); foreach ($Content_fields as $Content_field) { $Content_fields->drop_entries_column(); $Content_fields->delete(); } // Delete content type admin groups $Content_types_admin_groups = new Content_types_admin_groups_model(); $Content_types_admin_groups->where('content_type_id', $Content_type->id)->get(); $Content_types_admin_groups->delete_all(); // Delete content type revisions $Content_type->delete_revisions(); // Delete content type $Content_type->delete(); $content_types_deleted = TRUE; } } } if ($content_types_deleted) { // Clear cache $this->load->library('cache'); $this->cache->delete_all('entries'); $message = '<p class="success">The selected items were successfully deleted.</p>' . $message; } $this->session->set_flashdata('message', $message); } redirect(ADMIN_PATH . '/content/types'); }