} if (isset($_POST['end_time_hrs']) && isset($_POST['end_time_mins'])) { $end_time = $_POST['end_time_hrs'] . ":" . $_POST['end_time_mins']; } } // sanity check op boot if (!is_numeric($boat_id) || $boat_id < 0) { echo "<p>Deze boot bestaat niet.</p>"; exit; } // sanity check op datum if (!CheckTheDate($date)) { echo "<p>Datum (" . $date . ") klopt niet.</p>"; exit; } else { $date_db = DateToDBdate($date); } // indien niet aanwezig, tijden alvast invullen met defaults: if (!$start_time) { if ($date == $today) { if ($thehour_q < 6) { $start_time_hrs = 6; $start_time_mins = 0; } else { $start_time_hrs = $thehour_q; $start_time_mins = $theminute_quarts; } } else { $start_time_hrs = 9; $start_time_mins = 0; }
// HTTP 1.0. header("Expires: 0"); // Proxies. include_once "include_globalVars.php"; include_once "include_helperMethods.php"; setlocale(LC_TIME, 'nl_NL'); date_default_timezone_set('Europe/Amsterdam'); $link = mysql_connect($database_host, $database_user, $database_pass); if (!mysql_select_db($database, $link)) { echo "Fout: database niet gevonden.<br>"; exit; } if (isset($_GET['date_to_show'])) { $date_to_show = $_GET['date_to_show']; } $date_to_show_db = DateToDBdate($date_to_show); if (isset($_GET['start_hrs_to_show'])) { $start_hrs_to_show = $_GET['start_hrs_to_show']; } if (isset($_GET['start_mins_to_show'])) { $start_mins_to_show = $_GET['start_mins_to_show']; } if ($start_mins_to_show == 0) { $start_mins_to_show = "00"; } $start_time_to_show = $start_hrs_to_show . ":" . $start_mins_to_show; $start_block = TimeToBlocks($start_time_to_show); // Sunset in Groningen $sunset = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, 53.2, 6.6, 90, 1); $rounded_sunset = floor($sunset / (15 * 60)) * (15 * 60); $proper_sunset = date('H:i', $rounded_sunset);
function makeReservation($id, $boat_id, $name, $team_name, $email, $mpb, $date, $start_time_hrs, $start_time_mins, $end_time_hrs, $end_time_mins, $ergo_lo = 0, $ergo_hi = 0) { global $database_host; global $database_user; global $database_pass; global $database; global $opzoektabel; global $koudwaterprotocol; global $today_db; global $thehour; global $theminute; global $themonth; $NR_OF_CONCEPTS = 8; // LET OP: aanpassen als het aantal Concept-ergo's verandert! (ivm blokinschrijving) $bisdblink = mysql_connect($database_host, $database_user, $database_pass); if (!mysql_select_db($database, $bisdblink)) { $messages[] = "Fout: database niet gevonden."; $returnArray = array("success" => false, "messages" => $messages); return $returnArray; } $messages = array(); // check persoonsnaam if (!CheckName($name)) { $messages[] = "• U dient een geldige voor- en achternaam op te geven. Let op: de apostrof (') wordt niet geaccepteerd."; } // email is niet verplicht, maar moet wel correct zijn if ($email && !CheckEmail($email)) { $messages[] = "• U dient een geldig e-mailadres op te geven."; } // check date $date_db = 0; if (!$date || !CheckTheDate($date) || $mpb != "Societeit" && !InRange($date, 10)) { $messages[] = "• U dient een (geldige) inschrijfdatum op te geven, van vandaag tot over maximaal 10 dagen."; } else { $date_db = DateToDBdate($date); if (strtotime($date_db) < strtotime($today_db)) { $messages[] = "Een inschrijving kan niet in het verleden plaatsvinden."; } } // check time if (!is_numeric($start_time_hrs) || $start_time_hrs < 6 || $start_time_hrs > 23) { $messages[] = "Ongeldig start-uur."; } if (!is_numeric($end_time_hrs) || $end_time_hrs < 6 || $end_time_hrs > 23) { $messages[] = "Ongeldig eind-uur."; } if ($start_time_mins != "00" && $start_time_mins != "0" && $start_time_mins != "15" && $start_time_mins != "30" && $start_time_mins != "45") { $messages[] = "Ongeldige start-minuten."; } if ($end_time_mins != "00" && $end_time_mins != "0" && $end_time_mins != "15" && $end_time_mins != "30" && $end_time_mins != "45") { $messages[] = "Ongeldige eind-minuten."; } $start_time = $start_time_hrs . ":" . $start_time_mins; $end_time = $end_time_hrs . ":" . $end_time_mins; $duration = ($end_time_hrs - $start_time_hrs) * 60 + ($end_time_mins - $start_time_mins); if ($duration <= 0) { $messages[] = "De eindtijd van een inschrijving dient later dan de begintijd te zijn."; } if ($date_db == $today_db && ($start_time_hrs < $thehour || $start_time_hrs == $thehour && $start_time_mins < $theminute)) { $messages[] = "Een inschrijving kan niet in het verleden beginnen."; } // check ergo-blok if (!is_numeric($ergo_lo) || !is_numeric($ergo_hi) || $ergo_lo < 0 || $ergo_lo > $NR_OF_CONCEPTS || $ergo_hi < 0 || $ergo_hi > $NR_OF_CONCEPTS) { $messages[] = "Nummering van de Concept-ergometers klopt niet."; } $ergo_range = $ergo_hi - $ergo_lo; if ($ergo_range < 0) { $messages[] = "Het blok moet lopen van de laagst- t/m de hoogst-genummerde Concept-ergometer."; $ergo_lo = 0; $ergo_hi = 0; } // check boat if (!is_numeric($boat_id) || $boat_id == 0) { $boat = ""; $messages[] = "U heeft geen boot geselecteerd."; } else { $query_bootnaam = "SELECT Naam FROM boten WHERE ID={$boat_id};"; $result_bootnaam = mysql_query($query_bootnaam); $row_bootnaam = mysql_fetch_assoc($result_bootnaam); $boat = $row_bootnaam['Naam']; } // cat. & grade bepalen n.a.v. boot die wordt ingeschreven $query = "SELECT Roeigraad, `Type` FROM boten WHERE ID='" . $boat_id . "';"; $result = mysql_query($query); if ($result) { $row = mysql_fetch_assoc($result); $grade = $row['Roeigraad']; $type = $row['Type']; $query2 = "SELECT Categorie FROM types WHERE `Type`='" . $type . "';"; $result2 = mysql_query($query2); if ($result2) { $row2 = mysql_fetch_assoc($result2); $cat = $row2['Categorie']; } } // check op uit de vaart $query = "SELECT * \r\t\tFROM uitdevaart \r\t\tWHERE Verwijderd=0 \r\t\tAND Boot_ID='{$boat_id}' \r\t\tAND Startdatum<='{$date_db}' \r\t\tAND (Einddatum='0' OR Einddatum='0000-00-00' OR Einddatum IS NULL OR Einddatum>='{$date_db}');"; $result = mysql_query($query); if (!$result) { $messages[] = "Ophalen van uit de vaart-informatie mislukt."; } else { $rows_aff = mysql_affected_rows($bisdblink); if ($rows_aff > 0) { $messages[] = "Deze boot is op deze dag uit de vaart."; } } // check MPB // stop eerst alle MPB-gevende bestuursleden in een array $mpb_array = array(); $query = "SELECT Functie FROM bestuursleden WHERE MPB=1;"; $result = mysql_query($query); if (!$result) { $messages[] = "Ophalen van bestuursleden mislukt."; } while ($row = mysql_fetch_assoc($result)) { array_push($mpb_array, $row['Functie']); } if ($mpb != "" && !in_array($mpb, $mpb_array)) { $messages[] = "Onjuiste MPB-gever opgegeven."; } $controle = 0; if ($duration > 120) { if ($mpb == "") { $messages[] = "• U schrijft voor langer dan 2 uur in. Hiervoor is MPB benodigd."; } $controle = 1; } if (!InRange($date, 3)) { if ($mpb == "") { $messages[] = "• U schrijft meer dan 3 dagen vantevoren in. Hiervoor is MPB benodigd."; } $controle = 2; } if ($grade == "MPB") { if ($mpb == "") { $messages[] = "• U schrijft een MPB-boot in. Hiervoor is MPB benodigd."; } $controle = 3; } $action = "make"; if ($id > 0) { $action = "alter"; } // If one or more errors were made, return already if (sizeof($messages) > 0) { // $messages[] = "<strong>Uw inschrijving is mislukt vanwege de genoemde fouten</strong>"; $returnArray = array("success" => false, "messages" => $messages, "category" => $cat, "grade" => $grade, "action" => $action); return $returnArray; } $success = false; $fail_cnt = 0; for ($e = $ergo_lo; $e <= $ergo_hi; $e++) { // T.b.v. blokinschrijving ergometers (with normal reservation, ergo_lo = ergo_hi = e = 0) $fail = false; if ($e > 0) { $boat = "Concept " . $e; $query_ergonaam = "SELECT ID FROM boten WHERE Naam='" . $boat . "';"; $result_ergonaam = mysql_query($query_ergonaam); $row_ergonaam = mysql_fetch_assoc($result_ergonaam); $boat_id = $row_ergonaam['ID']; } // Check inschrijving tegen de database $query = "SELECT * FROM " . $opzoektabel . " WHERE Verwijderd=0 AND Volgnummer <> '{$id}' AND ((Begintijd >= '{$start_time}' AND Begintijd < '{$end_time}') OR (Eindtijd > '{$start_time}' AND Eindtijd <= '{$end_time}') OR (Begintijd <= '{$start_time}' AND Eindtijd >= '{$end_time}')) AND Datum = '{$date_db}' AND Boot_ID = '{$boat_id}';"; $result = mysql_query($query); if (!$result) { $messages[] = "Het controleren van uw inschrijving is mislukt."; $fail = true; } else { $rows_aff = mysql_affected_rows($bisdblink); if ($rows_aff > 0) { $messages[] = "Uw inschrijving van " . $boat . " is mislukt omdat deze conflicteert met een al bestaande inschrijving."; $fail = true; } } // Ingeval van het bewerken van een bestaande inschrijving, eerst oude uit DB verwijderen $mail_gestuurd = false; if ($id > 0 && $fail == false) { $email_to = ""; // haal gegevens niet uit form maar uit DB, om fraude te voorkomen $query2 = "SELECT Email, Boot_ID, Datum, Begintijd, Spits FROM " . $opzoektabel . " WHERE Volgnummer = " . $id . ";"; $result2 = mysql_query($query2); if ($result2) { $row = mysql_fetch_assoc($result2); $email_to = $row['Email']; $boot_id = $row['Boot_ID']; // retrieve boat name $query_bootnaam = "SELECT Naam FROM boten WHERE ID=" . $boot_id . ";"; $result_bootnaam = mysql_query($query_bootnaam); $row_bootnaam = mysql_fetch_assoc($result_bootnaam); $boot = $row_bootnaam['Naam']; // $db_datum = $row['Datum']; $date_tmp = strtotime($db_datum); $date_sh = strftime('%A %d-%m-%Y', $date_tmp); $starttijd = $row['Begintijd']; $spitsnr = $row['Spits']; if ($spitsnr > 0) { $mail_message = "Uw spitsblok van '{$boot}' op {$date_sh} vanaf " . substr($starttijd, 0, 5) . " is zojuist bevestigd."; } else { $mail_message = "Uw inschrijving van '{$boot}' op {$date_sh} vanaf " . substr($starttijd, 0, 5) . " is zojuist gewijzigd."; } } $query = "UPDATE " . $opzoektabel . " SET Verwijderd = 1 WHERE Volgnummer = " . $id . ";"; $result = mysql_query($query); if (!$result) { $messages[] = "Het verwijderen van de oude inschrijving is mislukt."; $fail = true; } else { if (SendEmail($email_to, "Wijziging of bevestiging inschrijving", $mail_message)) { $mail_gestuurd = true; } } } // Het inserten if ($fail == false) { // current (ergo) reservation is OK // inschrijving wordt ingevoerd of gewijzigd $today_db = date('Y-m-d'); $team_name = addslashes($team_name); // speciale tekens in ploegnaam "redden" $team_name = preg_replace("/\"/", "'", $team_name); // dubbele quotes omzetten naar enkele, omdat anders het tooltip-scriptje gek wordt $query = "INSERT INTO " . $opzoektabel . " (Datum, Inschrijfdatum, Begintijd, Eindtijd, Boot_ID, Pnaam, Ploegnaam, Email, MPB, Spits, Controle) VALUES ('{$date_db}', '{$today_db}', '{$start_time}', '{$end_time}', '{$boat_id}', '{$name}', \"{$team_name}\", '{$email}', '{$mpb}', '0', '{$controle}');"; $result = mysql_query($query); if (!$result) { $messages[] = "Uw inschrijving is mislukt."; } else { $success = true; $date_tmp = strtotime($date_db); $date_sh = strftime('%A %d-%m-%Y', $date_tmp); $messages[] = "Uw inschrijving van '" . $boat . "' op " . $date_sh . " van " . substr($start_time, 0, 5) . " tot " . substr($end_time, 0, 5) . " is gelukt."; if ($controle) { $messages[] = "NB: uw inschrijving is vanwege MPB gelogd en zal door het opgegeven bestuurslid worden gecontroleerd."; } if ($mail_gestuurd) { $messages[] = "NB: er is ter controle een e-mail gestuurd aan de oorspronkelijke inschrijver."; } if ($koudwaterprotocol && ($themonth < 4 || $themonth > 9) && $cat != "Ergometers en bak") { // Mind: this is the only message that contains HTML formatting $messages[] = "<strong>LET OP! Wees in de winter voorzichtig i.v.m. het koude water. Het <a href='https://www.hunze.nl/wp-content/uploads/2015/08/Koudwaterprotocol.pdf' target='_blank'>koudwater-protocol</a> geldt van 15 november - 1 mei."; } } } else { if ($e == 0) { $messages[] = "<strong>Uw inschrijving is mislukt vanwege de genoemde fouten</strong>"; } else { $fail_cnt++; } } } // end for-loop ergo_lo - ergo_hi if ($fail_cnt > 0) { $messages[] = "Let op: één of meer van de inschrijvingen in uw blok zijn mislukt."; } mysql_close($bisdblink); $returnArray = array("success" => $success, "messages" => $messages, "category" => $cat, "grade" => $grade, "action" => $action); return $returnArray; }
$fail_msg_mpb = "U dient uw functie te selecteren."; } // startdatum $startdate = $_POST['startdate']; if (CheckTheDate($startdate)) { $startdate_db = DateToDBdate($startdate); if (strtotime($startdate_db) - strtotime($today_db) < 0) { $fail_msg_startdate = "De startdatum moet op of na vandaag liggen."; } } else { $fail_msg_startdate = "U dient een geldige startdatum op te geven."; } // einddatum $enddate = $_POST['enddate']; if (CheckTheDate($enddate)) { $enddate_db = DateToDBdate($enddate); } else { $fail_msg_enddate = "U dient een geldige einddatum op te geven."; } // tijden $start_time_hrs = $_POST['start_time_hrs']; $start_time_mins = $_POST['start_time_mins']; $start_time = $start_time_hrs . ":" . $start_time_mins; $end_time_hrs = $_POST['end_time_hrs']; $end_time_mins = $_POST['end_time_mins']; $end_time = $end_time_hrs . ":" . $end_time_mins; // datum-/tijdvolgorde if (strtotime($enddate_db . ' ' . $end_time) <= strtotime($startdate_db . ' ' . $start_time)) { $fail_msg_date = "Het einde van het blok dient na het begin te liggen."; } // boot
} else { echo "<p>Schade succesvol definitief verwijderd.<br>"; echo "<a href='admin_schade.php'>Terug naar de werkstroom</a></p>"; } } if ($_POST['insert']) { $name = $_POST['name']; $boat_id = $_POST['boat_id']; $note = addslashes($_POST['note']); $feedback = addslashes($_POST['feedback']); $action = addslashes($_POST['action']); $action_holder = $_POST['action_holder']; $prio = $_POST['prio']; $real = $_POST['real']; $date_ready_sh = $_POST['date_ready_sh']; $date_ready = DateToDBdate($date_ready_sh); if ($real == 100 && $date_ready == "0000-00-00") { $date_ready = $today_db; } $repair = addslashes($_POST['repair']); $notes = addslashes($_POST['notes']); if ($id) { $query = "UPDATE `schades` SET Datum_gew='{$today_db}', Naam='{$name}', Boot_ID='{$boat_id}', Oms_lang='{$note}', Feedback='{$feedback}', Actie='{$action}', Actiehouder='{$action_holder}', Prio='{$prio}', Realisatie='{$real}', Datum_gereed='{$date_ready}', Noodrep='{$repair}', Opmerkingen='{$notes}' WHERE ID='{$id}';"; } else { $query = "INSERT INTO `schades` (Datum, Datum_gew, Naam, Boot_ID, Oms_lang, Feedback, Actie, Actiehouder, Prio, Realisatie, Datum_gereed, Noodrep, Opmerkingen) VALUES ('{$today_db}', '{$today_db}', '{$name}', '{$boat_id}', '{$note}', '{$feedback}', '{$action}', '{$action_holder}', '{$prio}', '{$real}', '{$date_ready}', '{$repair}', '{$notes}');"; } $result = mysql_query($query); if (!$result) { die("Aanmaken/bewerken schade mislukt." . mysql_error()); } else { echo "<p>Schade succesvol aangemaakt/bewerkt.<br>";