blob: 16a9961d03bc784bec9d049486b39ee310cf127a [file] [log] [blame]
avm99963472b0de2020-09-28 17:15:42 +02001<?php
2namespace DAFME\Covid;
3
4class Classes {
avm999634fb108d2020-09-30 01:02:08 +02005 // Marge en segons per seguir retornant una assignatura abans o després que
6 // acabi, quan s'obtenen les classes actuals.
7 const MARGIN_BEGINS = 0*60;
8 const MARGIN_ENDS = 0*60;
9
avm99963472b0de2020-09-28 17:15:42 +020010 public static function getCurrentClasses() {
11 global $con;
12
13 $isSignedIn = Users::isSignedIn();
14
avm99963b3920912020-09-30 10:51:54 +020015 $sentence = 'SELECT c.id, c.calendar_name, c.room, c.begins, c.ends, c.calendar_name, s.id subject_id, s.friendly_name'.($isSignedIn ? ', u_s.id user_subject_id' : '').'
avm99963472b0de2020-09-28 17:15:42 +020016 FROM classes c
avm99963b3920912020-09-30 10:51:54 +020017 LEFT OUTER JOIN subjects s
avm99963472b0de2020-09-28 17:15:42 +020018 ON c.calendar_name = s.calendar_name
19 '.($isSignedIn ? 'LEFT OUTER JOIN user_subjects u_s
20 ON s.id = u_s.subject_id
21 ' : '').
22 'WHERE
avm999634fb108d2020-09-30 01:02:08 +020023 c.begins - '.self::MARGIN_BEGINS.' < UNIX_TIMESTAMP() AND
24 c.ends + '.self::MARGIN_ENDS.' > UNIX_TIMESTAMP()'.($isSignedIn ? ' AND
avm99963472b0de2020-09-28 17:15:42 +020025 (
26 u_s.user_id = :user_id OR
27 u_s.subject_id IS NULL
avm999633b2a94c2020-09-30 00:54:27 +020028 )': '').'
avm99963b3920912020-09-30 10:51:54 +020029 ORDER BY s.id IS NULL, '.($isSignedIn ? 'u_s.subject_id IS NULL, ' : '').'s.friendly_name ASC';
avm99963472b0de2020-09-28 17:15:42 +020030 $query = $con->prepare($sentence);
31
32 if (!$query->execute(($isSignedIn ? ['user_id' => Users::getUserId()] : [])))
33 return false;
34
35 $classes = $query->fetchAll(\PDO::FETCH_ASSOC);
36
37 foreach ($classes as &$class) {
avm99963ea2309c2020-09-28 17:20:25 +020038 if (!$isSignedIn)
avm99963472b0de2020-09-28 17:15:42 +020039 $class['user_subject_id'] = null;
40
41 $class['user_selected'] = $class['user_subject_id'] !== null;
42 }
43
44 return $classes;
45 }
avm99963472b0de2020-09-28 17:15:42 +020046}