blob: b7fde79d57f7115492577ff84d23af0580aeba51 [file] [log] [blame]
avm99963472b0de2020-09-28 17:15:42 +02001<?php
2namespace DAFME\Covid;
3
4class Classes {
5 public static function getCurrentClasses() {
6 global $con;
7
8 $isSignedIn = Users::isSignedIn();
9
10 $sentence = 'SELECT c.id, c.calendar_name, c.room, c.begins, c.ends, s.id subject_id, s.friendly_name'.($isSignedIn ? ', u_s.id user_subject_id' : '').'
11 FROM classes c
12 INNER JOIN subjects s
13 ON c.calendar_name = s.calendar_name
14 '.($isSignedIn ? 'LEFT OUTER JOIN user_subjects u_s
15 ON s.id = u_s.subject_id
16 ' : '').
17 'WHERE
avm9996359ba3432020-09-28 19:03:29 +020018 c.begins < UNIX_TIMESTAMP() AND
19 c.ends > UNIX_TIMESTAMP()'.($isSignedIn ? ' AND
avm99963472b0de2020-09-28 17:15:42 +020020 (
21 u_s.user_id = :user_id OR
22 u_s.subject_id IS NULL
avm999633b2a94c2020-09-30 00:54:27 +020023 )': '').'
24 ORDER BY '.($isSignedIn ? 'u_s.subject_id IS NULL, ' : '').'s.friendly_name ASC';
avm99963472b0de2020-09-28 17:15:42 +020025 $query = $con->prepare($sentence);
26
27 if (!$query->execute(($isSignedIn ? ['user_id' => Users::getUserId()] : [])))
28 return false;
29
30 $classes = $query->fetchAll(\PDO::FETCH_ASSOC);
31
32 foreach ($classes as &$class) {
avm99963ea2309c2020-09-28 17:20:25 +020033 if (!$isSignedIn)
avm99963472b0de2020-09-28 17:15:42 +020034 $class['user_subject_id'] = null;
35
36 $class['user_selected'] = $class['user_subject_id'] !== null;
37 }
38
39 return $classes;
40 }
avm99963472b0de2020-09-28 17:15:42 +020041}