⚝
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
/
Pd
/
Controllers
/
Edit File: Pd.php
<?php namespace Modules\Pd\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; class Pd extends BaseController { public function index() { $data['title'] = 'Peserta Didik'; $data['li_1'] = 'Daftar Peserta Didik'; $data['body'] = 'Modules\Pd\Views\list'; $db = $this->db->table('pd')->select('pd.*, sp.nama as nm_lembaga') ->join('sp', 'pd.id_sp = sp.id', 'inner'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['id_sp' => session('id_sp')]); } $kelas = $this->db->table('kelas k'); $kelas->select('pd.id as id_pd, pd.nama, k.kelas, k.rombel, k.id as id_kelas'); $kelas->join('isi','k.id = isi.id_kelas'); $kelas->join('pd','isi.id_pd = pd.id'); $kelas->where('k.id_sp', session('id_sp')); $kelas->where('k.id_tp', session('id_tp')); $kls = $kelas->get()->getResult(); foreach ($kls as $k) { $data['kelas'][$k->id_pd] = $k->kelas.$k->rombel; } $data['data'] = $db->get()->getResult();; return view('template', $data); } public function verifikasi() { $db = $this->db->table('sp'); if(session()->has('id_sp') && session('id_sp') != '0'){ $db->where(['id' => session('id_sp')]); } $data['sp'] = $db->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('pd')); } // 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\Pd\Views\verifikasi'; $data['data'] = $dt; 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('pd')); } } else { // Tangani jika ada masalah dengan proses upload session()->setFlashData(gagal($file->getErrorString())); return redirect()->to(base_url('pd')); } } public function add(){ $p = $this->request->getPost(); if($p['id_lembaga'] == '' || $p['id_lembaga'] == null){ session()->setFlashData(gagal("Pilih ID Lembaga Dulu")); return redirect('pd'); } $db = $this->db->table('pd'); $cek_nis = $db->whereIn('nis', $p['nis'])->get()->getResultArray(); $nis = array_flip(array_column($cek_nis, 'nis')); $hitung_update = []; $insert = []; $input = FALSE; for($i=0; $i < count($p['nis']); $i++){ if(isset($nis[$p['nis'][$i]])){ $update = [ 'id_sp' => $p['id_lembaga'], 'nama' => $p['nama'][$i], 'jk' => $p['jk'][$i], 'tempat_lahir' => $p['tempat'][$i], 'tgl_lahir' => $p['tgl'][$i], 'kontak' => $p['kontak'][$i], 'wali' => $p['wali'][$i], ]; $hitung_update[] = $db->where('nis', $p['nis'][$i])->update($update); }else{ $input = TRUE; $id = Uuid::uuid4()->toString(); $insert[] = [ 'id_sp' => $p['id_lembaga'], 'id' => $id, 'nis' => $p['nis'][$i], 'nama' => $p['nama'][$i], 'jk' => $p['jk'][$i], 'tempat_lahir' => $p['tempat'][$i], 'tgl_lahir' => $p['tgl'][$i], 'kontak' => $p['kontak'][$i], 'wali' => $p['wali'][$i], ]; } } if($input){ $db->insertBatch($insert); } session()->setFlashData(success('Berhasil menambah '.count($insert).' data dan mengupdate '.count($hitung_update).' Data ')); return redirect('pd'); } public function delete($id = null){ if($this->db->table('pd')->where('id', $id)->delete()){ session()->setFlashData(success('Berhasil Mengapus Data')); return redirect()->to(base_url('pd')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pd')); } } public function get($id = null){ $d = $this->db->table('pd')->where('id', $id)->get()->getRow(); return json_encode($d); } public function edit(){ $p = $this->request->getPost(); $rules = [ 'nama' => [ 'label' => 'Nama Lengkap', 'rules' => 'required|min_length[3]|max_length[100]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'jk' => [ 'label' => 'Jenis Kelamin', 'rules' => [ 'required', function($str, array $data, ?string &$error = null) { $normalizedGender = strtoupper(trim($str)); if ($normalizedGender === 'L' || $normalizedGender === 'P') { return true; } $error = '{field} hanya boleh \'L\' atau \'P\'.'; return false; } ], ], 'tempat_lahir' => [ 'label' => 'Tempat Lahir', 'rules' => 'required|min_length[3]|max_length[100]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], 'tgl_lahir' => [ 'label' => 'Tanggal Lahir', 'rules' => [ 'required', function($str, array $data, ?string &$error = null) { $format = 'Y-m-d'; $d = \DateTime::createFromFormat($format, $str); if ($d && $d->format($format) === $str) { return true; } $error = '{field} tidak dalam format YYYY-MM-DD yang valid.'; return false; } ], ], 'kontak' => [ 'label' => 'Nomor Kontak', 'rules' => [ 'required', function($str, array $data, ?string &$error = null) { // Hapus semua karakter non-digit untuk pembersihan awal $cleanedNumber = preg_replace('/[^0-9]/', '', $str); // Periksa apakah diawali '62' dan memiliki total panjang 10-15 digit if (preg_match('/^62\d{8,13}$/', $cleanedNumber)) { return true; } $error = '{field} tidak valid. Harus diawali \'62\' dan memiliki 10-15 digit.'; return false; } ], ], 'wali' => [ 'label' => 'Nama Wali', 'rules' => 'required|min_length[3]|max_length[100]', 'errors' => [ 'required' => '{field} tidak boleh kosong.', 'min_length' => '{field} minimal {param} karakter.', 'max_length' => '{field} maksimal {param} karakter.', ], ], ]; if (! $this->validateData($p,$rules)) { session()->setFlashData(gagal(form_error($this->validator->getErrors()))); return redirect()->to(base_url('pd')); } $update = [ 'nama' => $p['nama'], 'jk' => $p['jk'], 'tempat_lahir' => $p['tempat_lahir'], 'tgl_lahir' => $p['tgl_lahir'], 'kontak' => $p['kontak'], 'wali' => $p['wali'], ]; if($this->db->table('pd')->where('id', $p['data_id'])->update($update)){ session()->setFlashData(success('Berhasil Menyimpan Data')); return redirect()->to(base_url('pd')); }else{ session()->setFlashData(gagal('Masalah Koneksi Database')); return redirect()->to(base_url('pd')); } } public function bp_pd(){ $filePath = 'a.xlsx'; 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(); for($i=0; $i < count($dt); $i++) { $nis_baru = $dt[$i][2]; $id = $dt[$i][0]; $q = "UPDATE pd SET nis = '$nis_baru' WHERE id='$id'"; $this->db->query($q); // echo $q.'<br />'; } } catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) { echo 'Pokoknya Error'; } } }
Simpan