diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..5eea420 --- /dev/null +++ b/INSTALL @@ -0,0 +1,32 @@ +Installation: + +Install a "LAMP" server via your distribution: +* web server + + with php capabilities +* sql database (mariadb) +* email server/ability to send emails (optional) + +Example for debian: +webserver: + apt-get install apache2 openssl python3-certbot-apache php-mysql php-json +sql database: + apt-get install mariadb-server mariadb-client + +Copy the contents of the html directory into your webserver tree + +create database and database user + +restore database from backup: +TODO + +edit konfiguration.php and adapt to your installation + +login with admin user: admin@admin.de pw: 4024ae463a4ef9ff455705afe54f83c3 + + + + + + + + diff --git a/html/Admin.php b/html/Admin.php new file mode 100644 index 0000000..758484d --- /dev/null +++ b/html/Admin.php @@ -0,0 +1,138 @@ +'; + exit; +} +?> + + + + Admin Drop am See + + + + + + + + +"; +if(isset($_SESSION["AliasHelferID"])) +{ + $AliasHelferID = $_SESSION["AliasHelferID"]; +} + +//echo "AliasHelfer=$AliasHelferID
"; + +if(isset($_POST["AliasHelfer"])) +{ + $AliasHelferID = $_POST["AliasHelfer"]; + //echo "post
"; +} + +if($AliasHelferID!=0) +{ + $_SESSION["AliasHelferID"]=$AliasHelferID; +} +//echo "AliasHelfer=$AliasHelferID
"; + +$db_erg = Helferdaten($db_link,$HelferID); +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + $HelferName=$zeile['Name']; + $HelferIsAdmin=$zeile['Admin']; +} + +?> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  Admin HelferDB +
+ Dienste und Schichten verwalten +
+ Seite zur Helfer selbst-Registrierung +
+ Helfer per Link einladen +
+ Helferübersicht +
Helfer als Admin ändern:
+
+ +
Helferdaten ändern
Schichten Anzeigen/Löschen
Schichten Hinzufügen
Admin Kalenderansicht
Ausdrucke
Ausdruck Schichten
+

Dienst: z.B. Badgekontrolle Eingang A. Schicht: ein Dienst zu einer bestimmten Zeit zB 9-12 Uhr +

+ + + diff --git a/html/AdminAlleSchichten.php b/html/AdminAlleSchichten.php new file mode 100644 index 0000000..e9ac7a9 --- /dev/null +++ b/html/AdminAlleSchichten.php @@ -0,0 +1,503 @@ +'; + exit; +} +?> + + + + Helfer Drop am See Alle Schichten + + + + + + + + + + + +
+". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoMeineSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer = $zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + +} + + +if(isset($_GET['InfoAlleSchichtID'])) +{ + $InfoAlleSchichtID = $_GET['InfoAlleSchichtID']; + UNSET($InfoMeineSchichtID); + //echo "". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoAlleSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer=$zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + + + + // Beteiligte Helfer Holen + $db_erg = BeteiligteHelfer($db_link,$InfoAlleSchichtID); + + + $x=0; + + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + $MitHelferID[$x] = $zeile['HelferID']; + $MitHelfer[$x] = $zeile['Name']; + $MitHelferHandy[$x]= $zeile['Handy']; + $x++; + } + + +} + +if(isset($_GET['ZeitBereich'])) +{ + $ZeitBereich = $_GET['ZeitBereich']; +} +else +{ + $ZeitBereich = 1; +} + +function HelferAuswahlButton($db_link,$AliasHelferID){ +echo 'Helfer wählen:
'; +} + +if(isset($_POST['AliasHelfer'])) { + $AliasHelferID=$_POST['AliasHelfer']; +}elseif(isset($_SESSION["AliasHelferID"])){ + $AliasHelferID = $_SESSION["AliasHelferID"]; +}else{ + HelferAuswahlButton($db_link,$AliasHelferID); +exit; +} +HelferAuswahlButton($db_link,$AliasHelferID); + +$_SESSION["AliasHelferID"]=$AliasHelferID; +$AdminID = $_SESSION["AdminID"]; + +$db_erg=Helferdaten($db_link,$HelferID); +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + $HelferName=$zeile['Name']; +} + +// Helferliste Anzeigen +//////////////////////////////////////////////////////// + +?> + + + + +
+'); + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + +} + +if(isset($_POST['minusschicht'])) { +// Mich aus Schicht entfernen + $messages = []; + + $SchichtID = $_POST['minusschicht']; + + if(empty($messages)) + { + // Helfer aus Schicht entfernen + $db_erg = HelferVonSchichtLoeschen_SchichtID($db_link,$AliasHelferID,$SchichtID,$AdminID); + + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + + +} + +/// Ausgabe auf Deutsch umstellen +///////////////////////////////////////////////////////////////////////// + + DatenbankAufDeutsch($db_link); + + +// Zusammenfassung Eigener Schichten + $db_erg = SchichtenSummeEinesHelfers($db_link,$AliasHelferID); + $zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC); + + echo '
'; + echo " Dienstplan von $HelferName (Zusammenfassung)
"; + echo $zeile['Anzahl']; + echo " Schichten insgesamt "; + echo $zeile['Dauer']/3600; + echo " Stunden"; + echo '


'; +/// Schichten Auswahl +//////////////////////////////////////////////////////// +$addschicht =$_SESSION["addschicht"]; +$dienstsort =$_SESSION["dienstsort"]; + + + +if(isset($_POST['addschicht']) && $_POST['addschicht']=='1') +{ + $addschicht='1'; + $dienstsort='1'; +} +if(isset($_POST['addschicht']) && $_POST['addschicht']=='2') +{ + $addschicht='2'; + $dienstsort='2'; +} +if(isset($_POST['addschicht']) && $_POST['addschicht']=='0') +{ + $addschicht='0'; +} + +$_SESSION["addschicht"] =$addschicht; +$_SESSION["dienstsort"] =$dienstsort; + +//echo "
Detail=".$addschicht."
"; + +if($addschicht=='0') +{ + echo "

Schichten Hinzufügen geordnet nach"; + echo ""; + echo "

"; +} + +//echo "InfoAlleSchichtID ".$InfoAlleSchichtID; + +if($addschicht!='0') +{ + //$db_erg = AlleSchichten($db_link,$dienstsort); + //$db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-18 00:00:00","2023-05-19 00:00:00"); + if ($ZeitBereich==1) // Alle + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2000-05-18 00:00:00","2200-05-19 00:00:00",-1); + } + if ($ZeitBereich==2) // Davor + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2000-05-18 00:00:00","2023-05-18 00:00:00",-1); + } + if ($ZeitBereich==3) // Do + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-18 00:00:00","2023-05-19 00:00:00",-1); + } + if ($ZeitBereich==4) // Fr + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-19 00:00:00","2023-05-20 00:00:00",-1); + } + if ($ZeitBereich==5) // Sa + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-20 00:00:00","2023-05-21 00:00:00",-1); + } + if ($ZeitBereich==6) // So + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-21 00:00:00","2023-05-22 00:00:00",-1); + } + if ($ZeitBereich==7) // Danach + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-22 00:00:00","2223-05-22 00:00:00",-1); + } + // fuer Anzahlanzeige in Ueberschrift + $iAlleSchichtenCount = AlleSchichtenCount($db_link); + $iBelegteSchichtenCount = AlleBelegteSchichtenCount($db_link); + + + //echo "

