diff options
Diffstat (limited to 'lade_daten.php')
| -rw-r--r-- | lade_daten.php | 62 |
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; } ?> |
