1220 lines
74 KiB
PHP
1220 lines
74 KiB
PHP
<?php
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Konfigurasi Upload Gambar Promo
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
$uploadDirectory = "uploads/promo/";
|
|
$allowedExtensions = array("jpg", "jpeg", "png", "webp");
|
|
$maximumFileSize = 5 * 1024 * 1024; // 5 MB
|
|
if (!is_dir($uploadDirectory)) {
|
|
mkdir($uploadDirectory, 0755, true);
|
|
}
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Fungsi Upload Gambar
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
function uploadGambarPromo(
|
|
$file,
|
|
$uploadDirectory,
|
|
$allowedExtensions,
|
|
$maximumFileSize,
|
|
&$errorMessage
|
|
) {
|
|
$errorMessage = "";
|
|
if (
|
|
!isset($file) ||
|
|
!isset($file["error"]) ||
|
|
$file["error"] === UPLOAD_ERR_NO_FILE
|
|
) {
|
|
return null;
|
|
}
|
|
if ($file["error"] !== UPLOAD_ERR_OK) {
|
|
$errorMessage = "Terjadi kesalahan saat mengunggah gambar.";
|
|
return false;
|
|
}
|
|
if ($file["size"] > $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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
?>
|
|
<!-- Main content -->
|
|
<section class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<h3 class="card-title">Daftar Pesan Promo</h3>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<ol class="float-sm-right mb-0">
|
|
<a
|
|
type="button"
|
|
class="btn btn-danger btn-sm"
|
|
data-toggle="modal"
|
|
data-target="#modalTambahPromo"
|
|
>
|
|
Tambah
|
|
</a>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Modal Tambah Promo -->
|
|
<div
|
|
class="modal fade"
|
|
id="modalTambahPromo"
|
|
data-backdrop="static"
|
|
data-keyboard="false"
|
|
tabindex="-1"
|
|
aria-labelledby="modalTambahPromoLabel"
|
|
aria-hidden="true"
|
|
>
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<form method="post" enctype="multipart/form-data">
|
|
<div class="modal-header bg-primary">
|
|
<h5
|
|
class="modal-title"
|
|
id="modalTambahPromoLabel"
|
|
>
|
|
Tambah Pesan Promo
|
|
</h5>
|
|
<button
|
|
type="button"
|
|
class="close"
|
|
data-dismiss="modal"
|
|
aria-label="Close"
|
|
>
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="card-body pb-0">
|
|
<div class="form-group">
|
|
<label>Nama Server</label>
|
|
<select
|
|
class="form-control"
|
|
name="id_data_server"
|
|
required
|
|
>
|
|
<option value="">
|
|
-- Pilih Server --
|
|
</option>
|
|
<?php
|
|
$List = new Listdata();
|
|
$List->set_list(
|
|
"data_server",
|
|
$SqlDataWH
|
|
);
|
|
foreach (
|
|
$List->get_list()
|
|
as $key => $value
|
|
):
|
|
?>
|
|
<option
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$value["id"],
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$value["nama_server"],
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Nama Promo</label>
|
|
<input
|
|
type="text"
|
|
class="form-control"
|
|
name="nama"
|
|
placeholder="Masukkan nama promo"
|
|
required
|
|
>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Gambar Promo</label>
|
|
<div class="custom-file">
|
|
<input
|
|
type="file"
|
|
class="custom-file-input"
|
|
id="gambarTambah"
|
|
name="gambar"
|
|
accept=".jpg,.jpeg,.png,.webp"
|
|
>
|
|
<label
|
|
class="custom-file-label"
|
|
for="gambarTambah"
|
|
>
|
|
Pilih gambar
|
|
</label>
|
|
</div>
|
|
<small class="text-muted">
|
|
Format JPG, JPEG, PNG,
|
|
atau WEBP. Maksimal 5 MB.
|
|
</small>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Pesan</label>
|
|
<textarea
|
|
class="form-control"
|
|
name="deskripsi"
|
|
rows="4"
|
|
placeholder="Masukkan deskripsi pesan promo"
|
|
></textarea>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Kirim Saat Setelah</label>
|
|
|
|
<select
|
|
class="form-control"
|
|
name="master_template_pesan"
|
|
required
|
|
>
|
|
<option value="">
|
|
-- Pilih Server --
|
|
</option>
|
|
<?php
|
|
$List = new Listdata();
|
|
$List->set_list(
|
|
"master_template_pesan", ' GROUP BY nama'
|
|
);
|
|
foreach (
|
|
$List->get_list()
|
|
as $key => $value
|
|
):
|
|
?>
|
|
<option value="<?= $value['nama'] ?>">
|
|
<?= $value['nama'] ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label>
|
|
Tanggal Mulai
|
|
</label>
|
|
<input
|
|
type="datetime-local"
|
|
class="form-control"
|
|
name="tanggal_mulai"
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label>
|
|
Tanggal Akhir
|
|
</label>
|
|
<input
|
|
type="datetime-local"
|
|
class="form-control"
|
|
name="tanggal_akhir"
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Status</label>
|
|
<select
|
|
class="form-control"
|
|
name="status"
|
|
required
|
|
>
|
|
<option value="Aktif">
|
|
Aktif
|
|
</option>
|
|
<option value="Nonaktif">
|
|
Nonaktif
|
|
</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button
|
|
type="button"
|
|
class="btn btn-secondary"
|
|
data-dismiss="modal"
|
|
>
|
|
Close
|
|
</button>
|
|
<input
|
|
type="submit"
|
|
name="tambah"
|
|
class="btn btn-primary"
|
|
value="Tambah"
|
|
>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- END Modal Tambah Promo -->
|
|
<div class="card-body">
|
|
<div class="table-responsive">
|
|
<table
|
|
id="example1"
|
|
class="table table-bordered table-striped"
|
|
>
|
|
<thead>
|
|
<tr>
|
|
<th>Nama Server</th>
|
|
<th>Nama Promo</th>
|
|
<th>Gambar</th>
|
|
<th>Pesan</th>
|
|
<th>Kirim Setelah</th>
|
|
<th>Tanggal Mulai</th>
|
|
<th>Tanggal Akhir</th>
|
|
<th>Status</th>
|
|
<th>Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
/*
|
|
* Menggunakan kondisi server yang sudah
|
|
* tersedia pada aplikasi.
|
|
*/
|
|
$queryPromo = "
|
|
SELECT *
|
|
FROM master_promo
|
|
$SqlDataWHId
|
|
ORDER BY id DESC
|
|
";
|
|
$resultPromo = mysqli_query(
|
|
$con,
|
|
$queryPromo
|
|
);
|
|
while (
|
|
$promo = mysqli_fetch_assoc($resultPromo)
|
|
) {
|
|
$idPromo = (int) $promo["id"];
|
|
/*
|
|
* Ambil nama server berdasarkan
|
|
* id_data_server.
|
|
*/
|
|
$namaServer = "-";
|
|
if (!empty($promo["id_data_server"])) {
|
|
$queryServer = mysqli_prepare(
|
|
$con,
|
|
"SELECT nama_server
|
|
FROM data_server
|
|
WHERE id = ?
|
|
LIMIT 1"
|
|
);
|
|
mysqli_stmt_bind_param(
|
|
$queryServer,
|
|
"s",
|
|
$promo["id_data_server"]
|
|
);
|
|
mysqli_stmt_execute($queryServer);
|
|
$resultServer =
|
|
mysqli_stmt_get_result(
|
|
$queryServer
|
|
);
|
|
$server =
|
|
mysqli_fetch_assoc(
|
|
$resultServer
|
|
);
|
|
if (!empty($server["nama_server"])) {
|
|
$namaServer =
|
|
$server["nama_server"];
|
|
}
|
|
mysqli_stmt_close($queryServer);
|
|
}
|
|
$tanggalMulaiForm = !empty(
|
|
$promo["tanggal_mulai"]
|
|
)
|
|
? date(
|
|
"Y-m-d\TH:i",
|
|
strtotime(
|
|
$promo["tanggal_mulai"]
|
|
)
|
|
)
|
|
: "";
|
|
$tanggalAkhirForm = !empty(
|
|
$promo["tanggal_akhir"]
|
|
)
|
|
? date(
|
|
"Y-m-d\TH:i",
|
|
strtotime(
|
|
$promo["tanggal_akhir"]
|
|
)
|
|
)
|
|
: "";
|
|
?>
|
|
<tr>
|
|
<td>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$namaServer,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$promo["nama"] ?? "-",
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</td>
|
|
<td class="text-center">
|
|
<?php
|
|
$namaGambar = basename(
|
|
$promo["gambar"] ?? ""
|
|
);
|
|
$gambarPath =
|
|
$uploadDirectory .
|
|
$namaGambar;
|
|
if (
|
|
!empty($namaGambar) &&
|
|
file_exists($gambarPath)
|
|
) {
|
|
?>
|
|
<a
|
|
href="<?php
|
|
echo htmlspecialchars(
|
|
$gambarPath,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
target="_blank"
|
|
>
|
|
<img
|
|
src="<?php
|
|
echo htmlspecialchars(
|
|
$gambarPath,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
alt="Gambar promo"
|
|
class="img-thumbnail"
|
|
style="
|
|
width: 80px;
|
|
height: 60px;
|
|
object-fit: cover;
|
|
"
|
|
>
|
|
</a>
|
|
<?php } else { ?>
|
|
<span
|
|
class="badge badge-secondary"
|
|
>
|
|
Tidak ada
|
|
</span>
|
|
<?php } ?>
|
|
</td>
|
|
<td style="min-width: 220px;">
|
|
<?php
|
|
$deskripsi =
|
|
$promo["deskripsi"] ?? "";
|
|
echo !empty($deskripsi)
|
|
? nl2br(
|
|
htmlspecialchars(
|
|
$deskripsi,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
)
|
|
)
|
|
: "-";
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$promo["send_on"] ?? "-",
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
echo !empty(
|
|
$promo["tanggal_mulai"]
|
|
)
|
|
? date(
|
|
"d-m-Y H:i",
|
|
strtotime(
|
|
$promo[
|
|
"tanggal_mulai"
|
|
]
|
|
)
|
|
)
|
|
: "-";
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
echo !empty(
|
|
$promo["tanggal_akhir"]
|
|
)
|
|
? date(
|
|
"d-m-Y H:i",
|
|
strtotime(
|
|
$promo[
|
|
"tanggal_akhir"
|
|
]
|
|
)
|
|
)
|
|
: "-";
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
$statusPromo =
|
|
strtolower(
|
|
$promo["status"] ?? ""
|
|
);
|
|
if ($statusPromo === "aktif") {
|
|
?>
|
|
<span
|
|
class="badge badge-success"
|
|
>
|
|
Aktif
|
|
</span>
|
|
<?php } else { ?>
|
|
<span
|
|
class="badge badge-secondary"
|
|
>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$promo["status"]
|
|
?: "Nonaktif",
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</span>
|
|
<?php } ?>
|
|
</td>
|
|
<td style="white-space: nowrap;">
|
|
<a
|
|
type="button"
|
|
class="btn btn-secondary btn-sm ml-1"
|
|
data-toggle="modal"
|
|
data-target="#modalEditPromo<?php
|
|
echo $idPromo;
|
|
?>"
|
|
>
|
|
Edit
|
|
</a>
|
|
<form
|
|
method="post"
|
|
class="d-inline"
|
|
onsubmit="return confirm('Yakin ingin menghapus promo ini?');"
|
|
>
|
|
<input
|
|
type="hidden"
|
|
name="id_promo"
|
|
value="<?php
|
|
echo $idPromo;
|
|
?>"
|
|
>
|
|
<button
|
|
type="submit"
|
|
name="hapus_promo"
|
|
class="btn btn-danger btn-sm ml-1"
|
|
>
|
|
Hapus
|
|
</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
<!-- Modal Edit Promo -->
|
|
<div
|
|
class="modal fade"
|
|
id="modalEditPromo<?php
|
|
echo $idPromo;
|
|
?>"
|
|
data-backdrop="static"
|
|
data-keyboard="false"
|
|
tabindex="-1"
|
|
aria-labelledby="modalEditPromoLabel<?php
|
|
echo $idPromo;
|
|
?>"
|
|
aria-hidden="true"
|
|
>
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<form
|
|
method="post"
|
|
enctype="multipart/form-data"
|
|
>
|
|
<input
|
|
type="hidden"
|
|
name="id_promo"
|
|
value="<?php
|
|
echo $idPromo;
|
|
?>"
|
|
>
|
|
<input
|
|
type="hidden"
|
|
name="gambar_lama"
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$namaGambar,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
>
|
|
<div
|
|
class="modal-header bg-secondary"
|
|
>
|
|
<h5
|
|
class="modal-title"
|
|
id="modalEditPromoLabel<?php
|
|
echo $idPromo;
|
|
?>"
|
|
>
|
|
Edit Pesan Promo
|
|
</h5>
|
|
<button
|
|
type="button"
|
|
class="close"
|
|
data-dismiss="modal"
|
|
aria-label="Close"
|
|
>
|
|
<span
|
|
aria-hidden="true"
|
|
>
|
|
×
|
|
</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div
|
|
class="card-body pb-0"
|
|
>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Nama Server
|
|
</label>
|
|
<select
|
|
class="form-control"
|
|
name="id_data_server"
|
|
required
|
|
>
|
|
<option
|
|
value=""
|
|
>
|
|
-- Pilih Server --
|
|
</option>
|
|
<?php
|
|
$ListEdit =
|
|
new Listdata();
|
|
$ListEdit->set_list(
|
|
"data_server",
|
|
$SqlDataWH
|
|
);
|
|
foreach (
|
|
$ListEdit->get_list()
|
|
as $key =>
|
|
$value
|
|
):
|
|
$selected =
|
|
(
|
|
(string) $value[
|
|
"id"
|
|
] ===
|
|
(string) $promo[
|
|
"id_data_server"
|
|
]
|
|
)
|
|
? "selected"
|
|
: "";
|
|
?>
|
|
<option
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$value[
|
|
"id"
|
|
],
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
<?php
|
|
echo $selected;
|
|
?>
|
|
>
|
|
<?php
|
|
echo htmlspecialchars(
|
|
$value[
|
|
"nama_server"
|
|
],
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>
|
|
</option>
|
|
<?php
|
|
endforeach;
|
|
?>
|
|
</select>
|
|
</div>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Pesan
|
|
</label>
|
|
<textarea
|
|
class="form-control"
|
|
name="deskripsi"
|
|
rows="4"
|
|
><?php
|
|
echo htmlspecialchars(
|
|
$promo[
|
|
"deskripsi"
|
|
] ?? "",
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?></textarea>
|
|
</div>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Gambar Promo
|
|
</label>
|
|
<?php
|
|
if (
|
|
!empty(
|
|
$namaGambar
|
|
) &&
|
|
file_exists(
|
|
$gambarPath
|
|
)
|
|
) {
|
|
?>
|
|
<div
|
|
class="mb-2"
|
|
>
|
|
<img
|
|
src="<?php
|
|
echo htmlspecialchars(
|
|
$gambarPath,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
alt="Gambar promo"
|
|
class="img-thumbnail"
|
|
style="
|
|
width: 150px;
|
|
height: 100px;
|
|
object-fit: cover;
|
|
"
|
|
>
|
|
</div>
|
|
<?php } ?>
|
|
<div
|
|
class="custom-file"
|
|
>
|
|
<input
|
|
type="file"
|
|
class="custom-file-input"
|
|
id="gambarEdit<?php
|
|
echo $idPromo;
|
|
?>"
|
|
name="gambar"
|
|
accept=".jpg,.jpeg,.png,.webp"
|
|
>
|
|
<label
|
|
class="custom-file-label"
|
|
for="gambarEdit<?php
|
|
echo $idPromo;
|
|
?>"
|
|
>
|
|
Pilih gambar baru
|
|
</label>
|
|
</div>
|
|
<small
|
|
class="text-muted"
|
|
>
|
|
Kosongkan jika gambar
|
|
tidak ingin diganti.
|
|
</small>
|
|
</div>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Nama Promo
|
|
</label>
|
|
<input
|
|
type="text"
|
|
class="form-control"
|
|
name="nama"
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$promo[
|
|
"nama"
|
|
] ?? "",
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
required
|
|
>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label>Kirim Saat Setelah</label>
|
|
|
|
<select
|
|
class="form-control"
|
|
name="send_on"
|
|
required
|
|
>
|
|
<option value="">
|
|
-- Pilih Server --
|
|
</option>
|
|
<?php
|
|
$List = new Listdata();
|
|
$List->set_list(
|
|
"master_template_pesan", ' GROUP BY nama'
|
|
);
|
|
foreach (
|
|
$List->get_list()
|
|
as $key => $value
|
|
):
|
|
?>
|
|
<option value="<?= $value['nama'] ?>" <?= ($promo["send_on"] == $value["nama"]) ? "selected" : "" ?>>
|
|
<?= $value['nama'] ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div
|
|
class="col-md-6"
|
|
>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Tanggal Mulai
|
|
</label>
|
|
<input
|
|
type="datetime-local"
|
|
class="form-control"
|
|
name="tanggal_mulai"
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$tanggalMulaiForm,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="col-md-6"
|
|
>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Tanggal Akhir
|
|
</label>
|
|
<input
|
|
type="datetime-local"
|
|
class="form-control"
|
|
name="tanggal_akhir"
|
|
value="<?php
|
|
echo htmlspecialchars(
|
|
$tanggalAkhirForm,
|
|
ENT_QUOTES,
|
|
"UTF-8"
|
|
);
|
|
?>"
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="form-group"
|
|
>
|
|
<label>
|
|
Status
|
|
</label>
|
|
<select
|
|
class="form-control"
|
|
name="status"
|
|
required
|
|
>
|
|
<option
|
|
value="Aktif"
|
|
<?php
|
|
echo (
|
|
strtolower(
|
|
$promo[
|
|
"status"
|
|
] ?? ""
|
|
) ===
|
|
"aktif"
|
|
)
|
|
? "selected"
|
|
: "";
|
|
?>
|
|
>
|
|
Aktif
|
|
</option>
|
|
<option
|
|
value="Nonaktif"
|
|
<?php
|
|
echo (
|
|
strtolower(
|
|
$promo[
|
|
"status"
|
|
] ?? ""
|
|
) !==
|
|
"aktif"
|
|
)
|
|
? "selected"
|
|
: "";
|
|
?>
|
|
>
|
|
Nonaktif
|
|
</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="modal-footer"
|
|
>
|
|
<button
|
|
type="button"
|
|
class="btn btn-secondary"
|
|
data-dismiss="modal"
|
|
>
|
|
Close
|
|
</button>
|
|
<button
|
|
type="submit"
|
|
name="edit_promo"
|
|
class="btn btn-warning"
|
|
>
|
|
Edit
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- END Modal Edit Promo -->
|
|
<?php } ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<!-- /.card-body -->
|
|
</div>
|
|
<!-- /.card -->
|
|
</div>
|
|
<!-- /.col -->
|
|
</div>
|
|
<!-- /.row -->
|
|
</div>
|
|
<!-- /.container-fluid -->
|
|
</section>
|
|
<!-- /.content -->
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
/*
|
|
* Menampilkan nama file pada Bootstrap custom-file-input.
|
|
*/
|
|
const fileInputs = document.querySelectorAll(".custom-file-input");
|
|
fileInputs.forEach(function (input) {
|
|
input.addEventListener("change", function () {
|
|
const fileName = this.files.length > 0
|
|
? this.files[0].name
|
|
: "Pilih gambar";
|
|
const label = this.nextElementSibling;
|
|
if (label) {
|
|
label.textContent = fileName;
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|