"; + echo ''; + echo ""; + echo ""; + echo ""; + + /* + if ($dienstsort=='1') + { + echo ""; + } + else + { + echo ""; + } + */ + if ($ZeitBereich==1) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==2) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==3) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==4) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==5) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==6) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==7) + { + echo ""; + } + else + { + echo ""; + } + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + + echo ""; + echo ""; + + $OldTag = ""; + $OldWas = ""; + # um Zeilen mit von mir belegten Schichten hervorzuheben + $MeineDienste = SchichtIdArrayEinesHelfers($db_link,$AliasHelferID); + //print_r($MeineDienste); + + echo '
". "Alle Schichten der Con (" . $iBelegteSchichtenCount."/".$iAlleSchichtenCount. ")
". "Dienst" . "". "Von" . "". "Alle" . "". "Alle" . "". "Davor" . "". "Davor" . "". "Do" . "". "Do" . "". "Fr" . "". "Fr" . "". "Sa" . "". "Sa" . "". "So" . "". "So" . "". "Danach" . "". "Danach" . "". "Davor" . "". "Do" . "". "Fr" . "". "Sa" . "". "So" . "". "Danach" . "
'; + echo ''; + + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + + + if ($dienstsort=='1') + { + $Tag = $zeile['Tag']; + + if ($Tag!=$OldTag) + { + echo ""; + $OldTag = $Tag; + } + } + else + { + $Was = $zeile['Was']; + + if ($Was!=$OldWas) + { + echo ""; + /* + echo ""; + echo ""; + echo ""; + echo ""; + */ + echo ""; + $OldWas = $Was; + } + } + $Color="red"; + if ( $zeile['Ist'] > 0 ) + { + $Color="yellow"; + } + if ( $zeile['Ist'] >= $zeile['Soll'] ) + { + $Color="green"; + } + $Von = $zeile['Ab']; + $Bis = $zeile['Bis']; + if ( substr($Von,0,2) == substr($Bis,0,2)) + { + $Bis = substr($Bis,2); + } + $Von = substr($Von,2); + + // Meine Schichten gruen einfaerben + if(in_array($zeile['SchichtID'], $MeineDienste)) { + $rowstyle = ' style="background-color:lightgreen" '; + $regtext = 'Meine!'; + } else { + // dummy-style, um SchichtID unsichtbar im Tag anzuzeigen + $rowstyle = 'style="dummy:'.$zeile['SchichtID'].'"'; + $regtext = ''; + } + + echo ''; + + if ($dienstsort=='1') + { + echo ""; + } + else + { + echo ""; + } + echo ""; + echo ""; + echo ""; + # buttons sind in der selben Zelle + echo ""; + //echo ""; + echo "\n"; + + } + echo "
"; + echo $Tag; + echo "
"; + echo $Was; + echo "". "Von" . "". "Bis" . "". "Ist/Soll" . "". "Add" . "
". $zeile['Was'] . "". $zeile['Tag'] . "". $Von . "". $Bis . "". $zeile['Ist'] . "/"; + echo "". $zeile['Soll'] . "" . "" .""; + echo "" . "   $regtext" ."$regtext
"; + + +} + + + + + + + +mysqli_free_result( $db_erg ); + + +?> + +
+
+ + + diff --git a/html/AdminDienste.php b/html/AdminDienste.php new file mode 100644 index 0000000..c79ef90 --- /dev/null +++ b/html/AdminDienste.php @@ -0,0 +1,360 @@ +'; + exit; +} +?> + + + + Admin Drop am See + + + + + + + +
+"; + } + + } + + + + if(isset($_POST['ShowSchicht'])) { + $SchichtID=$_POST['SchichtSearch']; + } + if(isset($_POST['SchichtSearch'])) { + $SchichtID=$_POST['SchichtSearch']; + } + + if(isset($_POST['ShowSchichten'])) { + $DienstID=$_POST['DienstSearch']; + } + + if(isset($_POST['DienstSearch'])) { + $DienstID=$_POST['DienstSearch']; + $SchichtID=0; + } + + + + +// Dienste Anzeigen +//////////////////////////////////////////////////////// + +?> + +
+ + "; +echo "
Dienst"; +echo "
"; +echo "

"; +//echo ""; + +// Aktueller Dienst und dessen Schichten Anzeigen +//////////////////////////////////////////////////////// + +?> + + + + + + + + + + + + + + + + + + + + + + + +
Was
+ +
Wo
+ +
Info
+ +
Leiter
+ + + "; + $db_erg = HelferListe($db_link); + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + if ($zeile['HelferID']!=$Leiter) + { + echo ""; + + } + else + { + echo ""; + + } + } + echo ""; + ?> +
Gruppe
+ + "; + $db_erg = GetDiensteChilds($db_link,0); + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + + if ($zeile['DienstID']!=$Gruppe) + { + echo ""; + + } + else + { + echo ""; + + } + } + echo ""; + ?> +
HelferLevel
+ +
+ +

+ +
+ + + + +
+ + "; +echo "
Schicht"; +echo "
"; +echo "

"; +//echo ""; + +?> + + + + + + + + + + + + + + + +
Von
+ +
Bis
+ +
Soll
+ +
+

+ + +
+ + + + + + + +
+ + + diff --git a/html/AdminHelferUebersicht.php b/html/AdminHelferUebersicht.php new file mode 100644 index 0000000..9b07a61 --- /dev/null +++ b/html/AdminHelferUebersicht.php @@ -0,0 +1,124 @@ +'; + exit; +} +?> + + + + Admin Drop am See + + + + + + + + + + +
+
"; +?> + + + +
  Übersicht Helfer und Ihre Schichten
+ +"; + if($HelferName!= $OldHelferName) + { + if ($EinzelDienstStunden !=""){ + // Neue Ueberschrift mit Helfernamen + Stunden + echo "$HelferUeberschrift "; + echo ""; + $dauer=0; + echo "$EinzelDienstStunden\n "; + } + $EinzelDienstStunden=""; + $HelferUeberschrift=""; + $dauer=$dauer+(int)$zeile["Dauer"]; + +} +echo "$EinzelDienstStunden"; + + +echo "
$dauer Stunden
"; + echo "
\n"; + echo "  "; + echo "
"; + echo "
"; + echo "
".$HelferName; + $OldHelferName=$HelferName; + $OldAliasHelferID=$AliasHelferID; + $i+=1; + } + $EinzelDienstStunden.="
".(int)$zeile["Dauer"].""; + $EinzelDienstStunden.= $zeile["Was"]; + $EinzelDienstStunden.= "
"; + +?> + + +
+ + + diff --git a/html/AdminMeineSchichten.php b/html/AdminMeineSchichten.php new file mode 100644 index 0000000..a77fe22 --- /dev/null +++ b/html/AdminMeineSchichten.php @@ -0,0 +1,288 @@ +'; + exit; +} +?> + + + + Admin Drop am See - Schichten editieren + + + + + + + +

Admin: Schichten editieren

+
+". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoMeineSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer = $zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + +} + + +if(isset($_GET['InfoAlleSchichtID'])) +{ + $InfoAlleSchichtID = $_GET['InfoAlleSchichtID']; + UNSET($InfoMeineSchichtID); + //echo "". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoAlleSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer=$zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + + + + // Beteiligte Helfer Holen + $db_erg = BeteiligteHelfer($db_link,$InfoAlleSchichtID); + + + $x=0; + + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + $MitHelferID[$x] = $zeile['HelferID']; + $MitHelfer[$x] = $zeile['Name']; + $MitHelferHandy[$x]= $zeile['Handy']; + $x++; + } + + +} + +function HelferAuswahlButton($db_link,$AliasHelferID){ +echo 'Helfer wählen:
'; +} + + + +if(isset($_POST['AliasHelfer'])) { + $AliasHelferID=$_POST['AliasHelfer']; + echo "AliasHelfer: $AliasHelferID
"; +}elseif(isset($_SESSION["AliasHelferID"])){ + $AliasHelferID = $_SESSION["AliasHelferID"]; +}else{ + HelferAuswahlButton($db_link,$AliasHelferID); +exit; +} +HelferAuswahlButton($db_link,$AliasHelferID); + + +$_SESSION["AliasHelferID"]=$AliasHelferID; +$AdminID = $_SESSION["AdminID"]; + +$db_erg=Helferdaten($db_link,$AliasHelferID); + +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + $HelferName=$zeile['Name']; +} + +/// Schicht Löschen +//////////////////////////////////////////////////////// + + if(isset($_POST['Del'])) { + + $messages = []; + + $EinzelSchichtID = $_POST['Del']; + + + // Eingaben überprüfen: + + //if(!preg_match('/^[a-zA-Z]+[a-zA-Z0-9._]+$/', $HelferName)) { + // $messages[] = 'Bitte prüfen Sie die eingegebenen Namen'; + //} + + + + if(empty($messages)) { + + $db_erg = HelferVonSchichtLoeschen($db_link,$AliasHelferID,$EinzelSchichtID,$HelferID); + + } else { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + +} + + + +// Helferliste Anzeigen +//////////////////////////////////////////////////////// + +?> + + + +
+'); + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + +} + +/// Ausgabe auf Deutsch umstellen +///////////////////////////////////////////////////////////////////////// + + DatenbankAufDeutsch($db_link); + +/// Alle Schichten Des Helfers Anzeigen +//////////////////////////////////////////////////////// + + +$db_erg = AlleSchichtenEinesHelfers($db_link,$AliasHelferID); + +if ( ! $db_erg ) +{ + echo "AlleSchichten des Helfes ungültige Abfrage"; + die('Ungültige Abfrage: ' . mysqli_error()); +} + + $iSQLCount = mysqli_num_rows($db_erg); + //$iSQLCount = 3; + +echo ''; + + echo ""; + echo ""; + echo ""; + //echo ""; + //echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + + +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + + //echo ''; + echo ''; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + +} +echo "
". "Schichten von $HelferName (".$iSQLCount." Schichten)
". "Von" . "". "Bis" . "". "Del" . "
". $zeile['Was'] . "". $zeile['Ab'] . "". $zeile['Bis'] . "". "

