| 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/hotel_jservices_cz/ |
Upload File : |
<?php
// ============================================================
// Hotel DEMO — cron_hodnoceni.php
// Odesílá žádost o hodnocení hostům po odjezdu
// Spouštět každých 15 minut přes DSM Plánovač úloh:
// php /path/to/cron_hodnoceni.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';
if (php_sapi_name() !== 'cli' && !defined('CRON_DEBUG')) {
http_response_code(403);
exit('Přístup odepřen.');
}
$zapnuto = nastaveni('hodnoceni_zapnuto', '1');
if ($zapnuto !== '1') {
echo '[' . date('Y-m-d H:i:s') . '] Žádosti o hodnocení jsou vypnuty v nastavení.' . PHP_EOL;
exit;
}
$hodin_po = (int)nastaveni('hodnoceni_hodin_po', '24');
// Okno: [teď - hodin_po - 15 min, teď - hodin_po]
$okno_od = date('Y-m-d H:i:s', time() - $hodin_po * 3600 - 900);
$okno_do = date('Y-m-d H:i:s', time() - $hodin_po * 3600);
$checkout_vychozi = nastaveni('checkout_cas', '10:00');
$rezervace = db_rows(
"SELECT r.id, r.jmeno, r.prijmeni, r.email, r.jazyk,
r.datum_odjezdu, r.checkout_cas, r.token_zmena
FROM rezervace r
WHERE r.stav = 'potvrzena'
AND r.hodnoceni_zadost_odeslana = 0
AND NOT EXISTS (SELECT 1 FROM hodnoceni h WHERE h.rezervace_id = r.id)
AND CONCAT(r.datum_odjezdu, ' ', COALESCE(r.checkout_cas, ?))
BETWEEN ? AND ?",
[$checkout_vychozi, $okno_od, $okno_do]
);
$odeslano = 0;
$chyby = 0;
foreach ($rezervace as $rez) {
try {
$html = email_zadost_hodnoceni($rez);
$ok = send_mail(
$rez['email'],
$rez['jmeno'] . ' ' . $rez['prijmeni'],
_email_t('hodnoceni_predmet', $rez['jazyk'] ?? 'cs') . ' — ' . hotel_nazev(),
$html
);
if ($ok) {
db_query(
'UPDATE rezervace SET hodnoceni_zadost_odeslana = 1 WHERE id = ?',
[$rez['id']]
);
$odeslano++;
echo '[' . date('Y-m-d H:i:s') . '] Žádost o hodnocení 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') . '] Hodnocení dokončeno.'
. ' Odesláno: ' . $odeslano . ', Chyby: ' . $chyby . PHP_EOL;