so viele Einträge ab jetzt holen << $value) { $entry[$key] = $value; } $erg[] = $entry; } return $erg; } // Holen der Daten aller oder eine einzelnen BEOs // // Parameter: // $id ID des zu holenden BEOs, undefined -> alle holen // $og true: nur die, die Führung machen, sonst alle // Return: // Array mit allen BEOs function getBEOs($id, $og, $what) { global $db; if ($id != 'all') { $sql_stmt = "SELECT $what FROM beos where id='$id' order by name"; } else { if($og == 'true') { $sql_stmt = "SELECT $what FROM beos where gruppe !='' order by name"; } else { $sql_stmt = "SELECT $what FROM beos order by name"; } } $erg = array(); $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); while ($row = mysqli_fetch_assoc($result)) { foreach($row as $key => $value) { $entry[$key] = $value; } $erg[] = $entry; } return $erg; } function getOneBEO($kurz, $what) { global $db; if ($what == 'true') { $sql_stmt = "SELECT * FROM beos where name='$kurz'"; } else { $sql_stmt = "SELECT $what FROM beos where kürzel='$kurz'"; } $erg = array(); $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); $data = mysqli_fetch_assoc($result); return $data ; // while ($row = mysqli_fetch_assoc($result)) { // foreach($row as $key => $value) { // $entry[$key] = $value; // } // $erg[] = $entry; // } // return $erg; } function updateOneBEOpw($data) { global $db; $sql_stmt = "UPDATE beos SET pw='$data[pw]' where kürzel='$data[kurz]'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } // Daten eines Teilnehmers abholen // Parameter: // $id: Teilnehmer - ID // Return: // Dict mit allen Daten des Teilnehmers function getTeilnehmer($seed,$isid,$withdate) { global $db; $today = date('Ymd'); $erg = array(); $entry = array(); if ($seed == -1) { $sql_stmt = "SELECT email, fid, id, anzahl FROM anmeldungen WHERE email != '-'"; } else if($isid) { $sql_stmt = "SELECT * FROM anmeldungen WHERE id='$seed'"; } else { if ($withdate) { $sql_stmt = "SELECT * FROM anmeldungen WHERE email='$seed' AND fdatum >= '$today'"; } else { $sql_stmt = "SELECT * FROM anmeldungen WHERE email='$seed'"; } } $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); while ($row = mysqli_fetch_assoc($result)) { foreach ($row as $key => $value) { $entry[$key] = $value; } $erg[] = $entry; } return $erg; } // Daten aller Teilnehmer ab eines Führungsdatumns abholen // Parameter: // $fid: Führungsdatum, ab dem die Info geholt wirdTeilnehmer - ID // Return: // Dict mit allen Daten des Teilnehmers function getAllTeilnehmer($fdatum) { global $db; $erg = array(); $entry = array(); $sql_stmt = "SELECT * FROM anmeldungen WHERE fdatum>='$fdatum' ORDER BY fid ASC"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); while ($row = mysqli_fetch_assoc($result)) { foreach ($row as $key => $value) { $entry[$key] = $value; } $erg[] = $entry; } return $erg; } // die Daten der Führungen in dem Bereich start - end // in ein Array als ISO8601 holen // Parameter // $start -> ab diesem Datum // $end -> bis zu diesem Datum // Retunrn: // Array mit den Daten in ISO8601 function getFuehrungen($start, $end) { global $db; $erg = array(); $sql_sel = "SELECT * FROM fdatum1 where datum >= '$start' AND datum <= '$end' 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; } // die Daten der nächsten $soviel Führungen in ein Array holen // Parameter // $soviel -> so viele Einträge ab jetzt holen // Retunrn: // Array mit allen Werten aus der Table function getNextFuehrungen($soviel, $fid) { global $db; $erg = array(); $datum_heute = date("Ymd",strtotime("-1 days")); if ($fid != 0) { $sql_sel = "SELECT id, wtag, datum, uhrzeit FROM fdatum where id >= $fid order by datum ASC LIMIT $soviel"; } else { $sql_sel = "SELECT id, wtag, datum, uhrzeit FROM fdatum where datum >='$datum_heute' order by datum ASC LIMIT $soviel"; } $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db)); while ($row = mysqli_fetch_row($result)) { $entry = array(); $entry['fid'] = $row[0]; $entry['weekday'] = $row[1]; $entry['date'] = $row[2]; $entry['time'] = $row[3]; $erg[] = $entry; } return $erg; } function updateTeilnehmer_fdate($id, $fdatum, $fid) { global $db; $sql_stmt = "UPDATE anmeldungen SET fdatum=$fdatum,fid=$fid where id=$id"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } function updateentries($nr,$val,$field) { global $db; $result = false; for ($i = 0; $i < count($nr); $i++) { $sql_stmt = "UPDATE anmeldungen SET $field=$val[0] where id=$nr[$i]"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); } return $result; } function delCalentry($id) { global $db; $sql_stmt = "DELETE FROM kalender WHERE id='$id'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } function deleteEntry($id) { global $db; $sql_stmt = "DELETE FROM anmeldungen WHERE id='$id'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } // Zählen, wieviele Personen zu einem Führungstermin angemeldet sind // Parameter: // $fid -> id des Führungsdatum // Return: Anzahl der Personen function getCountsPerDate($fid) { global $db; $sql_stmt = "SELECT SUM(anzahl) AS count FROM anmeldungen WHERE fid='$fid'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); $data = mysqli_fetch_assoc($result); return $data['count'] ; } // Zählen, wieviele Personen zu einem Führungstermin angemeldet sind // Parameter: // $date -> Datum der Führung (YYYMDD) // Return: Anzahl der Personen function getCountsPerDatefromDate($date) { global $db; $sql_stmt = "SELECT SUM(anzahl) AS count FROM anmeldungen WHERE fdatum='$date'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); $data = mysqli_fetch_assoc($result); return $data['count']; } // aus dem Datum (yyyymmdd) die fid aus der Tabelle holen function getfid($datum) { global $db; $sql_stmt = "SELECT * FROM fdatum1 WHERE datum >= $datum LIMIT 1"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); $data = mysqli_fetch_assoc($result); return $data; } // aus der fdatum-Tabelle die Details zur übergeben ID holen function getOneDate($id) { global $db; $sql_stmt = "SELECT * FROM fdatum1 WHERE id='$id'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); $data = mysqli_fetch_assoc($result); return $data; } function insertteilnehmer($data) { global $db; $name = $data['name']; $vorname = $data['vorname']; $strasse = $data['strasse']; $plz = intval($data['plz']); $stadt = $data['stadt']; $telefon = $data['telefon']; $email = $data['email']; $anzahl = intval($data['anzahl']); $remarks = $data['remarks']; $fid = intval($data['fid']); $sql_stmt = "INSERT INTO anmeldungen (name,vorname,strasse,plz,stadt,telefon,email,anzahl,remarks,fid,angemeldet) " . "VALUES ('$name','$vorname','$strasse','$plz','$stadt','$telefon','$email','$anzahl','$remarks','$fid', CURDATE())"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } function updateteilnehmer($data, $id) { global $db; $name = $data['name']; $vorname = $data['vorname']; $strasse = $data['strasse']; $plz = $data['plz']; $stadt = $data['stadt']; $telefon = $data['telefon']; $email = $data['email']; $anzahl = $data['anzahl']; $remarks = $data['remarks']; $fid = $data['fid']; $sql_stmt = "UPDATE anmeldungen SET " . "name='$name', vorname='$vorname', strasse='$strasse', plz='$plz', stadt='$stadt', " . "telefon='$telefon', anzahl='$anzahl', remarks='$remarks', angemeldet=CURDATE() WHERE id='$id'"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } // Email raussenden function sendConfirmation($subject, $to, $body) { mb_internal_encoding('UTF-8'); $subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q'); $absender = "noreply@sternwarte-welzheim.de"; $headers = array(); $headers[] = "MIME-Version: 1.0"; $headers[] = "Content-type: text/plain; charset=utf-8"; $headers[] = "From: {$absender}"; $headers[] = "X-Mailer: PHP/" . phpversion(); $headers[] = "Reply-To: {$absender}"; mail($to, $subject, $body, implode("\r\n", $headers),"-f noreply@sternwarte-welzheim.de"); } // Email raussenden function sendInfoMail($subject, $to, $body) { mb_internal_encoding('UTF-8'); $subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q'); $absender = "noreply@sternwarte-welzheim.de"; $headers = array(); $headers[] = "MIME-Version: 1.0"; $headers[] = "Content-type: text/html; charset=utf-8"; $headers[] = "From: {$absender}"; $headers[] = "X-Mailer: PHP/" . phpversion(); $headers[] = "Reply-To: {$absender}"; mail($to, $subject, $body, implode("\r\n", $headers),"-f noreply@sternwarte-welzheim.de"); } // Führungsdaten eintragen (für kalender) function putFdates($data) { global $db; foreach ($data as $d) { $start = $d['start']; $grp = $d['group']; $sql_stmt = "INSERT IGNORE INTO fdates (dateTime, grp)" . "VALUES ('$start','$grp')"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); } return $result; } // die Daten der Führungen (fdatum) in dem Bereich start - end // in ein Array als ISO8601 holen // Parameter // $start -> ab diesem Datum // $end -> bis zu diesem Datum // Return: // Array mit den Daten function getFdates($start, $end) { global $db; $erg = array(); $s = date('Ymd', strtotime($start)); $e = date('Ymd', strtotime($end)); $sql_sel = "SELECT * FROM fdatum1 where datum >= '$s' AND datum <= '$e'"; $result = mysqli_query($db, $sql_sel) or die(mysqli_error($db)); while ($row = mysqli_fetch_row($result)) { $entry = array(); $entry['start'] = $row[2]; $entry['uhr'] = substr($row[3],0,2); $entry['title'] = $row[5]; $entry['count'] = getCountsPerDatefromDate($row[2]); $erg[] = $entry; } return $erg; } function putCalEntry($data) { global $db; $t = $data['title']; $d = $data['description']; $dt = $data['start']; $e = $data['end']; $sql_stmt = "INSERT INTO kalender (start, end, title, description)" . "VALUES ('$dt', '$e', '$t', '$d')"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } function getCalEntries($start, $end) { global $db; $erg = array(); $s = date('Ymd', strtotime($start)); $e = date('Ymd', strtotime($end)); $sql_sel = "SELECT * FROM kalender where start >= '$s' AND start <= '$e'"; $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; } function updateCount($date, $anzahl) { global $db; $sql_stmt = "UPDATE fdatum1 SET count=count-$anzahl WHERE datum=$date AND count >0"; $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db)); return $result; } function getOneRecordTermin($termin) { global $db; $erg = array(); $sql_sel = "SELECT * FROM SoFue2 WHERE DATE(wtermin)='$termin' AND status=2"; $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; } // Ein Record von den Sonderführungen mit der ID $id holen und kompleet übermitteln function getOneSonderTeilnehmer($id) { global $db; $query = "select * from SoFue2 where id = $id"; $result = mysqli_query($db, $query) or die(mysqli_error($db)); while ($row = mysqli_fetch_assoc($result)) { foreach ($row as $key => $value) { $entry[$key] = $value; } $erg[] = $entry; } return $erg; } $_POST = json_decode(file_get_contents('php://input'), true); $erg = ""; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $cmd = $_POST["cmd"]; /* $x = "["; foreach ($_POST as $key => $value) { if(gettype($value) == "array") { $value = $value[0]; } $x = $x . $key . " => " . $value . ","; } $x = $x . "]"; */ switch ($cmd) { case 'GET_ANMELD': $erg = getAnmeldungen($_POST['id']); break; case 'GET_TEILN': $erg = getTeilnehmer($_POST['id'], true, false); break; case 'GET_DATES': $erg = getNextFuehrungen($_POST['anzahl'], $_POST['fid']); break; case 'UPDATE': $erg = "Nix gut"; if ((count($_POST['ids']) != 0) and (count($_POST['values']) != 0)) { $rows = $_POST['ids']; $values = $_POST['values']; $erg = updateEntries($rows, $values, $_POST['field']); } break; case 'UPDATETLNFD': $erg = updateTeilnehmer_fdate($_POST['id'], $_POST['fdatum'], $_POST['fid']); break; case 'DELETE_ENTRY': $erg = deleteEntry($_POST['id']); break; case 'GET_COUNTS': $erg = getCountsPerDate($_POST['id']); break; case 'GET_COUNTS_DATE': $erg = getCountsPerDatefromDate($_POST['date']); break; case 'GET_TEILN_EMAIL': $erg = getTeilnehmer($_POST['mail'], false, false); break; case 'GET_DATE_BY_EMAIL': $erg = getTeilnehmer($_POST['mail'], false, true); break; case 'GET_ONE_DATE': $erg = getOneDate($_POST['fid']); break; case 'GET_ALLTEILN': $erg = getAllTeilnehmer($_POST['fdatum']); break; case 'SEND_MAIL': $erg = sendConfirmation($_POST['subject'], $_POST['to'], $_POST['body']); break; case 'SEND_INFO_MAIL': $erg = sendInfoMail($_POST['subject'], $_POST['to'], $_POST['body']); break; case 'SEND_MAIL_HTML': $absender = "noreply@sternwarte-welzheim.de"; $erg = sendmail($_POST['subject'], $absender, $_POST['body_txt'], [], [], $_POST['to'], $_POST['body_html']); // function sendmail($subject, $from, $body_txt, $cc=[], $bcc=[], $to=[], $body_html="") { break; case 'INSERT_TLN': $erg = insertTeilnehmer($_POST['data']); break; case 'UPDATE_TLN': $erg = updateTeilnehmer($_POST['data'], $_POST['id']); break; case 'DELETE_TLN': $erg = deleteEntry($_POST['id']); break; case 'UPDATECOUNT': $erg = updateCount($_POST['date'], $_POST['anzahl']); break; case 'GET_ALL_EMAILS': $erg = getTeilnehmer(-1, true, false); break; case 'GET_FUEHRUNGEN': $erg = getFuehrungen($_POST['start'], $_POST['end']); break; case 'PUT_FDATES': $erg = putFdates($_POST['data']); break; case 'GET_FDATES': $erg = getFdates($_POST['start'], $_POST['end']); break; case 'GET_BEOS': if ( isset($_POST['what'])) { $erg = getBEOs($_POST['id'], $_POST['onlyguides'], $_POST['what']); } else { $erg = getBEOs($_POST['id'], $_POST['onlyguides'], '*'); } break; case 'GET_ONEBEO': $erg = getOneBEO($_POST['kurz'], $_POST['what']); break; case 'UPDATE_ONEBEOPW': $erg = updateOneBEOpw($_POST['data']); break; case 'PUT_CALENTRY': $erg = putCalEntry($_POST['data']); break; case 'GET_CALENTRIES': $erg = getCalEntries($_POST['start'], $_POST['end']); break; case 'DEL_CALENTRY': $erg = delCalentry($_POST['id']); break; case 'GET_FID': $erg = getfid($_POST['fdatum']); break; case 'GET_MAINT': include 'maintenance.php'; $erg = $maint; break; case 'GET_ONETERMIN': $erg = getOneRecordTermin($_POST["termin"]); break; case 'GET_ONESONDERTEILNEHMER': $erg = getOneSonderTeilnehmer($_POST["id"]); break; default: $erg = ['error' => 'Unknown POST-Command', 'cmd' => $cmd, 'params' => $x]; } } else { /* $x = "["; foreach ($_GET as $key => $value) { $x = $x . $key . " => " . $value . ","; } $x = $x . "]"; */ $cmd = $_GET['cmd']; switch ($cmd) { case 'GET_FDATES': $erg = getFdates($_GET['start'], $_GET['end']); break; default: $erg = ['error' => 'Unknown GET-Command', 'params' => $x]; } } // header("Content-type: text/json;charset=utf-8"); echo json_encode($erg);