⚝
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
/
Frontend
/
Controllers
/
Edit File: Home.php
<?php namespace Modules\Frontend\Controllers; use App\Controllers\BaseController; use Modules\Backend\Berita\Models\BeritaModel; use Modules\Backend\Opini\Models\OpiniModel; use Modules\Backend\Directorate\Models\DirectorateModel; use Modules\Backend\Informasi\Models\InformationModel; // 1. Tambahkan ini use Modules\Backend\Video\Models\VideoModel; use Modules\Backend\Foto\Models\FotoModel; class Home extends BaseController { public function index() { $beritaModel = new BeritaModel(); $opiniModel = new OpiniModel(); $dirModel = new DirectorateModel(); $infoModel = new InformationModel(); // 2. Inisialisasi $videoModel = new VideoModel(); $fotoModel = new FotoModel(); $data = [ 'title' => 'Home' ]; // Ambil 5 Berita Headline $data['headline'] = $beritaModel->where('headline', 1) ->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(5) ->findAll(); // Ambil 6 Berita Terkini $data['terkini'] = $beritaModel->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(6) ->findAll(); // Ambil Semua Data Direktorat $data['directorates'] = $dirModel->orderBy('name', 'ASC')->findAll(); // 3. Ambil 5 Informasi Terbaru untuk Sidebar $data['informations'] = $infoModel->where('is_headline', 1) ->orderBy('created_at', 'DESC') ->limit(2) // Sesuai permintaan: Hanya 4 yang muncul ->findAll(); $data['opini'] = $opiniModel->where('headline', 1) ->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(3) ->findAll(); $data['videos'] = $videoModel->where('is_headline', 1) ->orderBy('created_at', 'DESC') ->limit(2) ->findAll(); $data['photos'] = $fotoModel->where('is_headline', 1) ->orderBy('created_at', 'DESC') ->limit(4) ->findAll(); return view('Modules\Frontend\Views\home', $data); } // Ubah fungsi read agar menangkap slug dari URL public function read($slug = null) { $model = new BeritaModel(); // Ambil berita berdasarkan slug yang statusnya sudah published $berita = $model->where('slug', $slug)->first(); // Jika berita tidak ada, tampilkan 404 if (!$berita) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Berita tidak ditemukan."); } // LOGIKA UPDATE READER: // Hanya bertambah jika status sudah 'published' if ($berita->status == 'published') { $model->update($berita->id, [ 'reader' => $berita->reader + 1 ]); // Update variabel berita agar angka yang tampil di view adalah angka terbaru $berita->reader += 1; } // Ambil berita populer (headline) untuk sidebar $populer = $model->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(5) ->findAll(); $data = [ 'title' => $berita->title, 'description' => substr(strip_tags($berita->content), 0, 160), // Kirim link gambar berita 'image' => base_url('uploads/berita/' . $berita->image), 'cms' => $this->cms, 'berita' => $berita, 'populer' => $populer ]; return view('Modules\Frontend\Views\read', $data); } public function opini($slug = null) { $model = new OpiniModel(); // Ambil opini berdasarkan slug yang statusnya sudah published $opini = $model->where('slug', $slug)->first(); // Jika opini tidak ada, tampilkan 404 if (!$opini) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Opini tidak ditemukan."); } // LOGIKA UPDATE READER: // Hanya bertambah jika status sudah 'published' if ($opini->status == 'published') { $model->update($opini->id, [ 'reader' => $opini->reader + 1 ]); // Update variabel opini agar angka yang tampil di view adalah angka terbaru $opini->reader += 1; } // Ambil opini populer (headline) untuk sidebar $populer = $model->where('status', 'published') ->orderBy('published_at', 'DESC') ->limit(5) ->findAll(); $data = [ 'title' => $opini->title, 'description' => substr(strip_tags($opini->content), 0, 160), // Kirim link gambar opini 'image' => base_url('uploads/opini/' . $opini->image), 'cms' => $this->cms, 'opini' => $opini, 'populer' => $populer ]; return view('Modules\Frontend\Views\opini', $data); } public function videoList() { $videoModel = new VideoModel(); $data = [ 'title' => 'Galeri Video', // List utama dengan pagination 'videos' => $videoModel->orderBy('created_at', 'DESC')->paginate(8, 'group1'), 'pager' => $videoModel->pager, // List untuk sidebar (misal 5 video terbaru) 'video_sidebar' => $videoModel->orderBy('created_at', 'DESC')->limit(5)->findAll(), ]; return view('Modules\Frontend\Views\video_all', $data); } public function photoList() { $fotoModel = new \Modules\Backend\Foto\Models\FotoModel(); $data = [ 'title' => 'Semua Galeri Foto', // List utama dengan pagination (9 foto per halaman agar grid 3x3 rapi) 'photos' => $fotoModel->orderBy('created_at', 'DESC')->paginate(9, 'group_foto'), 'pager' => $fotoModel->pager, // List untuk sidebar (5 foto terbaru) 'photo_sidebar' => $fotoModel->orderBy('created_at', 'DESC')->limit(5)->findAll(), ]; return view('Modules\Frontend\Views\foto_all', $data); } public function infoList() { $infoModel = new \Modules\Backend\Informasi\Models\InformationModel(); $data = [ 'title' => 'Semua Informasi & Pengumuman', // Kita tampilkan 10 baris per halaman 'informasi' => $infoModel->orderBy('created_at', 'DESC')->paginate(10, 'group_info'), 'pager' => $infoModel->pager, // Sidebar: 5 informasi terbaru 'info_sidebar' => $infoModel->orderBy('created_at', 'DESC')->limit(5)->findAll(), ]; return view('Modules\Frontend\Views\info_all', $data); } }
Simpan