views.php 5.94 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
    }

21
    public function printHtmlBegin() {
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>';
29
    echo '<h1>Foire aux Api</h1>';
30
31
    }

32
    public function printInstructions($row) {
33
34
        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>';
35
        echo '<h2>Instructions</h2>';
36
37
38
39
40
41
        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>';
        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éinscrire 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>';
        echo '</ul>';
42
43
    }

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

57
    private function printApi($row) {
58
59
60
61
62
      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]";
63
    }
64

65
66
    private function printStudent($row) {
      if (!$row['surname']) {
67
        return "$row[utclogin] $row[level]";
68
69
      }
      else {
70
        return "$row[firstname] $row[surname] $row[level] (<a href='mailto:$row[email]'>[mail]</a>)";
71
72
73
      }
    }

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

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

133
  public function respValidation ($listsub) {
134
    // #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)
135
136
137
138
139
140
    echo '<h1>Interface Responsable d\'Api</h2>';
    if ($listsub) {
      $api = '';
      foreach ($listsub as $sub) {
        if ($api != $sub['id']) {
          $api = $sub['id'];
141
142
          echo '<h2>'.$this->printWeek($sub).'</h2>';
          echo '<h3>'.$this->printApi($sub).'</h3>';
143
        }
144
145
146
        if ($sub['utclogin']) {
          if ($sub['validation']) {
            // Subscription already validated
147
            echo '<p><b>[validé] </b>'.$this->printStudent($sub).'</p>';
148
149
150
          }
          else if (is_null($sub['validation'])) {
            // At least one waiting subscription
Stephane Crozat's avatar
Stephane Crozat committed
151
            echo "<p> <a href='index.php?action=validate&api=$sub[id]&login=$sub[utclogin]&mode=resp'>[valider]</a> ".$this->printStudent($sub)." <span>Exclusivité : $sub[indicator]%</span></p>";
152
153
154
155
156
157
158
159
160
          }
          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>";
        }
161
162
163
164
165
      }
    }
    else {
      echo "<p>Aucune Api à gérer</p>";
    }
166
167
168
  }

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