⚝
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
/
Opini
/
Controllers
/
Edit File: Opini.php
<?php namespace Modules\Backend\Opini\Controllers; use App\Controllers\BaseController; use Modules\Backend\Opini\Models\OpiniModel; class Opini extends BaseController { protected $opiniModel; public function __construct() { $this->opiniModel = new OpiniModel(); } public function index() { $data['title'] = 'Opini'; $data['li_1'] = 'Daftar Opini'; $data['body'] = 'Modules\Backend\Opini\Views\index'; $data['opini'] = $this->opiniModel->orderBy('created_at', 'DESC')->findAll(); return view('backend', $data); } public function form() { $data['title'] = 'Tambah Opini'; $data['li_1'] = 'Tambah Opini'; $data['body'] = 'Modules\Backend\Opini\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->opiniModel->insert($data); return redirect()->to('admin/opini')->with('success', 'Opini 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/opini/' . $fileName; // Simpan ke folder file_put_contents($path, $data); return $fileName; } public function delete($id) { // 1. Cari data opininya dulu untuk ambil nama file gambarnya $opini = $this->opiniModel->find($id); if ($opini) { // 2. Hapus file gambar dari folder public/uploads/opini jika ada if (!empty($opini->image)) { $path = FCPATH . 'uploads/opini/' . $opini->image; if (file_exists($path)) { unlink($path); // Menghapus file fisik } } // 3. Hapus data dari database $this->opiniModel->delete($id); return redirect()->to('admin/opini')->with('success', 'Opini berhasil dihapus permanen.'); } return redirect()->to('admin/opini')->with('error', 'Opini tidak ditemukan.'); } public function edit($id) { $opini = $this->opiniModel->find($id); if (!$opini) { return redirect()->to('admin/opini')->with('error', 'Opini tidak ditemukan.'); } $data['title'] = 'Edit Opini'; $data['li_1'] = 'Edit Opini'; $data['body'] = 'Modules\Backend\Opini\Views\edit'; $data['opini'] = $opini; 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 $oldOpini = $this->opiniModel->find($id); if ($oldOpini->image && file_exists(FCPATH . 'uploads/opini/' . $oldOpini->image)) { unlink(FCPATH . 'uploads/opini/' . $oldOpini->image); } // Simpan foto baru $data['image'] = $this->saveBase64Image($base64Image); } $this->opiniModel->update($id, $data); return redirect()->to('admin/opini')->with('success', 'Opini berhasil diperbarui!'); } }
Simpan