| Server IP : 193.86.120.172 / Your IP : 216.73.216.215 Web Server : Apache/2.4.63 (Unix) System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64 User : kubec ( 1026) PHP Version : 8.2.28 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /volume1/web/hotellesnizatisi_cz/new/ |
Upload File : |
<?php
require_once __DIR__ . '/includes/auth.php';
$user = require_section('fotky');
require_once __DIR__ . '/includes/layout.php';
require_once __DIR__ . '/includes/fotky.php';
$slugMap = ['pokoje' => 'typ_pokoje', 'hotel' => 'hotel', 'okoli' => 'okoli', 'restaurace' => 'restaurace'];
$kategorieSlug = $_POST['kategorie'] ?? 'pokoje';
if (!isset($slugMap[$kategorieSlug])) {
$kategorieSlug = 'pokoje';
}
$kategorieDb = $slugMap[$kategorieSlug];
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || empty($_FILES['foto'])) {
header('Location: fotky.php?kategorie=' . urlencode($kategorieSlug));
exit;
}
// $_FILES['foto'] může být jeden soubor, nebo (díky name="foto[]" + multiple)
// pole více souborů ve "sloupcovém" PHP formátu — převedeme na jednoduché pole.
$raw = $_FILES['foto'];
$files = [];
if (is_array($raw['name'])) {
foreach ($raw['name'] as $i => $name) {
if ($name === '') {
continue; // prázdný slot
}
$files[] = [
'name' => $raw['name'][$i],
'type' => $raw['type'][$i],
'tmp_name' => $raw['tmp_name'][$i],
'error' => $raw['error'][$i],
'size' => $raw['size'][$i],
];
}
} else {
$files[] = $raw;
}
if (!$files) {
set_flash('error', 'Nebyla vybrána žádná fotka.');
header('Location: fotky.php?kategorie=' . urlencode($kategorieSlug));
exit;
}
$uploadDir = __DIR__ . '/uploads/fotky';
if (!is_dir($uploadDir)) {
@mkdir($uploadDir, 0775, true);
}
if (!is_dir($uploadDir) || !is_writable($uploadDir)) {
set_flash('error', 'Složka pro fotky neexistuje nebo do ní nelze zapisovat — vytvořte prosím "uploads/fotky" ručně přes File Station.');
header('Location: fotky.php?kategorie=' . urlencode($kategorieSlug));
exit;
}
$stmt = db()->prepare('SELECT COALESCE(MAX(poradi), 0) FROM web_fotky WHERE kategorie = ? AND referencni_id IS NULL');
$stmt->execute([$kategorieDb]);
$nextPoradi = (int) $stmt->fetchColumn() + 1;
$insert = db()->prepare('
INSERT INTO web_fotky (kategorie, referencni_id, nazev_souboru, poradi, hlavni, aktivni, nahrano_kym)
VALUES (?, NULL, ?, ?, 0, 1, ?)
');
$ok = 0;
$failed = [];
foreach ($files as $file) {
if ($file['error'] !== UPLOAD_ERR_OK) {
$failed[] = $file['name'] . ' (chyba při nahrávání)';
continue;
}
if ($file['size'] > 15 * 1024 * 1024) {
$failed[] = $file['name'] . ' (větší než 15 MB)';
continue;
}
$filename = process_uploaded_image($file, $uploadDir);
if (!$filename) {
$failed[] = $file['name'] . ' (nepodporovaný formát)';
continue;
}
$insert->execute([$kategorieDb, $filename, $nextPoradi, $user['id']]);
$nextPoradi++;
$ok++;
}
if ($ok && !$failed) {
set_flash('success', $ok === 1 ? 'Fotka byla nahrána.' : $ok . ' fotek bylo nahráno.');
} elseif ($ok && $failed) {
set_flash('success', $ok . ' fotek bylo nahráno. Nepodařilo se: ' . implode(', ', $failed));
} else {
set_flash('error', 'Žádnou fotku se nepodařilo nahrát — ' . implode(', ', $failed));
}
header('Location: fotky.php?kategorie=' . urlencode($kategorieSlug));
exit;