views.php 7.67 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>';
Stephane Crozat's avatar
Stephane Crozat committed
154
          echo "<div><a href='api.php?api=$api'>> Trombinoscope</a></div>";
155
        }
156
157
158
        if ($sub['utclogin']) {
          if ($sub['validation']) {
            // Subscription already validated
159
            echo '<p><b>[validé] </b>'.$this->printStudent($sub).'</p>';
160
161
162
          }
          else if (is_null($sub['validation'])) {
            // At least one waiting subscription
Stephane Crozat's avatar
Stephane Crozat committed
163
            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>";
164
165
166
167
168
169
170
171
172
          }
          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>";
        }
173
174
175
176
177
      }
    }
    else {
      echo "<p>Aucune Api à gérer</p>";
    }
178
179
  }

Stephane Crozat's avatar
Stephane Crozat committed
180
181
182
183
  public function apiStudents($students) {
    echo "<hr/>";
    if (isset($students[0])) {
      echo '<h2>'.$this->printApi($students[0]).'</h2>';
184
185
186
187
188
189
      $mailinglist='mailto:';
      foreach ($students as $s) {
        $mailinglist = $mailinglist."$s[email],";
      }
      echo "<div><a href='$mailinglist'>> Mailing list</a></div>";
      echo "<hr/>";
Stephane Crozat's avatar
Stephane Crozat committed
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
    }
    else {
      echo '<h2>Aucun inscrit</h2>';
    }
    foreach ($students as $s) {
      echo "<div class='student'>
        <img  src='https://demeter.utc.fr/portal/pls/portal30/portal30.get_photo_utilisateur?username=$s[utclogin]'
              height='100px'
              width='100px'/>
        <span class='name'>$s[surname] $s[firstname] | $s[level] | <a href='mailto:$s[email]'>$s[email]</a> ($s[utclogin])</span>
        </div>";
    }
  }

  public function apiStudentsCsv($students) {
    //TODO
    foreach ($students as $s) {
        echo "$s[surname];$s[firstname];$s[level];$s[email];$s[utclogin]\n";
    }
  }

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