985 lines
31 KiB
PHP
985 lines
31 KiB
PHP
|
|
<?php
|
|
|
|
require_once ('../hidden/konfiguration.php');
|
|
|
|
function ConnectDB(){
|
|
$db_link = mysqli_connect (
|
|
MYSQL_HOST,
|
|
MYSQL_BENUTZER,
|
|
MYSQL_KENNWORT,
|
|
MYSQL_DATENBANK
|
|
);
|
|
return $db_link;
|
|
}
|
|
|
|
function CreateHelfer($db_link,$HelferName,$HelferEmail, $HelferHandy,$HelferPasswort,$HelferLevel=1)
|
|
{
|
|
$HelferName=mysqli_real_escape_string($db_link, $HelferName);
|
|
$HelferEmail=mysqli_real_escape_string($db_link, $HelferEmail);
|
|
$HelferHandy=mysqli_real_escape_string($db_link, $HelferHandy);
|
|
// level: Teilnehmer/Dauerhelfer/(Teamleiter)
|
|
$HelferLevel=mysqli_real_escape_string($db_link, $HelferLevel);
|
|
|
|
//$HelferName=mysqli_real_escape($db_link,$HelferName);
|
|
$HelferPasswort = "€".$HelferPasswort."ß";
|
|
//echo "<b>".$HelferPasswort."</b>";
|
|
$PasswortHash = password_hash($HelferPasswort, PASSWORD_DEFAULT);
|
|
|
|
|
|
// Neuen Helfer anlegen
|
|
$sql = "INSERT INTO Helfer(Name,Email,Handy,Status,BildFile,DoReport,Passwort,HelferLevel) VALUES ('$HelferName','$HelferEmail','$HelferHandy',1,'',0,'$PasswortHash','$HelferLevel')";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
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 ($db_link,$Email) {
|
|
$Email=mysqli_real_escape_string($db_link, $Email);
|
|
$sql = "SELECT count(HelferID) as Anzahl FROM Helfer Where Email = '" . $Email."'";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
$zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC);
|
|
return $zeile['Anzahl'];
|
|
|
|
};
|
|
|
|
//TODO: pruefen, ob Helfer bereits eingeloggt
|
|
function HelferLogin($db_link,$HelferEmail,$HelferPasswort,$HelferStatus)
|
|
{
|
|
$HelferEmail=mysqli_real_escape_string($db_link, $HelferEmail);
|
|
$HelferStatus=mysqli_real_escape_string($db_link, $HelferStatus);
|
|
|
|
//echo "Test<br>";
|
|
// Helfer Suchen
|
|
$sql = "Select HelferID,Admin,Name,Passwort,HelferLevel From Helfer Where Email='".$HelferEmail."'";
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Login ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC))
|
|
{
|
|
$HelferPasswort = "€".$HelferPasswort."ß";
|
|
//echo "<b>".$HelferPasswort."</b><br>";
|
|
//echo "<b>".$zeile['Passwort']."</b><br>";
|
|
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<br>";
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
// Liste der Helfer fuer Admin-Seite
|
|
//TODO: HelferLevel
|
|
function HelferListe($db_link)
|
|
{
|
|
|
|
$sql = "SELECT HelferID,Name FROM Helfer";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Helferliste ungueltige Abfrage";
|
|
die('Unueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
|
|
function Helferdaten($db_link,$HelferID)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
|
|
$sql = "SELECT * FROM Helfer Where HelferID =".$HelferID;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Helferdaten ungueltige Abfrage<br>\n";
|
|
echo "sql:$sql<br>\n";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
|
|
|
|
function HelferdatenAendern($db_link,$HelferName,$HelferEmail,$HelferHandy,$HelferNewPasswort,$HelferID,$HelferIsAdmin=-1,$AdminID=0)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
$HelferName=mysqli_real_escape_string($db_link, $HelferName);
|
|
$HelferEmail=mysqli_real_escape_string($db_link, $HelferEmail);
|
|
$HelferHandy=mysqli_real_escape_string($db_link, $HelferHandy);
|
|
//if(!is_numeric($HelferIsAdmin))
|
|
// {
|
|
// $HelferIsAdmin=-1;
|
|
//}
|
|
|
|
if( $HelferNewPasswort == "")
|
|
{
|
|
//$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy' ".($HelferIsAdmin!=-1)?',Admin='$HelferIsAdmin.':'." Where HelferId=".$HelferID;
|
|
if ($HelferIsAdmin==-1)
|
|
{
|
|
$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy' Where HelferId=".$HelferID;
|
|
}
|
|
else
|
|
{
|
|
$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',Admin=$HelferIsAdmin Where HelferId=".$HelferID;
|
|
}
|
|
echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
echo "<li>Helferdaten geändert</li>";
|
|
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)
|
|
{
|
|
$sql = "UPDATE Helfer SET Name='".$HelferName."',Email='".$HelferEmail."',Handy='".$HelferHandy."',Passwort='".$PasswortHash."' Where HelferId=".$HelferID;
|
|
}
|
|
else
|
|
{
|
|
$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',Passwort='$PasswortHash',Admin=$HelferIsAdmin Where HelferId=".$HelferID;
|
|
}
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
echo "<li>Passwort geändert</li>";
|
|
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);
|
|
}
|
|
|
|
}
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "HelferdatenAendern ungueltiges Statement";
|
|
echo $sql;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function AlleSchichten($db_link,$Sort,$HelferLevel=1)
|
|
{
|
|
|
|
$Sort=mysqli_real_escape_string($db_link, $Sort);
|
|
|
|
if($Sort=='1')
|
|
{
|
|
$sql = "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";
|
|
}
|
|
else
|
|
{
|
|
$sql = "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";
|
|
}
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichten ungueltige Abfrage";
|
|
echo $Sort;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function AlleSchichtenCount($db_link, $HelferLevel=1)
|
|
{
|
|
|
|
//$sql = "select SUM(Soll) As Anzahl from SchichtUebersicht where HelferLevel=$HelferLevel";
|
|
$sql = "select Sum(Soll) as Anzahl, HelferLevel from SchichtUebersicht,Dienst Where SchichtUebersicht.DienstID=Dienst.DienstID and HelferLevel=$HelferLevel";
|
|
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichtenCount ungueltige Abfrage";
|
|
echo $Sort;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
$zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC);
|
|
return $zeile['Anzahl'];
|
|
|
|
};
|
|
|
|
|
|
function AlleBelegteSchichtenCount($db_link,$HelferLevel=1)
|
|
{
|
|
|
|
//$sql = "select Count(HelferID) As Anzahl from EinzelSchicht";
|
|
$sql = "select Count(HelferID) As Anzahl from EinzelSchicht,Schicht,Dienst Where EinzelSchicht.SchichtID=Schicht.SchichtID and Schicht.DienstID=Dienst.DienstID and HelferLevel=$HelferLevel";
|
|
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichtenCount ungueltige Abfrage";
|
|
echo $Sort;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
$zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC);
|
|
return $zeile['Anzahl'];
|
|
|
|
};
|
|
|
|
|
|
function AlleSchichtenImZeitbereich($db_link,$Von,$Bis,$HelferLevel=1)
|
|
{
|
|
$Von=mysqli_real_escape_string($db_link, $Von);
|
|
$Bis=mysqli_real_escape_string($db_link, $Bis);
|
|
$HelferLevel=mysqli_real_escape_string($db_link, $HelferLevel);
|
|
$sql_helferlevel="and Dienst.HelferLevel=$HelferLevel";
|
|
if($HelferLevel==-1){
|
|
$sql_helferlevel="";
|
|
}
|
|
|
|
$sql = "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 $sql_helferlevel order by Was,Von";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
//echo $sql;
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichtenImZeitbereich ungueltige Abfrage<br>";
|
|
echo $sql;
|
|
die('<br>Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
|
|
function AlleSchichtenEinesHelfers($db_link,$HelferID)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
|
|
$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." order by Von";
|
|
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichtenEinesHelfers ungueltige Abfrage";
|
|
echo $HelferID;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function HelferLoeschen($db_link,$HelferID,$AdminID)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
|
|
|
|
$db_erg = Helferdaten($db_link,$HelferID);
|
|
while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC))
|
|
{
|
|
|
|
$HelferName=$zeile['Name'];
|
|
//echo "HelferName=$HelferName<br>";
|
|
}
|
|
|
|
$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<br>";
|
|
echo "$sql <br>";
|
|
return -2;
|
|
}
|
|
else
|
|
{
|
|
|
|
echo "Helfer $HelferName (HelferID:$HelferID) wurde erfolgreich geloescht<br>";
|
|
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<br>";
|
|
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
|
|
$sql = "SELECT SchichtID FROM EinzelSchicht WHERE HelferID = $HelferID";
|
|
//print_r($sql);
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
$schichtIDs = array();
|
|
while ($zeile = mysqli_fetch_array($db_erg, MYSQLI_NUM)) {
|
|
$schichtIDs[] = $zeile[0];
|
|
}
|
|
return($schichtIDs);
|
|
}
|
|
|
|
function AlleSchichtenEinesHelfersVonJetzt($db_link,$HelferID)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
#TODO: fix GETDATE() array to string conversion
|
|
$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>'".GETDATE()."' order by Von";
|
|
|
|
//$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 = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleSchichtenEinesHelfers ungueltige Abfrage";
|
|
echo $HelferID;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function SchichtenSummeEinesHelfers($db_link,$HelferID)
|
|
{
|
|
|
|
$HelferID=mysqli_real_escape_string($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";
|
|
$sql = "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;
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "SchichtenSummeEinesHelfers ungueltige Abfrage";
|
|
echo $HelferID;
|
|
echo $sql;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
|
|
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);
|
|
|
|
$sql = "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)
|
|
";
|
|
//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 <br>";
|
|
# 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);
|
|
} else if (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($db_link,$HelferID,$SchichtId,$AdminID=0)
|
|
{
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
$SchichtId=mysqli_real_escape_string($db_link, $SchichtId);
|
|
|
|
// Abfrage, ob bereits eine Einzelschicht in der selben Schicht vom Helfer existiert
|
|
$sql = "SELECT EinzelSchichtID from EinzelSchicht WHERE SchichtID='$SchichtId' and HelferID='$HelferID'";
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if(mysqli_num_rows($db_erg) > 0) {
|
|
echo "HelferSchichtZuweisen: Schicht existiert bereits!";
|
|
return false;
|
|
}
|
|
|
|
// Helfer Schicht zuweisen
|
|
$sql = 'INSERT INTO EinzelSchicht(SchichtID,HelferID) VALUES (\''
|
|
. $SchichtId . '\',\''
|
|
. $HelferID . '\')';
|
|
//echo '<script> console.log("Schicht zuweiweisen: '.$sql.'")</script>';
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "HelferSchichtZuweisen ungueltige Abfrage";
|
|
echo $HelferID;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
LogSchichtEingabe($db_link, $HelferID, $SchichtId, -1, "eingetragen",$AdminID);
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function HelferVonSchichtLoeschen($db_link,$HelferID,$EinzelSchichtID,$AdminID=0)
|
|
{
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
$SchichtId=mysqli_real_escape_string($db_link, $SchichtId);
|
|
|
|
|
|
// Log vor Löschen, damit Einzelschicht abgefragt werden kann
|
|
LogSchichtEingabe($db_link, $HelferID, -1, $EinzelSchichtID, "entfernt",$AdminID);
|
|
|
|
// Lösche Einzelschicht
|
|
$sql = "Delete From EinzelSchicht Where EinzelSchichtID =".$EinzelSchichtID;
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function HelferVonSchichtLoeschen_SchichtID($db_link,$HelferID,$SchichtID,$AdminID=0)
|
|
{
|
|
$HelferID=mysqli_real_escape_string($db_link, $HelferID);
|
|
$SchichtId=mysqli_real_escape_string($db_link, $SchichtId);
|
|
|
|
|
|
// Log vor Löschen, damit Einzelschicht abgefragt werden kann
|
|
LogSchichtEingabe($db_link, $HelferID, $SchichtID, -1, "entfernt",$AdminID);
|
|
|
|
// Lösche Einzelschicht
|
|
$sql = "Delete From EinzelSchicht Where SchichtID = $SchichtID and HelferID = $HelferID limit 1;";
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
function DetailSchicht($db_link,$InfoSchichtID)
|
|
{
|
|
$InfoSchichtID=mysqli_real_escape_string($db_link, $InfoSchichtID);
|
|
|
|
|
|
$sql = "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=".$InfoSchichtID;
|
|
|
|
//echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Details ungueltige Abfrage ";
|
|
echo $InfoSchichtID;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
$zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC);
|
|
return $zeile;
|
|
|
|
};
|
|
|
|
|
|
function BeteiligteHelfer($db_link,$InfoSchichtID)
|
|
{
|
|
$InfoSchichtID=mysqli_real_escape_string($db_link, $InfoSchichtID);
|
|
|
|
$sql = "select Helfer.HelferID,Name,Handy FROM EinzelSchicht,Helfer where EinzelSchicht.HelferID=Helfer.HelferID And SchichtID=".$InfoSchichtID;
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Details ungueltige Abfrage ";
|
|
echo $InfoSchichtID;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
return $db_erg;
|
|
|
|
};
|
|
|
|
function GetDienste($db_link)
|
|
{
|
|
$sql = "SELECT DienstID, Was, Wo, Info, Leiter, ElternDienstID, HelferLevel FROM Dienst order By Was";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "GetDienste ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
|
|
function GetDiensteChilds($db_link,$DienstID)
|
|
{
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
|
|
$sql = "SELECT DienstID, Was, Wo, Info, Leiter FROM Dienst where ElternDienstID='".$DienstID."' order by Was";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "GetDienste ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
|
|
function GetDiensteForDay($db_link,$helferlevel,$datestring)
|
|
{
|
|
$unixtime = strtotime($datestring);
|
|
$date1 = date('Y-m-d',$unixtime+24*60*60);
|
|
$date2 = date('Y-m-d',$unixtime);
|
|
$sql = "SELECT DienstId, Was, Wo, Info FROM Dienst INNER JOIN Schicht USING (DienstID) WHERE HelferLevel=".$helferlevel." GROUP BY DienstId HAVING MIN(Von)<'".$date1."' AND MAX(Bis)>'".$date2."' ORDER BY MIN(Von) ASC;";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "GetDienste ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
|
|
function GetSchichtenForDienstForDay($db_link,$DienstID,$datestring)
|
|
{
|
|
$unixtime = strtotime($datestring);
|
|
$date1 = date('Y-m-d',$unixtime+24*60*60);
|
|
$date2 = date('Y-m-d',$unixtime);
|
|
$sql = "select Von, Bis, Soll, Name, Handy from Schicht left join EinzelSchicht using (SchichtId) left join Helfer using (HelferId) where DienstId=".$DienstID." and Von<'".$date1."' and Bis>'".$date2."' order by Von;";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "GetDienste ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
|
|
|
|
function ChangeDienst($db_link,$DienstID,$Was,$Wo,$Info,$Leiter,$Gruppe,$HelferLevel)
|
|
{
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
$Was=mysqli_real_escape_string($db_link, $Was);
|
|
$Wo=mysqli_real_escape_string($db_link, $Wo);
|
|
$Info=mysqli_real_escape_string($db_link, $Info);
|
|
$Leiter=mysqli_real_escape_string($db_link, $Leiter);
|
|
$Gruppe=mysqli_real_escape_string($db_link, $Gruppe);
|
|
$HelferLevel=mysqli_real_escape_string($db_link, $HelferLevel); // int (1,2) Teilnehmer oder Dauerhelfer
|
|
|
|
if(isset($Gruppe) && !empty($Gruppe))
|
|
{
|
|
$sql = "UPDATE Dienst SET Was='".$Was."', Wo='".$Wo."', Info='".$Info."', Leiter=".$Leiter.", ElternDienstID=".$Gruppe." where DienstID=".$DienstID;
|
|
}
|
|
else
|
|
{
|
|
$sql = "UPDATE Dienst SET Was='".$Was."', Wo='".$Wo."', Info='".$Info."', Leiter=".$Leiter.", ElternDienstID=0 where DienstID=".$DienstID;
|
|
}
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler Change Dienst";
|
|
echo $sql;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
}
|
|
|
|
function NewDienst($db_link,$DienstID,$Was,$Wo,$Info,$Leiter,$Gruppe,$HelferLevel)
|
|
{
|
|
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
$Was=mysqli_real_escape_string($db_link, $Was); //Name des Dienstes
|
|
$Wo=mysqli_real_escape_string($db_link, $Wo); //Ort
|
|
$Info=mysqli_real_escape_string($db_link, $Info); //vollstaendige Beschreibung
|
|
$Leiter=mysqli_real_escape_string($db_link, $Leiter); // int HelferID des Leiters
|
|
$Gruppe=mysqli_real_escape_string($db_link, $Gruppe); // ??
|
|
$HelferLevel=mysqli_real_escape_string($db_link, $HelferLevel); // int (1,2) Teilnehmer oder Dauerhelfer
|
|
|
|
|
|
if(isset($Gruppe) && !empty($Gruppe))
|
|
{
|
|
$sql = "INSERT INTO Dienst (Was, Wo, Info, Leiter, ElternDienstID, HelferLevel) values ('$Was','$Wo','$Info',$Leiter,$Gruppe,$HelferLevel)";
|
|
}
|
|
else
|
|
{
|
|
$sql = "INSERT INTO Dienst (Was, Wo, Info, Leiter, ElternDienstID, HelferLevel) values ('$Was','$Wo','$Info',$Leiter,0,$HelferLevel)";
|
|
}
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler New Dienst";
|
|
// echo $sql;
|
|
$err= mysqli_error($db_link);
|
|
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)
|
|
{
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
|
|
|
|
if ($Rekursiv)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
// Pruefen ob noch Schichten eingetragen sind
|
|
$sql = "SELECT SchichtID FROM Schicht where DienstID=".$DienstID;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler DeleteDienst";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
if( mysqli_num_rows($db_erg)==0)
|
|
{
|
|
|
|
// Eintrag löschen
|
|
$sql = "DELETE FROM Dienst where DienstID=".$DienstID;
|
|
|
|
echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler DeleteDienst";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return true;
|
|
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function GetSchichtenEinesDienstes($db_link,$DienstID)
|
|
{
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
|
|
|
|
//$sql = "SELECT SchichtID,Von,Bis,Soll,DATE_FORMAT(Von,'%a %H:%i') AS TagVon FROM Schicht where DienstID=".$DienstID;
|
|
$sql = "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=".$DienstID;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "GetSchichtenEinesDienstes ungueltige Abfrage";
|
|
echo $sql;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
|
|
function ChangeSchicht($db_link,$SchichtID,$Von,$Bis,$Soll)
|
|
{
|
|
$SchichtID=mysqli_real_escape_string($db_link, $SchichtID);
|
|
$Von=mysqli_real_escape_string($db_link, $Von);
|
|
$Bis=mysqli_real_escape_string($db_link, $Bis);
|
|
$Soll=mysqli_real_escape_string($db_link, $Soll);
|
|
|
|
|
|
$sql = "UPDATE Schicht SET Von='".$Von."', Bis='".$Bis."', Soll='".$Soll."' where SchichtID=".$SchichtID;
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler ChangeSchicht";
|
|
echo $sql;
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
}
|
|
|
|
function NewSchicht($db_link,$DienstID,$Von,$Bis,$Soll)
|
|
{
|
|
|
|
$DienstID=mysqli_real_escape_string($db_link, $DienstID);
|
|
$Von=mysqli_real_escape_string($db_link, $Von);
|
|
$Bis=mysqli_real_escape_string($db_link, $Bis);
|
|
$Soll=mysqli_real_escape_string($db_link, $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;
|
|
}
|
|
*/
|
|
$sql = "INSERT INTO Schicht (DienstID, Von, Bis, Soll) values ('".$DienstID."','".$Von."','".$Bis."',".$Soll.")";
|
|
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
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=mysqli_error($db_link);
|
|
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($db_link,$SchichtID,$Rekursiv)
|
|
{
|
|
$SchichtID=mysqli_real_escape_string($db_link, $SchichtID);
|
|
|
|
if ($Rekursiv)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
// Pruefen ob noch Helfer auf der Schicht eingetragen sind
|
|
$sql = "SELECT Name FROM EinzelSchicht,Helfer where SchichtID=".$SchichtID." and Helfer.HelferID=EinzelSchicht.HelferID";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler Change Dienst";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
|
|
if( mysqli_num_rows($db_erg)==0)
|
|
{
|
|
|
|
// Eintrag löschen
|
|
$sql = "DELETE FROM Schicht where SchichtID=".$SchichtID;
|
|
|
|
echo $sql;
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "Fehler Change Dienst";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function AlleHelferSchichtenUebersicht($db_link)
|
|
|
|
{
|
|
$sql="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";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "AlleHelferSchichtenUebersicht ungueltige Abfrage";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
return $db_erg;
|
|
|
|
}
|
|
|
|
|
|
function DatenbankAufDeutsch($db_link)
|
|
{
|
|
$sql = "SET lc_time_names = 'de_DE'";
|
|
$db_erg = mysqli_query( $db_link, $sql );
|
|
|
|
if ( ! $db_erg )
|
|
{
|
|
echo "ungueltiges umstellen auf Deutsch";
|
|
die('Ungueltige Abfrage: ' . mysqli_error($db_link));
|
|
}
|
|
};
|
|
|
|
|
|
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));
|
|
}
|
|
return $db_erg;
|
|
}
|
|
// TODO: als Array zurueckgeben (CreateHelfer4 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 "<script>" . $js_code . "</script>";
|
|
#} else {
|
|
# echo "Keine Ergebnisse gefunden.";
|
|
#}
|
|
#
|
|
|
|
|
|
// direkte ausgabe in Seite
|
|
echo "<table>";
|
|
if(mysqli_num_rows($db_erg) > 0) {
|
|
// Tabellenkopf ausgeben
|
|
echo "<tr>";
|
|
$fields = mysqli_fetch_fields($db_erg);
|
|
foreach($fields as $field) {
|
|
echo "<th>" . $field->name . "</th>";
|
|
}
|
|
echo "</tr>";
|
|
|
|
// Tabelleninhalt ausgeben
|
|
while($row = mysqli_fetch_row($db_erg)) {
|
|
echo "<tr>";
|
|
foreach($row as $value) {
|
|
echo "<td>" . $value . "</td>";
|
|
}
|
|
echo "</tr>";
|
|
}
|
|
} else {
|
|
echo "<tr><td>Keine Ergebnisse gefunden.</td></tr>";
|
|
}
|
|
echo "</table>";
|
|
}
|
|
|
|
|
|
?>
|
|
|