<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Sternwarte Welzheim</title>

    <!--[if IE 5]>
    <link href="css/ie5.css" rel="stylesheet" type="text/css"/>
    <![endif]-->
    <!--[if IE]>
    <style type="text/css">
        <link href="css/ie.css" rel="stylesheet"  type="text/css"/>
    </style>
    <![endif]-->

    <link href="css/jquery-ui.min.css" rel="stylesheet" type="text/css"/>
    <link href="css/sternwarte1.css" rel="stylesheet" type="text/css"/>

    <script src="javascript/jquery-1.11.0.min.js"></script>
    <script src="javascript/jquery-ui-1.10.0.custom.min.js"></script>
    <script src="javascript/sternwarte.js"></script>

</head>

<body class="thrColFixHdr">
<div id="container">
    <?php include 'header.php'; ?>
    <?php include 'navi.php'; ?>

    <div id="sidebar2">
        <?php include 'fdatum.php'; ?>
        <?php include 'himmelerg.php'; ?>
    </div>
    <div id="datenschutz"></div>

    <?php
    include 'phpmailer/dosendmail.php';

    // ---------- globale Konstanten
    $vorlauf = 24;
    $monthstoadd = '+ 1 month';
    ?>

    <?php
    // Aus den 3 Einträgen aus der 'fdatum' table ein leserliches Datum erzeugen
    // Parameter:
    // $wt -> Wochentag
    // $dat -> Datum
    // $ti -> Uhrzeit
    // Return: Datuns/Zeit-String
    function buildDate($wt,$dat,$ti) {
        $dat = preg_replace('#^(\d{4})(\d{2})(\d{2})$#', '\3.\2.\1', $dat);
        $r = substr($wt,0,2) . ", " . $dat . " " . $ti;
        return $r;
    }

    function holdasdatum($fid) {
        global $db;
        $sql_sel = "SELECT datum  FROM  fdatum1 where id = '$fid'";
        $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
        $data = $result->fetch_row()[0];
        return intval($data);
    }

    // Aus der DB aus der Table 'fdatum' den Eintrag für $fid holen
    // und als Datum/Zeit-String übergeben
    // Parameter:
    // $fid -> id des Führungsdatums in der Datenbank-Tabelle
    // Return: Datum/zeit-String
    function holDate($fid) {
        global $db;
        $sql_sel = "SELECT wtag, datum, uhrzeit  FROM  fdatum1 where id = '$fid'";
        $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
        $data = mysqli_fetch_assoc($result);
        $ret = array();
        $ret[] = $data['wtag'];
        $ret[] = $data['datum'];
        $ret[] = $data['uhrzeit'];
        $ret[] = buildDate($data['wtag'], $data['datum'], $data['uhrzeit']);
        return $ret;
    }

    // die Daten der nächsten Führungen für $monthstoadd Monate in ein Array holen
    // Parameter -
    // Retunrn: Array mit allen Werte aus der Table
    function getNextFuehrungen() {
        global $db, $vorlauf, $monthstoadd;
        $erg = array();
        $toadd = '+' . $vorlauf . 'hour';
        $dt = new DateTime($toadd);
        $datum_heute = $dt->format('Ymd');
        $enddatum = new DateTime('now');
        $enddatum->modify($monthstoadd);
        $enddatum = new DateTime('2022-03-05'); //<<<<<<<<<<<<<<<<<<<<<<
        $enddatum = $enddatum->format('Ymd');
        $sql_sel = "SELECT *  FROM  fdatum1 where datum >='$datum_heute' && datum <= '$enddatum' order by datum ASC";
        $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
        while ($row = mysqli_fetch_assoc($result)) {
            foreach ($row as $key => $value) {
                $entry[$key] = $value;
            }
            $erg[] = $entry;
        }
        return $erg;
    }

    // 'select'-Tag für die Führungen bauen
    // Paramter:
    // $fuehrungen -> Array mit den kommenden Führungen
    // Return: String mit dem HTML-Code
    function bauNextFuehrungen($fuehrungen, $maxP, $selected) {
        $r = "<label for='ftermin' class='labeltext'>" .
            "<strong>Führungsdatum</strong></label>" .
            "<select  name='ftermin' id='ftermin'>";
        foreach ($fuehrungen as $f) {
            $count = $f['count'];
            $r .= "<option value='" . $f['id'] . "'";
            if($count >= $maxP) {
                $r .= "disabled";
            }
            if($selected && ($f['id'] == $selected)) {
                $r .= ' selected="selected" ';
            }
            $r .= ">" . buildDate($f['wtag'], $f['datum'], $f['uhrzeit']);
            $r .= " &nbsp;&nbsp;&nbsp;Frei: ";
            $r .=  $maxP-$count;
            $r .= "</option>";
        }
        $r .= "</select>";
        return $r;
    }

    // Zählen, wieviele Personen zu einem Führungstermin angemeldet sind
    // Parameter:
    // $fid -> id des Führungsdatum
    // Return: Anzahl der Personen
    function getCountsPerDate($fdate) {
        global $db;
        $sql_stmt = "SELECT SUM(anzahl) AS count FROM anmeldungen WHERE fdatum='$fdate'";
        $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
        $data = mysqli_fetch_assoc($result);
        return $data['count'];
    }

    // prüfen, og der User schon eine Buchung gemacht hat
    // Geprüft wird die Email-Adresse.  Es werden nur Buchungen in
    // Zukunft geprüft.
    function isDoppelBuchung($email) {
        global $db;
        $ret = [];
        $ret['doppelt'] = false;
        $now = date('Ymd');
        $sql_stmt = "SELECT * FROM anmeldungen WHERE email = '$email' AND fdatum >= $now";
        $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
        $data = mysqli_fetch_assoc($result);
        return $data;
    }

    // die kompletten Daten eines Teilnehmers anhand der ID ais der DB holen

    ?>


    <div id="mainContent">
        <?
        // Hier werden alle notwendigen Variablen eingesammelt ------------------------
        if (isset($_POST['submit'])) {
            $stern_name = $_REQUEST['name'];
            $stern_vorname = $_REQUEST['vorname'];
            $stern_strasse = $_REQUEST['strasse'];
            $stern_ort = $_REQUEST['ort'];
            $stern_plz = $_REQUEST['plz'];
            $stern_tel = $_REQUEST['tel'];
            $stern_mail = $_REQUEST['mail'];
            $stern_teil = $_REQUEST['teil'];
            $xxx = array();
            $xxx[] =  holDate($_REQUEST['ftermin']);
            $stern_datum_date = holdasdatum($_REQUEST['ftermin']);
            $stern_datum = $xxx[0][3];
            $stern_fdlink = $_REQUEST['ftermin'];
            $stern_submit = $_REQUEST['submit'];
            $stern_actionstern = $_REQUEST['stern_actionstern'];
            $stern_remarks = $_REQUEST['remarks'];
        } else {
            $stern_name = '';
            $stern_vorname = '';
            $stern_strasse = '';
            $stern_ort = '';
            $stern_plz = '';
            $stern_tel = '';
            $stern_mail = '';
            $stern_teil = '';
            $stern_datum = '';
            $stern_datum_date = 19000101;
            $stern_submit = '';
            $stern_fdlink = '';
            $stern_actionstern = '';
            $stern_remarks = '';
        }
        // Hier werden default Werte gesetzt ------------------------
        $stern_error_msg = '';
        $stern_meldung = '';
        $stern_errors = 0;
        $andererTermin = "bitte wählen Sie einen anderen Termin";
        // ----------------------------------------------------------

        switch ($stern_actionstern) {
            case 'senden':
                // Hier wir geprüft, ob alle Felder ausgefüllt sind ------------------------
                if (trim($stern_name) == '') {
                    $stern_error_msg .= 'Bitte geben Sie Ihren Namen ein.<br />';
                    $stern_errors++;
                }
                if (trim($stern_strasse) == '') {
                    $stern_error_msg .= 'Bitte geben Sie eine Straße ein.<br />';
                    $stern_errors ++;
                }

                if (trim($stern_plz) == '') {
                    $stern_error_msg .= 'Bitte geben Sie eine Postleitzahl ein.<br />';
                    $stern_errors ++;
                }
                if (! preg_match("/^[0-9]{5}$/", $stern_plz)) {
                    $stern_error_msg .= 'Bitte geben Sie bei der Postleitzahl mindestens fünf Ziffern und keine Buchstaben ein.<br />';
                    $stern_errors ++;
                }
                if (trim($stern_ort) == '') {
                    $stern_error_msg .= 'Bitte geben Sie einen Ort ein.<br />';
                    $stern_errors ++;
                }
                if (!preg_match("/^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}/",
                    strtolower($stern_mail))) {
                    $stern_error_msg .= 'Bitte geben Sie eine gültige E-Mail-Adresse ein.<br />';
                    $stern_errors++;
                }
                $belegt = getCountsPerDate($stern_datum_date);
                $rest = $maxBesucher-$belegt;
                if((trim($stern_teil) + $belegt) > $maxBesucher) {
                    if ($rest <= 0) {
                        $stern_error_msg .= "Die Führung ist ausgebucht, $andererTermin<br />";
                    } else {
                        $stern_error_msg .= "Die Führung ist schon mit $belegt Personen belegt, es ";
                        if ($rest == 1) {
                            $stern_error_msg .= "kann nur noch 1 Person ";
                        } else {
                            $stern_error_msg .= "können höchstens noch $rest Personen ";
                        }
                        $stern_error_msg .= "angemeldet werden.<br />";
                    }
                    $stern_errors++;
                }

                $teilnehmer = isDoppelBuchung($stern_mail);
                if($teilnehmer != null) {
                    $stern_error_msg = "Die ist eine Doppelbuchung. Sie wird <strong>nicht</strong> gespeichert.<br /><br />  
                    Wenn Sie Ihre ursprünglichen Buchung ändern oder stornieren wollen, so senden Sie bitte eine Email an <a href='mailto:anmeldung@sternwarte.de'>anmeldung@sternwarte.de</a><br />
                    <p><a class='button' href='/index.php'>Abbruch</a></p>";
                    $stern_errors++;
                }

                $nun = strtotime("now");
                list($w,$d,$t,$s) = holDate($stern_fdlink);
                $fz = strtotime("$d" . "t" . substr($t,0,2) . "00");
                $dauer = ($fz - $nun) / 3600;
                if ($dauer <= $vorlauf) {
                    $stern_error_msg .= "Die Anmeldung muss <strong>spätestens</strong> $vorlauf Stunden vor Beginn der Führung erfolgen - $andererTermin.<br />";
                    $stern_errors++;
                }

                if ($stern_errors == 0) {
                    $sql_stmt = "INSERT INTO anmeldungen (name, vorname, strasse, plz, stadt, telefon, email, anzahl, fid, remarks, angemeldet, fdatum)" .
                        " values('$stern_name', '$stern_vorname', '$stern_strasse', '$stern_plz', '$stern_ort', '$stern_tel'," .
                        "'$stern_mail', '$stern_teil', '$stern_fdlink', '$stern_remarks', CURDATE(), '$stern_datum_date')";
                    $ins = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
                    $sql_stmt = "UPDATE fdatum1 SET count = count + '$stern_teil' WHERE datum = '$stern_datum_date'";
                    $ins = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));

                    $person = $stern_teil == 1 ? "Person" : "Personen";
                    $body = "\r\nName, Vorname: $stern_name, $stern_vorname \r\n" .
                        "Strasse: $stern_strasse \r\n" .
                        "Ort: $stern_plz $stern_ort \r\n" .
                        "Telefon: $stern_tel \r\n" .
                        "E-mail: $stern_mail \r\n" .
                        "Gewünschter Termin: $stern_datum \r\n" .
                        "Teilnehmerzahl: $stern_teil \r\n" .
                        "Bemerkungen: $stern_remarks \r\n";
                    $bodya = "Sehr geehrte Dame, sehr geehrter Herr, \r\n\r\n" .
                        "hiermit bestätigen wir Ihre Anmeldung zu einer Führung auf der Sternwarte Welzheim für\r\n\r\n" .
                        "$stern_vorname $stern_name am " . preg_replace("/(\d+) Uhr/","um $0",$stern_datum) . " für $stern_teil $person " .
