setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); return $pdo; } function CreateHelfer($pdo, $HelferName, $HelferEmail, $HelferHandy, $HelferPasswort, $HelferLevel = 1) { // Neuen Helfer anlegen $HelferPasswort = "€" . $HelferPasswort . "ß"; $PasswortHash = password_hash($HelferPasswort, PASSWORD_DEFAULT); static $sql = "INSERT INTO Helfer(Name,Email,Handy,Status,BildFile,DoReport,Passwort,HelferLevel)". " VALUES (:name,:email,:handy,:status,:bildfile,:doreport,:passwort,:helferlevel)"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare($sql); $stmts_prepared = true; } $db_erg = $stmt->execute([ "name" => $HelferName, "email" => $HelferEmail, "handy" => $HelferHandy, "status" => 1, "bildfile" => '', "doreport" => 0, "passwort" => $PasswortHash, "helferlevel" => $HelferLevel ]); $stmt->fetch(); error_log(date('Y-m-d H:i') . " CreateHelfer: $HelferName angelegt mit Email $HelferEmail Handy $HelferHandy \n", 3, LOGFILE); return $db_erg; } // testet fuer urllogin, ob Helfer bereits existiert function HelferIstVorhanden($pdo, $Email) { static $sql = "SELECT count(HelferID) AS Anzahl FROM Helfer WHERE Email = :email"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare($sql); $stmt_prepared = true; } $stmt->execute(["email" => $Email]); // TODO Test, that this still works $zeile = $stmt->fetchAll(); return $zeile['Anzahl']; } //TODO: pruefen, ob Helfer bereits eingeloggt function HelferLogin($pdo, $HelferEmail, $HelferPasswort, $HelferStatus) { //echo "Test
"; // Helfer Suchen static $sql = "SELECT HelferID,Admin,Name,Passwort,HelferLevel FROM Helfer WHERE Email=:email"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare($sql); $stmt_prepared = true; } $db_erg = $stmt->execute(["email" => $HelferEmail]); if ($stmt->errorCode() != 1) { echo "Login ungueltige Abfrage"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } while ($zeile = $stmt->fetchAll()) { $HelferPasswort = "€" . $HelferPasswort . "ß"; //echo "".$HelferPasswort."
"; //echo "".$zeile['Passwort']."
"; if (password_verify($HelferPasswort, $zeile['Passwort'])) { $_SESSION["HelferID"] = $zeile['HelferID']; $_SESSION["HelferName"] = $zeile['Name']; //TODO: das sollte nur gesetzt werden, wenn der Helfer Admin ist $_SESSION["AdminID"] = $zeile['HelferID']; $_SESSION["AdminStatus"] = $zeile['Admin']; $_SESSION["HelferLevel"] = $zeile['HelferLevel']; return 1; } else { echo "Falsches Passwort
"; return 0; } } } // Liste der Helfer fuer Admin-Seite //TODO: HelferLevel function HelferListe($pdo) { static $sql = "SELECT HelferID,Name FROM Helfer"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare($sql); $stmt_prepared = true; } $db_erg = $stmt->execute(); if ($stmt->errorCode() != 1) { echo "Helferliste ungueltige Abfrage"; die('Unueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function Helferdaten($pdo, $HelferID) { static $sql = "SELECT * FROM Helfer Where HelferID = :helferid"; static $stmt = false; if(!$stmt) $stmt = $pdo->prepare($sql); static $stmt_prepared = false; $db_erg stmt_prepared { $stmt->execute(["helferid" => $HelferID]); $stmt_prepared = true; } if ($stmt->errorCode() != 1) { echo "Helferdaten ungueltige Abfrage
\n"; echo "sql:$sql
\n"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function HelferdatenAendern($pdo, $HelferName, $HelferEmail, $HelferHandy, $HelferNewPasswort, $HelferID, $HelferIsAdmin = -1, $AdminID = 0) { static $stmts_prepared = false; static $stmts = array(); if(!$stmts_prepared) { $stmts['password_empty'] = $pdo->prepare("UPDATE Helfer SET Name=:name,Email=:email,Handy=:handy Where HelferId=:id"); $stmts['password_empty_admin'] = $pdo->prepare("UPDATE Helfer SET Name=:name,Email=:email,Handy=:handy,Admin=:admin Where HelferId=:id"); $stmts['password_given'] = $pdo->prepare("UPDATE Helfer SET Name=:name,Email=:email,Handy=:handy,Passwort=:passwort Where HelferId=:id"); $stmts['password_given_admin'] = $pdo->prepare("UPDATE Helfer SET Name=:name,Email=:email,Handy=:handy,Passwort=:passwort,Admin=:admin Where HelferId=:id"); $stmts_prepared = true; } if ($HelferNewPasswort == "") { //$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy' ".($HelferIsAdmin!=-1)?',Admin='$HelferIsAdmin.':'." Where HelferId=".$HelferID; if ($HelferIsAdmin == -1) { $db_erg = $stmts['password_empty']->execute([ "name" => $HelferName, "email" => $HelferEmail, "handy" => $HelferHandy, "id" => $HelferID ]); } else { $db_erg = $stmts['password_empty_admin']->execute([ "name" => $HelferName, "email" => $HelferEmail, "handy" => $HelferHandy, "admin" => $HelferIsAdmin, "id" => $HelferID ]); } echo "
  • Helferdaten geändert
  • "; if ($AdminID != 0) { error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy Admin: $HelferIsAdmin\n", 3, LOGFILE); } else { error_log(date('Y-m-d H:i') . "Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy Admin: $HelferIsAdmin\n", 3, LOGFILE); } } else { $HelferNewPasswort = "€" . $HelferNewPasswort . "ß"; $PasswortHash = password_hash($HelferNewPasswort, PASSWORD_DEFAULT); if ($HelferIsAdmin == -1) { $db_erg = $stmts['password_given']->execute([ "name" => $HelferName, "email" => $HelferEmail, "handy" => $HelferHandy, "passwort" => $PasswortHash, "id" => $HelferID ]); } else { $db_erg = $stmts['password_given_admin']->execute([ "name" => $HelferName, "email" => $HelferEmail, "handy" => $HelferHandy, "passwort" => $PasswortHash, "admin" => $HelferIsAdmin, "id" => $HelferID ]); } //echo $sql; echo "
  • Passwort geändert
  • "; if ($AdminID != 0) { error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy Passwort: neu gesetzt\n", 3, LOGFILE); } else { error_log(date('Y-m-d H:i') . "Helferdaten update: Name: $HelferName (HelferID:$HelferID) Email: $HelferEmail Handy: $HelferHandy Passwort: neu gesetzt\n", 3, LOGFILE); } } foreach ($stmts as $stmt) { if (!is_null($stmt->errorCode()) && ($stmt->errorCode() != 1) ) { echo "HelferdatenAendern ungueltiges Statement"; echo $stmt->queryString; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } return $db_erg; } function AlleSchichten($pdo, $Sort, $HelferLevel = 1) { static $stmts_prepared = false; static $stmts = array(); if(!$stmts_prepared) { $stmts['sort_by_von'] = $pdo->prepare("select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Dienst.DienstID=SchichtUebersicht.DienstID and Dienst.Helferlevel=:helferlevel order by Von"); $stmts['sort_by_was_von'] = $pdo->prepare("select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Dienst.DienstID=SchichtUebersicht.DienstID and Dienst.Helferlevel=:helferlevel order by Was,Von"); $stmts_prepared = true; } if ($Sort == '1') { $db_erg = $stmts['sort_by_von']->execute(["helferlevel" => $HelferLevel]); } else { $db_erg = $stmts['sort_by_was_von']->execute(["helferlevel" => $HelferLevel]); } foreach ($stmts as $stmt) { if (!is_null($stmt->errorCode()) && ($stmt->errorCode() != 1) ) { echo "AlleSchichten ungueltige Abfrage"; echo $Sort; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } return $db_erg; } function AlleSchichtenCount($db_link, $HelferLevel = 1) { //$sql = "select SUM(Soll) As Anzahl from SchichtUebersicht where HelferLevel=$HelferLevel"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select Sum(Soll) as Anzahl, HelferLevel from SchichtUebersicht,Dienst Where SchichtUebersicht.DienstID=Dienst.DienstID and HelferLevel=:helferlevel"); $stmt_prepared = true; } $db_erg = $stmt->execute(["helferlevel" => $HelferLevel]); if ($stmt->errorCode() != 1){ echo "AlleSchichtenCount ungueltige Abfrage"; echo $Sort; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } $zeile = $stmt->fetchAll(); return $zeile['Anzahl']; } function AlleBelegteSchichtenCount($db_link, $HelferLevel = 1) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select Count(HelferID) As Anzahl from EinzelSchicht,Schicht,Dienst Where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID and HelferLevel=:helferlevel"); $stmt_prepared = true; } $db_erg = $stmt->execute(["helferlevel" => $Helferlevel]); if ($stmt->errorCode() != 1){ echo "AlleSchichtenCount ungueltige Abfrage"; echo $Sort; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } $zeile = $stmt->fetchAll(); return $zeile['Anzahl']; } function AlleSchichtenImZeitbereich($pdo, $Von, $Bis, $HelferLevel = 1) { // SchichtID, Was, Ab, Bis, Ist, Tag, Soll - Ist und Soll sind die HelferStunden static $stmts_prepared = false; static $stmts = array(); if(!$stmts_prepared) { $stmts['helferlevel_not_set'] = $pdo->prepare("select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Von >= :von and Von < :bis and Dienst.DienstID=SchichtUebersicht.DienstID order by Was,Von"); $stmts['helferlevel_set'] = $pdo->prepare("select SchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis,C AS Ist,DATE_FORMAT(Von,'%W %d %M') As Tag, Soll from Dienst,SchichtUebersicht where Von >= :von and Von < :bis and Dienst.DienstID=SchichtUebersicht.DienstID and Dienst.HelferLevel=:helferlevel order by Was,Von"); $stmts_prepared = true; } if ($HelferLevel == -1) { $db_erg = $stmts['helferlevel_not_set']->execute([ "von" => $Von, "bis" => $Bis ]); } else { $db_erg = $stmts['helferlevel_set']->execute([ "von" => $Von, "bis" => $Bis, "helferlevel" => $HelferLevel ]); } foreach ($stmts as $stmt) { if (!is_null($stmt->errorCode()) && ($stmt->errorCode() != 1) ) { echo "AlleSchichtenImZeitbereich ungueltige Abfrage
    "; echo $stmt->queryString; die('
    Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } return $db_erg; } function AlleSchichtenEinesHelfers($pdo, $HelferID) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=:helferid order by Von"); $stmt_prepared = true; } $db_erg = $stmt->execute(["helferid" => $HelferID]); if ($stmt->errorCode() != 1){ echo "AlleSchichtenEinesHelfers ungueltige Abfrage"; echo $HelferID; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } // FIXME function HelferLoeschen($db_link, $HelferID, $AdminID) { $HelferID = mysqli_real_escape_string($db_link, $HelferID); static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("Delete from Helfer where HelferID='$HelferID'";); $stmt_prepared = true; } $db_erg = Helferdaten($db_link, $HelferID); while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) { $HelferName = $zeile['Name']; //echo "HelferName=$HelferName
    "; } $db_erg = AlleSchichtenEinesHelfers($db_link, $HelferID); $AnzahlHelferschichten = mysqli_num_rows($db_erg); if ($AnzahlHelferschichten == 0) { $sql = "Delete from Helfer where HelferID='$HelferID'"; $db_erg = mysqli_query($db_link, $sql); if (! $db_erg) { echo "Helfer $HelferName konnte nicht gelöscht werden
    "; echo "$sql
    "; return -2; } else { echo "Helfer $HelferName (HelferID:$HelferID) wurde erfolgreich geloescht
    "; error_log(date('Y-m-d H:i') . "(Admin $AdminID) Helfer loeschen: Name: $HelferName (HelferID:$HelferID)\n", 3, LOGFILE); return 1; } } else { echo "Helfer $HelferName hat noch $AnzahlHelferschichten Schichten. Bitte erst die Schichten löschen
    "; return -1; } } function SchichtIdArrayEinesHelfers($db_link, $HelferID) { $HelferID = mysqli_real_escape_string($db_link, $HelferID); // Array, um Zeilen mit von mir belegten Schichten in der Schichtuebersicht einfaerben zu koennenn static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("SELECT SchichtID FROM EinzelSchicht WHERE HelferID = :id"); $stmt_prepared = true; } //print_r($sql); $db_erg = $stmt->execute(["id" => $HelferID]); $schichtIDs = array(); while ($zeile = $stmt->fetch()) { $schichtIDs[] = $zeile[0]; } return($schichtIDs); } function AlleSchichtenEinesHelfersVonJetzt($db_link, $HelferID) { // TODO: fix GETDATE() array to string conversion static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=:id and Bis>:bis order by Von"); $stmt_prepared = true; } //$sql = "select EinzelSchicht.SchichtID ,EinzelSchichtID,Was,DATE_FORMAT(Von,'%a %H:%i') AS Ab,DATE_FORMAT(Bis,'%a %H:%i') AS Bis FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=".$HelferID." and Bis>'2023-05-20' order by Von"; //echo $sql; $db_erg = $stmt->execute([ "id" => $HelferID, "bis" => GETDATE() ]); if($stmt->errorCode() != 1){ echo "AlleSchichtenEinesHelfers ungueltige Abfrage"; echo $HelferID; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function SchichtenSummeEinesHelfers($db_link, $HelferID) { //$sql = "select count Schicht.Dauer as Anzahl FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=".$HelferID." order by Von"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select count(*) as Anzahl, SUM(TIME_TO_SEC(Schicht.Dauer)) as Dauer FROM EinzelSchicht,Schicht,Dienst where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID = Dienst.DienstID and HelferID=:helferid"); $stmt_prepared = true; } //echo $sql; $db_erg = $stmt->execute(["helferid" => $HelferID]); if ($stmt->errorCode() != 1){ echo "SchichtenSummeEinesHelfers ungueltige Abfrage"; echo $HelferID; echo $stmt->queryString; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function LogSchichtEingabe($db_link, $HelferID, $SchichtId, $EinzelSchichtId, $Aktion, $AdminID = 0) { $HelferID = mysqli_real_escape_string($db_link, $HelferID); $SchichtId = mysqli_real_escape_string($db_link, $SchichtId); $EinzelSchichtId = mysqli_real_escape_string($db_link, $EinzelSchichtId); $Aktion = mysqli_real_escape_string($db_link, $Aktion); $AdminID = mysqli_real_escape_string($db_link, $AdminID); static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("SELECT Schicht.Von, Schicht.Bis, Dienst.Was, Helfer.Name FROM EinzelSchicht JOIN Schicht ON EinzelSchicht.SchichtID = Schicht.SchichtID JOIN Dienst ON Schicht.DienstID = Dienst.DienstID JOIN Helfer ON EinzelSchicht.HelferID = Helfer.HelferID WHERE EinzelSchicht.HelferID = $HelferID AND ( Schicht.SchichtID = $SchichtId OR EinzelSchicht.EinzelSchichtID = $EinzelSchichtId) "); $stmt_prepared = true; } //error_log(date('Y-m-d H:i') . " " . $sql ."\n",3,LOGFILE); $db_erg = mysqli_query($db_link, $sql); if (mysqli_num_rows($db_erg) > 1) { echo "HelferSchichtZuweisen: Es wurden mehr als eine Zeile zurueckgegeben\n
    "; // Fehler geht ins normale Error-Management, nicht ins Logfile error_log(date('Y-m-d H:i') . " HelferSchichtZuweisen: Es wurden mehr als eine Zeile zurueckgegben.\n", 0); } elseif (mysqli_num_rows($db_erg) == 1) { $row = mysqli_fetch_assoc($db_erg); $Von = $row["Von"]; $Bis = $row["Bis"]; $Was = $row["Was"]; $HelferName = $row["Name"]; } else { echo "Es wurde keine Zeile zurueckgegeben."; } if ($AdminID == 0) { error_log(date('Y-m-d H:i') . " HelferSchicht: $HelferName (HelferID:$HelferID) hat Dienst $Was von $Von bis $Bis $Aktion.\n", 3, LOGFILE); } else { error_log(date('Y-m-d H:i') . " HelferSchicht: Admin:$AdminID hat von $HelferName (HelferID:$HelferID) den Dienst $Was von $Von bis $Bis $Aktion.\n", 3, LOGFILE); } } function HelferSchichtZuweisen($pdo, $HelferID, $SchichtId, $AdminID = 0) { // Abfrage, ob bereits eine Einzelschicht in der selben Schicht vom Helfer existiert static $stmts = false; static $stmts_prepared = false; if(!$stmts_prepared) { $stmts['einzelschicht_exists'] = $pdo->prepare("SELECT EinzelSchichtID from EinzelSchicht WHERE SchichtID=:schichtid and HelferID=:helferid"); $stmts['new_einzelschicht'] = $pdo->prepare("INSERT INTO EinzelSchicht(SchichtID,HelferID) VALUES (:schichtid,:helferid)"); $stmts_prepared = true; } $db_erg = $stmts['einzelschicht_exists']->execute([ "schichtid" => $SchichtId, "helferid" => $HelferID ]); if($stmt['einzelschicht_exists']->fetch()){ echo "HelferSchichtZuweisen: Schicht existiert bereits!"; return false; } // Helfer Schicht zuweisen //echo ''; $db_erg = $stmts['new_einzelschicht']->execute([ "schichtid" => $SchichtId, "helferid" => $HelferID ]); if ($stmts['new_einzelschicht']->errorCode() != 1){ echo "HelferSchichtZuweisen ungueltige Abfrage"; echo $HelferID; die('Ungueltige Abfrage: ' . $stmts['new_einzelschicht']->errorInfo()[2]); } LogSchichtEingabe($db_link, $HelferID, $SchichtId, -1, "eingetragen", $AdminID); return $db_erg; } function HelferVonSchichtLoeschen($pdo, $HelferID, $EinzelSchichtID, $AdminID = 0) { // Log vor Löschen, damit Einzelschicht abgefragt werden kann LogSchichtEingabe($db_link, $HelferID, -1, $EinzelSchichtID, "entfernt", $AdminID); // Lösche Einzelschicht static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("Delete From EinzelSchicht Where EinzelSchichtID = :id"); $stmt_prepared = true; } //echo $sql; $db_erg = $stmt->execute(["id" => $EinzelSchichtID]); return $db_erg; } function HelferVonSchichtLoeschen_SchichtID($pdo, $HelferID, $SchichtID, $AdminID = 0) { // Log vor Löschen, damit Einzelschicht abgefragt werden kann LogSchichtEingabe($db_link, $HelferID, $SchichtID, -1, "entfernt", $AdminID); // Lösche Einzelschicht static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("Delete From EinzelSchicht Where SchichtID = :schichtid and HelferID = :helferid limit 1;"); $stmt_prepared = true; } //echo $sql; $db_erg = $stmt->execute([ "schichtid" => $SchichtID, "helferid" => $HelferID ]); return $db_erg; } function DetailSchicht($pdo, $InfoSchichtID) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select Was,Wo,Info,Name,Handy,Email,DATE_FORMAT(Dauer,'%H:%i') AS Dauer FROM Dienst,Schicht,Helfer where Dienst.DienstID=Schicht.DienstID AND Helfer.HelferID=Dienst.Leiter And SchichtID=:id"); $stmt_prepared = true; } //echo $sql; $db_erg = $stmt->execute(["id" => $InfoSchichtID]); if ($stmt->errorCode() != 1){ echo "Details ungueltige Abfrage "; echo $InfoSchichtID; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } $zeile = $stmt->fetchAll(); return $zeile; } function BeteiligteHelfer($pdo, $InfoSchichtID) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select Helfer.HelferID,Name,Handy FROM EinzelSchicht,Helfer where EinzelSchicht.HelferID=Helfer.HelferID And SchichtID=:id"); $stmt_prepared = true; } $db_erg = $stmt->execute(["id" => $InfoSchichtID]); if ($stmt->errorCode() != 1){ echo "Details ungueltige Abfrage "; echo $InfoSchichtID; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function GetDienste($db_link) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("SELECT DienstID, Was, Wo, Info, Leiter, ElternDienstID, HelferLevel FROM Dienst order By Was"); $stmt_prepared = true; } $db_erg = mysqli_query($db_link, $sql); if ($stmt->errorCode() != 1){ echo "GetDienste ungueltige Abfrage"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function GetDiensteChilds($pdo, $DienstID) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("SELECT DienstID, Was, Wo, Info, Leiter FROM Dienst where ElternDienstID=:id order by Was"); $stmt_prepared = true; } $db_erg = $stmt->execute(["id" => $DienstID]); if ($stmt->errorCode() != 1){ echo "GetDienste ungueltige Abfrage"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function ChangeDienst($pdo, $DienstID, $Was, $Wo, $Info, $Leiter, $Gruppe, $HelferLevel) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("UPDATE Dienst SET Was=:was, Wo=:wo, Info=:info, Leiter=:leiter, ElternDienstID=:elterndienstid where DienstID=:dienstid"); $stmt_prepared = true; } $db_erg = $stmt->execute([ "was" => $Was, "wo" => $Wo, "info" => $Info, "leiter" => $Leiter, "elterndienstid" => $Gruppe, "dienstid" => $DienstID ]); if ($stmt->errorCode() != 1){ echo "Fehler Change Dienst"; echo $sql; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } function NewDienst($pdo, $DienstID, $Was, $Wo, $Info, $Leiter, $Gruppe, $HelferLevel) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("INSERT INTO Dienst (Was, Wo, Info, Leiter, ElternDienstID, HelferLevel) values (:was,:wo,:info,:leiter,:elterndienstid,:helferlevel)"); $stmt_prepared = true; } $db_erg = $stmt->execute([ "was" => $Was, "wo" => $Wo, "info" => $Info, "leiter" => $Leiter, "elterndienstid" => $Gruppe, "helferlevel" => $HelferLevel ]); $db_erg = mysqli_query($db_link, $sql); if ($stmt->errorCode() != 1){ echo "Fehler New Dienst"; // echo $sql; $err = $stmt->errorInfo()[2]; die('Ungueltige Abfrage: ' . $err); error_log(date('Y-m-d H:i') . " NeueSchicht: $HelferName konnte Schicht nicht angelegt mit Anfrage $sql Grund: $err \n", 3, LOGFILE); } else { error_log(date('Y-m-d H:i') . " NeueSchicht: $HelferName(ID:HelferID) hat Dienst angelegt mit Was: $WAS Wo: $Wo Info: $Info Leiter: $Leiter Gruppe $Gruppe, HelferLevel $HelferLevel \n", 3, LOGFILE); } } function DeleteDienst($db_link, $DienstID, $Rekursiv) { if ($Rekursiv) { return false; } else { // Pruefen ob noch Schichten eingetragen sind static $stmts_prepared = false; static $stmts = array(); if(!$stmts_prepared) { $stmts['check_dienst'] = $pdo->prepare("SELECT SchichtID FROM Schicht where DienstID=:id"); $stmts['delete_dienst'] = $pdo->prepare("DELETE FROM Dienst where DienstID=:id"); $stmts_prepared = true; } $db_erg = $stmts['check_dienst']->execute(['id' => $DienstID]); if ($stmts['check_dienst']->errorCode() != 1){ echo "Fehler DeleteDienst"; die('Ungueltige Abfrage: ' . $stmts['check_dienst']->errorInfo()[2]); } if ($stmts['check_dienst']->fetch()) { // Eintrag löschen $db_erg = $stmts['delete_dienst']->execute(['id' => $DienstID]); if ($stmts['delete_dienst']->errorCode() != 1){ echo "Fehler DeleteDienst"; die('Ungueltige Abfrage: ' . $stmts['delete_dienst']->errorInfo()[2]); } return true; } else { return false; } } } function GetSchichtenEinesDienstes($db_link, $DienstID) { //$sql = "SELECT SchichtID,Von,Bis,Soll,DATE_FORMAT(Von,'%a %H:%i') AS TagVon FROM Schicht where DienstID=".$DienstID; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("SELECT SchichtID,Von,Bis,Soll,DATE_FORMAT(Von,'%a %H:%i') AS TagVon, DATE_FORMAT(Von,'%H:%i') AS ZeitVon, DATE_FORMAT(Bis,'%H:%i') AS ZeitBis FROM Schicht where DienstID=:id"); $stmt_prepared = true; } $db_erg = $stmt->execute(['id' => $DienstID]); if ($stmt->errorCode() != 1){ echo "GetSchichtenEinesDienstes ungueltige Abfrage"; echo $sql; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function ChangeSchicht($db_link, $SchichtID, $Von, $Bis, $Soll) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("UPDATE Schicht SET Von=:von, Bis=:bis, Soll=:soll where SchichtID=:id"); $stmt_prepared = true; } $db_erg = $stmt->execute([ 'von' => $Von, 'bis' => $Bis, 'soll' => $Soll, 'id' => $SchichtID ]); if ($stmt->errorCode() != 1){ echo "Fehler ChangeSchicht"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } function NewSchicht($db_link, $DienstID, $Von, $Bis, $Soll) { /* if(validateDate($Von)) { echo "Keine Schicht erstellt Fehler in Von"; return; } if(validateDate($Bis, DateTime::ATOM)) { echo "Keine Schicht erstellt Fehler in Bis"; return Null; } */ static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("INSERT INTO Schicht (DienstID, Von, Bis, Soll) values (:id,:von,:bis,:soll)"); $stmt_prepared = true; } $db_erg = $stmt->execute([ 'id' => $DienstID, 'von' => $Von, 'bis' => $Bis, 'soll' => $Soll ]); if ($stmt->errorCode() != 1){ echo "Keine Schicht erstellt"; //echo $sql; error_log(date('Y-m-d H:i') . " NeueSchicht: $HelferName konnte Schicht nicht angelegt mit $sql \n", 3, LOGFILE); $err = $stmt->errorInfo()[2]; die('Ungueltige Abfrage: ' . $err); } else { //TODO: DienstID aufloesen error_log(date('Y-m-d H:i') . " NeueSchicht: $HelferName hat Schicht angelegt mit DienstID $DienstID, Von $Von Bis $Bis Soll $Soll \n", 3, LOGFILE); } } function DeleteSchicht($pdo, $SchichtID, $Rekursiv) { static $stmts_prepared = false; static $stmts = false; if(!$stmts_prepared) { $stmts['check_einzelschicht'] = $pdo->prepare("SELECT Name FROM EinzelSchicht,Helfer where SchichtID=:id and Helfer.HelferID=EinzelSchicht.HelferID"); $stmts['delete_einzelschicht'] = $pdo->prepare("DELETE FROM Schicht where SchichtID=:id"); $stmts_prepared = true; } if ($Rekursiv) { return false; } else { // Pruefen ob noch Helfer auf der Schicht eingetragen sind $db_erg = $stmts['check_einzelschicht']->execute(["id" => $SchichtID ]); if ($stmts['check_einzelschicht']->errorCode() != 1){ echo "Fehler Change Dienst"; die('Ungueltige Abfrage: ' . $stmts['check_einzelschicht']->errorInfo()[2]); } if (!$stmts['check_einzelschicht']->fetch()) { // Eintrag löschen $db_erg = $stmts['delete_einzelschicht']->execute(["id" => $SchichtID ]); if ($stmts['delete_einzelschicht']->errorCode() != 1) { echo "Fehler Change Dienst"; die('Ungueltige Abfrage: ' . $stmts['delete_einzelschicht']->errorInfo()[2]); } return true; } else { return false; } } } function AlleHelferSchichtenUebersicht($pdo) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select Helfer.HelferID as AliasHelferID,Name,Email,Handy,Was,SUM(Dauer)/10000 as Dauer from Helfer,EinzelSchicht INNER JOIN Schicht INNER JOIN Dienst where Helfer.HelferID=EinzelSchicht.HelferID and EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID group by Helfer.HelferID,Was"); $stmt_prepared = true; } $db_erg = $stmt->execute(); if ($stmt->errorCode() != 1){ echo "AlleHelferSchichtenUebersicht ungueltige Abfrage"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } function DatenbankAufDeutsch($pdo) { static $sql = "SET lc_time_names = 'de_DE'"; static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare($sql); $stmt_prepared = true; } $db_erg = $stmt->execute(); if ($stmt->errorCode() != 1){ echo "ungueltiges umstellen auf Deutsch"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } } function HelferLevel($db_link) { static $stmt = false; static $stmt_prepared = false; if(!$stmt_prepared) { $stmt = $pdo->prepare("select HelferLevel,HelferLevelBeschreibung from HelferLevel"); $stmt_prepared = true; } $db_erg = $stmt->execute(); if($stmt->errorCode() != 1){ echo "Konnte HelferLevel nicht abfragen"; die('Ungueltige Abfrage: ' . $stmt->errorInfo()[2]); } return $db_erg; } // TODO: als Array zurueckgeben (CreateHelfer anpassen) // TODO: //function HelferLevel($db_link){ // $sql = "SELECT HelferLevel, HelferLevelBeschreibung FROM HelferLevel"; // $db_erg = mysqli_query($db_link, $sql); // if (!$db_erg) { // echo "Konnte HelferLevel nicht abfragen"; // die('Ungueltige Abfrage: ' . mysqli_error($db_link)); // } // // $results = array(); // while ($row = mysqli_fetch_assoc($db_erg)) { // $results[] = $row; // } // // mysqli_free_result($db_erg); // Freigabe des Ergebnisobjekts // // return $results; //} function DebugAusgabeDbErgebnis($db_erg) { // Ausgabe auf Browser Console // if(mysqli_num_rows($db_erg) > 0) { // $fields = mysqli_fetch_fields($db_erg); // $field_names = []; // foreach($fields as $field) { // $field_names[] = $field->name; // } // $rows = array(); // while($row = mysqli_fetch_row($db_erg)) { // $rows[] = $row; // } // // $js_code = "console.log('Query results:');"; // $js_code .= "console.log('" . implode('\t', $field_names) . "');"; // foreach($rows as $row) { // $js_code .= "console.log('" . implode('\t', $row) . "');"; // } // echo ""; // } else { // echo "Keine Ergebnisse gefunden."; // } // // direkte ausgabe in Seite echo ""; if (mysqli_num_rows($db_erg) > 0) { // Tabellenkopf ausgeben echo ""; $fields = mysqli_fetch_fields($db_erg); foreach ($fields as $field) { echo ""; } echo ""; // Tabelleninhalt ausgeben while ($row = mysqli_fetch_row($db_erg)) { echo ""; foreach ($row as $value) { echo ""; } echo ""; } } else { echo ""; } echo "
    " . $field->name . "
    " . $value . "
    Keine Ergebnisse gefunden.
    "; }