views.php 6.63 KB
Newer Older
1
2
3
<?php

class Views {
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
    private $admin;
    private $utclogin;
    private $surname;
    private $firstname;

    public function __construct ($admin, $utclogin, $surname, $firstname) {
      $this->admin=$admin;
      $this->utclogin=$utclogin;
      $this->surname=$surname;
      $this->firstname=$firstname;
    }

    public function isActive() {
      return $this->admin->isActive();
19
20
    }

Stephane Crozat's avatar
Stephane Crozat committed
21
    public function printHtmlBegin($admin) {
22
23
24
25
26
27
28
    echo '<html>';
    echo '<head>';
    echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>';
    echo '<title>Api Sub</title>';
    echo '<link href="css/main.css" type="text/css" rel="stylesheet"/>';
    echo '</head>';
    echo '<body>';
Stephane Crozat's avatar
Stephane Crozat committed
29
    echo '<h1>Foire aux Api '.$admin->activeSemester().$admin->activeYear().'</h1>';
30
31
    }

32
    public function printInstructions($row) {
Stephane Crozat's avatar
Stephane Crozat committed
33
        echo '<hr/>';
34
35
        echo '<h2>Catalogue</h2>';
        echo '<p>Les Api sont décrites ici : <b><a href="https://apint.utc.fr/cat">https://apint.utc.fr/cat</a></b>. Veillez à avoir bien lu la fiche avant de vous inscrire (pré-requis, dates...).</p>';
36
        echo '<h2>Instructions</h2>';
37
38
39
        echo '<ul>';
        echo '<li>Les Api sont ajoutées au fil du semestre par les responsables des Api. Dès qu\'une Api est ouverte, les étudiants peuvent commencer à s\'inscrire.';
        echo '<li><b>Règle d\'or : dès qu\'un responsable d\'Api a validé une inscription, celle-ci est irréversible (ni l\'enseignant ni l\'étudiant ne peuvent l\'annuler).</b> Si un étudiant était inscrit à d\'autres Api la même semaine, ces inscriptions sont annulées.</li>';
Stephane Crozat's avatar
Stephane Crozat committed
40
41
        echo '<li>Un étudiant peut s\'inscrire à plusieurs Api la même semaine, mais il ne pourra en suivre qu\'une seule. Il peut librement se désinscrire tant que l\'inscription n\'est pas validée.</li>';
        echo '<li>Si un reponsable d\'Api commence à valider des inscriptions, alors l\'Api sera nécessairement ouverte.</li>';
42
        echo '</ul>';
43
44
    }

45
    public function printUser($isResp, $isAdmin) {
Stephane Crozat's avatar
Stephane Crozat committed
46
47
        echo "<div class='user'><span class='name'>$this->firstname $this->surname</span> (<span class='login'>$this->utclogin</span>)</div>";
        echo "<div class='menu'>";
48
        if ($isResp) {
49
          echo '<a href="index.php?mode=resp">[Gérer ses Api]</a> ';
50
51
        }
        if ($isAdmin) {
52
53
54
55
          echo '<a href="index.php?mode=admin">[Super-pouvoirs]</a> ';
        }
        if ($isResp || $isAdmin) {
          echo '<a href="index.php">[Accueil]</a>';
56
        }
Stephane Crozat's avatar
Stephane Crozat committed
57
        echo "</div>";
Stephane Crozat's avatar
Fix #1    
Stephane Crozat committed
58
59
    }

60
    private function printApi($row) {
61
62
63
64
65
      return "$row[normcode] - $row[name] (du $row[normdbegin] au $row[normdend]) [Demandes $row[nbask] | Inscriptions $row[nbval]/$row[size]]";
    }

