Organisation

id = $lastID; $this->creationTime = time(); } else { // Évènement existant : on charge // TODO SQL Select $this->id = $lastID + 1; // TODO DEBUG SQL Récupération id if ($this->id > $lastID) { $lastID = $this->id; } // TODO SQL Récupération du reste des propriétés } } 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; } } # a_ : Récupérer depuis la base de donnée (ou pas) function a_evenements() { # DEBUG $test1 = new Evenement; $test1->duree = 12345; $test1->nom = 'Évènement de test n°1'; $test1->description = 'Description de l\'évènement de test n°1'; $test1->valide = time(); $test2 = new Evenement; $test2->nom = 'Évènement de test n°2'; $test2->description = 'Description de l\'évènement de test n°2'; $test2->duree = 36000; $test2->valide = time(); $test2->annule = true; $test3 = new Evenement; $test3->nom = 'Évènement de test n°3'; $test3->description = 'Description de l\'évènement de test n°3'; $test3->dates[] = 1415482197; $test3->datesVotes[] = 42; $test3->dates[] = time(); $test3->datesVotes[] = 5; $test3->dates[] = time()+365*24*3600; $test3->datesVotes[] = 1; $test4 = new Evenement; $test4->nom = 'Évènement de test n°4'; $test4->description = 'Description de l\'évènement de test n°4'; $test4->dates[] = time(); $test4->datesVotes[] = 5; $test4->dates[] = time()+365*24*3600; $test4->datesVotes[] = 1; $test4->dates[] = time(); $test4->annule = true; $test5 = new Evenement; $test5->nom = 'Évènement de test n°5'; $test5->description = 'Description de l\'évènement de test n°5'; $test5->dates[] = time(); $test5->datesVotes[] = 0; $test5->supprime = true; $test6 = new Evenement; $test6->nom = 'Évènement de test n°6'; $test6->description = 'Description de l\'évènement de test n°6'; $test6->valide = 1415452197; return array($test1, $test2, $test3, $test4, $test5, $test6); } $evenements = a_evenements(); function a_evenement($id) { global $evenements; foreach ($evenements 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 ($evenements 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