" . "
"; + +echo "

"; + +$iAlleSchichtenCount = AlleSchichtenCount($db_link); +$iBelegteSchichtenCount = AlleBelegteSchichtenCount($db_link); + +echo ''; + echo ""; + echo ""; + echo ""; +echo "
". "Alle Schichten der Con (".$iBelegteSchichtenCount."/".$iAlleSchichtenCount.")
"; + + +mysqli_free_result( $db_erg ); + + +?> + +
+
+ + + diff --git a/html/AdminUserdaten.php b/html/AdminUserdaten.php new file mode 100644 index 0000000..4a4648e --- /dev/null +++ b/html/AdminUserdaten.php @@ -0,0 +1,188 @@ +'; + exit; + + + +} + +function HelferAuswahlButton($db_link,$AliasHelferID){ +echo 'Helfer wählen:
'; +} + +if(isset($_POST['AliasHelfer'])) { + $AliasHelferID=$_POST['AliasHelfer']; +}elseif(isset($_SESSION["AliasHelferID"])){ + $AliasHelferID = $_SESSION["AliasHelferID"]; +}else{ + HelferAuswahlButton($db_link,$AliasHelferID); + exit; +} +HelferAuswahlButton($db_link,$AliasHelferID); + +$_SESSION["AliasHelferID"]=$AliasHelferID; +$AdminID = $_SESSION["AdminID"]; + +echo "Admin=$AdminID
"; +echo "Helfer=$HelferID
"; +echo "Alias=$AliasHelferID
"; + + +?> + + + + Drop am See Helferdaten ändern + + + + + + + +"; + } + else + { + $HelferIsAdmin=0; + } + if(empty($messages)) { + // Helferdaten Ändern + HelferdatenAendern($db_link,$HelferName,$HelferEmail,$HelferHandy,$HelferNewPasswort,$AliasHelferID,$HelferIsAdmin,$HelferID); + + } else { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + } + + +/////////////////////////////////////////////////////////////// +// Helfer Loeschen +/////////////////////////////////////////////////////////////// + +if(isset($_POST['del'])) +{ + HelferLoeschen($db_link,$AliasHelferID,$AdminID); +} + +//////////////////////////////////////////////////////////////// +// Helferdate holen +/////////////////////////////////////////////////////////////// + +$db_erg = Helferdaten($db_link,$AliasHelferID); + + +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + $HelferName = $zeile['Name']; + $HelferEmail = $zeile['Email']; + $HelferHandy = $zeile['Handy']; + $HelferIsAdmin = $zeile['Admin']; + +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + +
Helferdaten
Name
+ +
Email
+ +
Handy
+ +
Admin Passwort
+ +
Neues Helfer Passwort
+ +
+ + + + + + + +
>ist Admin
+

+

+ + + + diff --git a/html/AlleSchichten.php b/html/AlleSchichten.php new file mode 100644 index 0000000..48cb3d9 --- /dev/null +++ b/html/AlleSchichten.php @@ -0,0 +1,463 @@ + + + + Helfer Drop am See Alle Schichten + + + + + + + + + + + + +

Alle Schichten / Schichten hinzufügen

+
+". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoMeineSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer = $zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + +} + + +if(isset($_GET['InfoAlleSchichtID'])) +{ + $InfoAlleSchichtID = $_GET['InfoAlleSchichtID']; + UNSET($InfoMeineSchichtID); + //echo "". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoAlleSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer=$zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + + + + // Beteiligte Helfer Holen + $db_erg = BeteiligteHelfer($db_link,$InfoAlleSchichtID); + + + $x=0; + + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + $MitHelferID[$x] = $zeile['HelferID']; + $MitHelfer[$x] = $zeile['Name']; + $MitHelferHandy[$x]= $zeile['Handy']; + $x++; + } + + +} + +if(isset($_GET['ZeitBereich'])) +{ + $ZeitBereich = $_GET['ZeitBereich']; +} +else +{ + $ZeitBereich = 1; +} + + + +// Helferliste Anzeigen +//////////////////////////////////////////////////////// + +?> + + +
+'); + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + +} + +if(isset($_POST['minusschicht'])) { +// Mich aus Schicht entfernen + $messages = []; + + $SchichtID = $_POST['minusschicht']; + + if(empty($messages)) + { + // Helfer aus Schicht entfernen + $db_erg = HelferVonSchichtLoeschen_SchichtID($db_link,$HelferID,$SchichtID); + + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + + +} + +/// Ausgabe auf Deutsch umstellen +///////////////////////////////////////////////////////////////////////// + + DatenbankAufDeutsch($db_link); + + +// Zusammenfassung Eigener Schichten + $db_erg = SchichtenSummeEinesHelfers($db_link,$HelferID); + $zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC); + + echo '
'; + echo ''. " Mein Dienstplan ("; + echo $zeile['Anzahl']; + echo " Schichten, "; + echo $zeile['Dauer']/3600; + echo " Stunden)"; + echo '


'; +/// Schichten Auswahl +//////////////////////////////////////////////////////// +$addschicht =$_SESSION["addschicht"]; +$dienstsort =$_SESSION["dienstsort"]; + + + +if(isset($_POST['addschicht']) && $_POST['addschicht']=='1') +{ + $addschicht='1'; + $dienstsort='1'; +} +if(isset($_POST['addschicht']) && $_POST['addschicht']=='2') +{ + $addschicht='2'; + $dienstsort='2'; +} +if(isset($_POST['addschicht']) && $_POST['addschicht']=='0') +{ + $addschicht='0'; +} + +$_SESSION["addschicht"] =$addschicht; +$_SESSION["dienstsort"] =$dienstsort; + +//echo "
Detail=".$addschicht."
"; + +if($addschicht=='0') +{ + echo "

Schichten Hinzufügen geordnet nach"; + echo ""; + echo "

"; +} + +//echo "InfoAlleSchichtID ".$InfoAlleSchichtID; + +if($addschicht!='0') +{ + //$db_erg = AlleSchichten($db_link,$dienstsort); + //$db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-18 00:00:00","2023-05-19 00:00:00",$HelferLevel); + if ($ZeitBereich==1) // Alle + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2000-05-18 00:00:00","2200-05-19 00:00:00",$HelferLevel); + } + if ($ZeitBereich==2) // Davor + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2000-05-18 00:00:00","2023-05-18 00:00:00",$HelferLevel); + } + if ($ZeitBereich==3) // Do + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-18 00:00:00","2023-05-19 00:00:00",$HelferLevel); + } + if ($ZeitBereich==4) // Fr + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-19 00:00:00","2023-05-20 00:00:00",$HelferLevel); + } + if ($ZeitBereich==5) // Sa + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-20 00:00:00","2023-05-21 00:00:00",$HelferLevel); + } + if ($ZeitBereich==6) // So + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-21 00:00:00","2023-05-22 00:00:00",$HelferLevel); + } + if ($ZeitBereich==7) // Danach + { + $db_erg = AlleSchichtenImZeitbereich($db_link,"2023-05-22 00:00:00","2223-05-22 00:00:00",$HelferLevel); + } + // fuer Anzahlanzeige in Ueberschrift + $iAlleSchichtenCount = AlleSchichtenCount($db_link); + $iBelegteSchichtenCount = AlleBelegteSchichtenCount($db_link); + echo ""; + + //echo "

