aboutsummaryrefslogtreecommitdiff
path: root/lade_daten.php
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-10-19 15:04:15 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-10-19 15:04:15 +0200
commit9f7b24bb6177d65e0b9d1b77a578c50af9c7f493 (patch)
tree70bb59ca2e5f4fd420f6638d237cbbe6a45ac31c /lade_daten.php
parent64e898aa9b0a7faf1184ded80636b28fd0c32e88 (diff)
downloadpunktestand-9f7b24bb6177d65e0b9d1b77a578c50af9c7f493.tar.gz
punktestand-9f7b24bb6177d65e0b9d1b77a578c50af9c7f493.zip
unterstützte konfigurierbare "Streaks"
Ein Streak ist ein Zeitraum der zählt wie viele gleiche Ereignisse in zeitlicher Folge aufgetreten sind. Ein Streak wird durch ein nicht positives Ereignis beendet.
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;
}
?>