2025-04-27 07:06:24 +07:00

2227 lines
84 KiB
PHP
Executable File

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function __construct()
{
parent::__construct();
date_default_timezone_set('Asia/Jakarta');
// Cek apakah user sudah login
if ($this->session->userdata('status') != "telah_login") {
redirect(site_url('login?alert=belum_login'), 'refresh');
}
// Load models dan library yang diperlukan
$this->load->model('M_data');
$this->load->model('Kategori_model');
$this->load->model('Chat_model');
$this->load->library('session');
$this->load->model('Artikel_model');
}
// Login aksi
public function login_aksi(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$where = array(
'pengguna_username' => $username,
'pengguna_password' => $password,
'pengguna_status' => 1
);
$cek = $this->db->get_where('pengguna', $where)->row();
if ($cek) {
$data_session = array(
'id' => $cek->pengguna_id,
'username' => $cek->pengguna_username,
'level' => $cek->pengguna_level,
'satker_id' => $cek->satker_id,
'status' => "telah_login"
);
$this->session->set_userdata($data_session);
redirect(base_url('dashboard'));
} else {
redirect(base_url('login?alert=gagal'));
}
}
public function index() {
// Data untuk dashboard (misalnya statistik)
$data['jumlah_artikel'] = $this->M_data->get_data('artikel')->num_rows();
$data['jumlah_kategori'] = $this->M_data->get_data('kategori')->num_rows();
$data['jumlah_pengguna'] = $this->M_data->get_data('pengguna')->num_rows();
$data['jumlah_halaman'] = $this->M_data->get_data('halaman')->num_rows();
// Ambil data kategori per artikel (misalnya)
$data['kategori'] = $this->Kategori_model->get_artikel_per_kategori();
// Muat view; pastikan view header/footer sudah mendukung layout yang Anda inginkan
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_index', $data);
$this->load->view('dashboard/v_footer');
}
public function fetch_messages() {
// Ambil pesan dari database melalui model
$messages = $this->Chat_model->get_messages();
// Pastikan mengeluarkan header JSON
header('Content-Type: application/json');
echo json_encode($messages);
}
public function send_message() {
// Pastikan response berupa JSON
header('Content-Type: application/json');
// Ambil data pesan dan ID user dari session
$message = $this->input->post('message');
$user_id = $this->session->userdata('id');
// Validasi: pastikan pesan dan user_id tidak kosong
if (!empty($message) && !empty($user_id)) {
// Gunakan htmlspecialchars agar pesan aman untuk disimpan dan ditampilkan
if ($this->Chat_model->insert_message($user_id, htmlspecialchars($message, ENT_QUOTES, 'UTF-8'))) {
echo json_encode(['status' => 'success']);
} else {
echo json_encode(['status' => 'error', 'message' => 'Pesan gagal disimpan karena kesalahan database.']);
}
} else {
echo json_encode(['status' => 'error', 'message' => 'Pesan atau ID pengguna kosong']);
}
}
public function ganti_password()
{
// Load the change password view
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_ganti_password');
$this->load->view('dashboard/v_footer');
}
public function ganti_password_aksi()
{
// Form validation rules
$this->form_validation->set_rules('password_lama', 'Password Lama', 'required');
$this->form_validation->set_rules('password_baru', 'Password Baru', 'required|min_length[8]');
$this->form_validation->set_rules('konfirmasi_password', 'Konfirmasi Password Baru', 'required|matches[password_baru]');
// Check validation
if ($this->form_validation->run() != false) {
// Capture data from the form
$password_lama = $this->input->post('password_lama');
$password_baru = $this->input->post('password_baru');
// Check the old password
$where = array('pengguna_id' => $this->session->userdata('id'));
// Retrieve user data from the database
$user = $this->M_data->get_user($where);
// Verify the old password using MD5
if ($user && md5($password_lama) === $user->pengguna_password) {
// Update the password using MD5
$data = array(
'pengguna_password' => md5($password_baru) // Hash the new password with MD5
);
$this->M_data->update_data($where, $data, 'pengguna');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Password telah diubah!');
redirect('dashboard/ganti_password');
} else {
// Set flashdata for error notification
$this->session->set_flashdata('error', 'Maaf, password lama yang anda masukkan salah!');
redirect('dashboard/ganti_password');
}
} else {
// If validation fails, return to the change password form
$this->ganti_password();
}
}
public function keluar()
{
// Destroy user session
$this->session->sess_destroy();
redirect(site_url('login?alert=logout'), 'refresh');
}
// CRUD KATEGORI ARTIKEL
public function kategori()
{
$data['kategori'] = $this->M_data->get_data('kategori')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori', $data);
$this->load->view('dashboard/v_footer');
}
// Function to display the add category page
public function tambah_kategori()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori');
$this->load->view('dashboard/v_footer');
}
// Function untuk akses simpan kategori
public function kategori_aksi()
{
// Set validation rules for category input
$this->form_validation->set_rules('kategori', 'Kategori', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get category data from input
$kategori = $this->input->post('kategori', TRUE);
// Prepare data to be saved
$data = array(
'kategori_nama' => $kategori,
'kategori_slug' => strtolower(url_title($kategori))
);
// Save category data to the kategori table
$this->M_data->insert_data($data, 'kategori');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Kategori berhasil ditambahkan!');
// Redirect to the category page
redirect('dashboard/kategori');
} else {
// If validation fails, return to the add category page
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori');
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Edit Kategori
public function kategori_edit($id)
{
$where = array(
'kategori_id' => $id
);
// Prepare the data to be passed to the view
$data['kategori'] = $this->M_data->edit_data($where,'kategori')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_edit',$data);
$this->load->view('dashboard/v_footer');
}
// Function untuk Update Kategori
public function kategori_update()
{
$this->form_validation->set_rules('kategori','Kategori','required');
if($this->form_validation->run() != false){
$id = $this->input->post('id');
$kategori = $this->input->post('kategori');
$where = array(
'kategori_id' => $id
);
$data = array(
'kategori_nama' => $kategori,
'kategori_slug' => strtolower(url_title($kategori))
);
$this->M_data->update_data($where, $data,'kategori');
redirect(base_url().'dashboard/kategori');
}else{
$id = $this->input->post('id');
$where = array(
'kategori_id' => $id
);
$data['kategori'] = $this->M_data->edit_data($where,'kategori')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_edit',$data);
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Hapus Kategori
public function kategori_hapus($id)
{
$where = array(
'kategori_id' => $id
);
$this->M_data->delete_data($where,'kategori');
redirect(base_url().'dashboard/kategori');
}
// END CRUD KATEGORI ARTIKEL
// CRUD KATEGORI PANDUAN
public function kategori_panduan()
{
$data['kategori_panduan'] = $this->M_data->get_data('kategori_panduan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_panduan', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_kategori_panduan()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_panduan');
$this->load->view('dashboard/v_footer');
}
public function kategori_panduan_aksi()
{
// Set validation rules for category input
$this->form_validation->set_rules('kategori_panduan', 'Kategori_panduan', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get category data from input
$kategori_panduan = $this->input->post('kategori_panduan', TRUE);
// Prepare data to be saved
$data = array(
'kategori_panduan_nama' => $kategori_panduan,
'kategori_panduan_slug' => strtolower(url_title($kategori_panduan))
);
// Save category data to the kategori table
$this->M_data->insert_data($data, 'kategori_panduan');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Kategori Panduan berhasil ditambahkan!');
// Redirect to the category page
redirect('dashboard/kategori_panduan');
} else {
// If validation fails, return to the add category page
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_panduan');
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Edit kategori_panduan
public function edit_kategori_panduan($id)
{
$where = array(
'kategori_panduan_id' => $id
);
// Prepare the data to be passed to the view
$data['kategori_panduan'] = $this->M_data->edit_data($where,'kategori_panduan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_panduan',$data);
$this->load->view('dashboard/v_footer');
}
// Function untuk Update kategori_panduan
public function update_kategori_panduan()
{
$this->form_validation->set_rules('kategori_panduan','kategori_panduan','required');
if($this->form_validation->run() != false){
$id = $this->input->post('id');
$kategori_panduan = $this->input->post('kategori_panduan');
$where = array(
'kategori_panduan_id' => $id
);
$data = array(
'kategori_panduan_nama' => $kategori_panduan,
'kategori_panduan_slug' => strtolower(url_title($kategori_panduan))
);
$this->M_data->update_data($where, $data,'kategori_panduan');
redirect(base_url().'dashboard/kategori_panduan');
}else{
$id = $this->input->post('id');
$where = array(
'kategori_panduan_id' => $id
);
$data['kategori_panduan'] = $this->M_data->edit_data($where,'kategori_panduan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_panduan',$data);
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Hapus Kategori
public function hapus_kategori_panduan($id)
{
$where = array(
'kategori_panduan_id' => $id
);
$this->M_data->delete_data($where,'kategori_panduan');
redirect(base_url().'dashboard/kategori_panduan');
}
// END CRUD KATEGORI PANDUAN
// CRUD KATEGORI LAYANAN
public function kategori_layanan()
{
$data['kategori_layanan'] = $this->M_data->get_data('kategori_layanan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_layanan', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_kategori_layanan()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_layanan');
$this->load->view('dashboard/v_footer');
}
public function kategori_layanan_aksi()
{
// Set validation rules for category input
$this->form_validation->set_rules('kategori_layanan', 'Kategori_layanan', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get category data from input
$kategori_layanan = $this->input->post('kategori_layanan', TRUE);
// Prepare data to be saved
$data = array(
'kategori_layanan_nama' => $kategori_layanan,
'kategori_layanan_slug' => strtolower(url_title($kategori_layanan))
);
// Save category data to the kategori table
$this->M_data->insert_data($data, 'kategori_layanan');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Kategori layanan berhasil ditambahkan!');
// Redirect to the category page
redirect('dashboard/kategori_layanan');
} else {
// If validation fails, return to the add category page
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_layanan');
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Edit kategori_layanan
public function edit_kategori_layanan($id)
{
$where = array(
'kategori_layanan_id' => $id
);
// Prepare the data to be passed to the view
$data['kategori_layanan'] = $this->M_data->edit_data($where,'kategori_layanan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_layanan',$data);
$this->load->view('dashboard/v_footer');
}
// Function untuk Update kategori_layanan
public function update_kategori_layanan()
{
$this->form_validation->set_rules('kategori_layanan','kategori_layanan','required');
if($this->form_validation->run() != false){
$id = $this->input->post('id');
$kategori_layanan = $this->input->post('kategori_layanan');
$where = array(
'kategori_layanan_id' => $id
);
$data = array(
'kategori_layanan_nama' => $kategori_layanan,
'kategori_layanan_slug' => strtolower(url_title($kategori_layanan))
);
$this->M_data->update_data($where, $data,'kategori_layanan');
redirect(base_url().'dashboard/kategori_layanan');
}else{
$id = $this->input->post('id');
$where = array(
'kategori_layanan_id' => $id
);
$data['kategori_layanan'] = $this->M_data->edit_data($where,'kategori_layanan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_layanan',$data);
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Hapus Kategori
public function hapus_kategori_layanan($id)
{
$where = array(
'kategori_layanan_id' => $id
);
$this->M_data->delete_data($where,'kategori_layanan');
redirect(base_url().'dashboard/kategori_layanan');
}
// END CRUD KATEGORI LAYANAN
// CRUD KATEGORI RFC2350
public function kategori_rfc2350()
{
$data['kategori_rfc2350'] = $this->M_data->get_data('kategori_rfc2350')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_rfc2350', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_kategori_rfc2350()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_rfc2350');
$this->load->view('dashboard/v_footer');
}
public function kategori_rfc2350_aksi()
{
// Set validation rules for category input
$this->form_validation->set_rules('kategori_rfc2350', 'Kategori_rfc2350', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get category data from input
$kategori_rfc2350 = $this->input->post('kategori_rfc2350', TRUE);
// Prepare data to be saved
$data = array(
'kategori_rfc2350_nama' => $kategori_rfc2350,
'kategori_rfc2350_slug' => strtolower(url_title($kategori_rfc2350))
);
// Save category data to the kategori table
$this->M_data->insert_data($data, 'kategori_rfc2350');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Kategori rfc2350 berhasil ditambahkan!');
// Redirect to the category page
redirect('dashboard/kategori_rfc2350');
} else {
// If validation fails, return to the add category page
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_rfc2350');
$this->load->view('dashboard/v_footer');
}
}
public function edit_kategori_rfc2350($id)
{
$where = array(
'kategori_rfc2350_id' => $id
);
// Prepare the data to be passed to the view
$data['kategori_rfc2350'] = $this->M_data->edit_data($where,'kategori_rfc2350')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_rfc2350',$data);
$this->load->view('dashboard/v_footer');
}
// Function untuk Update kategori_rfc2350
public function update_kategori_rfc2350()
{
$this->form_validation->set_rules('kategori_rfc2350','kategori_rfc2350','required');
if($this->form_validation->run() != false){
$id = $this->input->post('id');
$kategori_rfc2350 = $this->input->post('kategori_rfc2350');
$where = array(
'kategori_rfc2350_id' => $id
);
$data = array(
'kategori_rfc2350_nama' => $kategori_rfc2350,
'kategori_rfc2350_slug' => strtolower(url_title($kategori_rfc2350))
);
$this->M_data->update_data($where, $data,'kategori_rfc2350');
redirect(base_url().'dashboard/kategori_rfc2350');
}else{
$id = $this->input->post('id');
$where = array(
'kategori_rfc2350_id' => $id
);
$data['kategori_rfc2350'] = $this->M_data->edit_data($where,'kategori_rfc2350')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_rfc2350',$data);
$this->load->view('dashboard/v_footer');
}
}
public function hapus_kategori_rfc2350($id)
{
$where = array(
'kategori_rfc2350_id' => $id
);
$this->M_data->delete_data($where,'kategori_rfc2350 ');
redirect(base_url().'dashboard/kategori_rfc2350');
}
// END CRUD KATEGORI RFC2350
// CRUD KATEGORI PROFIL
public function kategori_profil()
{
$data['kategori_profil'] = $this->M_data->get_data('kategori_profil')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kategori_profil', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_kategori_profil()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_profil');
$this->load->view('dashboard/v_footer');
}
public function kategori_profil_aksi()
{
// Set validation rules for category input
$this->form_validation->set_rules('kategori_profil', 'Kategori_profil', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get category data from input
$kategori_profil = $this->input->post('kategori_profil', TRUE);
// Prepare data to be saved
$data = array(
'kategori_profil_nama' => $kategori_profil,
'kategori_profil_slug' => strtolower(url_title($kategori_profil))
);
// Save category data to the kategori table
$this->M_data->insert_data($data, 'kategori_profil');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Kategori profil berhasil ditambahkan!');
// Redirect to the category page
redirect('dashboard/kategori_profil');
} else {
// If validation fails, return to the add category page
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_kategori_profil');
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Edit kategori_profil
public function edit_kategori_profil($id)
{
$where = array(
'kategori_profil_id' => $id
);
// Prepare the data to be passed to the view
$data['kategori_profil'] = $this->M_data->edit_data($where,'kategori_profil')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_profil',$data);
$this->load->view('dashboard/v_footer');
}
// Function untuk Update kategori_profil
public function update_kategori_profil()
{
$this->form_validation->set_rules('kategori_profil','kategori_profil','required');
if($this->form_validation->run() != false){
$id = $this->input->post('id');
$kategori_profil = $this->input->post('kategori_profil');
$where = array(
'kategori_profil_id' => $id
);
$data = array(
'kategori_profil_nama' => $kategori_profil,
'kategori_profil_slug' => strtolower(url_title($kategori_profil))
);
$this->M_data->update_data($where, $data,'kategori_profil');
redirect(base_url().'dashboard/kategori_profil');
}else{
$id = $this->input->post('id');
$where = array(
'kategori_profil_id' => $id
);
$data['kategori_profil'] = $this->M_data->edit_data($where,'kategori_profil')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_kategori_profil',$data);
$this->load->view('dashboard/v_footer');
}
}
// Function untuk Hapus Kategori
public function hapus_kategori_profil($id)
{
$where = array(
'kategori_profil_id' => $id
);
$this->M_data->delete_data($where,'kategori_profil');
redirect(base_url().'dashboard/kategori_profil');
}
//END CRUD KATEGORI PROFIL
// CRUD ARTIKEL
public function artikel() {
$level = $this->session->userdata('level');
$satker_id = $this->session->userdata('satker_id');
// Ambil artikel berdasarkan level dan satker_id
$data['artikel'] = $this->Artikel_model->get_artikel_with_satker();
// Load views
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_artikel', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_artikel() {
$data['kategori'] = $this->M_data->get_data('kategori')->result();
if (empty($data['kategori'])) {
$this->session->set_flashdata('error', 'Tidak ada kategori ditemukan.');
redirect('dashboard/kategori'); // Ganti dengan URL yang sesuai
}
// Load tampilan tambah artikel
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_artikel', $data);
$this->load->view('dashboard/v_footer');
}
public function artikel_aksi() {
// Validasi jika ada error di upload gambar
$config['upload_path'] = './gambar/artikel/';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$this->load->library('upload', $config);
if ($this->upload->do_upload('sampul')) {
$gambar = $this->upload->data();
$data = array(
'artikel_tanggal' => date('Y-m-d H:i:s'),
'artikel_judul' => $this->input->post('judul'),
'artikel_slug' => strtolower(url_title($this->input->post('judul'))),
'artikel_konten' => $this->input->post('konten'),
'artikel_sampul' => $gambar['file_name'],
'artikel_kategori' => $this->input->post('kategori'),
'artikel_author' => $this->session->userdata('id'),
'satker_id' => $this->input->post('satker_id') // Ambil dari form yang sudah diset dengan session
);
// Masukkan data artikel ke dalam database
$this->M_data->insert_data($data, 'artikel');
redirect(base_url() . 'dashboard/artikel');
} else {
$this->session->set_flashdata('error', $this->upload->display_errors());
redirect(base_url() . 'dashboard/artikel_tambah');
}
}
// Fungsi untuk memuat form dengan kategori dan pesan kesalahan
private function load_form_with_errors()
{
$data['kategori'] = $this->M_data->get_data('kategori')->result();
$data['errors'] = validation_errors() ?: $this->session->flashdata('gambar_error');
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_artikel', $data);
$this->load->view('dashboard/v_footer');
}
public function artikel_hapus($id) {
$level = $this->session->userdata('level');
$satker_id = $this->session->userdata('satker_id');
$artikel = $this->db->get_where('artikel', ['artikel_id' => $id])->row();
if (!$artikel) {
redirect(base_url('dashboard/artikel'));
}
if ($level != 'admin' && $artikel->satker_id != $satker_id) {
show_error('Anda tidak berhak menghapus artikel ini.');
}
// Hapus gambar
@unlink('./gambar/artikel/' . $artikel->artikel_sampul);
// Hapus data artikel
$this->M_data->delete_data(['artikel_id' => $id], 'artikel');
redirect(base_url('dashboard/artikel'));
}
public function edit_artikel($id) {
$level = $this->session->userdata('level');
$satker_id = $this->session->userdata('satker_id');
// Ambil data artikel berdasarkan ID
$data['artikel'] = $this->M_data->edit_data(['artikel_id' => $id], 'artikel')->row();
// Jika artikel tidak ditemukan
if (!$data['artikel']) {
show_error('Artikel tidak ditemukan.');
}
// Cek hak akses berdasarkan level dan satker_id
if ($level != 'admin' && $data['artikel']->satker_id != $satker_id) {
show_error('Anda tidak berhak mengedit artikel ini.');
}
// Ambil data kategori
$data['kategori'] = $this->M_data->get_data('kategori')->result();
// Load tampilan edit artikel
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_artikel', $data);
$this->load->view('dashboard/v_footer');
}
public function artikel_update() {
$this->form_validation->set_rules('judul', 'Judul', 'required');
$this->form_validation->set_rules('konten', 'Konten', 'required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
$id = $this->input->post('id');
if ($this->form_validation->run() == TRUE) {
$judul = $this->input->post('judul');
$slug = strtolower(url_title($judul));
$konten = $this->input->post('konten');
$kategori = $this->input->post('kategori');
$status = $this->input->post('status');
$data = array(
'artikel_judul' => $judul,
'artikel_slug' => $slug,
'artikel_konten' => $konten,
'artikel_kategori' => $kategori,
'artikel_status' => $status,
);
$where = array('artikel_id' => $id);
$this->M_data->update_data($where, $data, 'artikel');
// Cek jika ada gambar yang di-upload
if (!empty($_FILES['sampul']['name'])) {
$config['upload_path'] = './gambar/artikel/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 4096; // Max size 4MB
$this->load->library('upload', $config);
if ($this->upload->do_upload('sampul')) {
$gambar = $this->upload->data();
$data_gambar = array('artikel_sampul' => $gambar['file_name']);
$this->M_data->update_data($where, $data_gambar, 'artikel');
} else {
$data['gambar_error'] = $this->upload->display_errors();
}
}
redirect(base_url('dashboard/artikel'));
} else {
// Tampilkan form kembali jika validasi gagal
$where = array('artikel_id' => $id);
$data['artikel'] = $this->M_data->edit_data($where, 'artikel')->result();
$data['kategori'] = $this->M_data->get_data('kategori')->result();
$data['gambar_error'] = isset($data['gambar_error']) ? $data['gambar_error'] : '';
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_artikel', $data);
$this->load->view('dashboard/v_footer');
}
}
// END CRUD ARTIKEL
// CRUD PROFILE
public function profile() {
$user_id = $this->session->userdata('id');
// Ambil data pengguna dan join nama satker
$this->db->select('pengguna.*, satker.nama_satker');
$this->db->from('pengguna');
$this->db->join('satker', 'satker.satker_id = pengguna.satker_id', 'left');
$this->db->where('pengguna.pengguna_id', $user_id);
$user = $this->db->get()->row();
$data['user'] = $user;
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_profile', $data);
$this->load->view('dashboard/v_footer');
}
public function profile_update() {
// Validasi form
$this->form_validation->set_rules('nama', 'Nama Lengkap', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() == FALSE) {
// Jika validasi gagal
$this->load->view('v_profile');
} else {
// Ambil data dari form
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$foto_lama = $this->input->post('foto_lama');
// Proses upload foto
if (!empty($_FILES['foto']['name'])) {
$config['upload_path'] = './gambar/pengguna/';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['max_size'] = 2048; // Maksimal ukuran file 2MB
$config['file_name'] = uniqid(); // Untuk memberikan nama unik pada file
$this->load->library('upload', $config);
if ($this->upload->do_upload('foto')) {
// Jika upload berhasil, ambil nama file
$upload_data = $this->upload->data();
$foto_baru = $upload_data['file_name'];
// Hapus foto lama jika ada
if (!empty($foto_lama)) {
unlink('./gambar/pengguna/' . $foto_lama); // Hapus foto lama
}
} else {
// Jika gagal upload
$foto_baru = $foto_lama; // Tetap pakai foto lama jika gagal upload
}
} else {
// Jika tidak ada file yang di-upload, tetap pakai foto lama
$foto_baru = $foto_lama;
}
// Update data pengguna
$data = [
'pengguna_nama' => $nama,
'pengguna_email' => $email,
'pengguna_sampul' => $foto_baru,
];
// Update data ke database
$this->db->where('pengguna_id', $this->session->userdata('id'));
$this->db->update('pengguna', $data);
// Set pesan sukses dan redirect
$this->session->set_flashdata('alert', 'Profil berhasil diperbarui');
redirect('dashboard/profile');
}
}
// CRUD PENGGUNA
public function pengguna()
{
// Ambil data pengguna beserta nama satker
$data['pengguna'] = $this->M_data->get_all_pengguna_with_satker(); // Memastikan kita menggunakan fungsi yang benar
// Muat view dengan data yang sudah tersedia
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna', $data); // Data sudah ada di sini
$this->load->view('dashboard/v_footer');
}
// Tambah Pengguna
public function pengguna_tambah()
{
// Mengambil data satker_id dan nama_satker dari tabel satker
$this->db->select('satker_id, nama_satker');
$this->db->from('satker');
$this->db->where('nama_satker IS NOT NULL');
$data['satkers'] = $this->db->get()->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna_tambah', $data); // kirim $satkers ke view
$this->load->view('dashboard/v_footer');
}
public function pengguna_aksi()
{
$this->load->library('form_validation');
// Aturan validasi
$this->form_validation->set_rules('nama', 'Nama Pengguna', 'trim|required');
$this->form_validation->set_rules('email', 'Email Pengguna', 'trim|required|valid_email|is_unique[pengguna.pengguna_email]');
$this->form_validation->set_rules('username', 'Username Pengguna', 'trim|required|is_unique[pengguna.pengguna_username]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[6]');
$this->form_validation->set_rules('level', 'Level', 'required');
$this->form_validation->set_rules('status', 'Status', 'required');
// Validasi tambahan jika level = satker
if ($this->input->post('level') == 'satker') {
$this->form_validation->set_rules('satker_id', 'Nama Satker', 'required');
}
if ($this->form_validation->run() == FALSE) {
// Ambil data satker untuk dropdown jika validasi gagal
$data['satkers'] = $this->M_data->get_satkers(); // ambil data dari model
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna_tambah', $data);
$this->load->view('dashboard/v_footer');
} else {
// Simpan data pengguna
$data = array(
'pengguna_nama' => $this->input->post('nama'),
'pengguna_email' => $this->input->post('email'),
'pengguna_username' => $this->input->post('username'),
'pengguna_password' => md5($this->input->post('password')),
'pengguna_level' => $this->input->post('level'),
'pengguna_status' => $this->input->post('status'),
'satker_id' => ($this->input->post('level') == 'satker') ? $this->input->post('satker_id') : null
);
// Upload gambar jika ada
if (!empty($_FILES['sampul']['name'])) {
$config['upload_path'] = './gambar/pengguna/';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['max_size'] = 2048;
$this->load->library('upload', $config);
if ($this->upload->do_upload('sampul')) {
$upload_data = $this->upload->data();
$data['pengguna_sampul'] = $upload_data['file_name'];
} else {
// Jika gagal upload, bisa ditambahkan flash error jika ingin
$data['gambar_error'] = $this->upload->display_errors();
}
}
// Simpan ke database
$this->M_data->insert_data($data, 'pengguna');
$this->session->set_flashdata('success', 'Pengguna berhasil ditambahkan.');
redirect('dashboard/pengguna');
}
}
public function pengguna_edit($id)
{
$where = array(
'pengguna_id' => $id
);
$data['pengguna'] = $this->M_data->edit_data($where,'pengguna')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna_edit',$data);
$this->load->view('dashboard/v_footer');
}
public function pengguna_update()
{
// Aturan validasi
$this->form_validation->set_rules('nama', 'Nama Pengguna', 'required');
$this->form_validation->set_rules('email', 'Email Pengguna', 'required|valid_email');
$this->form_validation->set_rules('username', 'Username Pengguna', 'required');
$this->form_validation->set_rules('level', 'Level Pengguna', 'required');
$this->form_validation->set_rules('status', 'Status Pengguna', 'required');
if ($this->form_validation->run() == TRUE) {
// Ambil data dari input
$id = $this->input->post('id');
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$username = $this->input->post('username');
$level = $this->input->post('level');
$status = $this->input->post('status');
// Siapkan data untuk diupdate
$data = array(
'pengguna_nama' => $nama,
'pengguna_email' => $email,
'pengguna_username' => $username,
'pengguna_level' => $level,
'pengguna_status' => $status
);
// Cek apakah password diisi
$password = $this->input->post('password');
if (!empty($password)) {
$data['pengguna_password'] = md5($password); // Hash password jika diisi
}
// Update data pengguna
$where = array('pengguna_id' => $id);
$this->M_data->update_data($where, $data, 'pengguna');
// Set flashdata untuk pesan sukses
$this->session->set_flashdata('success', 'Pengguna berhasil diperbarui.');
// Redirect setelah berhasil
redirect('dashboard/pengguna');
} else {
// Jika validasi gagal, ambil data pengguna untuk ditampilkan kembali
$id = $this->input->post('id');
$where = array('pengguna_id' => $id);
$data['pengguna'] = $this->M_data->edit_data($where, 'pengguna')->result();
// Load view
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna_edit', $data);
$this->load->view('dashboard/v_footer');
}
}
public function pengguna_hapus($id)
{
// Pastikan ID pengguna valid
if (!is_numeric($id)) {
redirect(site_url('dashboard/pengguna'));
}
// Ambil data pengguna yang akan dihapus
$where = array('pengguna_id' => $id);
$data['pengguna_hapus'] = $this->M_data->edit_data($where, 'pengguna')->row();
// Jika pengguna tidak ditemukan, kembalikan ke daftar pengguna
if (!$data['pengguna_hapus']) {
redirect(site_url('dashboard/pengguna'));
}
// Ambil daftar pengguna lain yang tidak termasuk pengguna yang akan dihapus
$data['pengguna_lain'] = $this->db->where('pengguna_id !=', $id)->get('pengguna')->result();
// Load tampilan konfirmasi hapus pengguna
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengguna_hapus', $data);
$this->load->view('dashboard/v_footer');
}
public function pengguna_hapus_aksi()
{
// Ambil data dari form
$pengguna_hapus = $this->input->post('pengguna_hapus');
$pengguna_tujuan = $this->input->post('pengguna_tujuan');
// Validasi input untuk mencegah ID kosong atau tidak valid
if (!is_numeric($pengguna_hapus) || !is_numeric($pengguna_tujuan)) {
redirect(site_url('dashboard/pengguna'));
}
// Ambil data pengguna yang akan dihapus untuk mendapatkan nama file gambar
$where = array('pengguna_id' => $pengguna_hapus);
$pengguna = $this->M_data->edit_data($where, 'pengguna')->row();
// Pastikan pengguna ditemukan
if ($pengguna) {
// Hapus pengguna dari database
$this->M_data->delete_data($where, 'pengguna');
// Hapus gambar pengguna dari direktori
$gambar_path = './gambar/pengguna/' . $pengguna->pengguna_sampul; // Sesuaikan dengan nama kolom gambar di database
if (file_exists($gambar_path)) {
if (!unlink($gambar_path)) {
// Log error atau set flashdata untuk kesalahan
log_message('error', 'Gagal menghapus gambar: ' . $gambar_path);
}
}
// Pindahkan semua artikel pengguna yang dihapus ke pengguna yang dipilih
$this->db->where('artikel_author', $pengguna_hapus);
$this->db->update('artikel', array('artikel_author' => $pengguna_tujuan));
// Set flashdata untuk pesan sukses
$this->session->set_flashdata('success', 'Pengguna berhasil dihapus.');
}
// Redirect kembali ke daftar pengguna
redirect(site_url('dashboard/pengguna'));
}
// END CRUD PENGGUNA
// CRUD PANDUAN
public function panduan() {
$data['panduan'] = $this->db->query("SELECT * FROM panduan, kategori_panduan, pengguna WHERE panduan_kategori = kategori_panduan_id AND panduan_author = pengguna_id ORDER BY panduan_id DESC")->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_panduan', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_panduan() {
$data['kategori_panduan'] = $this->M_data->get_data('kategori_panduan')->result();
if (empty($data['kategori_panduan'])) {
$this->session->set_flashdata('error', 'Tidak ada kategori ditemukan.');
redirect('dashboard/kategori_panduan');
}
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_panduan', $data);
$this->load->view('dashboard/v_footer');
}
public function panduan_aksi() {
$this->form_validation->set_rules('nama', 'Nama', 'trim|required|is_unique[panduan.panduan_nama]');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
// Memastikan Dokumen diisi
if (empty($_FILES['dokumen_baru']['name'])) {
$this->form_validation->set_rules('dokumen_baru', 'Dokumen Baru Panduan', 'required');
}
// Jika validasi berhasil
if ($this->form_validation->run() == TRUE) {
$config['upload_path'] = './dokumen/panduan/';
$config['allowed_types'] = 'pdf|doc|pptx|docx|ppt|xls|xlsx|txt|rtf';
$config['max_size'] = 51200; // Maksimal ukuran file dalam KB
$this->load->library('upload', $config);
// Proses upload dokumen
if ($this->upload->do_upload('dokumen_baru')) {
// Mengambil data tentang dokumen
$dokumen_ok = $this->upload->data();
// Mengambil data dari form
$data = array(
'panduan_tanggal' => date('Y-m-d H:i:s'),
'panduan_nama' => $this->input->post('nama'),
'panduan_doc' => $dokumen_ok['file_name'],
'panduan_author' => $this->session->userdata('id'),
'panduan_kategori' => $this->input->post('kategori'),
'panduan_status' => $this->input->post('masuk_bro'), // Menangani masuk_bro dari tombol submit
);
// Menyimpan data panduan ke database
if ($this->M_data->insert_data($data, 'panduan')) {
// Menambahkan flash data untuk pesan sukses
$this->session->set_flashdata('success', 'Panduan berhasil ditambahkan.');
// Redirect ke halaman panduan setelah sukses
redirect('dashboard/panduan');
} else {
// Menyimpan pesan kesalahan jika insert gagal
$this->session->set_flashdata('error', 'Gagal menyimpan data panduan.');
$this->load_form_with_errors();
}
} else {
// Menyimpan pesan kesalahan upload dokumen
$this->session->set_flashdata('dokumen_ok_error', $this->upload->display_errors());
$this->load_form_with_errors();
}
} else {
// Jika validasi gagal, tampilkan form dengan pesan kesalahan
$this->load_form_with_errors();
}
}
public function edit_panduan($id)
{
$where = array('panduan_id' => $id);
$data['panduan'] = $this->M_data->edit_data($where,'panduan')->result();
$data['kategori_panduan'] = $this->M_data->get_data('kategori_panduan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_panduan',$data);
$this->load->view('dashboard/v_footer');
}
public function panduan_update() {
$id = $this->input->post('id');
// Pastikan ID valid
if (empty($id)) {
show_error('ID tidak ditemukan', 404);
}
// Validasi form
$this->form_validation->set_rules('nama', 'Nama', 'trim|required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
if ($this->form_validation->run() == TRUE) {
$where = array('panduan_id' => $id);
$judul = $this->input->post('judul');
$kategori = $this->input->post('kategori');
$status = $this->input->post('status');
// Data update
$data = array(
'panduan_nama' => $this->input->post('nama'),
'panduan_kategori' => $this->input->post('kategori'),
'panduan_status' => $this->input->post('masuk_bro'), // Draft atau Publish
'panduan_tanggal' => date('Y-m-d H:i:s')
);
// Cek apakah ada dokumen baru yang diunggah
if (!empty($_FILES['dokumen_baru']['name'])) {
$config['upload_path'] = './dokumen/panduan/';
$config['allowed_types'] = 'pdf|doc|pptx|docx|ppt|xls|xlsx|txt|rtf';
$config['max_size'] = 51200; // Maksimal 50MB
$this->load->library('upload', $config);
if ($this->upload->do_upload('dokumen_baru')) {
// Hapus dokumen lama jika ada
if (!empty($panduan->panduan_doc) && file_exists('./dokumen/panduan/' . $panduan->panduan_doc)) {
unlink('./dokumen/panduan/' . $panduan->panduan_doc);
}
// Simpan dokumen baru
$uploadData = $this->upload->data();
$data['panduan_doc'] = $uploadData['file_name'];
} else {
$this->session->set_flashdata('dokumen_error', $this->upload->display_errors());
redirect('dashboard/edit_panduan/' . $id);
}
}
// Update data panduan di database
$this->M_data->update_data($where, $data, 'panduan');
// Set flash message & redirect
$this->session->set_flashdata('success', 'Panduan berhasil diperbarui.');
redirect('dashboard/panduan');
} else {
// Jika validasi gagal, tampilkan form edit lagi
$this->edit_panduan($id);
}
}
public function panduan_hapus($id)
{
// Validasi ID panduan
if (empty($id) || !is_numeric($id)) {
$this->session->set_flashdata('error', 'ID panduan tidak valid.');
redirect('dashboard/panduan');
return;
}
// Mencari panduan berdasarkan ID
$where = array('panduan_id' => $id);
$panduan = $this->M_data->get_data('panduan', $where)->row();
// Cek apakah panduan ada
if (!$panduan) {
$this->session->set_flashdata('error', 'panduan tidak ditemukan.');
redirect('dashboard/panduan');
return;
}
// Hapus dokumen dari folder jika ada
$dokumen_path = './dokumen/panduan/' . $panduan->panduan_doc;
if (!empty($panduan->panduan_doc) && file_exists($dokumen_path)) {
unlink($dokumen_path); // Menghapus file dokumen
}
// Hapus panduan dari database
$this->M_data->delete_data($where, 'panduan');
// Set pesan sukses
$this->session->set_flashdata('success', 'panduan berhasil dihapus.');
redirect('dashboard/panduan');
}
// END CRUD PANDUAN
// CRUD LAYANAN
public function layanan()
{
$data['layanan'] = $this->db->query("SELECT * FROM layanan,kategori_layanan,pengguna WHERE layanan_kategori=kategori_layanan_id and layanan_author=pengguna_id order by layanan_id desc")->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_layanan',$data);
$this->load->view('dashboard/v_footer');
}
public function tambah_layanan() {
$data['kategori_layanan'] = $this->M_data->get_data('kategori_layanan')->result();
if (empty($data['kategori_layanan'])) {
$this->session->set_flashdata('error', 'Tidak ada kategori ditemukan.');
redirect('dashboard/kategori_layanan');
return;
}
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_layanan', $data);
$this->load->view('dashboard/v_footer');
}
public function layanan_aksi() {
$this->form_validation->set_rules('judul', 'Judul', 'required|is_unique[layanan.layanan_judul]');
$this->form_validation->set_rules('konten', 'Deskripsi', 'required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
if (empty($_FILES['layanan_sampul']['name'])) {
$this->form_validation->set_rules('sampul', 'Gambar Sampul', 'required');
}
if ($this->form_validation->run() == FALSE) {
$this->tambah_layanan();
return;
}
$upload_path = './gambar/layanan/';
if (!is_dir($upload_path) || !is_writable($upload_path)) {
$this->session->set_flashdata('error', 'Folder upload tidak bisa ditulis. Periksa izin folder.');
redirect('dashboard/tambah_layanan');
return;
}
$config['upload_path'] = $upload_path;
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 4096;
$config['encrypt_name'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('layanan_sampul')) {
$this->session->set_flashdata('image_error', $this->upload->display_errors());
$this->tambah_layanan();
return;
}
$gambar = $this->upload->data();
$data = array(
'layanan_tanggal' => date('Y-m-d H:i:s'),
'layanan_judul' => $this->input->post('judul', TRUE),
'layanan_slug' => url_title($this->input->post('judul'), 'dash', TRUE),
'layanan_konten' => $this->input->post('konten', TRUE),
'layanan_sampul' => $gambar['file_name'],
'layanan_author' => $this->session->userdata('id'),
'layanan_kategori' => $this->input->post('kategori', TRUE),
'layanan_status' => $this->input->post('status', TRUE),
);
if ($this->M_data->insert_data($data, 'layanan')) {
$this->session->set_flashdata('success', 'Layanan berhasil ditambahkan.');
redirect('dashboard/layanan');
} else {
$this->session->set_flashdata('error', 'Gagal menyimpan layanan.');
redirect('dashboard/tambah_layanan');
}
}
public function edit_layanan($id)
{
$where = array('layanan_id' => $id);
$data['layanan'] = $this->M_data->edit_data($where, 'layanan')->result();
$data['kategori_layanan'] = $this->M_data->get_data('kategori_layanan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_layanan', $data);
$this->load->view('dashboard/v_footer');
}
public function layanan_update()
{
// Validasi input
$this->form_validation->set_rules('judul', 'Judul', 'required');
$this->form_validation->set_rules('konten', 'Deskripsi', 'required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
$id = $this->input->post('id');
if ($this->form_validation->run() == TRUE) {
// Ambil data dari form
$judul = $this->input->post('judul', TRUE);
$slug = url_title($judul, 'dash', TRUE);
$konten = $this->input->post('konten', TRUE);
$kategori = $this->input->post('kategori', TRUE);
$status = $this->input->post('status', TRUE);
// Data untuk update
$data = array(
'layanan_judul' => $judul,
'layanan_slug' => $slug,
'layanan_konten' => $konten,
'layanan_kategori' => $kategori,
'layanan_status' => $status,
);
// Update data layanan
$where = array('layanan_id' => $id);
$this->M_data->update_data($where, $data, 'layanan');
// Cek apakah ada file gambar yang diupload
if (!empty($_FILES['layanan_sampul']['name'])) {
// Konfigurasi upload
$config['upload_path'] = './gambar/layanan/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 4096;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ($this->upload->do_upload('layanan_sampul')) {
// Ambil data tentang gambar
$gambar = $this->upload->data();
$data_gambar = array('layanan_sampul' => $gambar['file_name']);
// Update gambar sampul
$this->M_data->update_data($where, $data_gambar, 'layanan');
} else {
// Set pesan kesalahan jika upload gagal
$this->session->set_flashdata('image_error', $this->upload->display_errors());
}
}
// Redirect ke halaman layanan setelah berhasil
$this->session->set_flashdata('success', 'Layanan berhasil diperbarui.');
redirect('dashboard/layanan');
} else {
// Jika validasi gagal, ambil data layanan dan kategori untuk ditampilkan kembali
$where = array('layanan_id' => $id);
$data['layanan'] = $this->M_data->edit_data($where, 'layanan')->result();
$data['kategori'] = $this->M_data->get_data('kategori')->result();
// Tampilkan kembali form edit layanan
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_layanan', $data);
$this->load->view('dashboard/v_footer');
}
}
public function layanan_hapus($id)
{
// Validasi ID layanan
if (empty($id) || !is_numeric($id)) {
$this->session->set_flashdata('error', 'ID layanan tidak valid.');
redirect('dashboard/layanan');
return;
}
// Mencari layanan berdasarkan ID
$where = array('layanan_id' => $id);
$layanan = $this->M_data->get_data('layanan', $where)->row();
// Cek apakah layanan ada
if (!$layanan) {
$this->session->set_flashdata('error', 'Layanan tidak ditemukan.');
redirect('dashboard/layanan');
return;
}
// Hapus gambar dari folder jika ada
$gambar_path = './gambar/layanan/' . $layanan->layanan_sampul;
if (!empty($layanan->layanan_sampul) && file_exists($gambar_path)) {
unlink($gambar_path); // Menghapus file gambar
}
// Hapus layanan dari database
$this->M_data->delete_data($where, 'layanan');
// Set pesan sukses
$this->session->set_flashdata('success', 'Layanan berhasil dihapus.');
redirect('dashboard/layanan');
}
// END CRUD LAYANAN
// CRUD RFC 2350
public function rfc2350()
{
$data['rfc2350'] = $this->db->query("SELECT * FROM rfc2350, kategori_rfc2350, pengguna WHERE rfc2350_kategori=kategori_rfc2350_id and rfc2350_author=pengguna_id order by rfc2350_id desc")->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_rfc2350', $data);
$this->load->view('dashboard/v_footer');
}
public function tambah_rfc2350() {
$data['kategori_rfc2350'] = $this->M_data->get_data('kategori_rfc2350')->result();
if (empty($data['kategori_rfc2350'])) {
$this->session->set_flashdata('error', 'Tidak ada kategori ditemukan.');
redirect('dashboard/kategori_rfc2350');
return;
}
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_rfc2350', $data);
$this->load->view('dashboard/v_footer');
}
public function rfc2350_aksi() {
$this->form_validation->set_rules('judul', 'Judul', 'trim|required|is_unique[rfc2350.rfc2350_nama]');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
if (empty($_FILES['dokumen_rfc']['name'])) {
$this->form_validation->set_rules('dokumen_rfc', 'Dokumen', 'required');
}
if ($this->form_validation->run() == TRUE) {
$config['upload_path'] = './dokumen/rfc2350/';
$config['allowed_types'] = 'pdf|doc|docx|ppt|pptx|xls|xlsx|txt|rtf';
$config['max_size'] = 51200; // 50MB
$config['encrypt_name'] = FALSE; // Gunakan nama asli file
$this->load->library('upload', $config);
if ($this->upload->do_upload('dokumen_rfc')) {
$rfc_dokumen = $this->upload->data();
$data = array(
'rfc2350_tanggal' => date('Y-m-d H:i:s'),
'rfc2350_nama' => $this->input->post('judul', TRUE),
'rfc2350_doc' => $rfc_dokumen['file_name'],
'rfc2350_author' => $this->session->userdata('id'),
'rfc2350_kategori' => $this->input->post('kategori', TRUE),
'rfc2350_status' => $this->input->post('status', TRUE),
);
if ($this->M_data->insert_data($data, 'rfc2350')) {
$this->session->set_flashdata('success', 'RFC2350 berhasil ditambahkan.');
redirect('dashboard/rfc2350');
} else {
$this->session->set_flashdata('error', 'Gagal menyimpan data RFC2350.');
$this->load_form_with_errors();
}
} else {
$this->session->set_flashdata('rfc_dokumen_error', $this->upload->display_errors());
$this->load_form_with_errors();
}
} else {
$this->load_form_with_errors();
}
}
public function edit_rfc2350($id)
{
$where = array('rfc2350_id' => $id);
$data['rfc2350'] = $this->M_data->edit_data($where,'rfc2350')->result();
$data['kategori_rfc2350'] = $this->M_data->get_data('kategori_rfc2350')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_rfc2350',$data);
$this->load->view('dashboard/v_footer');
}
public function rfc2350_update() {
$id = $this->input->post('id');
// Pastikan ID valid
if (empty($id)) {
show_error('ID tidak ditemukan', 404);
}
// Validasi form
$this->form_validation->set_rules('nama', 'Nama', 'trim|required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
if ($this->form_validation->run() == TRUE) {
$where = array('rfc2350_id' => $id);
$judul = $this->input->post('judul');
$kategori = $this->input->post('kategori');
$status = $this->input->post('status');
// Data update
$data = array(
'rfc2350_nama' => $this->input->post('nama'),
'rfc2350_kategori' => $this->input->post('kategori'),
'rfc2350_status' => $this->input->post('masuk_bro'), // Draft atau Publish
'rfc2350_tanggal' => date('Y-m-d H:i:s')
);
// Cek apakah ada dokumen baru yang diunggah
if (!empty($_FILES['dokumen_rfc']['name'])) {
$config['upload_path'] = './dokumen/rfc2350/';
$config['allowed_types'] = 'pdf|doc|pptx|docx|ppt|xls|xlsx|txt|rtf';
$config['max_size'] = 51200; // Maksimal 50MB
$this->load->library('upload', $config);
if ($this->upload->do_upload('dokumen_rfc')) {
// Hapus dokumen lama jika ada
if (!empty($rfc2350->rfc2350_doc) && file_exists('./dokumen/rfc2350/' . $rfc2350->rfc2350_doc)) {
unlink('./dokumen/rfc2350/' . $rfc2350->rfc2350_doc);
}
// Simpan dokumen baru
$uploadData = $this->upload->data();
$data['rfc2350_doc'] = $uploadData['file_name'];
} else {
$this->session->set_flashdata('dokumen_error', $this->upload->display_errors());
redirect('dashboard/edit_rfc2350/' . $id);
}
}
// Update data rfc2350 di database
$this->M_data->update_data($where, $data, 'rfc2350');
// Set flash message & redirect
$this->session->set_flashdata('success', 'rfc2350 berhasil diperbarui.');
redirect('dashboard/rfc2350');
} else {
// Jika validasi gagal, tampilkan form edit lagi
$this->edit_rfc2350($id);
}
}
public function rfc2350_hapus($id)
{
if (empty($id) || !is_numeric($id)) {
$this->session->set_flashdata('error', 'ID RFC2350 tidak valid.');
redirect('dashboard/rfc2350');
return;
}
$where = array('rfc2350_id' => $id);
$rfc2350 = $this->M_data->get_data('rfc2350', $where)->row();
if (!$rfc2350) {
$this->session->set_flashdata('error', 'RFC2350 tidak ditemukan.');
redirect('dashboard/rfc2350');
return;
}
// Pastikan file dokumen ada sebelum menghapus
if (!empty($rfc2350->rfc2350_doc)) {
$dokumen_path = './dokumen/rfc2350/' . $rfc2350->rfc2350_doc;
if (file_exists($dokumen_path)) {
unlink($dokumen_path); // Hapus file
}
}
// Hapus data dari database setelah file dihapus
$this->M_data->delete_data($where, 'rfc2350');
$this->session->set_flashdata('success', 'RFC2350 berhasil dihapus.');
redirect('dashboard/rfc2350');
}
// END CRUD RFC2350
// CRUD PROFIL
public function profil()
{
$data['profil'] = $this->db->query("SELECT * FROM profil,kategori_profil,pengguna WHERE profil_kategori=kategori_profil_id and profil_author=pengguna_id order by profil_id desc")->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_profil',$data);
$this->load->view('dashboard/v_footer');
}
public function tambah_profil() {
$data['kategori_profil'] = $this->M_data->get_data('kategori_profil')->result();
if (empty($data['kategori_profil'])) {
$this->session->set_flashdata('error', 'Tidak ada kategori ditemukan.');
redirect('dashboard/kategori_profil');
return;
}
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_profil', $data);
$this->load->view('dashboard/v_footer');
}
public function profil_aksi() {
$this->form_validation->set_rules('judul', 'Judul', 'required|is_unique[profil.profil_judul]');
$this->form_validation->set_rules('konten', 'Deskripsi', 'required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
if (empty($_FILES['sampul']['name'])) {
$this->form_validation->set_rules('sampul', 'Gambar Sampul', 'required');
}
if ($this->form_validation->run() == FALSE) {
$this->tambah_profil();
return;
}
$upload_path = './gambar/profil/';
if (!is_dir($upload_path) || !is_writable($upload_path)) {
$this->session->set_flashdata('error', 'Folder upload tidak bisa ditulis. Periksa izin folder.');
redirect('dashboard/tambah_profil');
return;
}
$config['upload_path'] = $upload_path;
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 4096;
$config['encrypt_name'] = FALSE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('sampul')) {
$this->session->set_flashdata('gambar_error', $this->upload->display_errors());
$this->tambah_profil();
return;
}
$gambar = $this->upload->data();
$data = array(
'profil_tanggal' => date('Y-m-d H:i:s'),
'profil_judul' => $this->input->post('judul', TRUE),
'profil_slug' => url_title($this->input->post('judul'), 'dash', TRUE),
'profil_konten' => $this->input->post('konten', TRUE),
'profil_sampul' => $gambar['file_name'],
'profil_author' => $this->session->userdata('id'),
'profil_kategori' => $this->input->post('kategori', TRUE),
'profil_status' => $this->input->post('status', TRUE),
);
if ($this->M_data->insert_data($data, 'profil')) {
$this->session->set_flashdata('success', 'profil berhasil ditambahkan.');
redirect('dashboard/profil');
} else {
$this->session->set_flashdata('error', 'Gagal menyimpan profil.');
redirect('dashboard/tambah_profil');
}
}
public function edit_profil($id)
{
$where = array('profil_id' => $id);
$data['profil'] = $this->M_data->edit_data($where, 'profil')->result();
$data['kategori_profil'] = $this->M_data->get_data('kategori_profil')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_profil', $data);
$this->load->view('dashboard/v_footer');
}
public function profil_update()
{
// Validasi input
$this->form_validation->set_rules('judul', 'Judul', 'required');
$this->form_validation->set_rules('konten', 'Deskripsi', 'required');
$this->form_validation->set_rules('kategori', 'Kategori', 'required');
$id = $this->input->post('id');
if ($this->form_validation->run() == TRUE) {
// Ambil data dari form
$judul = $this->input->post('judul', TRUE);
$slug = url_title($judul, 'dash', TRUE);
$konten = $this->input->post('konten', TRUE);
$kategori = $this->input->post('kategori', TRUE);
$status = $this->input->post('status', TRUE);
// Data untuk update
$data = array(
'profil_judul' => $judul,
'profil_slug' => $slug,
'profil_konten' => $konten,
'profil_kategori' => $kategori,
'profil_status' => $status,
);
// Update data profil
$where = array('profil_id' => $id);
$this->M_data->update_data($where, $data, 'profil');
// Cek apakah ada file gambar yang diupload
if (!empty($_FILES['sampul']['name'])) {
// Konfigurasi upload
$config['upload_path'] = './gambar/profil/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 4096;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ($this->upload->do_upload('sampul')) {
// Ambil data tentang gambar
$gambar = $this->upload->data();
$data_gambar = array('profil_sampul' => $gambar['file_name']);
// Update gambar sampul
$this->M_data->update_data($where, $data_gambar, 'profil');
} else {
// Set pesan kesalahan jika upload gagal
$this->session->set_flashdata('gambar_error', $this->upload->display_errors());
}
}
// Redirect ke halaman profil setelah berhasil
$this->session->set_flashdata('success', 'profil berhasil diperbarui.');
redirect('dashboard/profil');
} else {
// Jika validasi gagal, ambil data profil dan kategori untuk ditampilkan kembali
$where = array('profil_id' => $id);
$data['profil'] = $this->M_data->edit_data($where, 'profil')->result();
$data['kategori'] = $this->M_data->get_data('kategori')->result();
// Tampilkan kembali form edit profil
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_profil', $data);
$this->load->view('dashboard/v_footer');
}
}
public function profil_hapus($id)
{
// Validasi ID profil
if (empty($id) || !is_numeric($id)) {
$this->session->set_flashdata('error', 'ID profil tidak valid.');
redirect('dashboard/profil');
return;
}
// Mencari profil berdasarkan ID
$where = array('profil_id' => $id);
$profil = $this->M_data->get_data('profil', $where)->row();
// Cek apakah profil ada
if (!$profil) {
$this->session->set_flashdata('error', 'profil tidak ditemukan.');
redirect('dashboard/profil');
return;
}
// Hapus gambar dari folder jika ada
$gambar_path = './gambar/profil/' . $profil->profil_sampul;
if (!empty($profil->profil_sampul) && file_exists($gambar_path)) {
unlink($gambar_path); // Menghapus file gambar
}
// Hapus profil dari database
$this->M_data->delete_data($where, 'profil');
// Set pesan sukses
$this->session->set_flashdata('success', 'Profil berhasil dihapus.');
redirect('dashboard/profil');
}
// END CRUD PROFIL
// CRUD HALAMAN
public function halaman()
{
$data['halaman'] = $this->M_data->get_data('halaman')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_halaman', $data);
$this->load->view('dashboard/v_footer');
}
// Function to display the add page form
public function tambah_halaman()
{
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_halaman');
$this->load->view('dashboard/v_footer');
}
// Function to handle the page submission
public function halaman_aksi()
{
// Set validation rules for page input
$this->form_validation->set_rules('judul', 'Judul', 'required|trim|htmlspecialchars|is_unique[halaman.halaman_judul]');
$this->form_validation->set_rules('konten', 'Konten', 'required|trim|htmlspecialchars');
// Check if validation is successful
if ($this->form_validation->run() == TRUE) {
// Get page data from input
$judul = $this->input->post('judul', TRUE);
$konten = $this->input->post('konten', TRUE);
$slug = strtolower(url_title($judul));
// Prepare data to be saved
$data = array(
'halaman_judul' => $judul,
'halaman_slug' => $slug,
'halaman_konten' => $konten
);
// Save page data to the halaman table
$this->M_data->insert_data($data, 'halaman');
// Set flashdata for success notification
$this->session->set_flashdata('alert', 'Halaman berhasil ditambahkan!');
// Redirect to the page list
redirect('dashboard/halaman');
} else {
// If validation fails, return to the add page form
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_tambah_halaman');
$this->load->view('dashboard/v_footer');
}
}
public function halaman_edit($id)
{
$where = array('halaman_id' => $id);
$data['halaman'] = $this->M_data->edit_data($where, 'halaman')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_halaman', $data);
$this->load->view('dashboard/v_footer');
}
public function halaman_update()
{
// Validasi input wajib diisi
$this->form_validation->set_rules('judul', 'Judul', 'required|trim|htmlspecialchars');
$this->form_validation->set_rules('konten', 'Konten', 'required|trim|htmlspecialchars');
if ($this->form_validation->run() == TRUE) {
$id = $this->input->post('id', TRUE);
$judul = $this->input->post('judul', TRUE);
$slug = strtolower(url_title($judul));
$konten = $this->input->post('konten', TRUE);
$where = array(
'halaman_id' => $id
);
$data = array(
'halaman_judul' => $judul,
'halaman_slug' => $slug,
'halaman_konten' => $konten
);
// Update data halaman
$this->M_data->update_data($where, $data, 'halaman');
// Set flashdata untuk notifikasi sukses
$this->session->set_flashdata('alert', 'Halaman berhasil diperbarui!');
// Redirect kembali ke halaman daftar halaman
redirect('dashboard/halaman');
} else {
// Jika validasi gagal, kembali ke halaman edit
$id = $this->input->post('id', TRUE);
$where = array('halaman_id' => $id);
$data['halaman'] = $this->M_data->edit_data($where, 'halaman')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_edit_halaman', $data);
$this->load->view('dashboard/v_footer');
}
}
public function halaman_hapus($id)
{
$where = array('halaman_id' => $id);
$this->M_data->delete_data($where,'halaman');
redirect(base_url().'dashboard/halaman');
}
// CRUD HALAMAN
// CRUD PENGATURAN
public function pengaturan()
{
$data['pengaturan'] = $this->M_data->get_data('pengaturan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengaturan',$data);
$this->load->view('dashboard/v_footer');
}
public function pengaturan_update()
{
// Wajib isi nama dan deskripsi website
$this->form_validation->set_rules('nama', 'Nama Website', 'required');
$this->form_validation->set_rules('deskripsi', 'Deskripsi Website', 'required');
if ($this->form_validation->run() != false) {
$nama = $this->input->post('nama');
$deskripsi = $this->input->post('deskripsi');
$link_facebook = $this->input->post('link_facebook');
$link_twitter = $this->input->post('link_twitter');
$link_instagram = $this->input->post('link_instagram');
$link_github = $this->input->post('link_github');
$data = array(
'nama' => $nama,
'deskripsi' => $deskripsi,
'link_facebook' => $link_facebook,
'link_twitter' => $link_twitter,
'link_instagram' => $link_instagram,
'link_github' => $link_github
);
// Update pengaturan
$this->M_data->update_data([], $data, 'pengaturan');
// Pastikan folder upload tersedia dan writable
$upload_folder = './gambar/pengaturan/';
if (!is_dir($upload_folder)) {
mkdir($upload_folder, 0777, true);
}
chmod($upload_folder, 0777);
// Periksa apakah ada gambar logo yang diupload
if (!empty($_FILES['logo']['name'])) {
$config['upload_path'] = $upload_folder;
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['max_size'] = 2048; // 2MB
$config['file_name'] = time() . '_' . $_FILES['logo']['name']; // Buat nama unik
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
if ($this->upload->do_upload('logo')) {
// Mengambil data tentang gambar logo yang diupload
$upload_data = $this->upload->data();
$logo = $upload_data['file_name'];
// Simpan nama file ke database
$this->db->update('pengaturan', ['logo' => $logo]);
} else {
// Jika upload gagal, tampilkan error
echo "Upload gagal: " . $this->upload->display_errors();
exit;
}
}
redirect(base_url() . 'dashboard/pengaturan/?alert=sukses');
} else {
$data['pengaturan'] = $this->M_data->get_data('pengaturan')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_pengaturan', $data);
$this->load->view('dashboard/v_footer');
}
}
// END CRUD PENGATURAN
// CRUD KONTAK
public function kontak()
{
$data['kontak'] = $this->M_data->get_data('kontak')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kontak',$data);
$this->load->view('dashboard/v_footer');
}
public function kontak_update()
{
// Wajib isi deskripsi website
$this->form_validation->set_rules('nama', 'Deskripsi Website', 'required');
if ($this->form_validation->run() != false) {
// Ambil data dari form
$nama = $this->input->post('nama');
$alamat = $this->input->post('alamat');
$email = $this->input->post('email');
$no_telp = $this->input->post('no_telp');
$pesan = $this->input->post('pesan');
$lokasi_alamat = $this->input->post('lokasi_alamat');
$lokasi_latitude = $this->input->post('lokasi_latitude');
$lokasi_longtitude = $this->input->post('lokasi_longtitude');
// Array data yang akan diperbarui
$data = array(
'nama' => $nama,
'alamat' => $alamat,
'email' => $email,
'no_telp' => $no_telp,
'pesan' => $pesan,
'lokasi_alamat' => $lokasi_alamat,
'lokasi_latitude' => $lokasi_latitude,
'lokasi_longtitude' => $lokasi_longtitude
);
// Kondisi update berdasarkan id
$where = array('nama' => $nama);
// Update data kontak
$this->M_data->update_data($where, $data, 'kontak');
// Redirect dengan alert sukses
redirect(base_url() . 'dashboard/kontak/?alert=sukses');
} else {
$data['kontak'] = $this->M_data->get_data('kontak')->result();
$this->load->view('dashboard/v_header');
$this->load->view('dashboard/v_kontak', $data);
$this->load->view('dashboard/v_footer');
}
}
// END CRUD KONTAK
}