"; + echo ''; + echo ""; + echo ""; + + /* + if ($dienstsort=='1') + { + echo ""; + } + else + { + echo ""; + } + */ + echo ""; // Zeitbereich tr + if ($ZeitBereich==1) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==2) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==3) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==4) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==5) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==6) + { + echo ""; + } + else + { + echo ""; + } + if ($ZeitBereich==7) + { + echo ""; + } + else + { + echo ""; + } + + echo ""; //Zeitbereich tr + + $OldTag = ""; + $OldWas = ""; + # um Zeilen mit von mir belegten Schichten hervorzuheben + $MeineDienste = SchichtIdArrayEinesHelfers($db_link,$HelferID); + //print_r($MeineDienste); + + echo '
". "Alle Schichten der Con (" . $iBelegteSchichtenCount."/".$iAlleSchichtenCount. ")
". "Dienst" . "". "Von" . "
". "Alle" . "". "Alle" . "". "Davor" . "". "Davor" . "". "Do" . "". "Do" . "". "Fr" . "". "Fr" . "". "Sa" . "". "Sa" . "". "So" . "". "So" . "". "Danach" . "". "Danach" . "
'; + echo ''; + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + + + if ($dienstsort=='1') + { + $Tag = $zeile['Tag']; + + if ($Tag!=$OldTag) + { + echo ""; + $OldTag = $Tag; + } + } + else + { + $Was = $zeile['Was']; + + if ($Was!=$OldWas) + { + echo ""; + /* + echo ""; + echo ""; + echo ""; + echo ""; + */ + echo ""; + $OldWas = $Was; + } + } + $Color="red"; + if ( $zeile['Ist'] > 0 ) + { + $Color="yellow"; + } + if ( $zeile['Ist'] >= $zeile['Soll'] ) + { + $Color="green"; + } + $Von = $zeile['Ab']; + $Bis = $zeile['Bis']; + if ( substr($Von,0,2) == substr($Bis,0,2)) + { + $Bis = substr($Bis,2); + } + $Von = substr($Von,2); + + // Meine Schichten gruen einfaerben + if(in_array($zeile['SchichtID'], $MeineDienste)) { + $rowstyle = ' style="background-color:lightgreen" '; + $regtext = 'Meine!'; + } else { + // dummy-style, um SchichtID unsichtbar im Tag anzuzeigen + $rowstyle = 'dbinfo="SchichtID:'.$zeile['SchichtID'].';helferlvl:'.$HelferLevel.'" '; + $regtext = ''; + } + + echo ''; + + if ($dienstsort=='1') + { + echo ""; + } + else + { + echo ""; + } + echo ""; + echo ""; + echo ""; + # buttons sind in der selben Zelle + echo ""; + //echo ""; + echo "\n"; + + } + echo "
"; + echo $Tag; + echo "
"; + echo $Was; + echo "". "Von" . "". "Bis" . "". "Ist/Soll" . "". "Add" . "
". $zeile['Was'] . "". $zeile['Tag'] . "". $Von . "". $Bis . "". $zeile['Ist'] . "/"; + echo "". $zeile['Soll'] . "" . "" .""; + echo "" . "   $regtext" ."$regtext
"; + + +} + + + + + + + +mysqli_free_result( $db_erg ); + + +?> + +
+
+ + + diff --git a/html/Ausdrucke.php b/html/Ausdrucke.php new file mode 100644 index 0000000..826ddd2 --- /dev/null +++ b/html/Ausdrucke.php @@ -0,0 +1,167 @@ + + + + Admin Drop am See + + + + + + + + + + +
+ + + + + + + +
  Übersicht Dienst DAS 2023
+ + +'; + +$db_erg = GetDiensteChilds($db_link,0); +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + echo ""; + echo $zeile["Was"]; + echo ""; + + $db_erg2 = GetDiensteChilds($db_link,$zeile["DienstID"]); + while ($zeile = mysqli_fetch_array( $db_erg2, MYSQLI_ASSOC)) + { + echo ""; + echo $zeile["Was"]; + echo ""; + } + +} + +echo ""; + + + + +$db_erg = AlleSchichtenImZeitbereich($db_link,"2000-05-18 00:00:00","2200-05-19 00:00:00"); + +$OldWas=""; +echo "

"; +?> + + + +"; + //echo '
  Übersicht Schichten der Dienste DAS 2023
'; + echo '
'; + echo ""; + $OldWas=$Was; + + + } + + echo ""; + + +} + +echo "
"; + echo $Was; + echo "
"; + echo $zeile["Ab"]; + echo ""; + echo $zeile["Bis"]; + echo ""; + + $db_erg2 = BeteiligteHelfer($db_link,$zeile["SchichtID"]); + while ($zeile = mysqli_fetch_array( $db_erg2, MYSQLI_ASSOC)) + { + + echo $zeile["Name"]; + echo " "; + echo $zeile["Handy"]; + echo ","; + } + echo "
"; + +$OldHelferName=""; + +echo "

"; +?> + + + +"; + //echo '
  Übersicht Helfer und Ihre Schichten DAS 2023
'; + echo '
'; + echo ""; + $OldHelferName=$HelferName; + + + } + + echo ""; + + +} + + +echo "
"; + echo $HelferName; + echo "
"; + echo (int)$zeile["Dauer"]; + echo ""; + echo $zeile["Was"]; + echo "
"; + +?> + + + + + + + + diff --git a/html/Bilder/Attention_Sign.svg b/html/Bilder/Attention_Sign.svg new file mode 100644 index 0000000..2e424ce --- /dev/null +++ b/html/Bilder/Attention_Sign.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + diff --git a/html/Bilder/Info.jpeg b/html/Bilder/Info.jpeg new file mode 100644 index 0000000..4573482 Binary files /dev/null and b/html/Bilder/Info.jpeg differ diff --git a/html/Bilder/More.jpeg b/html/Bilder/More.jpeg new file mode 100644 index 0000000..12fc5a5 Binary files /dev/null and b/html/Bilder/More.jpeg differ diff --git a/html/Bilder/PfeilRechts2.jpeg b/html/Bilder/PfeilRechts2.jpeg new file mode 100644 index 0000000..2063c3a Binary files /dev/null and b/html/Bilder/PfeilRechts2.jpeg differ diff --git a/html/Bilder/PfeilRechts2.png b/html/Bilder/PfeilRechts2.png new file mode 100644 index 0000000..6aba572 Binary files /dev/null and b/html/Bilder/PfeilRechts2.png differ diff --git a/html/Bilder/PfeilRunter.jpeg b/html/Bilder/PfeilRunter.jpeg new file mode 100644 index 0000000..75b4523 Binary files /dev/null and b/html/Bilder/PfeilRunter.jpeg differ diff --git a/html/Bilder/calendar_lines.png b/html/Bilder/calendar_lines.png new file mode 100644 index 0000000..c3c1954 Binary files /dev/null and b/html/Bilder/calendar_lines.png differ diff --git a/html/Bilder/calendar_lines1.png b/html/Bilder/calendar_lines1.png new file mode 100644 index 0000000..aefe293 Binary files /dev/null and b/html/Bilder/calendar_lines1.png differ diff --git a/html/Bilder/dot.png b/html/Bilder/dot.png new file mode 100644 index 0000000..1fcb061 Binary files /dev/null and b/html/Bilder/dot.png differ diff --git a/html/CreateHelfer.php b/html/CreateHelfer.php new file mode 100644 index 0000000..ae6a3b7 --- /dev/null +++ b/html/CreateHelfer.php @@ -0,0 +1,178 @@ + + + + Drop Am See 2023 + + + + + + + + + +
"; + $HelferName = ''; + $HelferEmail = ''; + $HelferHandy = ''; + $HelferPasswort = ''; + $HelferPasswort2 = ''; + + //die('

"; + } + } else { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + +} + + +?> + +

