| Server IP : 173.209.174.21 / Your IP : 216.73.216.89 Web Server : Apache/2.4.58 (Ubuntu) System : Linux wcfs-server 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 User : nodor ( 1000) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/thelittlebigshow/app/admin/ |
Upload File : |
<?php
session_start();
ob_start();
require_once 'config/config.php';
require_once BASE_PATH . '/includes/auth_validate.php';
$sponsorDir = dirname(BASE_PATH) . '/images/sponsers-print/';
$sponsorOrderFile = $sponsorDir . 'sponsor-order.json';
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
if (!is_dir($sponsorDir)) {
mkdir($sponsorDir, 0755, true);
}
function cleanSponsorFileName($name)
{
$info = pathinfo($name);
$baseName = preg_replace('/[^A-Za-z0-9_-]+/', '-', $info['filename']);
$baseName = trim($baseName, '-');
if ($baseName === '') {
$baseName = 'sponsor';
}
return strtolower($baseName);
}
function getSponsorImageFiles($sponsorDir)
{
$images = array_values(array_filter(scandir($sponsorDir), function ($file) use ($sponsorDir) {
return is_file($sponsorDir . $file) && preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $file);
}));
natcasesort($images);
return array_values($images);
}
function getOrderedSponsorImages($sponsorDir, $sponsorOrderFile)
{
$images = getSponsorImageFiles($sponsorDir);
$orderedImages = [];
$savedOrder = [];
if (is_file($sponsorOrderFile)) {
$decodedOrder = json_decode(file_get_contents($sponsorOrderFile), true);
if (is_array($decodedOrder)) {
$savedOrder = $decodedOrder;
}
}
foreach ($savedOrder as $file) {
if (in_array($file, $images, true)) {
$orderedImages[] = $file;
}
}
foreach ($images as $file) {
if (!in_array($file, $orderedImages, true)) {
$orderedImages[] = $file;
}
}
return $orderedImages;
}
function saveSponsorOrder($sponsorOrderFile, $sponsorImages)
{
file_put_contents($sponsorOrderFile, json_encode(array_values($sponsorImages), JSON_PRETTY_PRINT));
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['upload_sponsors'])) {
$uploaded = 0;
$uploadedFiles = [];
$errors = [];
if (isset($_FILES['sponsor_images'])) {
foreach ($_FILES['sponsor_images']['name'] as $index => $originalName) {
if ($_FILES['sponsor_images']['error'][$index] === UPLOAD_ERR_NO_FILE) {
continue;
}
if ($_FILES['sponsor_images']['error'][$index] !== UPLOAD_ERR_OK) {
$errors[] = $originalName . ' could not be uploaded.';
continue;
}
$extension = strtolower(pathinfo($originalName, PATHINFO_EXTENSION));
if (!in_array($extension, $allowedExtensions)) {
$errors[] = $originalName . ' is not a supported image type.';
continue;
}
$imageInfo = getimagesize($_FILES['sponsor_images']['tmp_name'][$index]);
if ($imageInfo === false) {
$errors[] = $originalName . ' is not a valid image.';
continue;
}
$safeName = cleanSponsorFileName($originalName);
$fileName = $safeName . '.' . $extension;
$destination = $sponsorDir . $fileName;
$counter = 1;
while (file_exists($destination)) {
$fileName = $safeName . '-' . $counter . '.' . $extension;
$destination = $sponsorDir . $fileName;
$counter++;
}
if (move_uploaded_file($_FILES['sponsor_images']['tmp_name'][$index], $destination)) {
$uploaded++;
$uploadedFiles[] = $fileName;
} else {
$errors[] = $originalName . ' could not be saved.';
}
}
}
if ($uploaded > 0) {
$currentOrder = getOrderedSponsorImages($sponsorDir, $sponsorOrderFile);
foreach ($uploadedFiles as $fileName) {
if (!in_array($fileName, $currentOrder, true)) {
$currentOrder[] = $fileName;
}
}
saveSponsorOrder($sponsorOrderFile, $currentOrder);
$_SESSION['success'] = $uploaded . ' sponsor image(s) uploaded.';
}
if (count($errors) > 0) {
$_SESSION['failure'] = implode(' ', $errors);
}
header('Location: sponsors.php');
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_sponsor'])) {
$fileName = basename($_POST['file_name'] ?? '');
$filePath = $sponsorDir . $fileName;
if ($fileName !== '' && is_file($filePath) && preg_match('/\.(jpg|jpeg|png|gif|webp)$/i', $fileName)) {
unlink($filePath);
$currentOrder = array_values(array_filter(getOrderedSponsorImages($sponsorDir, $sponsorOrderFile), function ($image) use ($fileName) {
return $image !== $fileName;
}));
saveSponsorOrder($sponsorOrderFile, $currentOrder);
$_SESSION['success'] = 'Sponsor image deleted.';
} else {
$_SESSION['failure'] = 'Sponsor image could not be deleted.';
}
header('Location: sponsors.php');
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['move_sponsor'])) {
$fileName = basename($_POST['file_name'] ?? '');
$direction = $_POST['direction'] ?? '';
$currentOrder = getOrderedSponsorImages($sponsorDir, $sponsorOrderFile);
$currentIndex = array_search($fileName, $currentOrder, true);
if ($currentIndex !== false) {
$targetIndex = $direction === 'up' ? $currentIndex - 1 : $currentIndex + 1;
if (isset($currentOrder[$targetIndex])) {
$swap = $currentOrder[$targetIndex];
$currentOrder[$targetIndex] = $currentOrder[$currentIndex];
$currentOrder[$currentIndex] = $swap;
saveSponsorOrder($sponsorOrderFile, $currentOrder);
$_SESSION['success'] = 'Sponsor order updated.';
}
}
header('Location: sponsors.php');
exit;
}
$sponsorImages = getOrderedSponsorImages($sponsorDir, $sponsorOrderFile);
include BASE_PATH . '/includes/header.php';
?>
<style>
.sponsor-grid {
margin-top: 24px;
}
.sponsor-item {
align-items: center;
border: 1px solid #ddd;
border-radius: 6px;
display: grid;
gap: 12px;
grid-template-columns: 70px 150px 1fr 190px;
margin-bottom: 12px;
padding: 12px;
}
.sponsor-item img {
height: 80px;
max-width: 100%;
object-fit: contain;
}
.sponsor-file {
font-size: 12px;
margin: 10px 0;
word-break: break-word;
}
.sponsor-actions {
display: flex;
gap: 6px;
justify-content: flex-end;
}
</style>
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Sponsor Images</h1>
</div>
</div>
<?php include BASE_PATH . '/includes/flash_messages.php'; ?>
<form action="" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for="sponsor_images">Upload Sponsor Images</label>
<input type="file" id="sponsor_images" name="sponsor_images[]" class="form-control" accept="image/*" multiple>
</div>
<button type="submit" name="upload_sponsors" class="btn btn-info">Upload Images</button>
</form>
<div class="sponsor-grid">
<?php if (count($sponsorImages) > 0): ?>
<?php foreach ($sponsorImages as $index => $image): ?>
<div class="sponsor-item">
<div><strong><?php echo $index + 1; ?></strong></div>
<img src="../images/sponsers-print/<?php echo htmlspecialchars(rawurlencode($image)); ?>" alt="">
<div class="sponsor-file"><?php echo htmlspecialchars($image); ?></div>
<div class="sponsor-actions">
<form action="" method="POST">
<input type="hidden" name="file_name" value="<?php echo htmlspecialchars($image); ?>">
<input type="hidden" name="direction" value="up">
<button type="submit" name="move_sponsor" class="btn btn-default btn-sm" <?php echo $index === 0 ? 'disabled' : ''; ?>>Up</button>
</form>
<form action="" method="POST">
<input type="hidden" name="file_name" value="<?php echo htmlspecialchars($image); ?>">
<input type="hidden" name="direction" value="down">
<button type="submit" name="move_sponsor" class="btn btn-default btn-sm" <?php echo $index === count($sponsorImages) - 1 ? 'disabled' : ''; ?>>Down</button>
</form>
<form action="" method="POST" onsubmit="return confirm('Delete this sponsor image?');">
<input type="hidden" name="file_name" value="<?php echo htmlspecialchars($image); ?>">
<button type="submit" name="delete_sponsor" class="btn btn-danger btn-sm">Delete</button>
</form>
</div>
</div>
<?php endforeach; ?>
<?php else: ?>
<p>No sponsor images uploaded yet.</p>
<?php endif; ?>
</div>
</div>
<?php include BASE_PATH . '/includes/footer.php'; ?>