Organisation

creationTime = time(); // TODO SQL Récupérer id (AUTOINCREMENT) } else { // Évènement existant : on charge $requete = 'SELECT id, creationTime, nom, description, annule, valide, duree, supprime FROM events WHERE id='.$id; // TODO SQL Protéger $resultat = mysql_query($requete); if ($resultat && $row = mysql_fetch_assoc($resultat)) { $this->id = $row['id']; $this->creationTime = $row['creationTime']; $this->nom = $row['nom']; $this->description = $row['description']; $this->annule = $row['annule']; $this->valide = $row['valide']; $this->duree = $row['duree']; $this->supprime = $row['supprime']; } else { echo 'Nop resultat'; } } } public function sauvegarder() { // TODO SQL } public function html() { $html = '
  • '; # Titre $html .= '

    '.$this->nom; if ($this->p_annuler()) { $html .= ' '; } if ($this->p_supprimer()) { $html .= ' '; } $html .= '

    '; # Description $html .= '
    '; $html .= '
    '; $html .= '
    Informations'; if ($this->p_modifier()) { $html .= ' '; } $html .= '
    '; $html .= '
    '; $html .= '
    '; $html .= '

    '; $html .= nl2br(htmlspecialchars($this->description)); $html .= '

    '; // $html .= '
    '; $html .= '

    '; $heures = floor($this->duree/3600); $minutes = floor($this->duree%3600/60); $secondes = floor($this->duree%3600%60); $html .= 'Durée : '.($heures > 0 ? ''.$heures.' heure'.($heures > 1 ? 's' : '').' ' : '').($minutes > 0 ? ''.$minutes.' minute'.($minutes > 1 ? 's' : '').' ' : '').($secondes > 0 ? ''.$secondes.' seconde'.($secondes > 1 ? 's' : '').' ' : '').'
    '; if ($this->valide) { $html .= 'Date : le '.date('j/m/o', $this->valide).' à '.date('H:i', $this->valide).'
    '; } $html .= '

    '; if ($this->annule) { $html .= '

    Annulé

    '; } $html .= '
    '; $html .= '
    '; # Dates if (!$this->valide && !$this->annule) { $html .= '
    '; $html .= '
    '; $html .= '
    Dates possibles'; if ($this->p_proposer()) { $html .= ' '; } $html .= '
    '; $html .= '
    '; $html .= '
    '; if ($this->p_voter()) { $html .= '

    Sélectionnez les dates qui vous conviennent.

    '; } $html .= '
    '; $time = time(); foreach ($this->dates as $dateIndex => $date) { // TODO À faire fonctionner (après que le reste fonctionne) $html .= 'Le '.date('j/m/o', $date).' à '.date('H:i', $date).' ('.$this->datesVotes[$dateIndex].' )'; } $html .= '
    '; if ($this->p_valider()) { $html .= '

    '; } $html .= '
    '; $html .= '
    '; } $html .= '
  • '; return $html; } public function passe() { global $time; if ($this->valide) { return $this->valide+$this->duree < $time; } else { return false; } } # p_ : Il est possible de ... function p_annuler() { global $droits; return in_array('annuler', $droits) && !$this->annule && !$this->passe(); } function p_supprimer() { global $droits; return in_array('supprimer', $droits) && !$this->valide; } function p_modifier() { global $droits; return in_array('modifier', $droits); } function p_voter() { global $droits; return in_array('voter', $droits) && !$this->valide; } function p_proposer() { global $droits; return in_array('proposer', $droits) && !$this->valide; } function p_valider() { global $droits; # TODO Et si un nombre suffisant de personnes est ok avec la date la plus disponible return in_array('valider', $droits) && !$this->valide; } } Evenement::chargerTout(); # a_ : Récupérer depuis la base de donnée (ou pas) function a_evenement($id) { // TODO Méthode statique à Evenement foreach (Evenement::$tout as $evenement) { if ($evenement->id == $id) { return $evenement; } } } # TRAITEMENT DES DONNEES POST function mauvaiseRequete($code = 0) { echo ''; } function bonneRequete($message = 'Action correctement effectuée.') { echo ''; } if (isset($_POST['action'])) { switch ($_POST['action']) { case 'modifier': if (isset($_POST['id']) && isset($_POST['description']) && isset($_POST['duree'])) { if ($evenement = a_evenement($_POST['id'])) { if (($duree = intval($_POST['duree'])) >= 0) { $evenement->description = $_POST['description']; // TODO Protection nécessaire pour SQL $evenement->duree = $duree; bonneRequete('Élement correctement modifié.'); } else { mauvaiseRequete(4); } } else { mauvaiseRequete(3); } } else { mauvaiseRequete(2); } break; case 'annuler': if (isset($_POST['id'])) { if ($evenement = a_evenement($_POST['id'])) { $evenement->annule = true; bonneRequete('Évènement annulé.'); } else { mauvaiseRequete(3); } } else { mauvaiseRequete(2); } break; case 'supprimer': if (isset($_POST['id'])) { if ($evenement = a_evenement($_POST['id'])) { $evenement->supprime = true; bonneRequete('Évènement supprimé.'); } else { mauvaiseRequete(3); } } else { mauvaiseRequete(2); } break; default: mauvaiseRequete(1); break; } } # AFFICHAGE DE LA PAGE # Tri des évènements $evenementsPlanifies = array(); $evenementsAPlanifier = array(); $evenementsPasses = array(); foreach (Evenement::$tout as $evenement) { if (!$evenement->supprime) { if ($evenement->valide) { if ($evenement->passe()) { $evenementsPasses[] = $evenement; } else { $evenementsPlanifies[] = $evenement; } } else { $evenementsAPlanifier[] = $evenement; } } } # Affichage if (!$e_connecte) { ?>

    Évènements plannifiés

    Évènements à plannifier

    Évènements passés