399 lines
12 KiB
PHP
Executable File
399 lines
12 KiB
PHP
Executable File
<?php
|
|
# Hier werden die Anfragen vom Javascript verarbeitet und die
|
|
# Datenbank bedient
|
|
|
|
$db = null;
|
|
|
|
//include '../../dbaseconf.php';
|
|
include '../../../config_stern.php';
|
|
include '../../../phpmailer/dosendmail.php';
|
|
|
|
$table = 'SoFue2';
|
|
|
|
|
|
function getFromDbase($db, $query, $single) {
|
|
$result = mysqli_query($db,$query) or die (mysqli_error($db));
|
|
$erg = array();
|
|
if(mysqli_num_rows($result)) {
|
|
while($row = mysqli_fetch_assoc($result)) {
|
|
$erg[] = $row;
|
|
}
|
|
}
|
|
if($single == true) {
|
|
return ($erg[0]);
|
|
} else {
|
|
return($erg);
|
|
}
|
|
}
|
|
|
|
function cudDbase($db, $query) {
|
|
return(mysqli_query($db,$query) or die (mysqli_error($db)));
|
|
}
|
|
|
|
// Ein Record holen mit der ID $id holen nd kompleet übermitteln
|
|
function getOneRecord($db,$id) {
|
|
global $table;
|
|
|
|
$query = "select * from $table where id = $id";
|
|
return(getFromDbase($db,$query,true));
|
|
}
|
|
|
|
// Ein Record holen mit dem Wunschtermin als Auswahl
|
|
function getOneRecordTermin($db,$termin) {
|
|
global $table;
|
|
|
|
$query = "select * from $table where DATE(wtermin) = '$termin' and status = 2";
|
|
return(getFromDbase($db,$query,true));
|
|
}
|
|
|
|
// Alle Records mit übergebener WHERE-clause übergeben, sortiert in aufsteigender
|
|
// Zeitfolge (Führungstermine als Zeitfolge)
|
|
// Es werden maximal $cout Records übergeben
|
|
function getRecords($db, $st, $termin, $anz, $pagnbr) {
|
|
global $table;
|
|
|
|
$response = new stdClass();
|
|
$ergs = array();
|
|
|
|
$lastdate = new DateTime();
|
|
$lastdate = $lastdate->sub(new DateInterval('P9M'));
|
|
$lastdate = $lastdate->format('Y-m-d');
|
|
if($st == 4) {
|
|
$where ="where stattgefunden = 1 and deleted = 0 ";
|
|
} else {
|
|
$where = "where status = '$st' and deleted = 0";
|
|
if ($termin == 'neu') {
|
|
$where = $where . " and wtermin >= now()";
|
|
}
|
|
}
|
|
|
|
// Anzahl der Records holen
|
|
$query = "select count(*) as count from $table $where ";
|
|
$row = getFromDbase($db,$query,true);
|
|
$count = $row['count'];
|
|
|
|
// Anzahl der Seiten ausrechnen
|
|
$totalpages = ceil($count/$anz);
|
|
// Falls die angeforderte Seit > als die ANzahl der Seiten ist, die letzte Seite übergeben
|
|
if($pagnbr > $totalpages) $pagnbr = $totalpages;
|
|
// Start-Record berechnen
|
|
$start = $anz * ($pagnbr-1);
|
|
if($start <0) {
|
|
$start = 0;
|
|
}
|
|
$where = $where . " and DATE(wtermin) >= '$lastdate'";
|
|
$query = "select * from $table $where order by wtermin desc limit $start,$anz";
|
|
$rows = getFromDbase($db, $query, false);
|
|
|
|
$response->page = $pagnbr;
|
|
$response->total = $totalpages; // Es wird immer 1 Page übergeben
|
|
$cnt = 0;
|
|
foreach($rows as $row) {
|
|
$response->rows[$cnt]['id'] = $row['id'];
|
|
$response->rows[$cnt]['cell'] = $row;
|
|
$cnt++;
|
|
}
|
|
$response->records = $count;
|
|
return ($response);
|
|
}
|
|
|
|
# string substr ( string $string , int $start [, int $length ] )
|
|
# Beo-Daten holen
|
|
function getBeos($db, $what, $cond) {
|
|
$retur = array();
|
|
if($cond == "") {
|
|
$query = "select $what from beos order by $what";
|
|
} else {
|
|
$a = strpos($cond,'empty');
|
|
if ( $a !== false) {
|
|
$b = substr($cond,0,$a);
|
|
$query = "select $what from beos where $b '' order by $what";
|
|
} else {
|
|
$query = "select $what from beos where $cond order by $what";
|
|
}
|
|
}
|
|
# echo $query;
|
|
$rows = getFromDbase($db, $query, false);
|
|
foreach($rows as $row) {
|
|
$retur[] = $row[$what];
|
|
}
|
|
return ($retur);
|
|
}
|
|
|
|
# Statistikdaten für das laufende (oder ein altes) Jahr holen und übergeben
|
|
# Ausgaben: JSON:
|
|
# { year: 2018,
|
|
# data:[
|
|
# { month: 1, angefragt: 10, zugesagt: 7, abgesagt: 3, stattgefunden: 6 },
|
|
# { month: 2, angefragt: 8, zugesagt: 6, abgesagt: 2, stattgefunden: 5 },
|
|
# { month: 3, angefragt: 23, zugesagt: 20, abgesagt: 3, stattgefunden: 15 },
|
|
# ...
|
|
# { month: 12, angefragt: 34, zugesagt: 22, abgesagt: 12, stattgefunden: 10 },
|
|
function getStatistik($db, $year) {
|
|
|
|
}
|
|
|
|
|
|
# Daten eines BEO holen, mit Name als Suchkriterium
|
|
function getOneBEO($db, $name) {
|
|
$query = "select * from beos where name = '$name'";
|
|
return getFromDbase($db, $query, true);
|
|
}
|
|
|
|
function updateEntry($db, $post) {
|
|
global $table;
|
|
$oldinhalt = getOneRecord($db, $post['id']);
|
|
$data = "mitarbeiter='" . $post['mitarbeiter'] .
|
|
"', status='" . $post['status'] .
|
|
"', bemerkung='" . $post['bemerkung'] .
|
|
"', wtermin='" . $post['wtermin'] .
|
|
"', atermin='" . $post['atermin'] .
|
|
"', allwett=''" .
|
|
", erledigt_datum='" . $post['erledigt_datum'] . "'";
|
|
$id = $post['id'];
|
|
$query = "update $table set $data where id='$id'";
|
|
$ret = cudDbase($db, $query);
|
|
$newinhalt = getOneRecord($db, $post['id']);
|
|
$ma = $post['mitarbeiter'];
|
|
$oldTermin = $oldinhalt['wtermin'];
|
|
return $ret;
|
|
}
|
|
|
|
function updateAfter($db,$post) {
|
|
global $table;
|
|
$oldinhalt = getOneRecord($db, $post['id']);
|
|
$data = "stattgefunden='" . $post['stattgefunden'] .
|
|
"', anzahl_echt='" . $post['besucher'] .
|
|
"', remarks='" . $post['remark'] .
|
|
"', bezahlt='" . $post['bezahlt'] . "'";
|
|
// if (!empty($post['wtermin'])) {
|
|
// $data .= ", wtermin='" . $post['wtermin'] . "'";
|
|
// $ma = $oldInhalt['mitarbeiter'];
|
|
// sendMailTo($ma, $oldinhalt, $post['wtermin'], "Wunsch");
|
|
// }
|
|
if (!empty($post['status'])) {
|
|
$data .= ", status='" . $post['status'] . "'";
|
|
}
|
|
$id = $post['id'];
|
|
$query = "update $table set $data where id='$id'";
|
|
$ret = cudDbase($db, $query);
|
|
return($ret);
|
|
}
|
|
|
|
function deleteEntry($db, $id) {
|
|
global $table;
|
|
$query = "update $table set deleted=true where id='$id'";
|
|
return cudDbase($db, $query);
|
|
}
|
|
|
|
function getDBdata() {
|
|
global $host, $dbase, $user, $pass;
|
|
|
|
$erg = "HOST: >" . $host . "< Dbase: >" . $dbase . "< user/pass: >" . $user . "/" . $pass . "<";
|
|
return $erg;
|
|
}
|
|
|
|
|
|
function findBeoVorname($who) {
|
|
global $db;
|
|
$names = explode(",",$who);
|
|
$erg = getbeos($db,'vorname',"name='".$names[0]."'");
|
|
return ($erg[0]);
|
|
}
|
|
|
|
function findBeoEmail($who) {
|
|
global $db;
|
|
$names = explode(",",$who);
|
|
$erg = getbeos($db,'email_1',"name='".$names[0]."'");
|
|
return ($erg[0]);
|
|
}
|
|
|
|
|
|
function wterminstr($t) {
|
|
$tage = array(
|
|
"So",
|
|
"Mo",
|
|
"Di",
|
|
"Mi",
|
|
"Do",
|
|
"Fr",
|
|
"Sa"
|
|
);
|
|
$dati = strtotime($t);
|
|
$dt = $tage[date("w",$dati)] . ", " . date('d.m.Y H:i',$dati);
|
|
return $dt;
|
|
}
|
|
function sendMail2Beo($ma, $termin) {
|
|
$dt = wterminstr($termin);
|
|
$body = "Hallo " . findBeoVorname($ma) .",
|
|
|
|
vielen Dank für die Bereitschaft, die Sonderführung am {$dt} zu übernehmen.
|
|
Bitte den Termin nicht vergessen und bitte ggf. auch das Teammitglied, das die
|
|
Führung mitmacht, informieren.
|
|
|
|
Der Termin wurde in den Sternwartenkalender eingetragen.
|
|
|
|
Die Kontaktdaten sind auf der Sonderführungsseite ( https://sternwarte-welzheim.de/intern/sofue/sofue.php ) zu finden.
|
|
|
|
Viele Grüße
|
|
Reinhard
|
|
|
|
Diese Meldung wurde automatisch erzeugt. Es kann nicht geantwortet werden.";
|
|
|
|
$betreff = "Vereinbarte Sonderführung am " .$dt;
|
|
$absender = "noreply@sternwarte-welzheim.de";
|
|
sendmail($betreff, $absender, $body, [], ['rexfue@gmail.com'], [findBeoEmail($ma)]);
|
|
}
|
|
|
|
function sendMailZusage($to, $mitarbeiter, $termin) {
|
|
$dt = wterminstr($termin);
|
|
$betreff = "ZUSAGE - Sternwartenführung am {$dt} Uhr";
|
|
$absender = "anmeldung@sternwarte-welzheim.de";
|
|
$ge1 = ($mitarbeiter['gender'] == 'm') ? "unser ehrenamtlicher Mitarbeiter, Herr" : "unsere ehrenamtliche Mitarbeiterin, Frau";
|
|
$ge2 = ($mitarbeiter['gender'] == 'm') ? "ihn" : "sie";
|
|
$ge3 = ($mitarbeiter['gender'] == 'm') ? "Herrn" : "Frau";
|
|
$body = "
|
|
Guten Tag,
|
|
|
|
für Ihren Wunschtermin, {$dt} Uhr, hat sich {$ge1} {$mitarbeiter['vorname']} {$mitarbeiter['name']} bereit erklärt,
|
|
die Sonderführung zu übernehmen. Sie erreichen {$ge2} über die e-mail-Adresse: {$mitarbeiter['email_1']}
|
|
|
|
Um nähere Besuchsmodalitäten zu klären, bitten wir Sie, mit {$ge3} {$mitarbeiter['name']} Kontakt aufzunehmen.
|
|
|
|
Wir bitten Sie, die Spende in Höhe von €50.00 auf unten aufgeführtes Konto zu überweisen oder in bar zur Führung mitzubringen.
|
|
|
|
Gesellschaft zur Förderung des Planetariums Stuttgart und der Sternwarte Welzheim e.V.
|
|
BANKVERBINDUNG: Deutsche Bank AG Stuttgart
|
|
IBAN DE18 6007 0070 0122 0383 00
|
|
BIC: DEUTDESSXXX
|
|
|
|
|
|
Mit sternfreundlichen Grüßen
|
|
Reinhard X. Fürst
|
|
Sternwarte Welzheim
|
|
";
|
|
sendmail($betreff, $absender, $body, [$mitarbeiter['email_1']], ['rexfue@gmail.com'], [$to]);
|
|
}
|
|
|
|
function sendMail2Liste($to, $erg) {
|
|
$betreff = "Anfrage Sonderführung am {$erg['wtermin']}";
|
|
$absender = "sonderfuehrung@sternwarte-welzheim.de";
|
|
$body = "
|
|
Liebe BEOs,
|
|
|
|
wer kann folgende Sonderführung übernehmen?
|
|
|
|
Viele Grüße
|
|
Reinhard
|
|
|
|
---------------------------------------------------------------------------------------------------";
|
|
|
|
$body = $body . "
|
|
Name, Vorname: " . $erg['name'] . " " . $erg['vorname'] . "
|
|
Verein / Organisation : " . $erg['verein'] . "
|
|
Wunsch - Termin: " . $erg['wtermin'] . "
|
|
Teilnehmerzahl ca.: " . $erg['anzahl'] . "
|
|
|
|
Weitere Fragen oder Mitteilungen: " . $erg['mitteilung'] . "
|
|
Spendenbescheinigung: " . $erg['spende'] . "
|
|
---------------------------------------------------------------------------------------------------";
|
|
sendmail($betreff, $absender, $body, [], [], [$to]);
|
|
}
|
|
|
|
// Sonderführung in den Kalender eintragen
|
|
function put2kalender($db, $data, $termin, $ma) {
|
|
$start = substr($termin,0,16);
|
|
$title = "WK, SF " . $data['name'] . ", " . $ma;
|
|
$sql = "INSERT into kalender (start, end, title, description) VALUES ('" . $start . "', DATE_ADD('" . $start . "',INTERVAL 2 HOUR), '" . $title . "', '')";
|
|
$erg = cudDbase($db, $sql);
|
|
$mist = 23;
|
|
}
|
|
|
|
|
|
// Hier gehts dann los:
|
|
// Alle Paramater aus dem Ajax-Call auslesen
|
|
// Mögliche Aufrufe:
|
|
/*
|
|
* cmd=GET param=ID id=5 bringt das eine Record mit ID=5
|
|
* cmd=GET param=STATUS staus=offen bringt ALLE records mit stautus='offen' in zeitlich absteigender Reihenfoleg
|
|
*/
|
|
|
|
$erg = "";
|
|
$cmd = $_POST["cmd"];
|
|
|
|
/*
|
|
$x = "# ";
|
|
foreach ($_POST as $key => $value) {
|
|
$x = $x . $key . " " . $value . "\n";
|
|
}
|
|
$x = $x . '# ';
|
|
echo $x;
|
|
*/
|
|
|
|
switch ($cmd) {
|
|
case 'GET_ONE':
|
|
$erg = getOneRecord($db, $_POST["id"]);
|
|
break;
|
|
case 'GET_ONETERMIN':
|
|
$erg = getOneRecordTermin($db, $_POST["termin"]);
|
|
break;
|
|
case 'GET_MANY':
|
|
$st = $_POST['status'];
|
|
$anzahl = $_POST['rows'];
|
|
$page = $_POST['page'];
|
|
$termin = $_POST['termin'];
|
|
$erg = getRecords($db,$st, $termin ,$anzahl,$page);
|
|
break;
|
|
case 'GET_BEOS':
|
|
$erg = getBeos($db,$_POST['what'],$_POST['cond']);
|
|
// echo '#' . $erg ;
|
|
break;
|
|
case 'GET_ONEBEO':
|
|
$erg = getOneBEO($db,$_POST['name']);
|
|
// echo '#' . $erg ;
|
|
break;
|
|
# case GET_FUEH:
|
|
# $erg = getFuehrung_findet_statt($db);
|
|
# break;
|
|
case 'GET_STAT':
|
|
# $erg = getStatistik($db,$_POST['year']);
|
|
break;
|
|
case 'UPDATE':
|
|
$erg = updateEntry($db, $_POST);
|
|
break;
|
|
case 'UPDATEAFTER':
|
|
$erg = updateAfter($db, $_POST);
|
|
break;
|
|
case 'DELETE':
|
|
$erg = deleteEntry($db, $_POST['id']);
|
|
break;
|
|
case 'SENDMAILZUSAGE':
|
|
// function sendMailZusage($to, $mitarbeiter, $termin) {
|
|
$erg = getOneRecord($db, $_POST["id"]);
|
|
$names = explode(",",$_POST['mitarbeiter']);
|
|
$ma = getOneBEO($db, $names[0]);
|
|
sendMailZusage($erg['email'], $ma, $_POST['termin']);
|
|
break;
|
|
case 'SENDMAIL2BEO':
|
|
// function sendMail2Beo($ma, $termin) {
|
|
sendMail2beo($_POST['ma'], $_POST['termin']);
|
|
break;
|
|
case 'SENDMAIL2LISTE':
|
|
$erg = getOneRecord($db, $_POST["id"]);
|
|
sendMail2Liste($_POST['to'],$erg);
|
|
break;
|
|
case 'PUT2KALENDER':
|
|
$erg = getOneRecord($db, $_POST["id"]);
|
|
put2kalender($db, $erg, $_POST['termin'], $_POST['mitarbeiter']);
|
|
break;
|
|
case 'SHOWDB':
|
|
$erg = getDBdata();
|
|
break;
|
|
}
|
|
header("Content-type: text/json;charset=utf-8");
|
|
|
|
echo json_encode($erg);
|
|
|
|
?>
|
|
|