Hier können Sie sich selbst einen Account als Helfer anlegen.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Helferdaten
Name
+ +
Email
+ +
Handy
+ +
Passwort
+ +
Passwort wiederholen
+ +
Helferlevel
+ +
+ +
+ + + +
+ + + + + + + diff --git a/html/DecodeToken.php b/html/DecodeToken.php new file mode 100644 index 0000000..ff1994f --- /dev/null +++ b/html/DecodeToken.php @@ -0,0 +1,46 @@ + + + + + + \n"; +echo "iv: $encrypted_iv
\n"; + +// Erstellen eines Cipher-Objekts für die Verschlüsselung +$cipher_method = "AES-256-CBC"; +$iv_length = openssl_cipher_iv_length($cipher_method); +$iv = base64_decode($encrypted_iv); +$cipher_options = OPENSSL_RAW_DATA; +$cipher_key = openssl_digest($secret_key, 'SHA256', true); + +// Entschlüsseln des verschlüsselten Textes +$decoded_cipher_text = base64_decode($encrypted_data); +$iv = base64_decode($encrypted_iv); +$iv = substr($decoded_cipher_text, 0, $iv_length); +$cipher_text = substr($decoded_cipher_text, $iv_length); +$decrypted_email = openssl_decrypt($cipher_text, $cipher_method, $cipher_key, $cipher_options, $iv); + +// Verifikationsstring überprüfen und entfernen +$verification_length = strlen($secret_verification); +if(substr($decrypted_email, -$verification_length) == $secret_verification) { + $decrypted_email = substr($decrypted_email, 0, -$verification_length); +} + +// Ausgabe der entschlüsselten E-Mail-Adresse +echo "E-Mail-Adresse: ", $decrypted_email, "
\n"; + +} else { + +echo "Kein gültiges Token!
"; +} + +?> + diff --git a/html/EmailZuToken.php b/html/EmailZuToken.php new file mode 100644 index 0000000..97a23be --- /dev/null +++ b/html/EmailZuToken.php @@ -0,0 +1,218 @@ +'; + exit; +} + +function validate_email($email) { + // Prüfen, ob die Email-Adresse syntaktisch gültig ist + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + return false; + } + + // Prüfen, ob das @-Symbol enthalten ist + if (strpos($email, '@') === false) { + return false; + } + + // Prüfen, ob der Teil nach dem @-Symbol eine gültige Domain enthält + $parts = explode('@', $email); + $domain = $parts[1]; + if (!filter_var($domain, FILTER_VALIDATE_DOMAIN)) { + return false; + } + + // Alle Checks bestanden + return true; +} + + +// wird immer auf 2 (Teilnehmer) gesetzt und wird auch nicht gespeichert, wenn anders gesetzt +// andere level muessen jedes Mal gesetzt werden +$level=2; + +if(isset($_POST['helfer-status'])) { + $level=$_POST['helfer-status']; +} + +// nicht sicher, wo so ein default-text herkommen sollte +// oder ob es tatsächlich einen geben sollte +$email_subject="Drop am See beginnt bald!"; +if(isset($_POST['email-subject'])) { + $email_subject=$_POST['email-subject']; +} + +$email_cc="drophelfer@gmail.com"; +if(isset($_POST['email-cc'])) { + $email_cc=$_POST['email-cc']; +} + +$email_text=" +Lieber Teilnehmer, +trage dich bitte mit folgendem Link für eine Stunde pro Person als Helfer bei uns ein.Wir verschicken eine Mail pro Emailaddresse, also bitte für alle, die mit dieser Emailaddresse angemeldet sind. + +Danke für deine Mithilfe! + +XXtokenXX + +Du kannst dich auch später wieder über den Link einloggen und die Schicht ändern. + +Viele Grüße, +dein Drop am See Team +"; + +if(isset($_POST['email-text'])) { + $email_text=$_POST['email-text']; +} + +$sendmail=0; +if(isset($_POST['sendmail'])) { + $sendmail=$_POST['sendmail']; +} + + +?> + + + Helfer Drop am See: Email Tokens generieren + + + + + + + + + + +
+

+

Emails mit Login-Link zur HelferDB generieren

+Generiert Tokens (bzw URLs mit Token) aus einer Liste von Email-Addressen.
+Bei Klick auf den generierten Link wird sofort ein Account zur Email angelegt.
+Als Passwort wird das Token gesetzt. Man kann sich mit dem Link danach wieder in den selben Account einloggen. +

+

+!! Emails werden erst verschickt, wenn die Checkbox unten angeklickt ist +

+ +
+

+ + +

+ Subject der Email:
+ +

+ CC (Kopie) der Email geht an:
+ +

+ Emailtext (XXtokenXX an die Stelle schreiben, an der der Link im Emailtext stehen soll): +

+ +

+

+Liste von Emails, an die Anschreiben verschickt wird (Eine Email pro Zeile, nur die Email xxx@yyy.zz, keine Leerzeichen):
+
+

+
+ + +
+
+ +
+

+"; + echo $sendmail ."
"; + echo "=======================================
"; + echo "To: ".$decrypted_data['email']." (level: ".$decrypted_data['level']."):
"; + echo "CC: ".$email_cc."
"; + echo "
".$email_subst_text."

"; + echo "$email: $token_url (check: ".$decrypted_data['email'].", lv: ".$decrypted_data['level'].")
"; + } else { + // Email verschicken - send mail + $to=$decrypted_data['email']; + $from="root"; + $headers = 'From: ' . $from. "\r\n"; + $headers .= 'CC: ' . $email_cc . "\r\n"; + if (mail($to, $email_subject, $email_subst_text, $headers)) { + echo "Die E-Mail an $to wurde erfolgreich versendet."; + error_log(date('Y-m-d H:i') . "(AdminID:$AdminID) Name: $HelferName (HelferID:$HelferID) hat Email mit Link verschickt an: $to mit CC an: $email_cc\n",3,LOGFILE); + } else { + echo "Beim Versenden der E-Mail an $to ist ein Fehler aufgetreten."; + } + } + } +} + + +?> + + + + + + + + \n"; +# // encode +# $encrypted_data=encode_string($secret_key, $email,$secret_verification); +# $decrypted_data = decode_string($secret_key, $encrypted_data,$secret_verification); +# // Ausgabe des verschlüsselten Textesin der URL +# echo "$email: $urlprefix/$linktext(check: $decrypted_data )
"; +# exit; +#} + +?> diff --git a/html/Info.php b/html/Info.php new file mode 100644 index 0000000..a7a1532 --- /dev/null +++ b/html/Info.php @@ -0,0 +1,13 @@ + + + + Helfer Drop am See Home + + + + + + + + + diff --git a/html/Kalender-all.html b/html/Kalender-all.html new file mode 100644 index 0000000..ff31ce3 --- /dev/null +++ b/html/Kalender-all.html @@ -0,0 +1,198 @@ + + + + Helferdienste + + + + + + + + + + + +
+
+  + Mehrtagesdienste anzeigen: + Einfärben: + Filtern: +
+ +
+ +
+
+
 
+
 
+
+
+
+
+
+
+
+ +
+
+
+
+ + + diff --git a/html/Kalender.php b/html/Kalender.php new file mode 100644 index 0000000..730d348 --- /dev/null +++ b/html/Kalender.php @@ -0,0 +1,194 @@ + + + + Helferdienste + + + + + + + + + + + +
+
+  + Mehrtagesdienste anzeigen: + Einfärben: + Filtern: +
+ Achtung: Ende Nachtdienste wird falsch angezeigt (immer Mitternacht) - Popup-Fenster zeigt richtige Zeiten +
+ +
+
+
 
+
 
