⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
lppm
/
Modules
/
Backend
/
Berita
/
Controllers
/
Edit File: Berita.php
<?php namespace Modules\Backend\Berita\Controllers; use App\Controllers\BaseController; use Modules\Backend\Berita\Models\BeritaModel; class Berita extends BaseController { protected $beritaModel; public function __construct() { $this->beritaModel = new BeritaModel(); } public function index() { $data['title'] = 'Berita'; $data['li_1'] = 'Daftar Berita'; $data['body'] = 'Modules\Backend\Berita\Views\index'; $data['berita'] = $this->beritaModel->orderBy('created_at', 'DESC')->findAll(); return view('backend', $data); } public function form() { $data['title'] = 'Tambah Berita'; $data['li_1'] = 'Tambah Berita'; $data['body'] = 'Modules\Backend\Berita\Views\create'; return view('backend', $data); } public function save() { // ... (validasi tetap sama) ... // Ambil input tanggal, jika kosong gunakan waktu sekarang $pubDate = $this->request->getPost('published_at'); $publishedAt = (!empty($pubDate)) ? $pubDate : date('Y-m-d H:i:s'); // Ambil data Base64 gambar $base64Image = $this->request->getPost('cropped_image'); $fileName = null; if (!empty($base64Image)) { // Logika simpan base64 ke file (seperti diskusi sebelumnya) $fileName = $this->saveBase64Image($base64Image); } $title = $this->request->getPost('title'); $data = [ 'title' => $title, 'slug' => url_title($title, '-', true), 'content' => $this->request->getPost('content'), 'image' => $fileName, 'status' => $this->request->getPost('status'), 'author_id' => session('id'), // Tetap simpan ID Akun penginput 'author_name' => $this->request->getPost('author_name'), // Nama penulis kustom 'published_at' => $publishedAt, // Tanggal publish kustom/backdate 'created_at' => date('Y-m-d H:i:s'), // Tanggal asli input data 'headline' => $this->request->getPost('headline') ?? 0, ]; $this->beritaModel->insert($data); return redirect()->to('admin/berita')->with('success', 'Berita berhasil diterbitkan!'); } private function saveBase64Image($base64String) { // Pisahkan header data:image/jpeg;base64 dengan datanya list($type, $data) = explode(';', $base64String); list(, $data) = explode(',', $data); // Decode datanya $data = base64_decode($data); // Buat nama file acak $fileName = time() . '_' . mt_rand(1000, 9999) . '.jpg'; $path = FCPATH . 'uploads/berita/' . $fileName; // Simpan ke folder file_put_contents($path, $data); return $fileName; } public function delete($id) { // 1. Cari data beritanya dulu untuk ambil nama file gambarnya $berita = $this->beritaModel->find($id); if ($berita) { // 2. Hapus file gambar dari folder public/uploads/berita jika ada if (!empty($berita->image)) { $path = FCPATH . 'uploads/berita/' . $berita->image; if (file_exists($path)) { unlink($path); // Menghapus file fisik } } // 3. Hapus data dari database $this->beritaModel->delete($id); return redirect()->to('admin/berita')->with('success', 'Berita berhasil dihapus permanen.'); } return redirect()->to('admin/berita')->with('error', 'Berita tidak ditemukan.'); } public function edit($id) { $berita = $this->beritaModel->find($id); if (!$berita) { return redirect()->to('admin/berita')->with('error', 'Berita tidak ditemukan.'); } $data['title'] = 'Edit Berita'; $data['li_1'] = 'Edit Berita'; $data['body'] = 'Modules\Backend\Berita\Views\edit'; $data['berita'] = $berita; return view('backend', $data); } public function update($id) { // Validasi (image tidak 'uploaded' karena opsional saat edit) $rules = [ 'title' => 'required|min_length[5]', 'content' => 'required', ]; if (!$this->validate($rules)) { return redirect()->back()->withInput()->with('errors', $this->validator->getErrors()); } $data = [ 'title' => $this->request->getPost('title'), 'slug' => url_title($this->request->getPost('title'), '-', true), 'content' => $this->request->getPost('content'), 'status' => $this->request->getPost('status'), 'author_name' => $this->request->getPost('author_name'), 'published_at' => $this->request->getPost('published_at'), 'headline' => $this->request->getPost('headline') ?? 0, ]; // Cek apakah ada kiriman gambar baru dari Cropper $base64Image = $this->request->getPost('cropped_image'); if (!empty($base64Image)) { // Hapus foto lama jika ada $oldBerita = $this->beritaModel->find($id); if ($oldBerita->image && file_exists(FCPATH . 'uploads/berita/' . $oldBerita->image)) { unlink(FCPATH . 'uploads/berita/' . $oldBerita->image); } // Simpan foto baru $data['image'] = $this->saveBase64Image($base64Image); } $this->beritaModel->update($id, $data); return redirect()->to('admin/berita')->with('success', 'Berita berhasil diperbarui!'); } }
Simpan