$maximumFileSize) { $errorMessage = "Ukuran gambar maksimal 5 MB."; return false; } $originalName = basename($file["name"]); $extension = strtolower(pathinfo($originalName, PATHINFO_EXTENSION)); if (!in_array($extension, $allowedExtensions, true)) { $errorMessage = "Format gambar harus JPG, JPEG, PNG, atau WEBP."; return false; } /* * Validasi bahwa file benar-benar gambar. */ $imageInfo = @getimagesize($file["tmp_name"]); if ($imageInfo === false) { $errorMessage = "File yang dipilih bukan gambar yang valid."; return false; } $newFileName = "promo_" . date("YmdHis") . "_" . uniqid() . "." . $extension; $destination = rtrim($uploadDirectory, "/") . "/" . $newFileName; if (!move_uploaded_file($file["tmp_name"], $destination)) { $errorMessage = "Gambar gagal disimpan ke server."; return false; } return $newFileName; } /* |-------------------------------------------------------------------------- | Proses Tambah Data |-------------------------------------------------------------------------- */ if (isset($_POST["tambah"])) { $idDataServer = trim($_POST["id_data_server"] ?? ""); $nama = trim($_POST["nama"] ?? ""); $deskripsi = trim($_POST["deskripsi"] ?? ""); $sendOn = trim($_POST["send_on"] ?? ""); $tanggalMulai = trim($_POST["tanggal_mulai"] ?? ""); $tanggalAkhir = trim($_POST["tanggal_akhir"] ?? ""); $status = trim($_POST["status"] ?? ""); $tanggalMulai = !empty($tanggalMulai) ? date("Y-m-d H:i:s", strtotime($tanggalMulai)) : null; $tanggalAkhir = !empty($tanggalAkhir) ? date("Y-m-d H:i:s", strtotime($tanggalAkhir)) : null; $uploadError = ""; $gambar = uploadGambarPromo( $_FILES["gambar"] ?? null, $uploadDirectory, $allowedExtensions, $maximumFileSize, $uploadError ); if ($gambar === false) { sweetAlert($uploadError, "error"); } elseif (empty($nama)) { sweetAlert("Nama promo wajib diisi", "error"); } else { $queryTambah = mysqli_prepare( $con, "INSERT INTO master_promo ( id_data_server, nama, deskripsi, gambar, send_on, tanggal_mulai, tanggal_akhir, status ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" ); mysqli_stmt_bind_param( $queryTambah, "ssssssss", $idDataServer, $nama, $deskripsi, $gambar, $sendOn, $tanggalMulai, $tanggalAkhir, $status ); if (mysqli_stmt_execute($queryTambah)) { sweetAlert("Data promo telah ditambahkan", "success"); } else { /* * Hapus gambar apabila penyimpanan database gagal. */ if (!empty($gambar)) { $gambarPath = $uploadDirectory . $gambar; if (file_exists($gambarPath)) { unlink($gambarPath); } } sweetAlert("Data promo gagal ditambahkan", "error"); } mysqli_stmt_close($queryTambah); } } /* |-------------------------------------------------------------------------- | Proses Edit Data |-------------------------------------------------------------------------- */ if (isset($_POST["edit_promo"])) { $idPromo = (int) ($_POST["id_promo"] ?? 0); $idDataServer = trim($_POST["id_data_server"] ?? ""); $nama = trim($_POST["nama"] ?? ""); $deskripsi = trim($_POST["deskripsi"] ?? ""); $sendOn = trim($_POST["send_on"] ?? ""); $tanggalMulai = trim($_POST["tanggal_mulai"] ?? ""); $tanggalAkhir = trim($_POST["tanggal_akhir"] ?? ""); $status = trim($_POST["status"] ?? ""); $gambarLama = basename($_POST["gambar_lama"] ?? ""); $tanggalMulai = !empty($tanggalMulai) ? date("Y-m-d H:i:s", strtotime($tanggalMulai)) : null; $tanggalAkhir = !empty($tanggalAkhir) ? date("Y-m-d H:i:s", strtotime($tanggalAkhir)) : null; $uploadError = ""; $gambarBaru = uploadGambarPromo( $_FILES["gambar"] ?? null, $uploadDirectory, $allowedExtensions, $maximumFileSize, $uploadError ); if ($gambarBaru === false) { sweetAlert($uploadError, "error"); } elseif ($idPromo <= 0) { sweetAlert("ID promo tidak valid", "error"); } elseif (empty($nama)) { sweetAlert("Nama promo wajib diisi", "error"); } else { /* * Jika pengguna tidak memilih gambar baru, * gunakan gambar lama. */ $gambarUntukDatabase = !empty($gambarBaru) ? $gambarBaru : $gambarLama; $queryEdit = mysqli_prepare( $con, "UPDATE master_promo SET id_data_server = ?, nama = ?, deskripsi = ?, gambar = ?, send_on = ?, tanggal_mulai = ?, tanggal_akhir = ?, status = ? WHERE id = ?" ); mysqli_stmt_bind_param( $queryEdit, "ssssssssi", $idDataServer, $nama, $deskripsi, $gambarUntukDatabase, $sendOn, $tanggalMulai, $tanggalAkhir, $status, $idPromo ); if (mysqli_stmt_execute($queryEdit)) { /* * Setelah data berhasil diperbarui, * hapus gambar lama apabila ada gambar baru. */ if ( !empty($gambarBaru) && !empty($gambarLama) && $gambarLama !== $gambarBaru ) { $oldImagePath = $uploadDirectory . $gambarLama; if (file_exists($oldImagePath)) { unlink($oldImagePath); } } sweetAlert("Data promo telah diubah", "success"); } else { /* * Jika update database gagal, * hapus gambar baru agar tidak menjadi file sampah. */ if (!empty($gambarBaru)) { $newImagePath = $uploadDirectory . $gambarBaru; if (file_exists($newImagePath)) { unlink($newImagePath); } } sweetAlert("Data promo gagal diubah", "error"); } mysqli_stmt_close($queryEdit); } } /* |-------------------------------------------------------------------------- | Proses Hapus Data |-------------------------------------------------------------------------- */ if (isset($_POST["hapus_promo"])) { $idPromo = (int) ($_POST["id_promo"] ?? 0); if ($idPromo > 0) { /* * Ambil nama gambar sebelum data dihapus. */ $queryGambar = mysqli_prepare( $con, "SELECT gambar FROM master_promo WHERE id = ? LIMIT 1" ); mysqli_stmt_bind_param($queryGambar, "i", $idPromo); mysqli_stmt_execute($queryGambar); $resultGambar = mysqli_stmt_get_result($queryGambar); $dataGambar = mysqli_fetch_assoc($resultGambar); $namaGambar = basename($dataGambar["gambar"] ?? ""); mysqli_stmt_close($queryGambar); /* * Menggunakan fungsi deleteAlert bawaan aplikasi. * Fungsi ini diasumsikan menangani konfirmasi dan penghapusan data. */ deleteAlert("master_promo", $idPromo); /* * Apabila deleteAlert langsung menghapus data, * gambar akan diperiksa dan dihapus setelah record tidak ditemukan. */ $queryCek = mysqli_prepare( $con, "SELECT id FROM master_promo WHERE id = ? LIMIT 1" ); mysqli_stmt_bind_param($queryCek, "i", $idPromo); mysqli_stmt_execute($queryCek); $resultCek = mysqli_stmt_get_result($queryCek); $dataMasihAda = mysqli_fetch_assoc($resultCek); mysqli_stmt_close($queryCek); if (!$dataMasihAda && !empty($namaGambar)) { $gambarPath = $uploadDirectory . $namaGambar; if (file_exists($gambarPath)) { unlink($gambarPath); } } } } ?>

Daftar Pesan Promo

Nama Server Nama Promo Gambar Pesan Kirim Setelah Tanggal Mulai Tanggal Akhir Status Action
" target="_blank" > " alt="Gambar promo" class="img-thumbnail" style=" width: 80px; height: 60px; object-fit: cover; " > Tidak ada Aktif Edit