+
+
+
+
+
+
+
+ +
+
+
+
+ + + diff --git a/html/MeineSchichten.php b/html/MeineSchichten.php new file mode 100644 index 0000000..d41f51e --- /dev/null +++ b/html/MeineSchichten.php @@ -0,0 +1,352 @@ + + + + Admin Drop am See + + + + + + + +
+". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoMeineSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer = $zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + +} + + +if(isset($_GET['InfoAlleSchichtID'])) +{ + $InfoAlleSchichtID = $_GET['InfoAlleSchichtID']; + UNSET($InfoMeineSchichtID); + //echo "". $SchichtID . "
"; + + $zeile = DetailSchicht($db_link,$InfoAlleSchichtID); + + $Was = $zeile['Was']; + $Wo = $zeile['Wo']; + $Dauer=$zeile['Dauer']; + $Leiter = $zeile['Name']; + $LeiterHandy = $zeile['Handy']; + $LeiterEmail = $zeile['Email']; + $Info = $zeile['Info']; + + + + // Beteiligte Helfer Holen + $db_erg = BeteiligteHelfer($db_link,$InfoAlleSchichtID); + + + $x=0; + + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + $MitHelferID[$x] = $zeile['HelferID']; + $MitHelfer[$x] = $zeile['Name']; + $MitHelferHandy[$x]= $zeile['Handy']; + $x++; + } + + +} + + +/// Logout +//////////////////////////////////////////////////////// +if(isset($_POST['logout'])) +{ + unset($_SESSION["HelferID"]); + //$_POST['login'] = 1; +} + +/// Login +//////////////////////////////////////////////////////// +if(isset($_POST['login'])) +{ + $messages = []; + // Eingaben überprüfen: + //if(!preg_match('/^[a-zA-Z]+[a-zA-Z0-9._]+$/', $HelferName)) { + // $messages[] = 'Bitte prüfen Sie die eingegebenen Namen'; + //} + + $HelferName = $_POST['helfer-name']; + $HelferEmail = $_POST['helfer-email']; + $HelferPasswort = $_POST['helfer-passwort']; + + if(empty($messages)) + { + HelferLogin($db_link,$HelferEmail,$HelferPasswort, 0 ); + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + +} + + + +if(!isset($_SESSION["HelferID"])) +{ + +?> +
+ +
+ Login + + + + + + + + +
Email
+ +
Passwort
+ +
+ + +
+ +

+ + +
+
    '; + foreach($messages as $message) { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + +} + + + +// Helferliste Anzeigen +//////////////////////////////////////////////////////// + +?> + + + +
+'); + } + else + { + // Fehlermeldungen ausgeben: + echo '
    '; + foreach($messages as $message) + { + echo '
  • '.htmlspecialchars($message).'
  • '; + } + echo '
'; + } + + +} + +/// Ausgabe auf Deutsch umstellen +///////////////////////////////////////////////////////////////////////// + + DatenbankAufDeutsch($db_link); + +/// Alle Schichten Des Helfers Anzeigen +//////////////////////////////////////////////////////// + + +$db_erg = AlleSchichtenEinesHelfers($db_link,$HelferID); + +if ( ! $db_erg ) +{ + echo "AlleSchichten des Helfes ungültige Abfrage"; + die('Ungültige Abfrage: ' . mysqli_error()); +} + + $iSQLCount = mysqli_num_rows($db_erg); + //$iSQLCount = 3; + +echo ''; + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + + +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + + //echo ''; + echo ''; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + +} +echo "
". "Meine Schichten (".$iSQLCount." Schichten)
". "Von" . "". "Bis" . "". "Del" . "
". $zeile['Was'] . "". $zeile['Ab'] . "". $zeile['Bis'] . "". "" . "
"; + +echo "

"; + +$iAlleSchichtenCount = AlleSchichtenCount($db_link); +$iBelegteSchichtenCount = AlleBelegteSchichtenCount($db_link); + +echo ''; + echo ""; + echo ""; + echo ""; +echo "
".''. " Alle Schichten der Con (".$iBelegteSchichtenCount."/".$iAlleSchichtenCount.")
"; + + +mysqli_free_result( $db_erg ); + + +?> + +
+
+ + + diff --git a/html/ReadLog.php b/html/ReadLog.php new file mode 100644 index 0000000..5379038 --- /dev/null +++ b/html/ReadLog.php @@ -0,0 +1,62 @@ + + + + Helfer - Logs + + + + + 0) { + echo ' + '; +} + // print top of page if we are logged in and not redirecting + echo " \n \n"; + echo '
'."\n"; + echo '

Helferdaten - Log

'; + echo '

Hier werden alle Aktionen, die einen Helfer betreffen aufgelistet

'; + echo ''."\n"; + + //check for admin status + $HelferID = $_SESSION["HelferID"]; + $AdminID = $_SESSION["AdminID"]; + include 'SQL.php'; + $db_link = mysqli_connect ( MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK ); + DatenbankAufDeutsch($db_link); + + $db_erg = Helferdaten($db_link,$HelferID); + while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) + { + $HelferName=$zeile['Name']; + $HelferIsAdmin=$zeile['Admin']; + } + + // Wir suchen nach HelferID: - wenn das Admin Flag gesetzt ist, kann man den Suchstring auf etwas anderes aendern + $regex = "\(HelferID:$HelferID\)"; + if($HelferIsAdmin){ + if(isset($_POST['suche']) || isset($_GET['suche'])){ + $regex=$_POST['suche'].$_GET['suche']; + } + echo "
"; + echo "Nur Admins: Suchbegriff (Per Default der selbe Suchtext, wie bei nicht-Admin Helfern):
\n"; + echo "Der Suchbegriff ist ein Regulärer Ausdruck

