aboutsummaryrefslogtreecommitdiff
path: root/lade_daten.php
diff options
context:
space:
mode:
Diffstat (limited to 'lade_daten.php')
-rw-r--r--lade_daten.php62
1 files changed, 44 insertions, 18 deletions
diff --git a/lade_daten.php b/lade_daten.php
index 67134be..ac15510 100644
--- a/lade_daten.php
+++ b/lade_daten.php
@@ -12,6 +12,24 @@
* punktestand. If not, see <https://www.gnu.org/licenses/>.
*/
+// PHP Klasse, die alle Daten einer Schulklasse enthält.
+class Klasse {
+ public string $bezeichner;
+ public int $punkte;
+ public string $farbe;
+
+ public function __construct(string $bezeichner, ?string $farbe) {
+ $this->bezeichner = $bezeichner;
+ $this->punkte = 0;
+ if (is_null($farbe)) {
+ // Die Standardfarbe ist ein leichtes Blau
+ $this->farbe = 'rgb(54, 162, 235)';
+ } else {
+ $this->farbe = $farbe;
+ }
+ }
+}
+
// Die Funktion lade_daten liefert die Klassen und ihren Punktestand, sowie alle
// aufgetretenen Ereignisse in einem array zurück.
function lade_daten($config, $schuljahr, $jahrgang): array {
@@ -40,24 +58,6 @@ function lade_daten($config, $schuljahr, $jahrgang): array {
// Die Verbindung war erfolgreich
- // PHP Klasse, die alle Daten einer Schulklasse enthält.
- class Klasse {
- public string $bezeichner;
- public int $punkte;
- public string $farbe;
-
- public function __construct(string $bezeichner, ?string $farbe) {
- $this->bezeichner = $bezeichner;
- $this->punkte = 0;
- if (is_null($farbe)) {
- // Die Standardfarbe ist ein leichtes Blau
- $this->farbe = 'rgb(54, 162, 235)';
- } else {
- $this->farbe = $farbe;
- }
- }
- }
-
// Bereite unsere Klassenabfrage vor.
// Dies verhindert SQL-Injection Angriffe, da die Parameter Schuljahr und
// Jahrgang über die URL kontrollierbar sind.
@@ -84,6 +84,29 @@ function lade_daten($config, $schuljahr, $jahrgang): array {
// Alle Ereignisse der ausgewählten Klassen
$ereignisse = $ereignis_abfrage->fetchAll();
+ // Deklaration der streak_ereignisse Variable, die nur unter bestimmten
+ // Umständen mit einem Wert gefüllt wird. Die Forward-Deklaration ermöglicht es
+ // die Variable danach zu benutzen unabhängig, davon ob sie mit einem sinnvollen
+ // Wert gefüllt wurde.
+ $streak_ereignisse = null;
+ $streak_ereignis_beschreibung = $config['streak_ereignis'];
+ if ($streak_ereignis_beschreibung != '') {
+ // Bereite die Streak-Ereignisabfrage vor. Sicherheitshinweis siehe: Klassenabfrage.
+ // Nur Ereignisse mit dem konfigurierten Namen werden ausgewählt.
+ // Zusätzlich werden nur Ereignisse mit einem Datum betrachtet, da zur Streak
+ // Berechnung die Ereignisse in eine zeitliche Reihenfolge gebracht werden
+ // müssen.
+ $streak_ereignis_abfrage = $verbindung->prepare('SELECT * FROM Ereignis WHERE Schuljahr = ? AND Jahrgang = ? AND Beschreibung = ? ORDER BY Datum ASC');
+ $streak_ereignis_abfrage->bindValue(1, $schuljahr, PDO::PARAM_STR);
+ $streak_ereignis_abfrage->bindValue(2, $jahrgang, PDO::PARAM_INT);
+ $streak_ereignis_abfrage->bindValue(3, $streak_ereignis_beschreibung, PDO::PARAM_STR);
+ $streak_ereignis_abfrage->execute();
+
+ // Alle Streak-Ereignisse der ausgewählten Klassen
+ $streak_ereignisse = $streak_ereignis_abfrage->fetchAll();
+ }
+
+
// Schließe die Datenbank Verbindung
$verbindung = null;
@@ -96,6 +119,9 @@ function lade_daten($config, $schuljahr, $jahrgang): array {
$daten = array();
$daten['klassen'] = array_values($klassen);
$daten['ereignisse'] = $ereignisse;
+ if ($streak_ereignisse != null) {
+ $daten['streakEreignisse'] = $streak_ereignisse;
+ }
return $daten;
}
?>