⚝
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
/
miu
/
modules
/
Kelas
/
Controllers
/
Edit File: Kelas.php
<?php namespace Modules\Kelas\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class Kelas extends BaseController { public function index() { $data['title'] = 'Kelas'; $data['li_1'] = 'Daftar Kelas'; $data['body'] = 'Modules\Kelas\Views\list'; $db = $this->db->table('kelas')->select('kelas.*, sp.nama as nm_lembaga, tp.nama as tp') ->join('sp', 'kelas.id_sp = sp.id', 'inner') ->join('tp', 'kelas.id_tp = tp.id', 'inner'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['kelas.id_sp' => session('id_sp')]); } if(session()->has('id_tp') && session('id_tp') != '0'){ $db->where(['kelas.id_tp' => session('id_tp')]); } $guru = $this->db->table('guru')->where('id_sp', session('id_sp'))->get()->getResult(); foreach ($guru as $k) { $data['nip_guru'][$k->nip] = $k->nama; } $data['data'] = $db->get()->getResult();; return view('template', $data); } public function verifikasi(){ $db = $this->db->table('sp'); $db->where(['id' => session('id_sp')]); $guru = $this->db->table('guru')->where(['id_sp' => session('id_sp')])->get()->getResult(); $data['sp'] = $db->get()->getResult(); $data['tp'] = $this->db->table('tp')->where(['id_sp' => session('id_sp')])->get()->getResult(); // Validasi file yang diunggah $validationRule = [ 'upload' => [ 'label' => 'File Upload', 'rules' => 'uploaded[upload]|ext_in[upload,xls,xlsx]', 'errors' => [ 'uploaded' => 'Harus ada file yang diupload.', 'ext_in' => 'File harus berekstensi XLS atau XLSX.' ], ], ]; if (! $this->validate($validationRule)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('kelas')); } // Ambil file yang diunggah $file = $this->request->getFile('upload'); // Pastikan file berhasil diunggah dan tidak ada error if ($file->isValid() && ! $file->hasMoved()) { // Pindahkan file sementara ke lokasi yang bisa diakses oleh PhpSpreadsheet // Disarankan untuk memindahkan ke direktori writable, contoh: writable/uploads $newName = $file->getRandomName(); // Buat nama unik untuk file $file->move(WRITEPATH . 'uploads', $newName); // Pindahkan file $filePath = WRITEPATH . 'uploads/' . $newName; try { // Muat file spreadsheet menggunakan IOFactory $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath); // Ambil sheet aktif $sheet = $spreadsheet->getActiveSheet(); // Konversi data sheet menjadi array // toArray() akan mengembalikan semua sel di sheet sebagai array 2D $dt = $sheet->toArray(); // Hapus file sementara setelah dibaca unlink($filePath); $data['title'] = 'Verifikasi Data'; $data['li_1'] = 'Verifikasi Data'; $data['body'] = 'Modules\Kelas\Views\verifikasi'; $data['data'] = $dt; foreach ($guru as $k) { $data['nip_guru'][$k->nip] = $k->nama; } return view('template', $data); } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { // Tangani error jika terjadi masalah saat membaca file session()->setFlashData(gagal($e->getMessage())); return redirect()->to(base_url('kelas')); } } else { // Tangani jika ada masalah dengan proses upload session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('kelas')); } } public function add(){ $p = $this->request->getPost(); if($p['id_lembaga'] == '' || $p['id_lembaga'] == null){ session()->setFlashData(gagal("Pilih ID Lembaga Dulu")); return redirect('kelas'); } if($p['tp'] == '' || $p['tp'] == null){ session()->setFlashData(gagal("Pilih ID Tahun Pelajaran Dulu")); return redirect('kelas'); } $db = $this->db->table('kelas'); $db->where(['id_sp' => $p['id_lembaga'], 'id_tp' => $p['tp']])->delete(); $insert = []; $input = FALSE; for($i=0; $i < count($p['kelas']); $i++){ $input = TRUE; $id = Uuid::uuid4()->toString(); $insert[] = [ 'id' => $id, 'id_sp' => $p['id_lembaga'], 'id_tp' => $p['tp'], 'kelas' => $p['kelas'][$i], 'rombel' => $p['rombel'][$i], 'walas' => $p['walas'][$i], 'kurikulum' => $p['kurikulum'][$i], ]; } if($input){ $db->insertBatch($insert); } session()->setFlashData(success('Berhasil menambah '.count($insert).' Data ')); return redirect('kelas'); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'kelas' => [ 'label' => 'Kelas', 'rules' => 'required|max_length[10]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'rombel' => [ 'label' => 'Rombongan Belajar', 'rules' => 'required|max_length[10]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'walas' => [ 'label' => 'Walas', 'rules' => 'required', 'errors' => [ 'required' => '{field} tidak boleh kosong.', ], ], 'kurikulum' => [ 'label' => 'kurikulum', 'rules' => 'required|max_length[1]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'max_length' => '{field} maksimal {param} karakter.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('kelas')); } $update = [ 'kelas' => $p['kelas'], 'rombel' => $p['rombel'], 'walas' => $p['walas'][$i], 'kurikulum' => $p['kurikulum'][$i], ]; if($this->db->table('kelas')->where('id', $p['data_id'])->update($update)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('kelas')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('kelas')); } } public function delete($id = null){ if($this->db->table('kelas')->where('id', $id)->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('kelas')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('kelas')); } } public function get($id = null){ $d = $this->db->table('kelas')->where('id', $id)->get()->getRow(); return json_encode($d); } public function isi($id = null){ $data['title'] = 'Isi Kelas'; $data['li_1'] = 'Daftar Isi Kelas'; $data['body'] = 'Modules\Kelas\Views\isi'; $db = $this->db->table('isi')->select('isi.*, pd.nama as nm_pd, pd.nis, kelas.id as id_kls') ->join('pd', 'isi.id_pd = pd.id', 'inner') ->join('kelas', 'isi.id_kelas = kelas.id', 'inner') ->where(['isi.id_kelas' => $id]); $data['data'] = $db->get()->getResult();; $data['id_kelas'] = $id; $data['kelas'] = $this->db->table('kelas')->where(['id_tp' => session('id_tp')]) -> get() -> getResult(); return view('template', $data); } public function verifikasi_isi(){ // Validasi file yang diunggah $validationRule = [ 'upload' => [ 'label' => 'File Upload', 'rules' => 'uploaded[upload]|ext_in[upload,xls,xlsx]', 'errors' => [ 'uploaded' => 'Harus ada file yang diupload.', 'ext_in' => 'File harus berekstensi XLS atau XLSX.' ], ], ]; $id_kelas = $this->request->getPost('id_kelas'); if (! $this->validate($validationRule)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } // Ambil file yang diunggah $file = $this->request->getFile('upload'); // Pastikan file berhasil diunggah dan tidak ada error if ($file->isValid() && ! $file->hasMoved()) { // Pindahkan file sementara ke lokasi yang bisa diakses oleh PhpSpreadsheet // Disarankan untuk memindahkan ke direktori writable, contoh: writable/uploads $newName = $file->getRandomName(); // Buat nama unik untuk file $file->move(WRITEPATH . 'uploads', $newName); // Pindahkan file $filePath = WRITEPATH . 'uploads/' . $newName; try { // Muat file spreadsheet menggunakan IOFactory $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath); // Ambil sheet aktif $sheet = $spreadsheet->getActiveSheet(); // Konversi data sheet menjadi array // toArray() akan mengembalikan semua sel di sheet sebagai array 2D $dt = $sheet->toArray(); // Hapus file sementara setelah dibaca unlink($filePath); $db = $this->db->table('sp'); $db->where(['id' => session('id_sp')]); $data['sp'] = $db->get()->getResult(); $data['tp'] = $this->db->table('tp')->where(['id_sp' => session('id_sp')])->get()->getResult(); $data['title'] = 'Verifikasi Data'; $data['li_1'] = 'Verifikasi Data'; $data['body'] = 'Modules\Kelas\Views\verifikasi-isi'; $pd = $this->db->table('pd')->where(['id_sp' => session('id_sp')])->get()->getResultArray(); $data['nis'] = array_flip(array_column($pd, 'nis')); $data['all_pd'] = array_column($pd, 'id'); $data['data'] = $dt; $data['id_kelas'] = $id_kelas; return view('template', $data); } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { // Tangani error jika terjadi masalah saat membaca file session()->setFlashData(gagal($e->getMessage())); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } } else { // Tangani jika ada masalah dengan proses upload session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } } public function add_isi(){ $p = $this->request->getPost(); $id_kelas = $p['id_kelas']; if($p['id_lembaga'] == '' || $p['id_lembaga'] == null){ session()->setFlashData(gagal("Pilih ID Lembaga Dulu")); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } if($p['tp'] == '' || $p['tp'] == null){ session()->setFlashData(gagal("Pilih ID Tahun Pelajaran Dulu")); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } $db = $this->db->table('isi'); $insert = []; $input = FALSE; for($i=0; $i < count($p['id_pd']); $i++){ $input = TRUE; $db->where(['id_sp' => $p['id_lembaga'], 'id_tp' => $p['tp'], 'id_pd' => $p['id_pd'][$i]])->delete(); $id = Uuid::uuid4()->toString(); $insert[] = [ 'id' => $id, 'id_sp' => $p['id_lembaga'], 'id_tp' => $p['tp'], 'id_pd' => $p['id_pd'][$i], 'id_kelas' => $p['id_kelas'], ]; } if($input){ $db->insertBatch($insert); } session()->setFlashData(success('Berhasil menambah '.count($insert).' Data ')); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } public function delete_isi($id, $id_kelas){ if($this->db->table('isi')->where('id', $id)->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('kelas/isi/'.$id_kelas)); } } }
Simpan