"; + echo ""; + } + + $regex = "/"."$regex"."/"; + foreach(file(LOGFILE) as $line) { + #echo "not: $line
\n"; + if(preg_match($regex,$line,$matches)){ + echo "
"; + } + } + ?> +
$line
+ + diff --git a/html/SQL.php b/html/SQL.php new file mode 100644 index 0000000..12b57d5 --- /dev/null +++ b/html/SQL.php @@ -0,0 +1,935 @@ + +".$HelferPasswort.""; + $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
"; + // 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 "".$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($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
\n"; + echo "sql:$sql
\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( $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 "
  • 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) + { + $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 "
  • 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); + } + + } + + 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,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) +{ +// SchichtID, Was, Ab, Bis, Ist, Tag, Soll - Ist und Soll sind die HelferStunden + $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"; + error_log($sql); + $db_erg = mysqli_query( $db_link, $sql ); + + if ( ! $db_erg ) + { + echo "AlleSchichtenImZeitbereich ungueltige Abfrage
    "; + echo $sql; + die('
    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"; + + $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
    "; + } + + $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 + $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
    "; + # 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 ''; + $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 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 + + $sql = "UPDATE Dienst SET Was='".$Was."', Wo='".$Wo."', Info='".$Info."', Leiter=".$Leiter.", ElternDienstID=".$Gruppe." 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 + + + $sql = "INSERT INTO Dienst (Was, Wo, Info, Leiter, ElternDienstID, HelferLevel) values ('$Was','$Wo','$Info',$Leiter,$Gruppe,$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 (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.
    "; +} + + +?> + diff --git a/html/UrlLogin.php b/html/UrlLogin.php new file mode 100644 index 0000000..69130b1 --- /dev/null +++ b/html/UrlLogin.php @@ -0,0 +1,95 @@ + + + "; +$foot=""; + +$db_link = mysqli_connect ( + MYSQL_HOST, + MYSQL_BENUTZER, + MYSQL_KENNWORT, + MYSQL_DATENBANK + ); +# ist jetzt in _crypt.php, aber aus der anderen Datei, deshalb hier erst +# nur auskommentiert +#function Entschluessle($encrypted_data,$secret_verification,$secret_key){ +# +# // Erstellen eines Cipher-Objekts für die Verschlüsselung +# $cipher_method = "AES-256-CBC"; +# $iv_length = openssl_cipher_iv_length($cipher_method); +# $cipher_options = OPENSSL_RAW_DATA; +# $cipher_key = openssl_digest($secret_key, 'SHA256', true); +# +# // Entschlüsseln des verschlüsselten Textes +# // zuerst base64 entfernen. *kein* urldecode, das passiert durch get/post automatisch +# $decoded_cipher_text = base64_decode($encrypted_data); +# $iv = substr($decoded_cipher_text, 0, $iv_length); +# $cipher_text = substr($decoded_cipher_text, $iv_length); +# $decrypted_email = openssl_decrypt($cipher_text, $cipher_method, $cipher_key, $cipher_options, $iv); +# +# // Verifikationsstring überprüfen und entfernen +# $verification_length = strlen($secret_verification); +# if(substr($decrypted_email, -$verification_length) == $secret_verification) { +# $decrypted_email = substr($decrypted_email, 0, -$verification_length); +# } +# return($decrypted_email); +#} + +if(isset($_GET['token']) || isset($_POST['token']) ) { + // E-Mail-Adresse des Nutzers + $token = $_GET['token']; + //$email = Entschluessle($token,$secret_verification,$secret_key); + $decrypted_data = decode_string($secret_key, $token, $secret_verification); + //error_log("decrytped_data: ". $decrypted_data); + $email=$decrypted_data['email']; + $helfer_level=$decrypted_data['level']; + $success=$decrypted_data['success']; + //error_log("email: ".$email.",level: ".$helfer_level.",success: ".$success); +} else { + echo "$head Kein Token angegeben!
    $foot"; + exit; +} +if($success != 1) { +// if ( $db_erg ) { +// echo ' '; +// } else { + echo "$head Kein gültiges Token!
    $foot"; + exit; + } +//} +//TODO: Variablendoppelung aufloesen und oben gleich einmal setzen +if($success == 1 && $email != ""){ + // Ausgabe der entschlüsselten E-Mail-Adresse + //echo "E-Mail-Adresse: ", $email, "
    \n"; + //echo "Passwort: ",$token,"
    \n"; + $HelferName = $email; + $HelferEmail = $email; + $HelferLevel = $helfer_level; + $HelferHandy = ""; + $HelferPasswort = $token; + + if(!filter_var($HelferEmail, FILTER_VALIDATE_EMAIL)) { + echo 'Problem mit E-Mail-Adresse.'; + exit; + } + error_log("2email: ".$HelferEmail.",level: ".$helfer_level.",success: ".$success); + // Helfer Anlegen, wenn er nicht existiert + if( ! HelferIstVorhanden($db_link,$HelferEmail) ) { + error_log("Helfer ".$HelferEmail." nicht vorhanden, lege an"); + error_log("CreateHelfer(db_link,$HelferName,$HelferEmail, $HelferHandy,$HelferPasswort,$HelferLevel);"); + $db_erg = CreateHelfer($db_link,$HelferName,$HelferEmail, $HelferHandy,$HelferPasswort,$HelferLevel); + } + // Login-Versuch, entweder direkt nach Anlegen oder wenn existiert hat + // Login und auf Haupt-Seite gehen + HelferLogin($db_link,$HelferEmail,$HelferPasswort,0); + echo ''; + exit; +} +?> diff --git a/html/Userdaten.php b/html/Userdaten.php new file mode 100644 index 0000000..75344af --- /dev/null +++ b/html/Userdaten.php @@ -0,0 +1,164 @@ + + + + Drop am See Helferdaten ändern + + + + + + + +
      '; + foreach($messages as $message) { + echo '
    • '.htmlspecialchars($message).'
    • '; + } + echo '
    '; + } + } + + + +//////////////////////////////////////////////////////////////// +// Helferdate holen +/////////////////////////////////////////////////////////////// + +$db_erg = Helferdaten($db_link,$HelferID); + + +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC)) +{ + $HelferName = $zeile['Name']; + $HelferEmail = $zeile['Email']; + $HelferHandy = $zeile['Handy']; +} + +/// Logout +//////////////////////////////////////////////////////// +if(isset($_POST['logout'])) +{ + unset($_SESSION["HelferID"]); + //$_POST['login'] = 1; +} + +/// Login +//////////////////////////////////////////////////////// +if(isset($_POST['login'])) +{ + $messages = []; + // Eingaben überprüfen: + //if(!preg_match('/^[a-zA-Z]+[a-zA-Z0-9._]+$/', $HelferName)) { + // $messages[] = 'Bitte prüfen Sie die eingegebenen Namen'; + //} + + $HelferName = $_POST['helfer-name']; + $HelferEmail = $_POST['helfer-email']; + $HelferPasswort = $_POST['helfer-passwort']; + + if(empty($messages)) + { + HelferLogin($db_link,$HelferEmail,$HelferPasswort, 0 ); + } + else + { + // Fehlermeldungen ausgeben: + echo '
      '; + foreach($messages as $message) { + echo '
    • '.htmlspecialchars($message).'
    • '; + } + echo '
    '; + } + +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + +
    Helferdaten
    Name
    + +
    Email
    + +
    Handy
    + +
    Altes Helfer Passwort
    + +
    Neues Helfer Passwort
    + +
    + +

    + + + + diff --git a/html/_crypt.php b/html/_crypt.php new file mode 100644 index 0000000..a9db779 --- /dev/null +++ b/html/_crypt.php @@ -0,0 +1,61 @@ +encode: cipher:".chunk_split(bin2hex($cipher_text),4,' ')."
    iv:".chunk_split(bin2hex($iv),4,' ')."
    iv_length:$iv_length
    cipher_key ".chunk_split(bin2hex($cipher_key),4,' ')."
    "; + } + + $cipher_text = $iv . $cipher_text; + // verschlüsselter Textes als base64 und dann noch mit urlencode, weil base64 zB + enthaelt + $encrypted_data = urlencode(base64_encode($cipher_text)); + + return $encrypted_data; +} + +function decode_string($key, $encrypted_data, $verification) { + // Entschlüsseln des verschuesselten Textes + // erst base64 entfernen - urldecode muss wenn noetig vorher angewendet werden + $decoded_cipher_text = base64_decode($encrypted_data); + // iv vom Anfang abtrennen + $cipher_method = "AES-256-CBC"; + $iv_length = openssl_cipher_iv_length($cipher_method); + $iv = substr($decoded_cipher_text, 0, $iv_length); + $cipher_text = substr($decoded_cipher_text, $iv_length); + $cipher_options = OPENSSL_RAW_DATA; + $cipher_key = openssl_digest($key, 'SHA256', true); + + if(isset($debug)){ + echo "
    decode: cipher:".chunk_split(bin2hex($cipher_text),4,' '). "
    iv:".chunk_split(bin2hex($iv),4,' '). "
    iv_length:$iv_length
    cipher_key ". chunk_split(bin2hex($cipher_key),4,' '); + } + + $decrypted_data = openssl_decrypt($cipher_text, $cipher_method, $cipher_key, $cipher_options, $iv); + + if(isset($debug)){echo "
    decrypted_data " . $decrypted_data." end
    ";} + $verification_length = strlen($verification); + + if(substr($decrypted_data, -$verification_length) == $verification) { + list($email, $level, $verification_code) = explode('|', $decrypted_data); + return array( + 'email' => $email, + 'level' => $level, + 'success' => 1 + ); + } else { + error_log("Verschlüsseltes Token enthielt den Verifikationscode nicht: $decrypted_data
    \n"); + return array( + 'success' => 0 + ); + } +} +?> diff --git a/html/_login.php b/html/_login.php new file mode 100644 index 0000000..ed19901 --- /dev/null +++ b/html/_login.php @@ -0,0 +1,90 @@ +'; + +} + +/// Login +//////////////////////////////////////////////////////// +if(isset($_POST['login'])) +{ + $messages = []; + // Eingaben überprüfen: + //if(!preg_match('/^[a-zA-Z]+[a-zA-Z0-9._]+$/', $HelferName)) { + // $messages[] = 'Bitte prüfen Sie die eingegebenen Namen'; + //} + + //if (isset ($_POST['helfer-name'])) { + // $HelferName = $_POST['helfer-name']; + //} // delete - login shouldnt provide this + $HelferEmail = $_POST['helfer-email']; + $HelferPasswort = $_POST['helfer-passwort']; + + if(empty($messages)) + { + HelferLogin($db_link,$HelferEmail,$HelferPasswort, 0 ); + } + else + { + // Fehlermeldungen ausgeben: + echo '
      '; + foreach($messages as $message) { + echo '
    • '.htmlspecialchars($message).'
    • '; + } + echo '
    '; + } + +} + +if(!isset($_SESSION["HelferID"])) +{ + +?> +
    + +
    + Login + + + + + + + + + +
    Email
    + +
    Passwort
    + + + +
    + + +
    + +

    + + +
    + diff --git a/html/css/style_common.css b/html/css/style_common.css new file mode 100644 index 0000000..8f5a055 --- /dev/null +++ b/html/css/style_common.css @@ -0,0 +1,80 @@ +body { + font-family: Arial, Helvetica, sans-serif; +} + +table, p, div, td, th, input { +font-size: inherit ; +} + +.commontable a { + color: inherit; + text-decoration: inherit; +} + +.commontable,#customers { + font-size: inherit; + border-collapse: collapse; + width: 100%; +} + +.commontable td,#customers td, .commontable th,#customers th { + border: 1px solid #ddd; + padding: 4px; +} + +.commontable tr:nth-child(even),#customers tr:nth-child(even){background-color: #f2f2f2;} + +.commontable tr:hover ,#customers tr:hover {background-color: #ddd;} + +.commontable th,#customers th { + padding-top: 12px; + padding-bottom: 12px; + height: 40px; + text-align: left; + background-color: #1090CF; + color: white; +} + + +#selected th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #0000FF; + color: white; +} + +thead { + position: sticky; + top: 0; + color: black; + background: white; +} + +table, th, td { + border: 1px solid black; + border-collapse: collapse; +} + +input, select, textarea { + width: 95%; +} + +.commontable button,.back button,.helfer button,#customers button { + text-decoration: none; /* dont underline links */ + display: inline-block; /* makes it possible to set top and bottom margins */ + width: 45px; + height: 45px; + text-align: center; +} + +details[open] summary ~ * { + animation: spoiler 1s ease-in-out; + padding: 2rem; + background: #cdddff; + border-radius: 1rem +} +summary { +font-size: 3px; +height: 2px; +} diff --git a/html/css/style_desktop.css b/html/css/style_desktop.css new file mode 100644 index 0000000..aa2e30e --- /dev/null +++ b/html/css/style_desktop.css @@ -0,0 +1,10 @@ +@import "style_common.css"; + +html, body { + font-size: 17; +} + + +button,select { + font-size: 20px; + } diff --git a/html/css/style_mobile.css b/html/css/style_mobile.css new file mode 100644 index 0000000..065aa7b --- /dev/null +++ b/html/css/style_mobile.css @@ -0,0 +1,10 @@ +@import "style_common.css"; + +html, body { + font-size: 25; +} + +button,select { + font-size: 27; + } + diff --git a/html/css/style_print.css b/html/css/style_print.css new file mode 100644 index 0000000..1c83edd --- /dev/null +++ b/html/css/style_print.css @@ -0,0 +1,19 @@ +@import "style_common.css"; + +html, body { + font-size: 12; +} + + +button { + font-size: 0px; + } + +table, th, td { + border: 0px; + +} + +nav, footer { + display: none; +} diff --git a/html/data/api-full.php b/html/data/api-full.php new file mode 100644 index 0000000..4934130 --- /dev/null +++ b/html/data/api-full.php @@ -0,0 +1,57 @@ +0 THEN '#dd9000' + ELSE '#4d0000' + END as color, + CASE WHEN (SchichtUebersicht.Soll-SchichtUebersicht.C)<=0 THEN 'white' + WHEN SchichtUebersicht.C>0 THEN 'black' + ELSE 'white' + END as textColor + FROM EinzelSchicht + INNER JOIN Helfer ON EinzelSchicht.HelferID=Helfer.HelferId + RIGHT JOIN Schicht ON Schicht.SchichtID=EinzelSchicht.SchichtID + INNER JOIN Dienst ON Dienst.DienstID=Schicht.DienstID + INNER JOIN SchichtUebersicht ON Dienst.DienstID=SchichtUebersicht.DienstID AND SchichtUebersicht.SchichtID=Schicht.SchichtID + GROUP BY Schicht.SchichtID;"; + + //error_log(date('Y-m-d H:i ') . $queryText,3,"/tmp/sql.log"); + // handle dynamic loading + if (isset($requestParams["from"]) && isset($requestParams["to"])) { + //error_log("timespan given. from: ".$requestParams["from"]." to: ".$requestParams["to"]); + $queryText .= " WHERE `Schicht.Bis`>=? AND `Schicht.Von` < ?;"; + $queryParams = [filter_var($requestParams["from"],FILTER_SANITIZE_NUMBER_FLOAT), filter_var($requestParams["to"],FILTER_SANITIZE_NUMBER_FLOAT)]; + } + $query = $db->prepare($queryText); + $query->execute($queryParams); + $events = $query->fetchAll(); + return $events; +} + +switch ($_SERVER["REQUEST_METHOD"]) { + case "GET": + $result = read($db, $_GET); + break; + case "POST": + // only if changes will be allowed + break; + default: + throw new Exception("Unexpected Method"); + break; +} +header("Content-Type: application/json"); +echo json_encode($result); +?> diff --git a/html/data/api-helfer.php b/html/data/api-helfer.php new file mode 100644 index 0000000..abeb8fe --- /dev/null +++ b/html/data/api-helfer.php @@ -0,0 +1,55 @@ +0 THEN '#dd9000' + ELSE 'darkred' + END as color, + CASE WHEN (SchichtUebersicht.Soll-SchichtUebersicht.C)<=0 THEN 'white' + WHEN SchichtUebersicht.C>0 THEN 'black' + ELSE 'yellow' + END as textColor + FROM EinzelSchicht + INNER JOIN Helfer ON EinzelSchicht.HelferID=Helfer.HelferId + RIGHT JOIN Schicht ON Schicht.SchichtID=EinzelSchicht.SchichtID + INNER JOIN Dienst ON Dienst.DienstID=Schicht.DienstID + INNER JOIN SchichtUebersicht ON Dienst.DienstID=SchichtUebersicht.DienstID AND SchichtUebersicht.SchichtID=Schicht.SchichtID + WHERE Helfer.HelferID=$HelferID + GROUP BY Schicht.SchichtID"; + + $query = $db->prepare($queryText); + $query->execute($queryParams); + error_log(date('Y-m-d H:i ') . print_r($queryText,true),3,"/var/log/dropamsee/debug.log"); + $events = $query->fetchAll(); + return $events; +} + +switch ($_SERVER["REQUEST_METHOD"]) { + case "GET": + $result = read_from_db($db, $_GET,$HelferID); + break; + case "POST": + // only if changes will be allowed + break; + default: + throw new Exception("Unexpected Method"); + break; +} +header("Content-Type: application/json"); +echo json_encode($result); +?> diff --git a/html/index.php b/html/index.php new file mode 100644 index 0000000..fd51a68 --- /dev/null +++ b/html/index.php @@ -0,0 +1,163 @@ + + + + Helfer Drop am See Home + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Drop am See 2023
    + + +
    + Nächste Helferschichten: + +
      +Fr 08:00 Leitung Halle + //
    • So 12:00 Abbau
    • +/// Die 3 nächsten Schichten Des Helfers Anzeigen +//////////////////////////////////////////////////////// +//$HelferID=72; + +$db_erg = AlleSchichtenEinesHelfersVonJetzt($db_link,$HelferID); + + + $iSQLCount = mysqli_num_rows($db_erg); + //$iSQLCount = 3; + + +$iCount=0; +while ($zeile = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC) and $iCount<3) +{ + echo "
    • ". $zeile['Ab'] . " ". $zeile['Was'] . "
    • "; + $iCount++; +} + + +?> +
    + +
    Schicht Hinzufügen
    Kalenderansicht
    Logs
    Admin
    Logout
    + + + diff --git a/html/js/helferdb.js b/html/js/helferdb.js new file mode 100644 index 0000000..0a37af9 --- /dev/null +++ b/html/js/helferdb.js @@ -0,0 +1,46 @@ +function showPassword(id) { + var x = document.getElementById(id); + if (x.type === "password") { + x.type = "text"; + } else { + x.type = "password"; + } +} + +//// https://www.w3schools.com/howto/howto_js_collapsible.asp +//var coll = document.getElementsByClassName("collapsible"); +//var i; +// +//for (i = 0; i < coll.length; i++) { +// coll[i].addEventListener("click", function() { +// this.classList.toggle("active"); +// var content = this.nextElementSibling; +// if (content.style.display === "block") { +// content.style.display = "none"; +// } else { +// content.style.display = "block"; +// } +// }); +//} +// + +//// collapse column rows that are not header +function collapse_table_rows(){ + $(document).ready(function() { + $('tr:not(.header)').hide(); + + $('tr.header').click(function() { + $(this).find('span').text(function(_, value) { + return value == '-' ? '+' : '-' + }); + + $(this).nextUntil('tr.header').slideToggle(100, function() {}); + }); + }); +} + +function expand_all_table_rows(){ + + $('tr:not(.header)').hide(); // make all collapsed so that slideToggle doesnt close opened ones + $('tr:not(.header)').slideToggle(100, function() {}); +} diff --git a/html/konfiguration.php b/html/konfiguration.php new file mode 100644 index 0000000..07bd76a --- /dev/null +++ b/html/konfiguration.php @@ -0,0 +1,52 @@ + + "SET NAMES 'utf8'", + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, +); + + +?>