if (isset($_POST['start_time_hrs']) && isset($_POST['start_time_mins'])) { $start_time = $_POST['start_time_hrs'] . ":" . $_POST['start_time_mins']; } else { $start_time = $_GET['time_to_show']; } 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; }
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; }
if (!$mpb) { $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."; }
} // stop alle roeigraden in een array $query = "SELECT Roeigraad FROM roeigraden WHERE ToonInBIS=1 ORDER BY ID;"; $result = mysql_query($query); if (!$result) { die("Ophalen van roeigraden mislukt." . mysql_error()); } $grade_array = array(); while ($row = mysql_fetch_assoc($result)) { array_push($grade_array, $row['Roeigraad']); } $date_to_show = 0; if (isset($_GET['date_to_show'])) { $date_to_show = $_GET['date_to_show']; } if ($date_to_show == 0 || !CheckTheDate($date_to_show)) { // altijd sanity check $date_to_show = $today; } $date_to_show_db = DateToDBdate($date_to_show); $start_hrs_to_show = -1; $start_mins_to_show = -1; if (isset($_GET['start_time_to_show'])) { $start_time_to_show = $_GET['start_time_to_show']; $start_time_fields = explode(":", $start_time_to_show); $start_hrs_to_show = $start_time_fields[0]; $start_mins_to_show = $start_time_fields[1]; } if ($start_hrs_to_show == -1 || $start_mins_to_show == -1 || !($start_hrs_to_show >= 6 && $start_hrs_to_show <= 23) || !($start_mins_to_show == 0 || $start_mins_to_show == 15 || $start_mins_to_show == 30 || $start_mins_to_show == 45)) { // sanity check if ($date_to_show == $today) {