diff --git a/inc/Classes.php b/inc/Classes.php
index 6bfa0c8..c1ee0b3 100644
--- a/inc/Classes.php
+++ b/inc/Classes.php
@@ -4,17 +4,22 @@
 class Classes {
   // Marge en segons per seguir retornant una assignatura abans o després que
   // acabi, quan s'obtenen les classes actuals.
-  const MARGIN_BEGINS = 5*60;
-  const MARGIN_ENDS = 5*60;
+  const CURRENT_MARGIN_BEGINS = 5*60;
+  const CURRENT_MARGIN_ENDS = 5*60;
 
-  public static function getCurrentClasses() {
+  const INTIME_MARGIN_BEGINS = 0*60;
+  const INTIME_MARGIN_ENDS = 0*60;
+
+
+  public static function getClasses(int $unix_time = NULL) {
     global $con;
 
     $isSignedIn = Users::isSignedIn();
 
-    $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' : '').',
+    $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' : '').',
           CASE
-            WHEN c.begins > UNIX_TIMESTAMP() OR c.ends < UNIX_TIMESTAMP()
+            WHEN c.begins > :unix_time OR c.ends < :unix_time
               THEN 0
               ELSE 1
           END is_current
@@ -25,8 +30,8 @@
           ON s.id = u_s.subject_id
         ' : '').
         'WHERE
-          c.begins - '.self::MARGIN_BEGINS.' <= UNIX_TIMESTAMP() AND
-          c.ends + '.self::MARGIN_ENDS.' >= UNIX_TIMESTAMP()'.($isSignedIn ? ' AND
+          c.begins - '.($unix_time ? self::CURRENT_MARGIN_BEGINS : self::INTIME_MARGIN_BEGINS).' <= :unix_time AND
+          c.ends + '.($unix_time ? self::CURRENT_MARGIN_ENDS: self::INTIME_MARGIN_ENDS).' >= :unix_time'.($isSignedIn ? ' AND
           (
             u_s.user_id = :user_id OR
             u_s.subject_id IS NULL
@@ -37,10 +42,13 @@
           '.($isSignedIn ? 'u_s.subject_id IS NULL,
           ' : '').'s.friendly_name ASC';
     $query = $con->prepare($sentence);
-    
-    if (!$query->execute(($isSignedIn ? ['user_id' => Users::getUserId()] : [])))
-      return false;
 
+    if (!$unix_time) $unix_time = time();
+
+    $query_params = ['unix_time' => $unix_time];
+    if ($isSignedIn) $query_params['user_id'] = Users::getUserId();
+
+    if (!$query->execute($query_params)) return false;
     $classes = $query->fetchAll(\PDO::FETCH_ASSOC);
 
     foreach ($classes as &$class) {
