| Server IP : 193.86.120.172 / Your IP : 216.73.216.67 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/hotel_jservices_cz/ |
Upload File : |
<?php
// ============================================================
// Hotel DEMO — cron_pripominky.php
// Odesílá připomínku hostům před příjezdem
// Spouštět každých 15 minut přes DSM Plánovač úloh:
// php /path/to/cron_pripominky.php >> /var/log/hotel_cron.log 2>&1
// ============================================================
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/mailer.php';
// Spustit pouze přes CLI
if (php_sapi_name() !== 'cli' && !defined('CRON_DEBUG')) {
http_response_code(403);
exit('Přístup odepřen.');
}
$zapnuta = nastaveni('pripominka_zapnuta', '1');
if ($zapnuta !== '1') {
echo '[' . date('Y-m-d H:i:s') . '] Připomínky jsou vypnuty v nastavení.' . PHP_EOL;
exit;
}
$hodin = (int)nastaveni('pripominka_hodin', '48');
// Okno: [teď + hodin, teď + hodin + 15 min]
$okno_od = date('Y-m-d H:i:s', time() + $hodin * 3600);
$okno_do = date('Y-m-d H:i:s', time() + $hodin * 3600 + 900); // +15 min
// Najít rezervace jejichž check-in čas padne do okna
// Pokud nemají vlastní checkin_cas, použijeme výchozí z nastavení
$checkin_vychozi = nastaveni('checkin_cas', '14:00');
$rezervace = db_rows(
"SELECT r.id, r.jmeno, r.prijmeni, r.email, r.jazyk,
r.datum_prijezdu, r.checkin_cas,
p.cislo AS pokoj_cislo,
COALESCE(p.nazev, CONCAT('Pokoj ', p.cislo)) AS pokoj_nazev,
t.nazev AS typ_nazev
FROM rezervace r
JOIN pokoje p ON p.id = r.pokoj_id
JOIN typy_pokoju t ON t.id = p.typ_id
WHERE r.stav = 'potvrzena'
AND r.pripominka_odeslana = 0
AND CONCAT(r.datum_prijezdu, ' ', COALESCE(r.checkin_cas, ?))
BETWEEN ? AND ?",
[$checkin_vychozi, $okno_od, $okno_do]
);
$odeslano = 0;
$chyby = 0;
foreach ($rezervace as $rez) {
try {
$html = email_pripominka($rez);
$ok = send_mail(
$rez['email'],
$rez['jmeno'] . ' ' . $rez['prijmeni'],
_email_t('pripominka_predmet', $rez['jazyk'] ?? 'cs') . ' — ' . hotel_nazev(),
$html
);
if ($ok) {
db_query(
'UPDATE rezervace SET pripominka_odeslana = 1 WHERE id = ?',
[$rez['id']]
);
$odeslano++;
echo '[' . date('Y-m-d H:i:s') . '] Připomínka odeslána: rezervace #' . $rez['id']
. ' → ' . $rez['email'] . PHP_EOL;
} else {
throw new \RuntimeException('send_mail vrátil false');
}
} catch (\Exception $e) {
$chyby++;
echo '[' . date('Y-m-d H:i:s') . '] CHYBA rezervace #' . $rez['id']
. ': ' . $e->getMessage() . PHP_EOL;
}
}
echo '[' . date('Y-m-d H:i:s') . '] Připomínky dokončeny.'
. ' Odesláno: ' . $odeslano . ', Chyby: ' . $chyby . PHP_EOL;