Commit 62a4b84382a33535d5469ad0a87e4fb8281b6822

Authored by Geoffrey PREUD'HOMME
1 parent bd5b1d78

[Orga] Chargement des événements via SQL

Contient un script permettant de créer la table sur le serveur, sera
supprimé après éxecution au prochain commit.
Showing 3 changed files with 177 additions and 69 deletions   Show diff stats
events.sql 0 → 100755
@@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
  1 +-- phpMyAdmin SQL Dump
  2 +-- version 4.2.7.1
  3 +-- http://www.phpmyadmin.net
  4 +--
  5 +-- Client : localhost
  6 +-- Généré le : Mar 11 Novembre 2014 à 22:27
  7 +-- Version du serveur : 5.6.20
  8 +-- Version de PHP : 5.5.15
  9 +
  10 +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  11 +SET time_zone = "+00:00";
  12 +
  13 +
  14 +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  15 +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  16 +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  17 +/*!40101 SET NAMES utf8 */;
  18 +
  19 +--
  20 +-- Base de données : `crep`
  21 +--
  22 +
  23 +-- --------------------------------------------------------
  24 +
  25 +--
  26 +-- Structure de la table `events`
  27 +--
  28 +
  29 +CREATE TABLE IF NOT EXISTS `events` (
  30 +`id` smallint(5) unsigned NOT NULL,
  31 + `creationTime` int(10) unsigned NOT NULL,
  32 + `nom` text CHARACTER SET utf8 NOT NULL,
  33 + `description` mediumtext CHARACTER SET utf8 NOT NULL,
  34 + `annule` tinyint(1) NOT NULL DEFAULT '0',
  35 + `valide` int(10) unsigned NOT NULL DEFAULT '0',
  36 + `duree` mediumint(8) unsigned NOT NULL DEFAULT '3600',
  37 + `supprime` tinyint(1) NOT NULL DEFAULT '0'
  38 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
  39 +
  40 +--
  41 +-- Contenu de la table `events`
  42 +--
  43 +
  44 +INSERT INTO `events` (`id`, `creationTime`, `nom`, `description`, `annule`, `valide`, `duree`, `supprime`) VALUES
  45 +(1, 1415737327, 'Événement de test n°1', 'Description de l''événement de test n°1.', 0, 0, 7200, 0),
  46 +(2, 1415738888, 'Événement de test n°2', 'Description de l''événement de test n°2.\r\nNouvelle ligne et caractères $ρ∑⊂|⋀∪×.', 1, 0, 12345, 0);
  47 +
  48 +--
  49 +-- Index pour les tables exportées
  50 +--
  51 +
  52 +--
  53 +-- Index pour la table `events`
  54 +--
  55 +ALTER TABLE `events`
  56 + ADD PRIMARY KEY (`id`), ADD KEY `id` (`id`);
  57 +
  58 +--
  59 +-- AUTO_INCREMENT pour les tables exportées
  60 +--
  61 +
  62 +--
  63 +-- AUTO_INCREMENT pour la table `events`
  64 +--
  65 +ALTER TABLE `events`
  66 +MODIFY `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
  67 +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  68 +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  69 +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
import.php 0 → 100644
@@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
  1 +<?php
  2 +
  3 +// Script d'import de table SQL
  4 +// TEMPORAIRE
  5 +// de http://stackoverflow.com/questions/19751354/how-to-import-sql-file-in-mysql-database-using-php
  6 +
  7 +require('creds.php');
  8 +
  9 +if (isset($_GET['KAMGF6QfHGl8GHypRCat'])) {
  10 +
  11 + // Name of the file
  12 + $filename = 'events.sql';
  13 +
  14 + // Connect to MySQL server
  15 + mysql_connect(__MYSQL_HOSTNAME__, __MYSQL_USERNAME__, __MYSQL_PASSWORD__) or die('Error connecting to MySQL server: ' . mysql_error());
  16 +
  17 + // Select database
  18 + mysql_select_db(__MYSQL_DATABASE__) or die('Error selecting MySQL database: ' . mysql_error());
  19 +
  20 + // Temporary variable, used to store current query
  21 + $templine = '';
  22 +
  23 + // Read in entire file
  24 + $lines = file($filename);
  25 +
  26 + // Loop through each line
  27 + foreach ($lines as $line) {
  28 +
  29 + // Skip it if it's a comment
  30 + if (substr($line, 0, 2) == '--' || $line == '') continue;
  31 +
  32 + // Add this line to the current segment
  33 + $templine.= $line;
  34 +
  35 + // If it has a semicolon at the end, it's the end of the query
  36 + if (substr(trim($line), -1, 1) == ';') {
  37 +
  38 + // Perform the query
  39 + mysql_query($templine) or print ('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
  40 +
  41 + // Reset temp variable to empty
  42 + $templine = '';
  43 + }
  44 + }
  45 + echo "Tables imported successfully";
  46 +}
  47 +?>
0 \ No newline at end of file 48 \ No newline at end of file
@@ -28,8 +28,6 @@ if ($e_connecte) { @@ -28,8 +28,6 @@ if ($e_connecte) {
28 $droits = array('voir'); 28 $droits = array('voir');
29 } 29 }
30 30
31 -$lastID = 0; // TODO Est-ce que cela mérite-t-il d'exister ?  
32 -  
33 class Evenement 31 class Evenement
34 { 32 {
35 // TODO Mettre tout en privé et utiliser __get et __set 33 // TODO Mettre tout en privé et utiliser __get et __set
@@ -46,19 +44,62 @@ class Evenement @@ -46,19 +44,62 @@ class Evenement
46 public $dates = array(); 44 public $dates = array();
47 public $datesVotes = array(); 45 public $datesVotes = array();
48 46
49 - function __construct($id = 0) {  
50 - global $lastID;  
51 - if ($id == 0) { // Nouvel évènement  
52 - $lastID += 1;  
53 - $this->id = $lastID; 47 + private static $bddOK = false;
  48 + private static $bdd = null;
  49 + public static $tout = array();
  50 +
  51 + private static function connecterBDD() {
  52 + if (!Evenement::$bddOK) {
  53 + require_once("creds.php");
  54 + try {
  55 + Evenement::$bdd = mysql_connect(__MYSQL_HOSTNAME__, __MYSQL_USERNAME__, __MYSQL_PASSWORD__);
  56 + mysql_query("SET NAMES 'utf8'");
  57 + } catch(Exception $e) {
  58 + echo 'Nop connect';
  59 + return; // TODO Message d'erreur digne de ce nom
  60 + }
  61 + if (mysql_select_db('crep', Evenement::$bdd)) {
  62 + Evenement::$bddOK = true;
  63 + } else {
  64 + echo 'Nop db';
  65 + }
  66 + }
  67 + }
  68 +
  69 + public static function chargerTout() {
  70 + Evenement::$tout = array();
  71 + Evenement::connecterBDD();
  72 + $requete = 'SELECT id FROM events';
  73 + // TODO SQL Protéger
  74 + $resultat = mysql_query($requete);
  75 + while ($row = mysql_fetch_assoc($resultat)) {
  76 + Evenement::$tout[] = new Evenement($row['id']);
  77 + }
  78 + }
  79 +
  80 + function __construct($id = null) {
  81 + Evenement::connecterBDD();
  82 +
  83 + if ($id == null) { // Nouvel évènement
54 $this->creationTime = time(); 84 $this->creationTime = time();
  85 + // TODO SQL Récupérer id (AUTOINCREMENT)
55 } else { // Évènement existant : on charge 86 } else { // Évènement existant : on charge
56 - // TODO SQL Select  
57 - $this->id = $lastID + 1; // TODO DEBUG SQL Récupération id  
58 - if ($this->id > $lastID) {  
59 - $lastID = $this->id; 87 + $requete = 'SELECT id, creationTime, nom, description, annule, valide, duree, supprime FROM events WHERE id='.$id;
  88 + // TODO SQL Protéger
  89 + $resultat = mysql_query($requete);
  90 + if ($resultat && $row = mysql_fetch_assoc($resultat)) {
  91 + $this->id = $row['id'];
  92 + $this->creationTime = $row['creationTime'];
  93 + $this->nom = $row['nom'];
  94 + $this->description = $row['description'];
  95 + $this->annule = $row['annule'];
  96 + $this->valide = $row['valide'];
  97 + $this->duree = $row['duree'];
  98 + $this->supprime = $row['supprime'];
  99 +
  100 + } else {
  101 + echo 'Nop resultat';
60 } 102 }
61 - // TODO SQL Récupération du reste des propriétés  
62 } 103 }
63 } 104 }
64 105
@@ -191,62 +232,12 @@ class Evenement @@ -191,62 +232,12 @@ class Evenement
191 232
192 } 233 }
193 234
194 -# a_ : Récupérer depuis la base de donnée (ou pas)  
195 -function a_evenements() {  
196 - # DEBUG  
197 - $test1 = new Evenement;  
198 - $test1->duree = 12345;  
199 - $test1->nom = 'Évènement de test n°1';  
200 - $test1->description = 'Description de l\'évènement de test n°1';  
201 - $test1->valide = time();  
202 -  
203 - $test2 = new Evenement;  
204 - $test2->nom = 'Évènement de test n°2';  
205 - $test2->description = 'Description de l\'évènement de test n°2';  
206 - $test2->duree = 36000;  
207 - $test2->valide = time();  
208 - $test2->annule = true;  
209 -  
210 - $test3 = new Evenement;  
211 - $test3->nom = 'Évènement de test n°3';  
212 - $test3->description = 'Description de l\'évènement de test n°3';  
213 - $test3->dates[] = 1415482197;  
214 - $test3->datesVotes[] = 42;  
215 - $test3->dates[] = time();  
216 - $test3->datesVotes[] = 5;  
217 - $test3->dates[] = time()+365*24*3600;  
218 - $test3->datesVotes[] = 1;  
219 -  
220 - $test4 = new Evenement;  
221 - $test4->nom = 'Évènement de test n°4';  
222 - $test4->description = 'Description de l\'évènement de test n°4';  
223 - $test4->dates[] = time();  
224 - $test4->datesVotes[] = 5;  
225 - $test4->dates[] = time()+365*24*3600;  
226 - $test4->datesVotes[] = 1;  
227 - $test4->dates[] = time();  
228 - $test4->annule = true;  
229 -  
230 - $test5 = new Evenement;  
231 - $test5->nom = 'Évènement de test n°5';  
232 - $test5->description = 'Description de l\'évènement de test n°5';  
233 - $test5->dates[] = time();  
234 - $test5->datesVotes[] = 0;  
235 - $test5->supprime = true;  
236 -  
237 - $test6 = new Evenement;  
238 - $test6->nom = 'Évènement de test n°6';  
239 - $test6->description = 'Description de l\'évènement de test n°6';  
240 - $test6->valide = 1415452197;  
241 -  
242 - return array($test1, $test2, $test3, $test4, $test5, $test6);  
243 -} 235 +Evenement::chargerTout();
244 236
245 -$evenements = a_evenements(); 237 +# a_ : Récupérer depuis la base de donnée (ou pas)
246 238
247 -function a_evenement($id) {  
248 - global $evenements;  
249 - foreach ($evenements as $evenement) { 239 +function a_evenement($id) { // TODO Méthode statique à Evenement
  240 + foreach (Evenement::$tout as $evenement) {
250 if ($evenement->id == $id) { 241 if ($evenement->id == $id) {
251 return $evenement; 242 return $evenement;
252 } 243 }
@@ -324,7 +315,7 @@ $evenementsPlanifies = array(); @@ -324,7 +315,7 @@ $evenementsPlanifies = array();
324 $evenementsAPlanifier = array(); 315 $evenementsAPlanifier = array();
325 $evenementsPasses = array(); 316 $evenementsPasses = array();
326 317
327 -foreach ($evenements as $evenement) { 318 +foreach (Evenement::$tout as $evenement) {
328 if (!$evenement->supprime) { 319 if (!$evenement->supprime) {
329 if ($evenement->valide) { 320 if ($evenement->valide) {
330 if ($evenement->passe()) { 321 if ($evenement->passe()) {
@@ -345,9 +336,10 @@ if (!$e_connecte) { @@ -345,9 +336,10 @@ if (!$e_connecte) {
345 <div class="alert alert-warning" role="alert">Connectez-vous afin de pouvoir agir sur les évènements.</div> 336 <div class="alert alert-warning" role="alert">Connectez-vous afin de pouvoir agir sur les évènements.</div>
346 <?php 337 <?php
347 } 338 }
348 -?>  
349 -<?php 339 +
  340 +
350 if (in_array('voir', $droits)) { 341 if (in_array('voir', $droits)) {
  342 +// TODO Message si catégorie vide
351 ?> 343 ?>
352 <h3>Évènements plannifiés <?php if (in_array('ajouter', $droits)) { ?><button id="ev_ajouter_fixe" type="button" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Ajouter un évènement avec une date fixée</button><?php } ?></h3> 344 <h3>Évènements plannifiés <?php if (in_array('ajouter', $droits)) { ?><button id="ev_ajouter_fixe" type="button" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Ajouter un évènement avec une date fixée</button><?php } ?></h3>
353 <ul id="ev_ul_planifies" class="list-group"> 345 <ul id="ev_ul_planifies" class="list-group">