    private function printWeek($row) {
      return "$row[year] Semaine $row[week]";
66
    }
67

68
69
    private function printStudent($row) {
      if (!$row['surname']) {
Stephane Crozat's avatar
Stephane Crozat committed
70
        return "$row[utclogin] $row[level]  <a href='mailto:$row[utclogin]@etu.utc.fr'>[mail]</a> <a href='https://demeter.utc.fr/portal/pls/portal30/portal30.get_photo_utilisateur?username=$row[utclogin]'>[photo]</a>";
71
72
      }
      else {
Stephane Crozat's avatar
Stephane Crozat committed
73
        return "$row[firstname] $row[surname] $row[level] <a href='mailto:$row[email]'>[mail]</a> <a href='https://demeter.utc.fr/portal/pls/portal30/portal30.get_photo_utilisateur?username=$row[utclogin]'>[photo]</a>";
74
75
76
      }
    }

77
    public function printSubList($list) {
78
      #KNOWN_BUB #TODO Il est possible de ses déinscrire en utilisant directement l'URL
79
      if ($list) {
Stephane Crozat's avatar
Stephane Crozat committed
80
        echo '<hr/>';
81
        echo '<h2>Vos inscriptions</h2>';
82
        $week = '';
83
        foreach ($list as $row) {
84
85
86
87
          if ($row['week'] != $week) {
            $week = $row['week'];
            echo "<h3>".$this->printWeek($row)."</h3>";
          }
88
          echo '<p>';
89
          if ($this->isActive()) {
90
91
92
93
            if ($row['validation']) {
              echo "<span class='validation'>[validé]</span> ";
            }
            else {
Stephane Crozat's avatar
Stephane Crozat committed
94
              echo "<a href='index.php?action=unsub&api=$row[id]' class='unsub'>[désinscription]</a> ";
95
            }
96
          }
97
          echo $this->printApi($row);
98
99
100
101
102
103
104
          echo '</p>';
        }
      }
      else {
        echo '<h2>Aucune inscription</h2>';
      }
    }
105

106
  public function printApiList($list) {
107
    if ($list) {
Stephane Crozat's avatar
Stephane Crozat committed
108
      echo '<hr/>';
109
      echo '<h2>Liste des Api</h2>';
110
      $week = '';
111
      foreach ($list as $row) {
112
113
114
115
        if ($row['week'] != $week) {
          $week = $row['week'];
          echo "<h3>".$this->printWeek($row)."</h3>";
        }
116
        echo '<p>';
117
        if ($this->isActive()) {
118
          if ($row['open'] && $row['is_available']) {
Stephane Crozat's avatar
Stephane Crozat committed
119
            echo "<a href='index.php?action=sub&api=$row[id]' class='sub'>[inscription]</a> ";
120
121
          }
          elseif (! $row['is_available']) {
122
            echo "[indisponible] ";
123
124
125
126
          }
          else {
            echo '[complet] ';
          }
127
        }
128
        echo $this->printApi($row);
129
130
131
132
133
134
135
        echo '</p>';
      }
    }
    else {
      echo '<h2>Aucune Api</h2>';
    }
  }
Stephane Crozat's avatar
Fix #1    
Stephane Crozat committed
136

137
  public function respValidation ($listsub) {
138
    // #KNOWN_BUG Si un resp a plusieurs Api, il peut changer un inscrit entre ses deux Api en modifiant l'URL (pas via l'interface)
Stephane Crozat's avatar
Stephane Crozat committed
139
140
141
142
143
144
145
146

    echo '<h1>Interface Responsable d\'Api</h1>';
    echo '<hr/>';
    echo '<h2>Rappel</h2>';
    echo '<ul>';
    echo '<li>La validation d\'une inscription entraîne la confirmation de l\'ouverture de l\'Api.</li>';
    echo '<li>Toute inscription validée est irréversible.</li>';
    echo '</ul>';
147
148
149
150
151
    if ($listsub) {
      $api = '';
      foreach ($listsub as $sub) {
        if ($api != $sub['id']) {
          $api = $sub['id'];
Stephane Crozat's avatar
Stephane Crozat committed
152
153
          echo '<hr/>';
          echo '<h2>'.$this->printApi($sub).'</h2>';
154
        }
155
156
157
        if ($sub['utclogin']) {
          if ($sub['validation']) {
            // Subscription already validated
158
            echo '<p><b>[validé] </b>'.$this->printStudent($sub).'</p>';
159
160
161
          }
          else if (is_null($sub['validation'])) {
            // At least one waiting subscription
Stephane Crozat's avatar
Stephane Crozat committed
162
            echo "<p> <a href='index.php?action=validate&api=$sub[id]&login=$sub[utclogin]&mode=resp' class='valid'>[valider]</a> ".$this->printStudent($sub)." <span>Exclusivité : $sub[indicator]%</span></p>";
163
164
165
166
167
168
169
170
171
          }
          else {
            // validation = FALSE lignes ignored
          }
        }
        else {
          // Not yet any subscription for this Api (LEFT JOIN might have add null student line)
          echo "<p>Aucune inscription à gérer</p>";
        }
172
173
174
175
176
      }
    }
    else {
      echo "<p>Aucune Api à gérer</p>";
    }
177
178
179
  }

  public function adminFunction ($utclogin) {
180
    echo "<p>Je dois vérifier que $utclogin a vraiment des super-pouvoirs...</p>";
181
  }
182
}