load->model('berita_model'); is_logged_in(); } public function index() { $data['title'] = 'Berita'; $data['berita'] = $this->berita_model->get_data('tb_berita')->result(); $data['admin'] = $this->db->get_where('admin', ['email' => $this->session->userdata('email')])->row_array(); $this->load->view('templates/header', $data); $this->load->view('templates/sidebar', $data); $this->load->view('admin/berita'); $this->load->view('templates/footer'); } public function tambah() { $data['title'] = 'Tambah Berita'; $data['berita'] = $this->berita_model->get_data('tb_berita')->result(); $data['admin'] = $this->db->get_where('admin', ['email' => $this->session->userdata('email')])->row_array(); $this->load->view('templates/header', $data); $this->load->view('templates/sidebar', $data); $this->load->view('admin/tambah_berita', $data); $this->load->view('templates/footer'); } public function tambah_aksi() { $this->_rules(); if ($this->form_validation->run() == FALSE) { $this->tambah(); } else { // Konfigurasi upload $config['upload_path'] = './assets/img/berita/'; $config['allowed_types'] = 'jpg|jpeg|png|gif'; $config['max_size'] = 2048; // 2MB $this->load->library('upload', $config); if (!$this->upload->do_upload('gambar')) { // Jika upload gagal $this->session->set_flashdata('pesan', '
Gagal mengunggah gambar!
'); redirect('berita/tambah'); } else { $gambar = $this->upload->data('file_name'); $tanggal_input = $this->input->post('tanggal'); $tanggal_formatted = date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $tanggal_input))); $data = array( 'gambar' => $gambar, 'judul' => $this->input->post('judul'), 'deskripsi' => $this->input->post('deskripsi'), 'tanggal' => $tanggal_formatted ); $this->berita_model->insert_data($data, 'tb_berita'); $this->load->library('Notif'); $notif = new Notif(); $title = 'Nufaku - Berita Terkini'; $body = $this->input->post('judul'); $host = $_SERVER['HTTP_HOST']; if (strpos($host, 'localhost') !== false || strpos($host, '127.0.0.1') !== false) { $host = '192.168.0.80:8080'; // Ganti dengan IP kamu } $gambar_url = 'http://' . $host . '/admin-nufa/assets/img/berita/' . $gambar; $dataPayload = [ 'type' => 'berita', 'judul' => $this->input->post('judul'), 'gambar' => $gambar_url, 'tanggal' => $tanggal_formatted, 'deskripsi' => $this->input->post('deskripsi'), 'from_notif' => 'true' ]; $tokens = $this->db->get('fcm_tokens')->result(); foreach ($tokens as $row) { $token = $row->token; if (!empty($token)) { $response = $notif->send($token, $title, $body, $dataPayload); log_message('debug', 'RESPON FCM: ' . print_r($response, true)); } } $this->session->set_flashdata('pesan', ''); redirect('berita'); } } } public function edit($id_berita) { $this->form_validation->set_rules('judul', 'Judul', 'required', array( 'required' => '%s harus diisi!!' )); $this->form_validation->set_rules('deskripsi', 'Deskripsi', 'required', array( 'required' => '%s harus diisi!!' )); $this->form_validation->set_rules('tanggal', 'Tanggal', 'required', array( 'required' => '%s harus diisi!!' )); if ($this->form_validation->run() == FALSE) { $this->index(); } else { $judul = $this->input->post('judul'); $deskripsi = $this->input->post('deskripsi'); $tanggal_input = $this->input->post('tanggal'); $tanggal_formatted = date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $tanggal_input))); // Ambil gambar lama, bahkan jika tidak upload gambar baru $berita_lama = $this->berita_model->get_data_by_id($id_berita); $gambar_lama = $berita_lama ? $berita_lama->gambar : ''; $upload_gambar = $_FILES['gambar']['name']; if ($upload_gambar) { $config['upload_path'] = 'assets/img/berita/'; $config['allowed_types'] = 'jpg|jpeg|png|gif'; $config['max_size'] = 2048; $config['encrypt_name'] = TRUE; $this->load->library('upload', $config); if ($this->upload->do_upload('gambar')) { // Ambil gambar lama $berita_lama = $this->berita_model->get_data_by_id($id_berita); // kamu harus buat fungsi ini kalau belum ada $gambar_lama = $berita_lama->gambar; // Hapus gambar lama jika bukan default if ($gambar_lama && file_exists(FCPATH . 'assets/img/berita/' . $gambar_lama)) { unlink(FCPATH . 'assets/img/berita/' . $gambar_lama); } // Simpan nama gambar baru $gambar_baru = $this->upload->data('file_name'); } else { $this->session->set_flashdata('pesan', '
' . $this->upload->display_errors() . '
'); redirect('berita'); } } // Data array $data = array( 'id_berita' => $id_berita, 'judul' => $judul, 'deskripsi' => $deskripsi, 'tanggal' => $tanggal_formatted, ); // Jika upload gambar baru, tambahkan ke data if (!empty($gambar_baru)) { $data['gambar'] = $gambar_baru; } $this->berita_model->update_data($data, 'tb_berita'); $this->load->library('Notif'); $notif = new Notif(); $title = 'Nufaku - Pembaruan Berita'; $body = $this->input->post('judul'); $gambar = !empty($gambar_baru) ? $gambar_baru : $gambar_lama; // Dapatkan host $host = $_SERVER['HTTP_HOST']; // Jika localhost, ganti ke IP lokal kamu (ganti dengan IP sesuai hasil ipconfig) $host = $_SERVER['HTTP_HOST']; // bisa jadi 'localhost:8080' if (strpos($host, 'localhost') !== false || strpos($host, '127.0.0.1') !== false) { $host = '192.168.0.80:8080'; // Ganti dengan IP kamu } // Buat URL gambar yang bisa diakses Android $gambar_url = 'http://' . $host . '/admin-nufa/assets/img/berita/' . $gambar; // Payload untuk notifikasi $dataPayload = [ 'type' => 'berita', 'judul' => $judul, 'gambar' => $gambar_url, 'tanggal' => $tanggal_formatted, 'deskripsi' => $deskripsi, 'from_notif' => 'true' ]; log_message('debug', 'URL GAMBAR: ' . $gambar_url); $tokens = $this->db->get('fcm_tokens')->result(); foreach ($tokens as $row) { $token = $row->token; if (!empty($token)) { $response = $notif->send($token, $title, $body, $dataPayload); log_message('debug', 'RESPON FCM: ' . print_r($response, true)); } } $this->session->set_flashdata('pesan', ''); redirect('berita'); } } public function view($id_berita) { // Load model jika belum diload $this->load->model('berita_model'); // Ambil data wali santri berdasarkan id_santri dari model $data['berita'] = $this->berita_model->get_berita_by_id($id_berita); // Periksa apakah data ditemukan if ($data['berita']) { // Kirim data ke view untuk ditampilkan dalam modal $this->load->view('berita', $data); } else { // Jika data tidak ditemukan, redirect ke halaman utama dengan pesan error $this->session->set_flashdata('pesan', 'Berita tidak ditemukan'); redirect('berita'); // Ubah sesuai route halaman utama Anda } } public function _rules() { $this->form_validation->set_rules('judul', 'Judul', 'required', array( 'required' => '%s harus diisi!!' )); $this->form_validation->set_rules('deskripsi', 'Deskripsi', 'required', array( 'required' => '%s harus diisi!!' )); $this->form_validation->set_rules('tanggal', 'Tanggal', 'required', array( 'required' => '%s harus diisi!!' )); // Validasi manual untuk file if (empty($_FILES['gambar']['name'])) { $this->form_validation->set_rules('gambar', 'Gambar', 'required', array( 'required' => '%s harus diisi!!' )); } } public function delete($id) { $where = array('id_berita' => $id); $this->berita_model->delete($where, 'tb_berita'); $this->session->set_flashdata('pesan', ''); redirect('berita'); } }