//                        $stern_teil == 1 ? "Person" : "Personen" .
                        ".\r\n\r\n" .
                        "Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist \r\n" .
                        "und die Führung ausfällt, bitten wir Sie um eine neue Anmeldung.\r\n\r\n" .
                        "Die Hygienevorschriften sind zu beachten: die Teilnehmer müssen eine medizinische Maske,\r\n" .
			"die Mund u n d Nase bedeckt, tragen und den vorgeschriebenen Abstand halten.\r\n\r\n" .
                        "Nicht teilnehmen dürfen Personen, die in den letzten vierzehn Tagen Kontakt mit einem Coronavirus-Infizierten \r\n" .
			"hatten oder Infektionssymptome zeigen.\r\n\r\n" .
            "Sollten Sie Fragen haben oder die Anmeldung stornieren wollen, senden Sie bitte eine Email an anmeldung@sternwarte-welzheim.de \n\r\n" .
                        "Mit freundlichen Grüßen\r\n\r\n" .
                        "Beobachterteam der Sternwarte Welzheim\r\n\r\n" .
                        "www.sternwarte-welzheim.de";
                    $betreff = "Anmeldung zu einer Führung auf der Sternwarte Welzheim";
                    $betreffBeo = "Anmeldung zur Führung in Welzheim am $stern_datum";
                    mb_internal_encoding('UTF-8');
                    $betreff = mb_encode_mimeheader($betreff, 'UTF-8', 'Q');
                    // Mail an den Anfragenden
                    sendmail($betreff, $defaultabsender, $bodya, [], ['rexfue@gmail.com'], [$stern_mail]);
                    // Mail an einige BEOs und an die Liste
                    $beoliste = array(
                        //"andrea.ess@t-online.de",
                        //"sonderfuehrung@sternwarte-welzheim.de",
                        //"martin.gertz@gmx.de",
                        // "schittenhelm.klaus@gmx.de",
                        // "planetarium@stuttgart.de",
                        //"info@planetarium-stuttgart.de",
                        //"HUK@observatory-stuttgart.de",
                        "anmeldung@sternwarte-welzheim.de",
                    );
                    sendmail($betreffBeo, $defaultabsender, $body, $beoliste, [], ["rexfue@gmail.com"] );
                    $stern_meldung = "<p>Vielen Dank für Ihre Anmeldung. <br /><br />
                        Wir freuen uns über Ihren Besuch auf der Sternwarte Welzheim am<br /> 
                        <div style='text-align:center;'>" .
                            preg_replace('/(\d+) Uhr/','um $0',$stern_datum) .
                            " mit $stern_teil $person.
                        </div> <br />
                        Wir haben Ihnen die Anmelde-Bestätigung per Email zugesandt.</p>
                        <p><a class='button' href='/index.php'>Zurück</a></p>";
                    // Antwortseite
                    ?>
                    <?PHP echo $stern_meldung;
                    ?>
                    <?PHP
                    // Ende Antwortseite
                    break;
                } // Ende if ($errors == 0)
                else {
                    // Layout der Fehlermeldung
                    $stern_error_msg = '<div id="fehler">' . $stern_error_msg . '</div>';
                }
            // Wenn ein Fehler aufgetreten ist ($errors != 0), folgt jetzt der default Teil
            // d.h. das Eingabeformular wird nochmals angezeigt mit einer Fehlermeldung.
            // ----------------------------------------------------------------------------
            default:
                ?>
                <p style="text-align:center; font-size:120%;">
                    <strong>Anmeldung zu einer Führung auf der Sternwarte Welzheim</strong>
                </p>
                <p>
                    Wegen der Corona-Pandemie dürfen nur angemeldeten Personen an einer Führung in der
                    Sternwarte Welzheim teilnehmen. Bitte geben Sie unten Ihre Kontaktdaten an.
                    Nach Maßgabe der aktuellen Corona-Verordnung werden Ihre Daten vier Wochen gespeichert
                    und anschließend gelöscht.

                </p>
                <p><strong>Zur Zeit git die 2G-Regel, d.h. es haben nur Personen Zutritt, die nachweislich gegen Corona geimpft oder genesen sind.
                        Ein 2G-Zertifikat muss vorgelegt werden.</strong><br />
                    Aus diesem Grund können auch nur Kinder im schulpflichtigen Alter die Sternwarte besuchen.
                </p>
                <p>
                    An einer Führung dürfen nur maximal <?php echo $maxBesucher;?> Personen teilnehmen, damit der
                    vorgeschriebene Sicherheitsabstand eingehalten werden kann. Sollte die von
                    Ihnen ausgewählte Führung bereits ausgebucht sein, wählen Sie bitte einen anderen Termin.

                </p>
                <p>
                    Wenn Sie alle Felder ausgefüllt und abgeschickt haben (mit dem "Anmeldung senden"-Knopf),
                    erhalten Sie eine Anmeldebestätigung per e-mail. 

                <div style="text-align:center;"><strong>Ohne die mitgebrachte Anmeldebestätigung und dem Impfzertifikat erfolgt ausnahmslos
                    k e i n   Einlass.</strong></div>
                </p>
                <p>
                    Die Hygienevorschriften sind zu beachten: Jeder Teilnehmer muss eine
                    medizinische Maske, die Mund <strong>und</strong> Nase bedeckt, tragen
                   und den vorgeschriebenen Abstand einhalten.
                    Nicht teilnehmen dürfen Personen, die in den letzten vierzehn Tagen Kontakt
                    mit einem Coronavirus-Infizierten hatten oder Infektionssymptome zeigen.
                </p>
                <hr/>
                <p>Die Führungen auf der Sternwarte Welzheim finden nur bei
                    sternklarem Himmel statt. Sollte die Führung wegen des Wetters ausfallen, bitten wir
                    Sie, sich für einen neuen Termin nochmals anzumelden.
                </p>
                <p>
                    Bitte beachten Sie, dass der Weg zur Sternwarte Welzheim <strong>mit
                        Kraftfahrzeugen nicht befahren werden darf</strong>. Sie können
                    Ihre Fahrzeuge auf dem Parkplatz der Sternwarte abstellen. Von hier
                    führt ein 430 m langer Fußweg zur Sternwarte. Die Temperatur in den
                    Beobachtungskuppeln entspricht der Außentemperatur. Besonders in
                    kalten Winternächten ist warme Bekleidung und warmes Schuhwerk
                    dringend zu empfehlen.
                </p>
                <p>Die Fernrohre in den Beobachtungskuppeln sind nur über Treppen zu
                    erreichen. Es besteht leider keine Möglichkeit, Rollstühle in die
                    Kuppeln mitzunehmen. Für Kleinkinder sind Sternführungen nicht
                    geeignet.</p>
                <p>Betrieb und Arbeit auf der Sternwarte erfolgen ehrenamtlich.
                    Unterhalt und Aktivit&auml;ten auf der Sternwarte sind nur durch
                    Ihre Unterstützung m&ouml;glich. Wir bitten daher um eine ensprechende Spende.
                </p>
                <p>
                    <?PHP echo $stern_error_msg ?>
                </p>
                <strong>Anmeldung:</strong>
                <span class="textklein">(Alle Felder mit '*' müssen ausgefüllt werden)</span><br />
                <br />

                <div id="formular" class="fltrt">
                    <form action="anmeldung.php#form" method="post">

                        <?
                            echo bauNextFuehrungen(getNextFuehrungen(), $maxBesucher, $stern_fdlink);
                        ?>
                        <br />
                        <div id="unterfuedat" class="textklein">Bitte beachten Sie, dass eine
					        Anmeldung bis spätestens <? echo $vorlauf?> Stunden vor Führungsbeginn erfolgt sein muss!<br/>
                            Schon belegte Termine können nicht ausgewählt werden (sie werden grau dargestellt).</div><br/>

                        <br />

                        <label for="name" class="labeltext">Zuname *</label>
                        <input
                            type="text" maxlength="50" name="name"
                            value="<? echo $stern_name; ?>" id="name" class="textfeld200"/> <br/>

                        <label for="vorname" class="labeltext">Vorname</label>
                        <input
                            type="text" maxlength="50" name="vorname"
                            value="<? echo $stern_vorname; ?>" id="vorname" class="textfeld200"/><br/>
                        <br/>

                        <label for="strasse" class="labeltext"> Straße / Haus-Nr. *</label>
                        <input type="text" maxlength="60" name="strasse"
                               value="<? echo $stern_strasse; ?>" id="strasse" class="textfeld200"/><br/>

                        <label for="ort" class="labeltext">PLZ / Ort *</label>
                        <input
                            type="text" maxlength="5" name="plz" id="plz"
                            value="<?php echo $stern_plz; ?>" class="textfeld20"/>
                        <input
                            type="text" maxlength="60" name="ort" id="ort"
                            value="<?php echo $stern_ort; ?>" class="textfeld100"/> <br/>

                        <label
                            for="tel" class="labeltext"> Telefonnummer</label>
                        <input
                            type="text" maxlength="50" name="tel" value="<? echo $stern_tel; ?>"
                            id="tel" class="textfeld200"/> <br/>
                        <br />

                        <label for="mail" class="labeltext">E-Mail-Adresse *</label>
                        <input
                            type="text" maxlength="120" name="mail"
                            value="<? echo $stern_mail; ?>" id="mail" class="textfeld200"/><br />
                        <br />

                        <label for="teil" class="labeltext">Teilnehmerzahl *<br/> <span
                                class="textklein">(max.  <? echo $maxBesucher ?>  Personen)</span></label>
                        <input type="number" step="1" min="1" max="<? echo $maxBesucher ?>" maxlength="120"
                               name="teil" value="<? echo $stern_teil == "" ? "1" : $stern_teil; ?>" id="teil" class="textfeld20"/> <br/>
                        <br />

                        <div id="bemerk">
                            <label for="remarks" class="labeltext">Bemerkungen</label>
                            <textarea name="remarks" id="remarks" rows="2" cols="40" class="textfeld200"></textarea><br/>
                            <br />
                        </div>

                        Eine Sternführung findet nur bei <b>sternklarem</b> Wetter statt.<br/>
                        <p>
                        Sollten Sie eine Änderung oder Stornierung ihrer Anmeldung wünschen, senden Sie bitte eine E-mail an  <a href="mailto:anmeldung@sternwarte-welzheim.de">anmeldung@sternwarte-welzheim.de</a>.
                            Wenn Sie an dem gebuchten Termin verhindert sind, bitten wir Sie, rechtzeitig eine Abmeldung  zu senden.
                        </p>
                        <p>
                        <strong>Das Betreten der Sternwarte erfolgt auf eigene
                            Gefahr. Die Sternführung wird von ehrenamtlichen
                            Kräften durchgeführt. Bei Ausfall einer Führung kann kein Schadenersatz
                            geleistet werden.</strong>
                        </p>

                        <div  id="sendebutton">
                            <input type="hidden" name="stern_actionstern" value="senden">
                            <input type="submit" name="submit" value="Anmeldung senden" class="inputtext">
                        </div>
                            <button type="button" class="inputtext cancel" onclick="window.location.href='/index.php';">Abbruch</button>
                        <br /><br />
                        <p>
                            Hinweis zum Datenschutz: <a href="" id="dschu">Datenschutzerklärung</a>
                        </p>
                        <p class="lastchange">Letzte Änderungen: 2021-11-29 rxf</p>

                    </form>
                </div>
            <?
// ----------------------------------------------------------------------------
        } // Ende switch($page)
        ?>
        <!-- end #mainContent -->
    </div>
    <!-- Dieses clear-Element sollte direkt auf das #mainContent-div folgen, um das #container-div anzuweisen, alle untergeordneten Floats aufzunehmen. -->
    <br class="clearfloat"/>

    <!-- end #container -->
</div>
</body>
</html>

