diff options
Diffstat (limited to 'beta_accents/app')
81 files changed, 4714 insertions, 0 deletions
diff --git a/beta_accents/app/admin.php b/beta_accents/app/admin.php new file mode 100644 index 0000000..4248d2a --- /dev/null +++ b/beta_accents/app/admin.php @@ -0,0 +1,63 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/ludo/fonctions.inc.php'); +//~ require_once('include/je.inc.php'); +//~ require_once('include/ju.inc.php'); +include('include/ludo/config.inc.php'); + +generate_html_doctype_and_head("Administration"); +echo "<body>\n"; + +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > Administration + </p> + </div> +<?php + generate_html_div_help(); + echo '<div id="contenu">' . "\n"; + + if ( isset($_REQUEST['action']) ) + { + switch ($_REQUEST['action']) + { + case 'delete_from_AWOR_Liste': + case 'delete_from_AWOR_Fichier': + case 'delete_from_AWOR_Reunion': + case 'delete_from_AWOR_Personne': + $_REQUEST['action'](); + break; + default: + $errmsg = 'Impossible de traiter la requete : paramètre erroné'."\n"; + } + } + + if ( !isset($_SESSION['session_loginP']) || ( !is_integer(array_search($_SESSION['session_loginP'],$CONFIG['SUPERUSERS'],true))) ) + { + $errmsg='Vous n\'avez pas le droit de consulter cette page : vous n\'êtes pas un administrateur !'; + generate_html_div_errmsg($errmsg); + echo '</body></html>'; + exit(); + } + + + // TODO : fonctions qui purgent les tables filles selon un id donné, pour chaque cas mère-fille (indiqués plus bas) + + // Fonctions qui génèrent des tableaux listant tous les objets de la base, et permettant la sélection multiple et l'éffacement (en cascade) + html_generate_MySQLTableSuppr('AWOR_Liste','idL'); // Permet de virer des liste + echo "<br />\n"; + html_generate_MySQLTableSuppr('AWOR_Fichier','idFic'); // Permet de virer des fichiers, doit purger physiquement sur le disque + echo "<br />\n"; + html_generate_MySQLTableSuppr('AWOR_Reunion','idR', 'idR,objetR,estAnnulee,idP_Orga,idC_Fixe,idL'); // Permet de virer des gens, doit purger les tables Creneau et Choisir, Repondre, Fichiers + echo "<br />\n"; + html_generate_MySQLTableSuppr('AWOR_Personne','idP'); // Permet de virer des gens, doit purger les tables Appartenir, Reunion + +echo " </div>\n"; +generate_html_div_footer(); +?> +</body> +</html> diff --git a/beta_accents/app/auth_dialog.php b/beta_accents/app/auth_dialog.php new file mode 100644 index 0000000..55e6c16 --- /dev/null +++ b/beta_accents/app/auth_dialog.php @@ -0,0 +1,121 @@ +<?php + // Récupération des paramètres + if ( isset($_GET['retour']) && $_GET['retour']!='' ) + { $retour=addslashes( $_GET['retour'] ); } else { $retour='index.php'; } + + // Si le formulaire à été envoyé, on le traite ici + if ( isset($_POST['envoi']) && $_POST['envoi'] === '1' ) + { + if ( ! ( isset($_POST['loginP']) && isset($_POST['pass']) ) ) + { + $errmsg = 'Paramètres incorrects'; + } + else + { + $loginP=addslashes( $_POST['loginP'] ); + + + include 'include/ludo/auth.inc.php'; + + // Code vérifiant que la personne qui tente de se connecter est bien référencée dans notre base + include 'include/ludo/fonctions.inc.php'; + // Connexion à la base et sélection de la database + include 'include/connect.inc.php'; + include 'include/ludo/config.inc.php'; + + // Requete SQL + $query = "SELECT idP, loginP, nomP, prenomP, methodeAuth FROM AWOR_Personne WHERE loginP='$loginP';"; + if ( ! $result = @mysql_query($query) ) + { + // Cas d'erreur + $errmsg =mysql_generate_errmsg(); + } + else + { + // Initialisation par défaut + $methodeAuth=''; + // Chargement des préférences d'authentification de l'utilisateur + if ( mysql_num_rows($result) === 1) + { + list($idP, $loginP, $nomP, $prenomP, $methodeAuth) = mysql_fetch_row($result); + } + // Si le script est lancé en local, on saute l'authentification + if ( ($CONFIG['AUTH']['bypass_if_local'] === true ) + && ( ($_SERVER['REMOTE_ADDR'] == 'localhost') || ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') ) ) + { + $methodeAuth='bypass'; + } + + $auth_is_ok=false; + switch ( $methodeAuth ) + { + case 'webetud': + // TODO + break; + // Vous pouvez ajouter d'autres mode d'authentification ici ! + case 'bypass': + $auth_is_ok=true; + break; + default: + // Tentative d'authentification POP + if ( ($errno = pop3_auth_simple($loginP, $_POST['pass']) ) != 0 ) + { + // Authentification échouée + $errmsg=pop3_generate_errmsg($errno); + } + else + { + $auth_is_ok=true; + } + break; + } + if ( $auth_is_ok === true ) + { + // Authentification réussie + session_start(); + $_SESSION['session_loginP']=$loginP; + $_SESSION['session_nomP']=$nomP; + $_SESSION['session_prenomP']=$prenomP; + $_SESSION['session_idP']=$idP; + require('include/ludo/redir.inc.php'); + html_redir($retour); + } + } + } + } +require_once('include/ludo/html_elements.inc.php'); +generate_html_doctype_and_head("Identification"); +?> +<body onload="javascript:document.forms['auth'].elements['loginP'].focus()"> +<div id="titre"><h2>AWOR</h2></div> + +<?php +generate_html_div_help(); +?> +<div id="page_accueil"> + <h1>Application Web d'Organisation de Réunion</h1> + <h2>Veuillez vous identifier</h2> + <?php echo '<form id="auth" method="post" action="' . $_SERVER['PHP_SELF'] . '">' . "\n"; ?> + <input type="hidden" name="envoi" value="1" /> + <?php echo '<input type="hidden" name="retour" value="' . $retour . '" />' . "\n" ; ?> + <div class="aligned"> + <div> + <span class="label">Votre identifiant :</span> + <span class="field"><input name="loginP" type="text" size="20" tabindex="1" /></span> + </div> + <div> + <span class="label">Votre mot de passe :</span> + <span class="field"><input name="pass" type="password" size="20" tabindex="2" /></span> + </div> + <div> + <span class="label"><input type="reset" value="Vider" /></span> + <span class="field"><input type="submit" value="Valider" /></span> + </div> + </div> +<?php if ( isset ($debug) ) { echo ' <input type="hidden" name="debug" value="true" />' . "\n"; } ?> + </form> +</div> +<?php if ( isset ($errmsg) ) { generate_html_div_errmsg($errmsg); } +generate_html_div_footer(); ?> +</body> +</html> diff --git a/beta_accents/app/css/default.css b/beta_accents/app/css/default.css new file mode 100644 index 0000000..b8ecc3d --- /dev/null +++ b/beta_accents/app/css/default.css @@ -0,0 +1,240 @@ + +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(default_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(../images/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:20px; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:120px; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:22%;/*225px;*/ /*200 + 5*2 + 2*2 + (pour ie 5*2) */ +} +#help { + text-align:justify; + color:#000000; + float:right; + margin:5px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:18%; +} +#help h2 +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin-top:0; + margin-bottom:10px; +} + +#no_help h2 +{ + display:none; +} +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_new { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 25em; + margin-top: -12.5em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_new { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_new h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_new input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(../images/masque.png); + background-repeat:repeat; + z-index: 499; +}
\ No newline at end of file diff --git a/beta_accents/app/css/default_img/README.txt b/beta_accents/app/css/default_img/README.txt new file mode 100644 index 0000000..fec6abf --- /dev/null +++ b/beta_accents/app/css/default_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style default.css diff --git a/beta_accents/app/css/default_img/README.txt~ b/beta_accents/app/css/default_img/README.txt~ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/beta_accents/app/css/default_img/README.txt~ diff --git a/beta_accents/app/css/default_img/titre.png b/beta_accents/app/css/default_img/titre.png Binary files differnew file mode 100644 index 0000000..d8d9ce6 --- /dev/null +++ b/beta_accents/app/css/default_img/titre.png diff --git a/beta_accents/app/css/ice.css b/beta_accents/app/css/ice.css new file mode 100644 index 0000000..9418fd9 --- /dev/null +++ b/beta_accents/app/css/ice.css @@ -0,0 +1,342 @@ +em {color:#F00;} +img { border : none ; } +img.spacing{ margin: 0 0.2em 0 0.2em;} +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color:#551A8B; +} +th.selected {color:#FFF;background-color:#8470FF} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} + +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +.reunion_fixee { + color:#bf7e00; +} +.reunion_en_cours { + color:#9fbf00; +} +.reunion_annulee { + color:#bf2000; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + float:left; + width:78%; +} +#help { + text-align:justify; + color:#000000; + float:right; + margin:5px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:18%; +} + +#help h2 , #help a +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + color:#FFFFFF; + margin-top:0; + margin-bottom:10px; +} +#no_help, #no_help h2 +{ + display:none; +} + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 10em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 14em; + margin-top: -7em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} +div.popup_contenu em +{ + font-size:x-small; + color:#FFF; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} + +#page_accueil h1 +{ + background:#551A8B; + color:#FFF; + margin-top:0; +} + +#page_accueil +{ + text-align:center; +} + +#msg +{ + display:none; + position:absolute; + text-align:center; + left:50%; + margin-left:-20%; + width:40%; + background-color:#551A8B; + top:-10px; + padding-top:15px; + padding-bottom:10px; + color:#FFF; + -moz-border-radius:16px; +} +#msg em +{ + color:#FFF; +} + + +#footer +{ + display:block; + + position:fixed; + left:0px; + width:100%; + background-color:#551A8B; + top:100%; + height:2.3em; + padding-top:-2.3em; + margin-top:-2.3em; + color:#FFF; + font-size:x-small; +} +#footer ul +{ + display:inline; + list-style-type:none; + white-space:nowrap; +} +#footer li.right { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + padding-top:0.5em; + margin-top:0px; + padding-right:10px; +} +#footer li { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:-14px; + padding-right:30px; +} +#footer li.left { + list-style: none; + float:left; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:0px; + padding-left:30px; +} diff --git a/beta_accents/app/css/ice_img/README.txt b/beta_accents/app/css/ice_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_accents/app/css/ice_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_accents/app/css/ice_img/logo.png b/beta_accents/app/css/ice_img/logo.png Binary files differnew file mode 100644 index 0000000..a768d45 --- /dev/null +++ b/beta_accents/app/css/ice_img/logo.png diff --git a/beta_accents/app/css/ice_img/masque.png b/beta_accents/app/css/ice_img/masque.png Binary files differnew file mode 100644 index 0000000..45a6027 --- /dev/null +++ b/beta_accents/app/css/ice_img/masque.png diff --git a/beta_accents/app/css/ice_img/titleTable.png b/beta_accents/app/css/ice_img/titleTable.png Binary files differnew file mode 100644 index 0000000..e6c02d9 --- /dev/null +++ b/beta_accents/app/css/ice_img/titleTable.png diff --git a/beta_accents/app/css/ice_img/titre.png b/beta_accents/app/css/ice_img/titre.png Binary files differnew file mode 100644 index 0000000..d8d9ce6 --- /dev/null +++ b/beta_accents/app/css/ice_img/titre.png diff --git a/beta_accents/app/css/ice_moche.css b/beta_accents/app/css/ice_moche.css new file mode 100644 index 0000000..0004b1a --- /dev/null +++ b/beta_accents/app/css/ice_moche.css @@ -0,0 +1,233 @@ +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color:#551A8B; +} + +th.selected {color:#8470FF;} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} + +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + height:60px; + width:200px; + margin-left:60px; + padding-top:5px; +/* background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat;*/ + color:#FFFFFF; + font-size:40px; + +} +#titre { + height:60px; + padding-top:5px; + width:100%; + clear:left; + background-color:#551A8B; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + color:#551A8B; + width:15em; + background-color:#FFFFFF; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#551A8B; +} +#menu a:hover { + color:#FFFFFF; + background-color:#551A8B; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + padding:0px; + margin:0px; + vertical-align:middle; +} +#menu #deconnection { +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + display:none; +} + +/*******************/ +/***** Contenu *****/ +#contenu { + padding-top:10px; + padding-bottom:10px; + padding-right:3em; + padding_left:3em; + position:absolute; + top:60px; + left:15em; + +} +#help { + text-align:justify; + color:#000000; + float:left; + margin-top:20px; + margin-left:10px; + padding:5px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:15em; +} + +#help h2 , #help a +{ + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + color:#FFFFFF; + margin-top:0; + margin-bottom:10px; +} +#no_help, #no_help h2 +{ + display:none; +} + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} diff --git a/beta_accents/app/css/ice_moche_img/README.txt b/beta_accents/app/css/ice_moche_img/README.txt new file mode 100644 index 0000000..b81d613 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/README.txt @@ -0,0 +1 @@ +C'est ici qu'on stockera les images propre au style Ice.css diff --git a/beta_accents/app/css/ice_moche_img/logo.png b/beta_accents/app/css/ice_moche_img/logo.png Binary files differnew file mode 100644 index 0000000..a768d45 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/logo.png diff --git a/beta_accents/app/css/ice_moche_img/masque.png b/beta_accents/app/css/ice_moche_img/masque.png Binary files differnew file mode 100644 index 0000000..45a6027 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/masque.png diff --git a/beta_accents/app/css/ice_moche_img/titleTable.png b/beta_accents/app/css/ice_moche_img/titleTable.png Binary files differnew file mode 100644 index 0000000..e6c02d9 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/titleTable.png diff --git a/beta_accents/app/css/ice_moche_img/titre.png b/beta_accents/app/css/ice_moche_img/titre.png Binary files differnew file mode 100644 index 0000000..d8d9ce6 --- /dev/null +++ b/beta_accents/app/css/ice_moche_img/titre.png diff --git a/beta_accents/app/css/ice_moche_nohelp.css b/beta_accents/app/css/ice_moche_nohelp.css new file mode 100644 index 0000000..9032594 --- /dev/null +++ b/beta_accents/app/css/ice_moche_nohelp.css @@ -0,0 +1,252 @@ + +img { border : none ; } +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +th.selected {color:#8470FF;} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + + +/*******************/ +/***** Contenu *****/ + +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:5px; + float:left; + width:95%; +} +#no_help { + display:block; + text-align:justify; + color:#000000; + float:right; + margin:0px; + padding:1px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:3%; +} +#no_help h2 , #no_help a +{ + display:block; + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin:0px; + padding:0px; +} +#help,#help h2 +{ + display:none; +} + + + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +}
\ No newline at end of file diff --git a/beta_accents/app/css/ice_nohelp.css b/beta_accents/app/css/ice_nohelp.css new file mode 100644 index 0000000..03c382f --- /dev/null +++ b/beta_accents/app/css/ice_nohelp.css @@ -0,0 +1,345 @@ +em {color:#F00;} +img { border : none ; } +img.spacing{ margin: 0 0.5em 0 0.5em;} +body { + color: #000000; + background-color:#F5F5DC; + font-family: Verdana, Arial, Helvetica, sans-serif; + padding:0px; + margin:0px; + min-width:750px; /*Pour eviter le chevauchement pour FireFox, ne change rien pour IE (qui gere pas trop mal sans ca) */ + height: 100%; +} +table { + border-spacing:0px; + margin: auto; + padding: 0px; + width:98%; + text-align:center; + border: thin solid #E0E0E0; + border-collapse:collapse; /* Imite le cellspacing=0 et fonctionne sous IE */ + background-color:#F7F7F7; +} +th { + border-right:none; + font-weight: bold; + color: #FFFFFF; + background-color: #551A8B; +} +th.selected {color:#FFF;background-color:#8470FF} +td { + border-bottom-width: thin; + border-bottom-style: solid; + border-bottom-color: #E0E0E0; +} +th a:link, th a:visited { + font-size: x-small; + color: #FFFFFF; +} +h1 { + font-weight: bold; + color: #9999FF; + text-align: center; +} +h2 { + color: #5C5CFF; + margin: 0px; +} +.reunion_fixee { + color:#bf7e00; +} +.reunion_en_cours { + color:#9fbf00; +} +.reunion_annulee { + color:#bf2000; +} +select { width:auto; } +/***** Titre *****/ +#titre h2 { + color: #551A8B; + margin-left:50px; + height:50px; + width:200px; + background-image:url(ice_img/titre.png); + background-position:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-size:0px; +} +#titre { + height:50px; + clear:left; + background-color:#FFFFFF; + background-image:url(ice_img/logo.png); + background-position:left; + background-repeat:no-repeat; +} + +/*****************/ +/***** Menu *****/ +#menu { + padding:0px; + margin:0px; + width:100%; + height:1.5em; + background-color:#551A8B; +} +#menu a { + text-decoration:none; + display:block; + font-weight:bold; + text-align:center; + color:#FFFFFF; + height:1.5em; +} +#menu a:hover { + color:#000000; + background-color:#FFFFFF; + height:1.5em; +} +/* Pour IE5/MAC \*/#menu a{float:none;}/**/ +#menu li { + list-style: none; + float:left; + padding:0; + margin:0; + width:10em; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; +} +#menu #deconnection { + float:right; +} + +#main_menu { + +} +/*********************/ +/***** Sous Menu *****/ +#sous_menu { + clear:left; + padding-top:5px; + padding-bottom:3px; + padding-left:15px; + border-bottom:1px solid #000000; + background-color:#8470FF; +} +/* -------------- Arbre -------------------*/ +p.arbre { + font-size: small; + color: #FFFFFF; + text-align: left; + margin-top: 0px; + margin-right: 0px; + margin-bottom: 0px; + margin-left: 0px; +} +p.arbre a:link, p.arbre a:visited {color:#FFFFFF; } + + +/*******************/ +/***** Contenu *****/ + +#contenu { + padding-top:10px; + padding-bottom:20px; + padding-left:5px; + padding-right:5px; + float:left; + width:95%; +} + +#no_help { + display:block; + text-align:justify; + color:#000000; + float:right; + margin:0px; + padding:1px; + border:thin solid #000000; + background-color:#F7F7F7; + font-size:small; + width:3%; +} +#no_help h2 , #no_help a +{ + display:block; + text-align:center; + font-size:medium; + color:#FFFFFF; + background-color:#551A8B; + margin:0px; + padding:0px; +} +#help,#help h2 +{ + display:none; +} + + + + +.popup , .popup_creneau , .popup_personne , .popup_commentaire , .popup_fichier , .popup_deletelist { + display: none; + position: absolute; + left:50%; + top:50%; + border: 3px solid #000000; + background-color: #8470FF; + z-index: 500; + font-size: 80%; + text-align:center; +} +.popup { + width: 20em; + height: 10em; + margin-top: -4em ;/*moitié de height */ + margin-left: -10em ;/*moitié de width */ +} + +.popup_creneau { + width: 45em; + height: 22em; + margin-top: -11em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_personne { + width: 45em; + height: 30em; + margin-top: -15em ;/*moitié de height */ + margin-left: -22.5em ;/*moitié de width */ +} +.popup_commentaire { + width: 30em; + height: 14em; + margin-top: -7em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_fichier { + width: 30em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -15em ;/*moitié de width */ +} + +.popup_deletelist { + width: 26em; + height: 8em; + margin-top: -4em ;/*moitié de height */ + margin-left: -13em ;/*moitié de width */ +} + +.popup h2 , .popup_creneau h2 , .popup_personne h2 , .popup_commentaire h2 , .popup_fichier h2 , .popup_deletelist h2 +{ + background:#551A8B; + color:#FFFFFF; + font-size:small; + border-bottom:inherit; +} + +div.popup_contenu +{ + margin-top:1em; + vertical-align:middle; +} +div.popup_contenu em +{ + font-size:x-small; + color:#FFF; +} + +.popup input , .popup_creneau input , .popup_personne input , .popup_commentaire input , .popup_fichier input , .popup_deletelist input +{ + cursor:pointer; +} + +#masque +{ + width:100%; + height:100%; + display: none; + position: absolute; + left:0px; + top:0px; + background-image:url(ice_img/masque.png); + background-repeat:repeat; + z-index: 499; +} + +#page_accueil h1 +{ + background:#551A8B; + color:#FFF; + margin-top:0; +} + +#page_accueil +{ + text-align:center; +} + +#msg +{ + display:none; + position:fixed; + text-align:center; + left:50%; + margin-left:-20%; + width:40%; + background-color:#551A8B; + top:-10px; + padding-top:15px; + padding-bottom:10px; + color:#FFF; + -moz-border-radius:16px; +} + +#footer +{ + display:block; + position:absolute; + text-align:center; + left:0px; + width:100%; + background-color:#551A8B; + bottom:0; + height:2.3em; + padding-top:-2.3em; + margin-top:-2.3em; + color:#FFF; + font-size:x-small; +} +#footer ul +{ + display:inline; + list-style-type:none; + white-space:nowrap; + +} +#footer li.right { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + padding-top:0.5em; + margin-top:0px; + padding-right:10px; +} +#footer li { + list-style: none; + float:right; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:-14px; + padding-right:30px; +} +#footer li.left { + list-style: none; + float:left; + white-space:nowrap;/*Evite l'étalement sur deux ligne*/ + vertical-align:middle; + margin-top:0px; + padding-left:30px; +} diff --git a/beta_accents/app/deco.php b/beta_accents/app/deco.php new file mode 100644 index 0000000..57a56bc --- /dev/null +++ b/beta_accents/app/deco.php @@ -0,0 +1,36 @@ +<?php +session_start(); + +// Si vous voulez détruire complètement la session, effacez également le cookie de session. +// Note : cela détruira la session et pas seulement les données de session ! +if (isset($_COOKIE[session_name()])) { +setcookie(session_name(), '', time()-42000, '/'); +} + +require_once('include/ludo/html_elements.inc.php'); +generate_html_doctype_and_head("Déconnexion"); +?> +<body> + <h1>Deconnexion</h1> + <div> + <?php + if ( isset($_SESSION['session_loginP']) ) + { + // Détruit toutes les variables de session + $_SESSION = array(); + + // On a déjà détruit le cookie qui permet la ré-emission par le client du sessionid + + // Finalement, on détruit la session. + session_destroy(); + echo 'Vous avez bien été déconnecté' . "\n"; + } + else + { + echo 'Deconnexion impossible : aucune session en cours' . "\n"; + } + ?> + </div> +<?php generate_html_div_back(); ?> +</body> +</html>
\ No newline at end of file diff --git a/beta_accents/app/details_reunion.php b/beta_accents/app/details_reunion.php new file mode 100644 index 0000000..845e688 --- /dev/null +++ b/beta_accents/app/details_reunion.php @@ -0,0 +1,121 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/connect.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/ludo/fonctions.inc.php'); + +require_once('include/je.inc.php'); +require_once('include/ju.inc.php'); + + + +generate_html_doctype_and_head("Détail de la réunion"); +echo "<body>\n"; + +// DEBUG +//~ echo '<pre>'; +//~ print_r($_REQUEST); +//~ echo '</pre>'; + +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > <a href="index.php">Réunions</a> + > Détails d'une réunion + </p> + </div> +<?php + if ( isset($_REQUEST['action']) ) + { + switch ($_REQUEST['action']) + { + case 'creer_reunion': + $ret=traiter_formulaire_creer_reunion(); + //~ echo "DEBUG : idR==$ret\n"; + if ( is_string($ret) ) { $errmsg=$ret; } else { $idR=$ret;} + break; + case 'popfichier': + case 'maj_profil': + case 'valider_modif_personnes': + case 'valider_creneau': + case 'delete_list': + case 'commentaire': + case 'fixer_creneau': + case 'modif_detail_reunion': + $nom_func = 'traiter_formulaire_' . $_REQUEST['action']; + $errmsg = $nom_func(); + break; + default: + $errmsg = 'Impossible de traiter la requete : type de formulaire non enregistré !'."\n"; + } + } + // Connexion à la base et sélection de la database + require_once 'include/connect.inc.php'; + if ( ! isset($idR) && ( ! isset($_REQUEST['idR'] ) || ! is_numeric($_REQUEST['idR']) ) || ! isset($_SESSION['session_idP']) ) + { + $errmsg='Erreur de génération de la page : paramètres erronés ou manquant'; + } + else + { + if ( ! isset($idR) ) { $idR=addslashes($_REQUEST['idR']); } + $idP=$_SESSION['session_idP']; + + // Vérification que la réunion nous concerne bien + $query="SELECT * FROM AWOR_Appartenir a WHERE a.idL=$idR, a.idP=$idP;"; + if ( ( $result = @mysql_query($query) ) && ( mysql_num_rows($result) === 1 ) ) + { + $errmsg='Vous n\'avez pas le droit de consulter cette page : cette réunion n\'existe pas ou ne vous concerne pas !'; + } + } + if ( isset($errmsg) && is_string($errmsg) ) + { + generate_html_div_errmsg($errmsg); + echo '</body></html>'; + exit(); + } + generate_html_div_help('help/details_reunion_admin.php.hlp'); + echo '<div id="contenu">' . "\n"; + echo '<div id="details_reunion">' . "\n"; + generate_html_reunion_detail2($idR); + echo "</div>\n"; + echo "<br />\n"; + generate_html_array_personnes_crenaux($idR, $idP); + echo "<br />\n"; + generate_html_reunion_commentaires($idR); + echo "<br />\n"; + generate_html_reunion_fichiers($idR); +?> +</div> +<div id="popcommentaire" class="popup_commentaire"> +<h2>Editer votre commentaire</h2> +<div class="popup_contenu"> +<form id="formcommentaire" method="get" action="details_reunion_admin.php"> +Commentaire : <input name="txtCommentaire" type="text" id="txtCommentaire" /> +<br/><br/> +<input type="submit" name="Submit" value="Enregistrer" /><input type="button" name="fermer" value="Fermer" alt="commentaire" /> +</form> +</div> +</div> + +<div id="popfichier" class="popup_fichier"> +<h2>Ajouter un fichier</h2> +<div class="popup_contenu"> +<form id="formfichier" method="post" action="details_reunion.php?idR=<?php echo $idR; ?>" enctype="multipart/form-data"> +Fichier : <input name="fichier" type="file" id="fichier"/> +<br/><br/> +<input type="hidden" name="action" value="popfichier" /> +<input type="submit" name="Submit" value="Valider" onclick="popoff('popfichier');"/> +<input type="button" value="fermer" onclick="popoff('popfichier');"/> +</form> +</div> +</div> +<?php generate_html_div_footer(); ?> +<div class="popup" id="popfixer"></div> +<div class="popup_creneau" id="popcreneau"></div> +<div id="poppersonne" class="popup_personne"></div> +<div id="masque"></div> +<div id="msg"></div> +</body> +</html> diff --git a/beta_accents/app/help/admin.php.hlp b/beta_accents/app/help/admin.php.hlp new file mode 100644 index 0000000..3d669ec --- /dev/null +++ b/beta_accents/app/help/admin.php.hlp @@ -0,0 +1,23 @@ +Cette page vous permet de visualiser les objets principaux de la base de données.<br /> +Vous pouvez depuis cette page purger la base, ainsi que les fichiers attachés qui sont stockés sur disque.<br /> +Lorsque vous supprimez par exemple une personne inscrite, tout les enregistrements relatifs à cette personne seront effacés : +<ul> + <li>Les liens indicant que cette personne participe à des réunions</li> + <li> + Les réunions qu'elle à créée + <ul> + <li>Les réponses des participants à ses réunions pour chaque créneau</li> + <li>Les commentaires des réponses des participants</li> + <li>Les créneaux de ses réunions</li> + <li> + Les liens vers les fichiers attachés + <ul> + <li>Les fichiers physiquement écrits sur le disque</li> + </ul> + </li> + </ul> + </li> +</ul> +Ces cascades peuvent s'avérer dangereuses, mais permettent de garder la base dans un état consitant.<br /> +Il est vivement conseillé de sauvegarder la base de donnée et le répertoire des ficheirs attachés avant d'utiliser cet outil, +l'erreur de manipulation est facile, et les bugs de programmation ne peuvent être totalement exclus...
\ No newline at end of file diff --git a/beta_accents/app/help/auth_dialog.php.hlp b/beta_accents/app/help/auth_dialog.php.hlp new file mode 100644 index 0000000..b83937b --- /dev/null +++ b/beta_accents/app/help/auth_dialog.php.hlp @@ -0,0 +1,2 @@ +Merci de vous identifier pour utiliser l'application.<br /> +Par défaut, vous pouvez vous logguer avec votre adresse email et le mot de passe qui y est associé.
\ No newline at end of file diff --git a/beta_accents/app/help/details_reunion.php.hlp b/beta_accents/app/help/details_reunion.php.hlp new file mode 100644 index 0000000..5434937 --- /dev/null +++ b/beta_accents/app/help/details_reunion.php.hlp @@ -0,0 +1,4 @@ +Cette page vous permet de visualiser les détails d'une réunion. <br /> +Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.<br /> +Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.<br /> +Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/details_reunion_admin.php.hlp b/beta_accents/app/help/details_reunion_admin.php.hlp new file mode 100644 index 0000000..41047ab --- /dev/null +++ b/beta_accents/app/help/details_reunion_admin.php.hlp @@ -0,0 +1,17 @@ +Cette page vous permet de visualiser les détails d'une réunion.<br /> +<br /> +Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.<br /> +<br /> +Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.<br /> +<br /> +Ajouter ou Supprimer un créneau<br /> +en appuyant sur le bouton <img src="./images/editCreneau2.gif" alt="Ajouter une personne" title="Ajouter un creneau" width="22" height="21" /><br /> +<br /> +Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)<br /> +<br /> +Ajouter ou Supprimer un +participant en appuyant sur le bouton <img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" width="19" height="17"/><br /> +<br /> +Ajouter +<br /> +Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/groupe.hlp b/beta_accents/app/help/groupe.hlp new file mode 100644 index 0000000..0869bd5 --- /dev/null +++ b/beta_accents/app/help/groupe.hlp @@ -0,0 +1 @@ +Cette page vous permet de gérer les différentes listes de contacts
\ No newline at end of file diff --git a/beta_accents/app/help/index.php.hlp b/beta_accents/app/help/index.php.hlp new file mode 100644 index 0000000..be1ef30 --- /dev/null +++ b/beta_accents/app/help/index.php.hlp @@ -0,0 +1,7 @@ +Cette page vous permet de visualiser les réunions qui vous concernent.<br /> +Les éléments requièrant votre attention sont en rouge.<br /> +Cliquer sur l'icone à droite pour afficher les détails d'une réunion.<br /> + +Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran. +<br /> +Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel. diff --git a/beta_accents/app/help/listes.php.hlp b/beta_accents/app/help/listes.php.hlp new file mode 100644 index 0000000..c619e70 --- /dev/null +++ b/beta_accents/app/help/listes.php.hlp @@ -0,0 +1 @@ +Cette page vous permet de gérer les différentes listes de contacts. diff --git a/beta_accents/app/help/modele_page.php.hlp b/beta_accents/app/help/modele_page.php.hlp new file mode 100644 index 0000000..75a26d5 --- /dev/null +++ b/beta_accents/app/help/modele_page.php.hlp @@ -0,0 +1,17 @@ + Cette page vous permet de visualiser les détails d'une réunion.<br /> + <br /> + Vous pouvez modifier votre disponibilité en fonction des créneaux prévu par le createur de la réunion.<br /> + <br /> + Il est possible à tout instant de se déconnecter en cliquant sur le bouton Déconnexion situé en haut à droite de l'écran.<br /> + <br /> + Ajouter ou Supprimer un créneau<br /> + en appuyant sur le bouton <a href="#" onclick="loadpop('popcreneau.php?idR=2','popcreneau');popon('popcreneau');"><img src="./images/editCreneau2.gif" alt="Ajouter une personne" title="Ajouter un creneau" width="22" height="21" /></a><br /> + <br /> + Fixer un Créneau, en cliquant dessus et confirmer l'action (aucune modification ne sera possible après)<br /> + <br /> + Ajouter ou Supprimer un + participant en appuyant sur le bouton <a href="#" onclick="popon('poppersonne');"><img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" width="19" height="17"/></a><br /> + <br /> + Ajouter + <br /> + Astuce : grâce à AWOR, vous pouvez transferer vos réunions sur votre agenda personnel.
\ No newline at end of file diff --git a/beta_accents/app/help/organiser.php.hlp b/beta_accents/app/help/organiser.php.hlp new file mode 100644 index 0000000..b24adaf --- /dev/null +++ b/beta_accents/app/help/organiser.php.hlp @@ -0,0 +1,2 @@ +Depuis cette page, vous pouvez créer une nouvelle réunion :<br /> +renseignez les champs ci-contre puis validez. Vous pourrez ensuite associer une liste de personnes ainsi que des créneaux possibles.
\ No newline at end of file diff --git a/beta_accents/app/help/profil.php.hlp b/beta_accents/app/help/profil.php.hlp new file mode 100644 index 0000000..9328ff5 --- /dev/null +++ b/beta_accents/app/help/profil.php.hlp @@ -0,0 +1,2 @@ +Vous pouvez renseigner votre nom et prénom. <br/> +Vous avez la possibilité de changer votre méthode de d'identification. <br/> diff --git a/beta_accents/app/help/sendmail.php.hlp b/beta_accents/app/help/sendmail.php.hlp new file mode 100644 index 0000000..4a31a5b --- /dev/null +++ b/beta_accents/app/help/sendmail.php.hlp @@ -0,0 +1,2 @@ +Ce formulaire vous permet d'envoyer un courriel de notification aux personnes sélectionnées.<br/> +Vous pouvez charger un des modèles disponibles pour gagner du temps. diff --git a/beta_accents/app/ical.php b/beta_accents/app/ical.php new file mode 100644 index 0000000..f2aeb26 --- /dev/null +++ b/beta_accents/app/ical.php @@ -0,0 +1,36 @@ +<?php +$_SESSION['session_idP'] = 1; +//require_once('include/ludo/session_verify.inc.php'); +require_once('include/ical.inc.php'); + +$res=ERR_ICAL_NO_DATA; +if ( isset($_SESSION['session_idP']) ) +{ + $res = generationIcal($_SESSION['session_idP'], $iCal_name, $iCal_content, $errmsg); + + if ( $res === 0 ) + { + header("Content-disposition: attachment; filename=$iCal_name"); + header("Content-Type: application/force-download"); + header("Content-Transfer-Encoding: text/calendar\n"); // Surtout ne pas enlever le \n + header("Content-Length: ". strlen($iCal_content) ); + header("Pragma: no-cache"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); + header("Expires: 0"); + /* + header("Accept-Ranges: bytes"); + header("Content-Length: ". strlen($iCal_content) ); + header("Content-Type: text/calendar"); + */ + echo $iCal_content; + exit(); + } +} +require_once('include/ludo/html_elements.inc.php'); +generate_html_doctype_and_head("Génération iCal"); +echo "<body>\n"; +generate_html_div_errmsg($errmsg); +?> +</body> +</html> + diff --git a/beta_accents/app/images/addP.gif b/beta_accents/app/images/addP.gif Binary files differnew file mode 100644 index 0000000..aa77bef --- /dev/null +++ b/beta_accents/app/images/addP.gif diff --git a/beta_accents/app/images/button_del.png b/beta_accents/app/images/button_del.png Binary files differnew file mode 100644 index 0000000..899b785 --- /dev/null +++ b/beta_accents/app/images/button_del.png diff --git a/beta_accents/app/images/button_ok.png b/beta_accents/app/images/button_ok.png Binary files differnew file mode 100644 index 0000000..229550e --- /dev/null +++ b/beta_accents/app/images/button_ok.png diff --git a/beta_accents/app/images/del.gif b/beta_accents/app/images/del.gif Binary files differnew file mode 100644 index 0000000..cc89b0b --- /dev/null +++ b/beta_accents/app/images/del.gif diff --git a/beta_accents/app/images/details.png b/beta_accents/app/images/details.png Binary files differnew file mode 100644 index 0000000..11982cc --- /dev/null +++ b/beta_accents/app/images/details.png diff --git a/beta_accents/app/images/editCreneau2.gif b/beta_accents/app/images/editCreneau2.gif Binary files differnew file mode 100644 index 0000000..ba90a82 --- /dev/null +++ b/beta_accents/app/images/editCreneau2.gif diff --git a/beta_accents/app/images/logo.png b/beta_accents/app/images/logo.png Binary files differnew file mode 100644 index 0000000..a768d45 --- /dev/null +++ b/beta_accents/app/images/logo.png diff --git a/beta_accents/app/images/masque.png b/beta_accents/app/images/masque.png Binary files differnew file mode 100644 index 0000000..45a6027 --- /dev/null +++ b/beta_accents/app/images/masque.png diff --git a/beta_accents/app/images/ok.gif b/beta_accents/app/images/ok.gif Binary files differnew file mode 100644 index 0000000..1935a84 --- /dev/null +++ b/beta_accents/app/images/ok.gif diff --git a/beta_accents/app/images/question.gif b/beta_accents/app/images/question.gif Binary files differnew file mode 100644 index 0000000..d57516b --- /dev/null +++ b/beta_accents/app/images/question.gif diff --git a/beta_accents/app/images/supprimer.png b/beta_accents/app/images/supprimer.png Binary files differnew file mode 100644 index 0000000..a87033a --- /dev/null +++ b/beta_accents/app/images/supprimer.png diff --git a/beta_accents/app/images/vcss.gif b/beta_accents/app/images/vcss.gif Binary files differnew file mode 100644 index 0000000..020c75a --- /dev/null +++ b/beta_accents/app/images/vcss.gif diff --git a/beta_accents/app/images/vxhtml.gif b/beta_accents/app/images/vxhtml.gif Binary files differnew file mode 100644 index 0000000..739585d --- /dev/null +++ b/beta_accents/app/images/vxhtml.gif diff --git a/beta_accents/app/images/wai.gif b/beta_accents/app/images/wai.gif Binary files differnew file mode 100644 index 0000000..b82d6e7 --- /dev/null +++ b/beta_accents/app/images/wai.gif diff --git a/beta_accents/app/include/connect.inc.php b/beta_accents/app/include/connect.inc.php new file mode 100644 index 0000000..b985b10 --- /dev/null +++ b/beta_accents/app/include/connect.inc.php @@ -0,0 +1,14 @@ +<?php +/* + * Paramètres de connexion à la base MySQL + */ + +// $bd représente le nom de la database à utiliser +$bd = "awor"; +// mysql_connect(<nom_ou_ip_serveur_mysql>, <utilisateur_mysql>, <mot_de_passe_en_clair_mysql>); +$link = @mysql_connect('localhost', 'lud_restricted', 'maille_ess_ku_elle'); + +@mysql_select_db($bd , $link); + +// NB : La gestion d'erreur est inhibée. Cet include ne génèrera jamais de code, même si la connexion n'a pas pu être établie +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ical.inc.php b/beta_accents/app/include/ical.inc.php new file mode 100644 index 0000000..0d858e3 --- /dev/null +++ b/beta_accents/app/include/ical.inc.php @@ -0,0 +1,68 @@ +<?php +/* + * Fonction de génération d'iCal + */ + +// Constantes d'erreur +define("ERR_ICAL_NO_DATA", -1); +define("ERR_ICAL_SQL_ERROR", -2); + + function generationIcal($idP, &$iCal_name, &$iCal_content, &$errmsg) +{ + require_once('connect.inc.php'); + $query = 'SELECT DISTINCT R.idR,R.objetR,P.courrielP,UNIX_TIMESTAMP(C.dateHeure),C.duree,R.lieuR,R.ordreJourR,L.idL' + . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Creneau C,AWOR_Personne P' + . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" + . ' AND R.idL = L.idL AND C.idC = R.idC_Fixe AND P.idP = R.idP_Orga' + . ' AND C.dateHeure > NOW() '; + if ( ! $result = @mysql_query($query) ) + { + // Cas d'erreur + $errmsg =mysql_generate_errmsg(); + return ERR_ICAL_SQL_ERROR; + } + else + { + if (mysql_num_rows($result)<1) + { + return ERR_ICAL_NO_DATA; + } + else + { + $time = time(); + $iCal_name = "iCal_${idP}_${time}.ics"; + $iCal_content = "BEGIN:VCALENDAR\r\n" . "VERSION:2.0\r\n"; + while ( list($idR, $objetR, $courrielP, $dateDeb, $duree, $lieuR, $ordreJourR, $idL) = mysql_fetch_array($result) ) + { + // TODO : Il est probablement judicieux d'ajouter à l'UID un timestamp unix !!!!! + $iCal_content .= "BEGIN:VEVENT\r\n" . "UID:awor_${idP}.${idR}\r\n" . "SUMMARY:$objetR ($courrielP)\r\n"; + $iCal_content .= 'DTSTART:' . date('Ymd\THis', $dateDeb) . "\r\n"; + $iCal_content .= 'DTEND:' . date('Ymd\THis', $dateDeb+60*$duree) . "\r\n"; + $iCal_content .= "LOCATION:$lieuR\r\n"; + $iCal_content .= "DESCRIPTION:$ordreJourR\r\n"; + + $query = 'SELECT P.courrielP FROM AWOR_Appartenir A,AWOR_Personne P' . " WHERE A.idP=P.idP AND A.idL='$idL'"; + if ( ! $result = mysql_query($query) ) + { + // Cas d'erreur + $errmsg =mysql_generate_errmsg(); + $ret=ERR_ICAL_SQL_ERROR; + break; + } + else + { + while ( list($mail_autres) = mysql_fetch_array($result) ) + { + $iCal_content .= "ATTENDEE:mailto:$mail_autres\r\n"; + } + } + // TODO : vérifier la pertinance de la variable utilisée + $iCal_content .= 'URL:http://' . $_SERVER['HTTP_HOST'] . "\r\n"; + $iCal_content .= "END:VEVENT\r\n"; + } + $iCal_content .= "END:VCALENDAR\r\n"; + return 0; + } + } +} +?>
\ No newline at end of file diff --git a/beta_accents/app/include/je.inc.php b/beta_accents/app/include/je.inc.php new file mode 100644 index 0000000..dcbb75e --- /dev/null +++ b/beta_accents/app/include/je.inc.php @@ -0,0 +1,244 @@ +<?php +require_once ('include/connect.inc.php'); + + function traiter_formulaire_valider_modif_personnes() + { + //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] + $tabParticipant = array(); + if (isset($_GET['dataParticipants'])) $tabParticipant = $_GET['dataParticipants']; + $idL=-1; + if (!isset($_GET['idL']) && isset($_GET['listname'])) + { + if (isset($_GET['isPrivate'])) $isPrivate = 'oui'; else $isPrivate = 'non'; + $idL = list_new($_GET['listname'],$_GET['idP'],$isPrivate); + } + else {$idL = $_GET['idL'];} + + if ($idL != -1) list_modif($idL,$tabParticipant); + } + + function traiter_formulaire_delete_list() + { + //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] + if (isset($_GET['idL'])) list_delete($_GET['idL']); + } + + function list_delete($idL) + { + $result = mysql_query("DELETE FROM AWOR_Appartenir WHERE idL=$idL;"); + $result = mysql_query("DELETE FROM AWOR_Liste WHERE idL=$idL;"); + } + + function list_new($listname,$idP,$isPrivate) + { + $result = mysql_query("INSERT INTO AWOR_Liste (libelleL,estPrivee,idP_Createur) VALUES ('$listname','$isPrivate',$idP)") or die (mysql_error()); + if (mysql_affected_rows() > 0) + { + return (mysql_insert_id()); + } + return (false); + } + + function list_modif($idL,$tabParticipant) + { + $result = mysql_query("SELECT P.idP,P.courrielP FROM AWOR_Appartenir A, AWOR_Personne P WHERE P.idP = A.idP AND A.idL=$idL") or die (mysql_error()); + if (mysql_num_rows($result)>=0) + { + //Fabrication des trois tableaux + $tabOldPers = array(); + $tabOldPersMail = array(); + $tabNewPers = array(); + if (!empty($tabParticipant)) $tabNewPers = $tabParticipant; + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + $tabOldPers[$i] = $row[0]; + $tabOldPersMail[$i] = $row[1]; + } + //Boucle permettant de mettre a NULL les élements identiques aux deux tableaux + $i = 0; + while ($i < count($tabOldPers)) + { + $exist=false; + for ($j=0;$j<count($tabNewPers);$j++) + { + if (($tabOldPers[$i] == $tabNewPers[$j]) or ($tabOldPersMail[$i] == $tabNewPers[$j])) + { + $exist = true; + $tabNewPers[$j]=NULL; + } + } + if ($exist) + { + $tabOldPers[$i]=NULL; + $tabOldPersMail[$i]=NULL; + } + $i++; + } + } + + //Construction du tableau des participants a ajouter + $tabAdd = array(); + foreach ($tabNewPers as $pers) + { + //Si c'est une adresse Mail : Inscription + Ajout Sinon Ajour simplement + if (!stristr($pers,'@')===false) + { + $tabAdd[] = new_pers($pers); + } + else + { + if ($pers != NULL) $tabAdd[] = $pers; + } + } + //Enleve les redondances d'idP + $tabAdd=array_unique($tabAdd); + //Envoie a la fonction d'ajout de personne + list_add_pers($tabAdd,$idL); + + //Construction du tableau des participants a ajouter + $tabRemove = array(); + foreach ($tabOldPers as $pers) + { + if ($pers != NULL) $tabRemove[] = $pers; + } + //Envoie a la fonction de suppression de personne + list_remove_pers($tabRemove,$idL); + + } + + function list_add_pers ($tabPers,$idL) + { + foreach ($tabPers as $pers) + { + $result=mysql_query("INSERT INTO AWOR_Appartenir (idP,idL) VALUES ($pers,$idL);"); + } + + } + + function list_remove_pers ($tabPers,$idL) + { + + foreach ($tabPers as $pers) + { + $result = mysql_query("DELETE FROM AWOR_Appartenir WHERE idP=$pers AND idL=$idL;"); + } + + } + + + //Fonction Inscription qui prends en parametre une adresse mail $persMail et qui retourne l'id de la perssonne (s'il elle existe) + // ou Insert une personne et retourne son identifiant + function new_pers ($persMail) + { + $result = mysql_query("SELECT idP,courrielP FROM AWOR_Personne WHERE courrielP = '$persMail'"); + if (mysql_num_rows($result)>0) + { + $row = mysql_fetch_array($result); + return ($row['idP']); + } + else + { + $result = mysql_query("INSERT INTO AWOR_Personne (courrielP,loginP,nomP) VALUES ('$persMail','$persMail','$persMail')"); + return (mysql_insert_id()); + } + + return (false); + } + + + + //Fonction qui affiche toutes les liste public ainsi que les liste privée possédées par idP + function generate_html_array_list ($idP) + { + $result = mysql_query("SELECT idL,libelleL,estPrivee,idP_Createur FROM AWOR_Liste WHERE idP_Createur=$idP OR estPrivee='non' ORDER BY estPrivee,libelleL"); + echo "<table>\n<tr>\n<th>Supprimer</th>\n<th>Type</th>\n<th>Libellé</th>\n</tr>\n"; + if (mysql_num_rows($result)>0) + { + + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + echo "<tr>\n<td>"; + if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "<a href=\"#\" onclick=\"loadid('popdeletelist.php?idL=".$row[0]."','popdeletelist',true);popon('popdeletelist')\"><img src=\"images/supprimer.png\" alt=\"Supprimer ".$row[1]."\" /></a></td>\n" ; else echo "</td>\n"; + if ($row['estPrivee'] == 'oui') echo "<td>estPrivée" ; else echo "<td>Public"; + echo "</td>\n<td>"; + echo "<a href=\"#\" onclick=\"loadid('poppersonne.php?idL=".$row['idL']."&idP_orga=".$idP."','poppersonne',true);popon('poppersonne')\">"; + echo $row['libelleL']; + echo "</a></td>\n"; + echo "</tr>\n"; + } + + } + echo "</table>\n"; + + } + + function traiter_formulaire_commentaire() + { + if ($_GET['txtCommentaire'] != "") + { + require_once ('include/connect.inc.php'); + if (isset($_GET['idR'])) + { + $query="UPDATE AWOR_Repondre SET commentaireReponse ='".$_GET['txtCommentaire']."' WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $result = @mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 ) ) + { + $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".$_GET['idR'].", ".$_SESSION['session_idP'].", '".$_GET['txtCommentaire']."')"; + + $result = mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 )) + { + echo $query; + echo "Erreur BD\n"; + return; + } + } + } + } + else + { + $query="DELETE FROM AWOR_Repondre WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $result = mysql_query($query); + } + } + + // Modifiée par Ludo pour les problèmes de vriables de session et pour d'autres détails : + // S'il n'y a pas de commentaire, on affiche le tableau vide + function generate_html_reunion_commentaires($idR) + { + $idP = $_SESSION['session_idP']; + echo '<table cellspacing="0" class="commentaires" summary="Liste des commentaires laissés pour les personnes conviées à cette réunion">'; + echo '<thead>'; + echo '<tr>'; + echo "<th>Commentaires <a href=\"#\" onclick=\"loadid('popcommentaire.php?idR=".$idR."&idP=".$idP."','popcommentaire',true);popon('popcommentaire');\">(Editer votre commentaire)</a></th>"; + echo '</tr>'; + echo '</thead>'; + $requete = "SELECT P.nomP,P.prenomP,P.courrielP,R.commentaireReponse FROM AWOR_Repondre R,AWOR_Personne P WHERE P.idP = R.idP AND R.idR = '".$idR."'"; + //echo "DEBUG : requete : $requete\n"; + $resultat = mysql_query($requete); + if($resultat != false) + { + if(mysql_num_rows($resultat) > 0) + { + while($pers = mysql_fetch_array($resultat)) + { + echo '<tr><td>'; + if ($pers["nomP"] !== "" || $pers["prenomP"] !== "") echo $pers["nomP"] . " " . $pers["prenomP"]; else echo $row["courrielP"]; + echo " : ".$pers["commentaireReponse"]."</td></tr>\n"; + + } + } + else + { + echo "<tr><td>Aucun commentaire pour le moment.</td></tr>\n"; + } + } + + echo '</table>'; + + } + + +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ju.inc.php b/beta_accents/app/include/ju.inc.php new file mode 100644 index 0000000..75fb4ee --- /dev/null +++ b/beta_accents/app/include/ju.inc.php @@ -0,0 +1,237 @@ +<?php +function traiter_formulaire_popfichier() +{ + require("include/ludo/config.inc.php"); + $file = "fichier"; + if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath=$CONFIG['UPLOAD']['relative_path']; } else { $basepath='fichiers/';} + $basepath=$_SERVER['DOCUMENT_ROOT'].'/'.$basepath; + + if(isset($_FILES[$file])) + { + if($_FILES[$file]["error"] == 0) + { + //Récupération de l'extension + $ext = explode(".", $_FILES[$file]["name"]); + $ext = array_pop($ext); + if(is_numeric(array_search(strtolower($ext), $CONFIG["UPLOAD"]["accepted_files"]))) + { + $filepath=$basepath."r".$_GET["idR"]."_".$_FILES[$file]["name"]; + if(!file_exists($filepath)) + { + if(move_uploaded_file($_FILES[$file]["tmp_name"], $filepath)) + { + if(isset($debug)) echo "DEBUG : basepath==$basepath\n"; + $requete = "INSERT INTO AWOR_Fichier(nomFic, idR) VALUES ('"."r".$_GET["idR"]."_".$_FILES[$file]["name"]."', '".$_GET["idR"]."')"; + if(mysql_query($requete) == false) + { + if(isset($debug)) echo "DEBUG : ".mysql_error()."<br/>\n"; + if(isset($debug)) echo "DEBUG : ".$requete."<br/>\n"; + return "Erreur : Une erreur MySQL est survenu."; + } + } + else + { + return "Erreur Uploader file"; + } + } + else + { + return "Erreur : Un fichier de meme nom existe deja"; + } + } + else + { + return "Erreur : Le fichier n'a pas ete uploader correctement."; + } + } + else + { + switch($_FILES[$file]["error"]) + { + case 1 : + case 2 : return "Erreur : Le fichier a une taille trop importante."; break; + case 3 : return "Erreur : Le fichier n'a pas ete envoye en entier."; break; + case 4 : return "Erreur : Aucun fichier recu."; break; + } + echo $erreur; + } + } + else + { + return "isset"; + } +} + + +function generate_html_reunion_fichiers($idR) +{ + require("include/ludo/config.inc.php"); + if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath='/'.$CONFIG['UPLOAD']['relative_path']; } else { $basepath='/fichiers/';} + + $requete = "SELECT * FROM AWOR_Fichier WHERE idR = '".$idR."'"; + $resultat = mysql_query($requete); + if($resultat != false) + { + echo '<table cellspacing="0" class="fichiers" summary="Liste des fichiers postés par les participants de la réunion.">'; + echo '<thead>'; + echo '<tr>'; + echo '<th>Fichiers attachés <a href="#" onclick="popon(\'popfichier\')">(Ajouter un fichier)</a></th>'; + echo '</tr>'."\n"; + echo '</thead>'; + if(mysql_num_rows($resultat) > 0) + { + while($fichier = mysql_fetch_array($resultat)) + { + echo '<tr><td><a href="' . $basepath . $fichier["nomFic"].'" target="_blank" >'.$fichier["nomFic"]."</a></td></tr>\n"; + } + } + else + { + echo "<tr><td>Aucun fichier pour cette reunion.</td></tr>\n"; + } + echo '</table>'; + } +} + +function traiter_formulaire_valider_creneau() +{ + $tabCreneau = array(); + if(isset($_REQUEST["dataCreneaux"])) + { + //Pour chaque creneau poste, on verifie s'il existe, si non on le creer + foreach($_REQUEST['dataCreneaux'] as $creneau) + { + $tabCreneau = explode(".", $creneau); + $heureD = substr($tabCreneau[0], 0, 2); + $minD = substr($tabCreneau[0], 2, 2); + $heureA = substr($tabCreneau[1], 0, 2); + $minA = substr($tabCreneau[1], 2, 2); + $jourA = $tabCreneau[2]; + $moisA = $tabCreneau[3]; + $anneeA = $tabCreneau[4]; + //Si un creneau n'existe pas on le creer + $idCreneau = creneauExiste($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); + if($idCreneau == false) + { + $newIdC = ajouterCreneau($_REQUEST["idR"], $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA); + if($newIdC != false) + { + $tabNewCreneau[] = $newIdC; + } + + } + else + { + $tabNewCreneau[] = $idCreneau; + } + } + // tabCreneau contient les tous les creneaux dont on a besoin pour la reunion, il faut maintenant supprimer de la base + // tous les creneaux de la reunion qui n'apparaissent pas dans cette liste + $listeCreneau = "("; + foreach($tabNewCreneau as $creneau) + { + $listeCreneau .= "'".$creneau."', "; + } + $listeCreneau .= "'XXX')"; + if(isset($debug)) echo $listeCreneau; + + //On recupere les creneaux ne faisant plus partie de la novuelle liste des creneaux + $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; + //echo "DEBUG : $requete"; + if($resultat = mysql_query($requete)) + { + while($ligne = mysql_fetch_array($resultat)) + { + supprimerCreneau($ligne["idC"]); + } + } + } +} + +function traiter_formulaire_maj_profil() +{ + $requete = "UPDATE AWOR_Personne SET courrielP = '".$_POST["courrielP"]."', loginP = '".$_POST["loginP"]."', nomP = '".$_POST["nomP"]."', prenomP = '".$_POST["prenomP"]."', methodeAuth = '".$_POST["methodeAuth"]."' WHERE idP = '".$_SESSION['session_idP']."'"; + if(mysql_query($requete) == false) return "Une erreur MySQL est survenu : ".mysql_error(); + $_SESSION['session_prenomP'] = $_POST["prenomP"]; + $_SESSION['session_nomP'] = $_POST["nomP"]; + //print_r($_POST); +} + +function ajouterCreneau($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) +{ + $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); + $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); + $duree = $dateA - $dateD; + $dateD = date("Y-m-d G:i:s", $dateD); + $duree = $duree / 60; + $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateD."', '".$duree."', '".$idR."')"; + if(isset($debug)) echo $requete."<br/>"; + if(mysql_query($requete)) { return mysql_insert_id(); } else { return false; } +} + +function ajouterCreneau2($idR, $dateHeure, $duree) +{ + $requete = "INSERT INTO AWOR_Creneau (dateHeure, duree, idR) VALUES ('".$dateHeure."', '".$duree."', '".$idR."')"; + if(mysql_query($requete)) + { + return mysql_insert_id(); + } + else + { + return false; + } +} + +function supprimerCreneau($idC) +{ + if(mysql_query("DELETE FROM AWOR_Creneau WHERE idC='".$idC."'")) + { + if(mysql_query("DELETE FROM AWOR_Choisir WHERE idC='".$idC."'")) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } +} + +function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $anneeA) +{ + $dateD = mktime($heureD, $minD, 0, $moisA, $jourA, $anneeA); + $dateA = mktime($heureA, $minA, 0, $moisA, $jourA, $anneeA); + $duree = $dateA - $dateD; + $dateD = date("Y-m-d G:i:s", $dateD); + $duree = $duree / 60; + $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree.""; + if($result = mysql_query($requete)) + { + if(mysql_num_rows($result) > 0) + { + $ligne = mysql_fetch_array($result); + return $ligne["idC"]; + } + else + { + return false; + } + } +} + +function addslashes_if_needed($texte) +{ + if(get_magic_quotes_gpc() == 0) + { + return addslashes($texte); + } + else + { + return $texte; + } +} +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/TODO_list.txt b/beta_accents/app/include/ludo/TODO_list.txt new file mode 100644 index 0000000..724c46c --- /dev/null +++ b/beta_accents/app/include/ludo/TODO_list.txt @@ -0,0 +1,24 @@ +Accueil > _Listes_ (virer le lien) + +mysql_free_result après les requetes et mysql_close ? + +configuration de PHP dans un fichier INI : +array parse_ini_file ( string filename [, bool process_sections] ) + + +Vérifier que les redirections vers authentification et le retour fasse bien suivre les paramètres +--> bookmarque details_reunion?idR=1 + + +faire une fonction JS qui appelle une page php ou créer toute seule un cookie qui gère la préférence du css. + +Se préoccuper des accents et des encodages de pages ! + +Faire un pied de page avec nos noms, et les logos valide XHTML, CSS... + +TODO : un script php qui purge la base +-> export SQL ancienne base ? +-> suppression des réunions plus vielles que... +-> suppression des Personnes n'ayant jamais changé leur profil et n'ayant plus de réunion les concernant +-> suppression de tout les créneaux non référencés +-> suppression de toutes les listes privées obsoletes diff --git a/beta_accents/app/include/ludo/auth.inc.php b/beta_accents/app/include/ludo/auth.inc.php new file mode 100644 index 0000000..18b339d --- /dev/null +++ b/beta_accents/app/include/ludo/auth.inc.php @@ -0,0 +1,78 @@ +<?php +/* + * Collection de fonctions pour une authentification externe POP3 + */ + +// Constantes d'erreur +define("ERR_POP3_AUTH_BADSOCK", -1); +define("ERR_POP3_AUTH_SERVERNACK", -2); +define("ERR_POP3_AUTH_BADUSER", -3); +define("ERR_POP3_AUTH_BADPASS", -4); +define("ERR_BAD_PARAMS", -100); + +// Fonction d'authentification pop3 +function pop3_auth_simple($mail, $upw) +{ + if ( ($ret = ereg ( "(^.*)@([[:alnum:]]+\.[[:alnum:]]+)", $mail, $re_tokens ) ) ) + { + /* $re_tokens [] + * [0] : email complet + * [1] : nom_mail + * [2] : serveur_mail + */ + require_once('config.inc.php'); + $srv_conf = $CONFIG['AUTH']['POP']['SERVERS'][strtolower($re_tokens[2])]; + if ( is_array($srv_conf) ) + { + $server=$srv_conf['subdomain']; + $port=$srv_conf['port']; + if ( $srv_conf['username_is_full_mail'] ) + { $user = $mail; } else { $user = $re_tokens[1]; } + return pop3_auth ($server, $port, $user, $upw); + } + } + /* DEBUG + echo $mail . "\n" . $ret . "\n";; + print_r($re_tokens); + */ + return ERR_BAD_PARAMS; +} + +function pop3_auth ($server, $port, $user, $upw) +{ + //echo "DEBUG : fsockopen($server, $port, $errno, $errstr, 10);"; + $sock = @fsockopen($server, $port, $errno, $errstr, 10); + if ( $sock === false) + { + return ERR_POP3_AUTH_BADSOCK; + } + + //stream_set_timeout ( $sock, 1, 0 ); + + fputs($sock, "user $user\r\n"); + + if ( pop3_GetAndTestReply($sock) === false ) + { + return ERR_POP3_AUTH_BADUSER; + } + + fputs($sock, "pass $upw\r\n"); + + if ( pop3_GetAndTestReply($sock) === false ) + { + return ERR_POP3_AUTH_BADPASS; + } + + fputs($sock, "quit\r\n"); + + return 0; +} + +// Fonction interne testant les réponses du serveur POP3 +function pop3_GetAndTestReply($sock) +{ + $reply = fgets($sock, 128); + echo $reply . "\n"; + return ( substr($reply, 0, 4) == "+OK " ); +} +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/config.inc.php b/beta_accents/app/include/ludo/config.inc.php new file mode 100644 index 0000000..6d6504b --- /dev/null +++ b/beta_accents/app/include/ludo/config.inc.php @@ -0,0 +1,74 @@ +<?php +$CONFIG = array +( + 'adminMail' => 'jmi@iut-blagnac.fr', + 'automatedMail' => 'no_reply@iut-blagnac.fr', + 'AUTH' => array + ( + 'POP' => array + ( + 'SERVERS' => array + ( + 'wanadoo.fr' => array + ( + 'subdomain' => 'pop.orange.fr', + 'port' => 110, + 'username_is_full_mail' => false + ), + 'orange.fr' => array + ( + 'subdomain' => 'pop.orange.fr', + 'port' => 110, + 'username_is_full_mail' => false + ) + ) + ), + 'bypass_if_local' => false + ), + 'CSS' => array + ( + 'CHOOSER_LIST' => array + ( + // 'nom à afficher' => 'nom_fichier_sans_extension' + 'standard' => 'ice', + 'Glace (ancien)' => 'ice_moche', + 'bleu' => 'style1' + ) + ), + 'MAIL' => array + ( + 'TEMPLATES' => array + ( + 'cree' => array + ( + 'caption' => 'Nouvelle Réunion', + 'tpl_file' => 'mail_cree.php' + ), + 'modif' => array + ( + 'caption' => 'Réunion modifiée', + 'tpl_file' => 'mail_modif.php' + ), + 'annul' => array + ( + 'caption' => 'Réunion annulée', + 'tpl_file' => 'mail_annul.php' + ), + 'fixee' => array + ( + 'caption' => 'Réunion fixée', + 'tpl_file' => 'mail_fixee.php' + ) + ) + ), + 'SUPERUSERS' => array ('jeremie.denoyer', 'lpouzenc'), + 'UPLOAD' => array + ( + 'accepted_files' => array + ( + 'jpg', 'jpeg', 'gif', 'png', 'svg', 'pdf', 'ps', 'txt', 'rtf', 'csv', 'doc', 'docx', 'ppt', 'xls', 'sxw','sxp','sxd', 'odt', 'odg', 'odp', 'avi', 'mpg', 'mpeg', 'rm', 'flv', 'mp3', 'mp4', 'ogg','htm','html','zip', 'rar', 'tar', 'gz', 'bz2', 'ace' + ), + 'relative_path' => 'beta/upload_files/' + ) +); +?> diff --git a/beta_accents/app/include/ludo/div_create_or_modif.php b/beta_accents/app/include/ludo/div_create_or_modif.php new file mode 100644 index 0000000..c386060 --- /dev/null +++ b/beta_accents/app/include/ludo/div_create_or_modif.php @@ -0,0 +1,72 @@ +<?php +$isModif=false; +if ( isset ( $_GET['idR']) ) +{ + if ( ! isset($_GET['objetR']) || ! isset($_GET['lieuR']) || ! isset($_GET['ordreJourR']) || ! isset($_GET['remarquesR']) ) + { + $errmsg="Impossible de modifier la réunion : Paramètres incorrects\n"; + return; + } + $idR=addslashes($_GET['idR']); + $objetR=addslashes($_GET['objetR']); + $lieuR=addslashes($_GET['lieuR']); + $ordreJourR=addslashes($_GET['ordreJourR']); + $remarquesR=addslashes($_GET['remarquesR']); + + $isModif=true; +} +?> +<form action="" method="post"> + <input name="action" type="hidden" value="modif_detail_reunion" /> +<?php + echo ' <input name="idR" type="hidden" value="' . $idR . '" />' +?> + <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> + <thead> + <tr> + <th colspan="2"> + <?php if ($isModif) { echo 'Modification des détails de la réunion'; } else { echo 'Création d\'une réunion'; } ?> + </th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Objet :</strong></td> + <td> + <input name="objetR" type="text" size="40" <?php if ($isModif) { echo 'value="' . $objetR .'"'; } ?>></input> + </td> + </tr> + <tr> + <td><strong>Lieu :</strong></td> + <td> + <input name="lieuR" type="text" size="40" <?php if ($isModif) { echo 'value="' . $lieuR .'"'; } ?>></input> + </td> + </tr> + <tr> + <td><strong>Ordre du jour :</strong></td> + <td> + <textarea name="ordreJourR" cols="40" rows="3"><?php if ($isModif) { echo $ordreJourR; } ?></textarea> + </td> + </tr> + <tr> + <td><strong>Remarques :</strong></td> + <td> + <textarea name="remarquesR" cols="40" rows="3"><?php if ($isModif) { echo $remarquesR; } ?></textarea> + </td> + </tr> + <tr> + <td><strong>Etat :</strong></td> + <td> + <input name="isCancelled" type="checkbox">Annulée</input> + <input name="isHidden" type="checkbox" checked="checked">Disponibilités masquées</input> + </td> + </tr> + <tr> + <!--<td> </td>--> + <td colspan="2"> + <input name="Valider" type="submit" value="Valider"></input> + </td> + </tr> + </tbody> + </table> +</form>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/fonctions.inc.php b/beta_accents/app/include/ludo/fonctions.inc.php new file mode 100644 index 0000000..74b7ca7 --- /dev/null +++ b/beta_accents/app/include/ludo/fonctions.inc.php @@ -0,0 +1,550 @@ +<?php +/* + * Fonctions de génération de message d'erreur pour utilisateur (et le debuggueur !) + */ +// Fonction retournant un message d'erreur correspondant à une erreur mysql +function mysql_generate_errmsg() +{ + if ( isset($_REQUEST['debug']) ) + { + return 'Erreur SQL numéro ' . mysql_errno() . ' : ' . mysql_error(); + }else{ + return 'Une erreur de base de données s\'est produite, veuillez réessayer ultérieurement.'; + } +} + +// Fonction retournant un message d'erreur correspondant à un numero d'erreur de pop3_auth(...) +function pop3_generate_errmsg($errno) +{ + require_once 'auth.inc.php'; + + if ( isset($_REQUEST['debug']) ) + { + $msg = 'Erreur authentification POP3 de code ' . $errno; + }else{ + switch ($errno) + { + case ERR_POP3_AUTH_BADUSER : + case ERR_POP3_AUTH_BADPASS : + $msg = 'Authentification rejetée : Vérifiez votre identifiant et saisissez votre mot de passe à nouveau'; + break; + case ERR_BAD_PARAMS : + $msg = 'Adresse email invalide, ou serveur mail non répertorié'; + break; + default : + $msg = 'Une erreur de communication avec le service d\'authentification s\'est produite,' . + 'veuillez réessayer ultérieurement.'; + break; + } + } + return $msg; +} + +/* + * Génération du code html d'une case du tableau croisé Créneau/Presonnes ayant comme personne $idP, + * comme créneau $idC. Si $idEditable est vrai je pourrai cliquer sur le bouton + * pour donner ma disponibilité. $estDispo peut-être 'oui', 'non', ou '' et signifie que la personne a déjà répondu 'oui', non' + * ou n'a pas encore répondu. + */ +// Génération d'une case +function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $withTD=false, $class='') +{ + // Alignement html + require_once('html_elements.inc.php'); + if ( ! $isEditable ) + { + if ( $withTD ) { echo " <td $class>\n "; } + // Cas général, on n'est pas la personne concernée + if ( ! isset($estDispo) || $estDispo == '' ) + { // Dispo Inconnue (icone ?) + generate_html_dispo_inconnu($idP, $idC); + } + else + { + if ( $estDispo == 'oui' ) + { // Disponible + generate_html_dispo_oui($idP, $idC); + }else + { // Non Disponible + generate_html_dispo_non($idP, $idC); + } + } + } + else + { + if ( $withTD ) { echo " <td id=\"dispo_idC${idC}\" $class>\n "; } + // On est la personne concernée, on peut donc choisir le créneau + if ( ! isset($estDispo) || $estDispo == '' ) + { // Dispo Inconnue + generate_html_dispo_dire_oui($idR, $idC); + //~ echo ' '; + generate_html_dispo_dire_non($idR, $idC); + } + else + { + if ( $estDispo == 'oui' ) + { // Disponible + generate_html_dispo_oui($idP, $idC); + //~ echo ' '."\n "; + generate_html_dispo_dire_non($idR, $idC); + }else + { + // Non Disponible + generate_html_dispo_dire_oui($idR, $idC); + //~ echo ' '."\n "; + generate_html_dispo_non($idP, $idC); + } + } + } + if ( $withTD ) { echo " </td>\n"; } +} + +// Génération du tableau complet +// TODO : idée : class du tableau différnete quand annulée -> tableau grisé... + +function generate_html_array_personnes_crenaux($idR) +{ + if ( isset($_SESSION['session_idP']) ) + { + $idP_Self=$_SESSION['session_idP']; + } + else + { + // TODO : Erreur + } + + // Connexion à la base et sélection de la database + require_once 'include/connect.inc.php'; + + // Récupération des paramètres de la réunion... + $montrerDispoR=$estAnnulee=$is_admin=$estFixee=false; + $idP_orga=null; + $query="SELECT r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, r.idL FROM AWOR_Reunion r WHERE r.idR='$idR'"; + $result = @mysql_query($query); + if ( $result && ( mysql_num_rows($result) === 1 ) ) + { + list($montrerDispoR, $estAnnulee, $idP_orga, $idC_Fixe, $idL_interne) = mysql_fetch_row($result); + $is_admin = ( $idP_Self == $idP_orga ); + $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ; + //echo "DEBUG : annulée $estAnnulee\n"; + $estAnnulee = ( $estAnnulee == 'oui' ); + $estFixee = ( $idC_Fixe != null); + } + else + { + // TODO : erreur + } + // DEBUG : tests en forçant les variables + //$estAnnulee=true; + + //~ echo "DEBUG : \nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n"; +?> +<form id="formmail" action="sendmail.php" method="post"> + <table class="details" summary="Disponibilité des personnes pour chaque créneau possible de la réunion"> + <thead> + <tr> +<?php + if ( $is_admin ) + { + echo ' <th>Mail</th>' . "\n"; + } + echo ' <th>' ."\n"; + if ( $is_admin ) + { + echo ' <a href="#poppersonne" onclick="loadid(\'poppersonne.php?idR=' . $idR; + echo '&idL=' . $idL_interne . '&idP_orga=' . $idP_orga . '\',\'poppersonne\',true);popon(\'poppersonne\');">' . "\n"; + echo ' <img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" height="17" width="19" />' . "\n"; + echo ' </a> '; + } + echo 'Personnes' . "\n"; + echo ' </th>' . "\n"; + + // Remplissage des entêtes de colonnes (créneaux) + $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM AWOR_Creneau WHERE idR='$idR' ORDER BY dateHeure ASC;"; + $creneaux=array(); + $dispos=array(); + if ( $result = @mysql_query($query) ) + { + while ( list($idC, $date_deb, $duree) = mysql_fetch_row($result) ) + { + // Calcul des dates + //echo $date_deb . "\n"; + $date_fin = $date_deb + 60 * $duree; + if ( $idC != $idC_Fixe ) { echo ' <th>'; } else { echo ' <th class="selected">'; } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) + { + echo '<a href="#popfixer" onclick="loadid(\'popfixer.php?idC=' . $idC; + echo '&idR=' . $idR . '\',\'popfixer\',true);popon(\'popfixer\');">'; + } + echo date('d/m/y', $date_deb) . '<br />' . date('H:i', $date_deb) . ' - ' . date('H:i', $date_fin); + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo '</a>'; } + echo "</th>\n"; + + // Comptage des personnes disponibles et indisponibles + $creneaux[] = $idC; + $dispos[$idC]['nbDispo']=0; + $dispos[$idC]['nbNonDispo']=0; + $dispo_max_id=-1; + $dispo_max_val=0; + } + } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) + { +?> + <th> + <a href="#popcreneau" onclick="loadid('popcreneau.php?idR=<?php echo $idR; ?>','popcreneau',true);popon('popcreneau');"> + <img src="./images/editCreneau2.gif" alt="Editer les creneaux" title="Editer les creneaux" height="21" width="22" /> + </a> + </th> +<?php + } + //print_r($creneaux); +?> + </tr> + </thead> + <tbody> +<?php + // Remplissage du tableau, ligne à ligne + // Requette écrivant les disponibilités dans un tableau associatif en une seule fois + if ( $montrerDispoR ) + { + $query='SELECT ch.idC, ch.idP, ch.estDispo FROM AWOR_Choisir ch, AWOR_Creneau c, AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE ' + ."c.idR=$idR AND r.idR=$idR AND a.idL=r.idL AND p.idP=a.idP AND ch.idC = c.idC AND ch.idP = p.idP;"; + } + else + { + $query='SELECT ch.idC, ch.idP, ch.estDispo FROM AWOR_Choisir ch, AWOR_Creneau c WHERE ' + ."c.idR='$idR' AND ch.idC=c.idC AND ch.idP='$idP_Self';"; + } + //echo $query . "\n"; + if ( $result = @mysql_query($query) ) + { + while ( list($idC, $idP, $estDispo) = mysql_fetch_row($result) ) + { + //echo "idC == '$idC'\n"; + $dispos[$idC][$idP]=$estDispo; + if ( $estDispo=='non' ) { $dispos[$idC]['nbNonDispo']++; } + if ( $estDispo=='oui' ) + { + $dispos[$idC]['nbDispo']++; + if ( $dispos[$idC]['nbDispo'] > $dispo_max_val ) + { + $dispo_max_id=$idC; + $dispo_max_val=$dispos[$idC]['nbDispo']; + } + } + } + } + //print_r($dispos); + + + $query='SELECT p.idP, p.prenomP, p.nomP FROM AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE ' + . "r.idR='$idR' AND a.idL=r.idL AND p.idP=a.idP ORDER BY p.nomP, p.prenomP;"; + + if ( $result = @mysql_query($query) ) + { + // On écrit ligne à ligne les personnes et les disponibilités + while ( $p = mysql_fetch_array($result) ) // Boucle sur chaque personne + { + echo " <tr>\n"; + // Colonne de checkbox pour envoi email si $is_admin == true + if ( $is_admin ) { echo ' <td><input name="mail_idP' . $p[0] . '" type="checkbox" checked="checked" /></td>' . "\n"; } + // Nom prénom + echo " <td>$p[1] $p[2]</td>\n"; + // Disponibilités + foreach ( $creneaux as $c_id ) // Pour chaque créneau + { + if (isset($dispos[$c_id][$p[0]])) + { + $estDispo=$dispos[$c_id][$p[0]]; + } + else + { + $estDispo=''; + } + //echo "DEBUG : generate_html_dispo_case($p[0], $c_id, ( $p[0]==$idP_Self ), $estDispo);\n"; + if ( $c_id != $idC_Fixe ) { $class=''; } else { $class='class="selected"'; } + + generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true, $class); + } + // Colonne vide pour l'ajout de personnes + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " <td> </td>\n"; } + echo " </tr>\n"; + } + // Si $is_admin, on met une ligne avec bouton envoyer pour les mails et icône ajout de personnes + if ( $is_admin ) + { + echo " <tr>\n <td>\n"; + echo ' <input name="idR" value="' . $idR . '" type="hidden" />' . "\n"; +?> + <input value="Envoyer" type="submit" /> + </td> + <td> + <?php + echo '<a href="#poppersonne" onclick="loadid(\'poppersonne.php?idR=' . $idR; + echo '&idL=' . $idL_interne . '&idP_orga=' . $idP_orga . '\',\'poppersonne\',true);popon(\'poppersonne\');">' . "\n"; + ?> + <img src="images/addP.gif" alt="Ajouter une personne" title="Ajouter une personne" height="17" width="19" /> + </a> + </td> +<?php + foreach ( $creneaux as $c ) { echo " <td> </td>\n"; } + if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo " <td> </td>\n"; } + echo " </tr>\n"; + } + + // On inscrit les lignes de totaux si les disponibilités sont révélées + if ( $is_admin && ! $estFixee && ! $estAnnulee) + { + echo " <tr>\n"; + echo " <td> </td>\n"; + echo " <td>Personnes présentes</td>\n"; + foreach ( $creneaux as $c_id ) + { + if ( $c_id == $dispo_max_id ) + { + echo ' <td><em>' . $dispos[$c_id]['nbDispo'] . "</em></td>\n"; + } + else + { + echo ' <td>' . $dispos[$c_id]['nbDispo'] . "</td>\n"; + } + } + echo " <td> </td>\n"; + echo " </tr>\n"; + + echo " <tr>\n"; + echo " <td> </td>\n"; + echo " <td>Personnes absentes</td>\n"; + foreach ( $creneaux as $c_id ) + { + echo ' <td>' . $dispos[$c_id]['nbNonDispo'] . "</td>\n"; + } + echo " <td> </td>\n"; + echo " </tr>\n"; + } + } + echo " </tbody>\n"; + echo " </table>\n</form>\n"; +} + +function traiter_formulaire_fixer_creneau() +{ + if ( ! isset($_GET['idR']) || !isset($_GET['idC']) ) + { + $errmsg="Impossible de fixer la réunion : paramètres manquants ou erroné"; + return $errmsg; + } + $idR=addslashes($_GET['idR']); + $idC=addslashes($_GET['idC']); + + $query="UPDATE AWOR_Reunion SET idC_Fixe=$idC WHERE idR=$idR;"; + if ( ! mysql_query($query) || mysql_affected_rows() != 1 ) + { + $errmsg='Impossible de fixer la réunion : ' . mysql_generate_errmsg(); + return $errmsg; + } + return; +} + +function traiter_formulaire_creer_reunion() +{ + include_once('include/je.inc.php'); + $idP=$_SESSION['session_idP']; + + // Recherche d'une réunion vierge déjà existante + $query='SELECT idR FROM AWOR_Reunion WHERE idP_Orga=' . "('$idP') AND objetR='Renseignez';"; + if ( ( $result = mysql_query($query) ) && (mysql_num_rows($result) > 0) ) + { + list($idR)=mysql_fetch_array($result); + } + else + { + // Création de la Réunion sauf si une réunion vierge existe déjà + $query='INSERT INTO AWOR_Reunion(idP_Orga, objetR) VALUES' . "('$idP', 'Renseignez');"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg ='Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + return $errmsg; + } + $idR=mysql_insert_id(); + + // Création de la Liste des participants + if ( ! $idL=list_new("interne_idR_$idR","NULL",true) ) + { + $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de données'; + return $errmsg; + } + + $query="UPDATE AWOR_Reunion SET idL='$idL' WHERE idR='$idR'"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg = 'Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + return $errmsg; + } + } + + return (int) $idR; +} + +function traiter_formulaire_modif_detail_reunion() +{ + if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) ) + { + $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants'; + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return $errmsg; + } + + $idR=addslashes($_REQUEST['idR']); + $objetR=addslashes($_POST['objetR']); + $lieuR=addslashes($_POST['lieuR']); + $ordreJourR=addslashes($_POST['ordreJourR']); + $remarquesR=addslashes($_POST['remarquesR']); + $estAnnulee=( isset($_POST['isCancelled']) && ($_POST['isCancelled']==='on') )?'oui':'non'; + $montrerDispoR=( isset($_POST['isHidden']) && ($_POST['isHidden']==='on') )?'non':'oui'; + + $query="UPDATE AWOR_Reunion SET objetR='$objetR', lieuR='$lieuR', ordreJourR='$ordreJourR', " + ." remarquesR='$remarquesR', estAnnulee='$estAnnulee', montrerDispoR='$montrerDispoR' WHERE idR='$idR'"; + if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) + { + // Cas d'erreur + $errmsg = 'Erreur lors de la modification de la réunion : ' . mysql_generate_errmsg(); + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return $errmsg; + } + // DEBUG : + //echo "DEBUG : $query\n$errmsg\n"; + return; +} + +function generate_html_reunion_detail2($idR) +{ + $query='SELECT r.objetR, r.ordreJourR, r.lieuR, r.remarquesR, r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, p.nomP, p.prenomP' + . " FROM AWOR_Reunion r, AWOR_Personne p WHERE r.idR='$idR' AND p.idP=r.idP_Orga"; + $result = @mysql_query($query); + if ( ! $result || ( mysql_num_rows($result) !== 1 ) ) + { + $errmsg="Impossible de récuprérer les informations de la réunion : Erreur de base de données\n"; + return $errmsg; + } + + list($objetR, $ordreJourR, $lieuR, $remarquesR, $montrerDispoR, $estAnnulee, $idP_Orga, $idC_Fixe, $nomP, $prenomP) = mysql_fetch_row($result); + if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } + +?> + <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> + <thead> + <tr> + <th colspan="2"> + Détails de la réunion +<?php + //~ echo "DEBUG : SESSION['session_idP']==" . $_SESSION['session_idP'] . "\n" . "idP_Orga==" . $idP_Orga; + if ( isset($_SESSION['session_idP']) && ($_SESSION['session_idP'] == $idP_Orga ) ) + { + echo ' '; + echo '<a href="#popfixer" onclick="loadid(\'include/ludo/div_create_or_modif.php?idR='; + echo $idR . '&objetR=' . urlencode($objetR) . '&lieuR=' . urlencode($lieuR) . '&ordreJourR='; + echo urlencode($ordreJourR) . '&remarquesR=' . urlencode($remarquesR); + echo "','details_reunion',false)\">(Editer)</a>\n"; + } + +?> + </th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Objet :</strong></td> + <td> + <?php echo $objetR . "\n"; ?> + </td> + </tr> + <tr> + <td><strong>Organisateur :</strong></td> + <td> + <?php echo "$prenomP $nomP\n"; ?> + </td> + </tr> + + <tr> + <td><strong>Lieu :</strong></td> + <td> + <?php echo $lieuR . "\n"; ?> + </td> + </tr> + <tr> + <td><strong>Ordre du jour :</strong></td> + <td> + <?php echo $ordreJourR . "\n"; ?> + </td> + </tr> + <tr> + <td><strong>Remarques :</strong></td> + <td> + <?php echo $remarquesR . "\n"; ?> + </td> + </tr> + <tr> + <td><strong>Etat :</strong></td> +<?php + echo ' <td class="' . $etat .'">' ."\n"; + switch($etat) + { + case 'reunion_fixee': + echo "Fixée\n"; + break; + case 'reunion_en_cours': + echo "En préparation\n"; + break; + case 'reunion_annulee': + echo "Annulée\n"; + break; + } + if ( $montrerDispoR === 'non' ) { echo ', disponibilités masquées'; } +?> + </td> + </tr> + </tbody> + </table> +<?php +} + +function html_generate_MySQLTableSuppr($table, $key_name, $columns='*', $where_clause='') +{ + require_once('include/ludo/html_elements.inc.php'); + require_once('include/connect.inc.php'); + + if ( $where_clause !== '' ) { $where_clause="WHERE $where_clause"; } + $query = "SELECT $columns FROM $table $where_clause;"; + //~ echo "DEBUG : $query\n"; + if ( ! $result = @mysql_query($query) ) + { + return "Erreur de génération de la table $table\n"; + } + else + { + $row = mysql_fetch_assoc($result); + // Affichage des entêtes du tableau et du pied de tableau + echo '<form action="" method="post">' . "\n" . '<table summary="Affichage des objets de la table ' . $table . ' pour la purger">' . "\n<thead>\n<tr>\n"; + echo '<td colspan="' . ( count($row) + 1 ) . "\">$table</td>\n</tr>\n<tr>\n"; + echo "<td></td><td>" . implode("</td>\n<td>",array_keys($row)) . "</td>\n"; + echo "</tr>\n</thead>\n<tfoot><tr>\n"; + echo '<td><input name="action" value="delete_from_' . $table . '" type="hidden" /><input value="Supprimer" type="submit" /></td>'; + for ( $i=0; $i < count($row); $i++ ) { echo "<td></td>"; } + echo "</tr>\n</tfoot>\n<tbody>\n"; + + $num=0; + do + { if ( isset($row[$key_name]) ) { $num=$row[$key_name]; } else { $num=''; } + echo "<tr>\n<td><input name=\"${key_name}_${num}\" type=\"checkbox\" /></td>\n<td>" . implode("</td>\n<td>",$row) . "</td>\n</tr>\n"; + } while ( $row = mysql_fetch_assoc($result) ); + echo "</tbody>\n</table>\n</form>\n"; + } +} + +?> diff --git a/beta_accents/app/include/ludo/html_elements.inc.php b/beta_accents/app/include/ludo/html_elements.inc.php new file mode 100644 index 0000000..b845f28 --- /dev/null +++ b/beta_accents/app/include/ludo/html_elements.inc.php @@ -0,0 +1,185 @@ +<?php +/* + * Fonctions de génération de code HTML... + */ + function generate_html_doctype_and_head($title) +{ +echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n" +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> + <head> + <?php echo "<title>AWOR - $title</title>\n"; ?> + <meta name="keywords" content="AWOR, Application Web, Organisation, Réunion, Reunion" /> + <meta name="description" content="Application Web d'Organisation de Réunion (AWOR). Facilite la vie des organisateurs !" /> + <meta name="author" content="Jérémie Dénoyer, Ludovic Pouzenc, Andriana Semouchtchak, Julien Sérè" /> + <script type="text/javascript" src="script.js"></script> +<?php + //print_r($_COOKIE['aworcustom_css']); + if ( /*isset($_COOKIE['aworcustom_css'])*/ false ) + { + $cssfilemain = $_COOKIE['aworcustom_css']; + } + else + { + include 'config.inc.php'; + $cssfilemain=$CONFIG['CSS']['CHOOSER_LIST']['standard']; + } + echo ' <link href="css/' . $cssfilemain . '.css" rel="stylesheet" type="text/css" />' . "\n"; + echo ' <link href="css/' . $cssfilemain . '_nohelp.css" rel="stylesheet" type="text/css" title="nohelp" />' . "\n"; + + if ( isset($CONFIG['CSS']['CHOOSER_LIST']) ) + { + foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $cssname => $cssfile ) + { + if ( $cssfile != $cssfilemain ) + { + echo ' <link href="css/' . $cssfile . '.css" rel="alternate stylesheet" type="text/css" title="'.$cssname.'"/>' . "\n"; + echo ' <link href="css/' . $cssfile . '_nohelp.css" rel="alternate stylesheet" type="text/css" title="'.$cssname.'_nohelp"/>' . "\n"; + } + } + } +?> + <link href="css/print.css" rel="alternate stylesheet" type="text/css" title="print"/> + </head> +<?php +} + +function generate_html_divs_menu() +{ +include 'config.inc.php'; +?> +<div id="titre"><h2>AWOR</h2></div> +<div id="main_menu"> + <ul id="menu"> + <li><a href="index.php">Réunions</a></li> + <li><a href="listes.php">Listes</a></li> + <li><a href="profil.php">Mon profil</a></li> + <li><a href="ical.php">iCal</a></li> + <li><a href="apropos.php">A Propos</a></li> +<?php if ( isset($_SESSION['session_loginP']) && (is_integer(array_search($_SESSION['session_loginP'],$CONFIG['SUPERUSERS'],true))) ) + { echo ' <li><a href="admin.php">Administration</a></li>' . "\n"; } +?> + <li id="deconnection"><a href="deco.php">Déconnexion</a></li> + </ul> +</div> +<?php +} + +function generate_html_div_help($help_file='') +{ + //echo "DEBUG : function generate_html_div_help()\n"; + if ($help_file=='' ) { $help_file='help/' . basename($_SERVER['PHP_SELF']) . '.hlp'; } + //$help_file='modele_page.php.hlp'; + //echo "DEBUG : $help_file\n"; + if ( is_readable($help_file) ) + //if ( @fopen($help_file, 'r')!==false ) + { + echo '<div id="no_help">' . "\n<h2><a href=\"#css_standard\" onclick=\"setActiveStyleSheet('standard');\">?</a></h2>\n" . "</div>\n"; + echo '<div id="help">' . "\n"; + readfile($help_file); + echo "</div>\n"; + } +} + +function generate_html_div_errmsg($errmsg) +{ + echo '<div class="errmsg">' . "\n" . '<span class="errmsg">' . $errmsg . "</span>\n"; + require_once('config.inc.php'); + if ( isset( $CONFIG['adminMail'] ) && ( ! isset($_REQUEST['debug'] ) ) ) + { + echo '<span class="contactAdm">Si le problème persiste, vous pouvez contacter l\'administrateur par email à l\'adresse suivante : '; + echo '<a href="mailto:' . $CONFIG['adminMail'] . '">' . $CONFIG['adminMail'] . "</a></span>\n"; + } + echo "</div>\n"; +} + +function generate_html_div_css_chooser() +{ + @include 'include/ludo/config.inc.php'; + @include 'config.inc.php'; + + if ( ! is_array($CONFIG['CSS']['CHOOSER_LIST']) ) { return false; } + + if ( isset($_COOKIE['aworcustom_css'] ) ) { $css_selected=$_COOKIE['aworcustom_css']; }else{$css_selected='';}; + echo '<div class="css_chooser">' . "\n"; + //print_r($_COOKIE); + echo ' <select id="switcherCSS" onchange="switchCSS();">' . "\n"; + foreach ( $CONFIG['CSS']['CHOOSER_LIST'] as $file => $name ) + { + echo ' <option value="' . $file . '"'; + if ( $file == $css_selected ) { echo ' selected="selected"'; } + echo '>' . $name . '</option>' /*. "$DEBUG:file=$file, css_selected=$css_selected"*/ . "\n"; + } + echo ' </select>'. "\n"; + echo '</div>'. "\n"; +} + +function generate_html_div_footer() +{ +?> +<div id="footer"> + <ul> + <li class="left"> +<?php generate_html_div_css_chooser(); ?> + </li> + <li class="center"> + <a href="http://validator.w3.org/check/referer" target="_blank"> + <img src="./images/vxhtml.gif" alt="Validate" border="0" height="31" width="88" /> + </a> + <a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank"> + <img src="./images/vcss.gif" alt="Validate" border="0" height="31" width="88" /> + </a> + <a href="http://www.w3.org/WAI/WCAG1A-Conformance" title="Explanation of Level A Conformance" target="_blank"> + <img src="./images/wai.gif" alt="W3C-WAI level A conformance icon" border="0" height="31" width="88" /> + </a> + </li> + <li class="right"> + <span class="discret">Application réalisée par Jérémie Dénoyer,<br /> Ludovic Pouzenc, Julien Séré et Andriana Semouchtchak</span> + </li> + </ul> +</div> +<?php +} + +function generate_html_div_deconnect() +{ + echo '<div class="deco"><a href="deco.php">Deconnexion</a></div>'."\n"; +} +function generate_html_div_back() +{ + echo '<div class="retour"><a href="index.php">Retour</a></div>'."\n"; +} + +function generate_html_dispo_inconnu($idP, $idC) +{ + echo '<img class="spacing" src="./images/question.gif" alt="Inconnu" height="15" width="15" />' . "\n"; +} + +function generate_html_dispo_oui($idP, $idC) +{ + echo '<img class="spacing" src="./images/ok.gif" alt="Disponible" height="16" width="16" />' . "\n"; +} + +function generate_html_dispo_non($idP, $idC) +{ + echo '<img class="spacing" src="./images/del.gif" alt="Non disponible" height="15" width="15" />' . "\n"; +} + +function generate_html_dispo_dire_oui($idR, $idC) +{ + //~ echo '<img src="./images/button_ok.png" alt="Dire que je suis disponible" height="25" width="25" />' . "\n"; + echo "<a href=\"#dispo_idC${idC}\" onclick=\"loadid('include/ludo/majDispo.php?idR=$idR&idC=$idC&estDispo=oui','dispo_idC${idC}',false);\">"; + echo '<img class="spacing" src="./images/button_ok.png" alt="Dire que je suis disponible" height="25" width="25" /></a>' . "\n"; +} + +function generate_html_dispo_dire_non($idR, $idC) +{ + echo "<a href=\"#dispo_idC${idC}\" onclick=\"loadid('include/ludo/majDispo.php?idR=$idR&idC=$idC&estDispo=non','dispo_idC${idC}',false);\">"; + echo '<img class="spacing" src="./images/button_del.png" alt="Dire que je suis pas disponible" height="25" width="25" /></a>' . "\n"; +} + +function generate_html_reunion_detail_button($idR) +{ + echo '<a href="details_reunion.php?idR=' . $idR . '"><img src="images/details.png" alt="Détails" width="20" height="20" /></a>'; +} diff --git a/beta_accents/app/include/ludo/mail_textarea.php b/beta_accents/app/include/ludo/mail_textarea.php new file mode 100644 index 0000000..87f4965 --- /dev/null +++ b/beta_accents/app/include/ludo/mail_textarea.php @@ -0,0 +1,44 @@ +<?php +require_once('session_verify.inc.php'); +include('config.inc.php'); +//~ require_once('/home/lud/shares/public_html/awor/appli_3_alpha/include/connect.inc.php'); + +//include('include/connect.inc.php'); + +if ( isset($_GET['model']) ) { $model=$_GET['model']; } else { $model='empty'; } +?> + +<textarea name="msgText" cols="80" rows="15"> +<?php + if ( $model != 'empty') + { + include('../connect.inc.php'); + if ( ! isset($CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) ) + { + echo 'Désolé, modèle indisponible...'; + } + else + { + // On récupère quelques information à propos de la réunion pour que les templates puissent être customisés + $objetR=$ordreJourR=$lieuR=$remarquesR=""; + if (isset( $_GET['idR']) ) + { + $idR=addslashes($_GET['idR']); + $result = mysql_query("SELECT objetR, ordreJourR, lieuR, remarquesR FROM AWOR_Reunion WHERE idR='$idR'"); + if (mysql_num_rows($result)===1) + { + list($objetR, $ordreJourR, $lieuR, $remarquesR) = mysql_fetch_array($result); + } + } + //echo 'DEBUG : ../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file'] . "\n"; + if (!@include('../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) ) + { + echo 'Désolé, impossible de charger le fichier modèle...'; + } + } + } + //print_r($_REQUEST); + //print_r($CONFIG); +?> +</textarea> + diff --git a/beta_accents/app/include/ludo/majDispo.php b/beta_accents/app/include/ludo/majDispo.php new file mode 100644 index 0000000..3f79fec --- /dev/null +++ b/beta_accents/app/include/ludo/majDispo.php @@ -0,0 +1,39 @@ +<?php +require('../connect.inc.php'); +require('session_verify.inc.php'); +require('fonctions.inc.php'); + +// TODO : vérification que la réunion nous concerne bien ! + +if ( /*!isset($_GET['idR']) ||*/ !isset($_GET['idC']) || !isset($_GET['estDispo']) || !isset($_SESSION['session_idP']) ) +{ + $errmsg="Paramètres incorrects\n"; +} + +if ( isset( $errmsg ) ) +{ + // TODO +} +else +{ + $idR=addslashes($_GET['idR']); + $idC=addslashes($_GET['idC']); + $estDispo=addslashes($_GET['estDispo']); + $idP=$_SESSION['session_idP']; + + $query="UPDATE AWOR_Choisir SET estDispo = '$estDispo' WHERE idC='$idC' AND idP='$idP'"; + $result = @mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 ) ) + { + $query="INSERT INTO AWOR_Choisir(idC,idP,estDispo) VALUES ('$idC', '$idP', '$estDispo')"; + //echo "DEBUG :$query"; + $result = mysql_query($query); + if ( ! $result || ( mysql_affected_rows() !== 1 ) ) + { + echo "Erreur BD\n"; + return; + } + } + generate_html_dispo_case($idR, $idP, $idC, true, $estDispo, false); +} +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/redir.inc.php b/beta_accents/app/include/ludo/redir.inc.php new file mode 100644 index 0000000..6baf40d --- /dev/null +++ b/beta_accents/app/include/ludo/redir.inc.php @@ -0,0 +1,20 @@ +<?php +function html_redir($dest) +{ + header("Location: $dest"); +require_once('html_elements.inc.php'); +generate_html_doctype_and_head("Redirection"); +?> +<body> + <h1>Redirection</h1> + <p>Si vous voyez cette page, merci de suivre le lien ci-dessous</p> +<?php + // Ne respecte pas le XHTML s'il y a des paramètres les & doivent être remplacée par & + echo '<p><a href="' . $dest . '">' . $dest . '</a></p>' . "\n"; +?> +</body> +</html> +<?php + exit(); +} +?>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/session_verify.inc.php b/beta_accents/app/include/ludo/session_verify.inc.php new file mode 100644 index 0000000..f1cea8b --- /dev/null +++ b/beta_accents/app/include/ludo/session_verify.inc.php @@ -0,0 +1,9 @@ +<?php +session_start(); +if ( ! isset($_SESSION['session_loginP']) ) +{ + require('redir.inc.php'); + $dest='auth_dialog.php?retour=' . $_SERVER['PHP_SELF']; + html_redir($dest); +} +?>
\ No newline at end of file diff --git a/beta_accents/app/index.php b/beta_accents/app/index.php new file mode 100644 index 0000000..572c656 --- /dev/null +++ b/beta_accents/app/index.php @@ -0,0 +1,123 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +generate_html_doctype_and_head("Réunions"); +echo "<body>\n"; +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > <a href="index.php">Réunions</a> + > Liste des réunions + </p> + </div> +<?php +generate_html_div_help(); +?> + <div id="contenu"> +<?php + $idP= $_SESSION['session_idP']; + if ( isset( $_SESSION['session_prenomP'] ) && isset( $_SESSION['session_prenomP'] ) ) + { $nom=$_SESSION['session_prenomP'] . ' ' . $_SESSION['session_nomP']; } + else { $nom = $_SESSION['loginP']; } + + echo "Bonjour $nom, nous sommes le " . date('d/m/Y') . ' et il est ' . date('H:i'); + //~ echo "<pre>DEBUG : SESSION :\n"; + //~ print_r($_SESSION); + //~ echo "\nDEBUG : REQUEST :\n"; + //~ print_r($_REQUEST); + //~ echo "</pre>"; +?> + <br/><br/> + <a href="details_reunion.php?action=creer_reunion">Organiser une réunion</a> + <br/><br/> + <table class="listeReunions" summary="Liste des réunions vous concernant"> + <tr> + <th>Objet</th> + <th>Organisateur</th> + <th>Date</th> + <th>Etat</th> + <th>Détails</th> + </tr> +<?php + // Connexion à la base et sélection de la database + require_once 'include/connect.inc.php'; + + function fill_array_liste_reunion($query) + { + if ( ! $result = @mysql_query($query) ) + { + require_once('fonctions.inc.php'); + $errmsg=mysql_generate_errmsg(); + } + else + { + // On écrit ligne à ligne les personnes et les disponibilités + while ( list($idR, $objetR, $nomP, $prenomP, $idC_Fixe, $estAnnulee) = mysql_fetch_array($result) ) + { + // Boucle sur chaque personne + echo " <tr>\n"; + echo ' <td><a href="details_reunion.php?idR=' . $idR . '">' . "$objetR</a></td>\n"; + echo " <td>$prenomP $nomP</td>\n"; + if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } + + $dateStr=''; + switch($etat) + { + case 'reunion_fixee': + echo ' <td>' . date('d/m/Y \à H:i', $idC_Fixe) . "</td>\n"; + echo " <td class='$etat'>Fixée</td>\n"; + break; + case 'reunion_en_cours': + echo " <td></td>\n"; + echo " <td class='$etat'>En préparation</td>\n"; + break; + case 'reunion_annulee': + echo " <td></td>\n"; + echo " <td class='$etat'>Annulée</td>\n"; + break; + } + + + echo ' <td>'; + generate_html_reunion_detail_button($idR); + echo "</td>\n"; + echo " </tr>\n"; + } + } + } + + + // Réunions fixées et passées + + $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, UNIX_TIMESTAMP(C.dateHeure), R.estAnnulee' + . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Creneau C,AWOR_Personne P' + . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" + . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND R.idC_Fixe = C.idC' + . ' ORDER BY C.dateHeure DESC;'; + fill_array_liste_reunion($query); + + // Réunion en préparation + $query = 'SELECT DISTINCT R.idR, R.objetR, P.nomP, P.prenomP, NULL, R.estAnnulee' + . ' FROM AWOR_Liste L,AWOR_Reunion R,AWOR_Appartenir A,AWOR_Personne P' // Creneau C, + . " WHERE ((A.idP = $idP AND A.idL = L.idL) OR R.idP_Orga = $idP)" + . ' AND R.idL = L.idL AND P.idP = R.idP_Orga AND ISNULL(R.idC_Fixe);'; + //echo "DEBUG : $query\n"; + fill_array_liste_reunion($query); + + //$query = + //echo "DEBUG : $query\n"; +?> + </table> + <br/> + <a href="details_reunion.php?action=creer_reunion">Organiser une réunion</a> + </div> +<?php + if ( isset ($errmsg) ) { generate_html_div_errmsg($errmsg); } + generate_html_div_footer(); +?> +<div id="msg"></div> +</body> +</html> + diff --git a/beta_accents/app/listes.php b/beta_accents/app/listes.php new file mode 100644 index 0000000..3ec4d39 --- /dev/null +++ b/beta_accents/app/listes.php @@ -0,0 +1,48 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/connect.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/ludo/fonctions.inc.php'); + + +require_once('include/je.inc.php'); +require_once('include/ju.inc.php'); + +if ( isset($_REQUEST['action']) ) +{ + $nom_func = 'traiter_formulaire_' . $_REQUEST['action']; + $nom_func(); +} + +generate_html_doctype_and_head("Listes"); + +echo "<body>\n"; + +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > Listes + </p> + </div> +<?php +generate_html_div_help('help/groupe.hlp'); +?> + +<div id="contenu"> +<a href="#" onclick="loadid('poppersonne.php?idP_orga=<?php echo $_SESSION['session_idP']; ?>','poppersonne',true);popon('poppersonne')">Créer une liste</a> +<br/><br/> +<?php generate_html_array_list($_SESSION['session_idP']) ?> +<br/> +<a href="#" onclick="loadid('poppersonne.php?idP_orga=<?php echo $_SESSION['session_idP']; ?>','poppersonne',true);popon('poppersonne')">Créer une liste</a> + +</div> + +<div id="poppersonne" class="popup_personne"></div> +<div id="popdeletelist" class="popup_deletelist"></div> +<div id="masque"></div> +<div id="msg"></div> +<?php generate_html_div_footer() ?> +</body> +</html>
\ No newline at end of file diff --git a/beta_accents/app/organiser.php b/beta_accents/app/organiser.php new file mode 100644 index 0000000..2afcbea --- /dev/null +++ b/beta_accents/app/organiser.php @@ -0,0 +1,24 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/connect.inc.php'); +generate_html_doctype_and_head("Modèle"); +echo "<body>\n"; +generate_html_divs_menu(); +?> + <div id="sous_menu"> + > <a href="index.php">Accueil</a> + > <a href="index.php">Réunions</a> + > Organiser une réunion + </div> +<?php +generate_html_div_help(); +echo "<div id=\"contenu\">\n"; + +include('include/ludo/div_create_or_modif.php'); +?> + +</div> +</body> +</html> + diff --git a/beta_accents/app/popcommentaire.php b/beta_accents/app/popcommentaire.php new file mode 100644 index 0000000..cb6489f --- /dev/null +++ b/beta_accents/app/popcommentaire.php @@ -0,0 +1,23 @@ +<?php require_once ('include/connect.inc.php'); ?> +<h2>Editer votre commentaire</h2> +<div class="popup_contenu"> +<form id="formcommentaire" method="get" action=""> +<textarea name="txtCommentaire" rows="4" cols="40"> +<?php + $requete = "SELECT commentaireReponse FROM AWOR_Repondre WHERE idP=".$_GET['idP']." AND idR=".$_GET['idR'].""; + $result = mysql_query($requete); + if($result && mysql_num_rows($result) > 0) + { + $com = mysql_fetch_array($result); + + echo $com['commentaireReponse']; + } + +?> +</textarea> +<br/><br/> +<?php if (isset($_GET['idR'])) echo '<input type="hidden" name="idR" value="'.$_GET['idR'].'" />' ?> +<input type="hidden" name="action" value="commentaire" /> +<input type="submit" value="Enregistrer" /><input type="button" value="Fermer" onclick="popoff('popcommentaire')" /> +</form> +</div>
\ No newline at end of file diff --git a/beta_accents/app/popcreneau.php b/beta_accents/app/popcreneau.php new file mode 100644 index 0000000..f4ba56f --- /dev/null +++ b/beta_accents/app/popcreneau.php @@ -0,0 +1,90 @@ +<?php +function generate_html_div_popcreneau($idR) +{ + require_once ('include/connect.inc.php'); + ?> + <h2>Créneaux de la réunion </h2> + <div class="popup_contenu"> + <form id="formcreneau" method="get" action="" onsubmit="return dataListe('creneaux','dataCreneaux');"> + <table> + <tr> + <td>Créer un créneau </td> + <td> </td> + <td>Créneaux</td> + </tr> + <tr> + <td>Date : + <select name="day"> + <?php + for ($i=1;$i<=31;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select>/ + <select name="month"> + <?php + for ($i=1;$i<=12;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select>/ + <select name="year"> + <?php + for ($i=date('Y');$i<=((int)date('Y')+4);$i++) echo "<option value=\"$i\">$i</option>"; + ?> + </select><br />Début : + <select name="hourStart"> + <?php + for ($i=0;$i<=23;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select>: + <select name="minuteStart"> + <?php + for ($i=0;$i<=59;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select><br />Fin : + <select name="hourEnd"> + <?php + for ($i=0;$i<=23;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select>: + <select name="minuteEnd"> + <?php + for ($i=0;$i<=59;$i++) {$i = "0$i"; $i = substr($i,-2); echo "<option value=\"$i\">$i</option>"; } + ?> + </select></td> + <td><input name="AjouterCreneau" type="button" value="Ajouter" onclick="addcreneau(this.form);"/><br/><br/> + <input name="supprimerCreneau" type="button" value="Retirer" onclick="removecreneau(this.form);"/></td> + <td><select name="creneaux" size="10" id="creneaux"> + <?php + $result = mysql_query("SELECT UNIX_TIMESTAMP(dateHeure),duree FROM AWOR_Creneau WHERE idR=".$idR); + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + $date_deb =$row[0]; + $date_fin = $date_deb + 60 * $row[1]; + echo '<option value="'.date('Hi',$date_deb).'.'.date('Hi',$date_fin).'.'.date('d.m.Y',$date_deb).'">' . date('H:i',$date_deb) . ' -> ' . date('H:i',$date_fin) . ' ' . date('d/m/Y',$date_deb); + } + } + ?> + </select></td></tr></table><br/> + <input type="hidden" name="idR" value="<?php echo $idR;?>" /> + <input type="hidden" name="action" value="valider_creneau" /> + <input type="submit" value="Valider" /><input type="button" value="Fermer" onclick="popoff('popcreneau')"/> + </form> + </div> +<?php +} + +if (isset($_GET['idR'])) +{ + generate_html_div_popcreneau($_GET['idR']); +} +else +{ + echo '<div class="popup_contenu">'; + echo 'Erreur - pas d\'identifiant de réunion !'; + echo '<form id="formcreneau" method="get" action="">'; + echo '<input type="button" value="Fermer" onclick="popoff(\'popcreneau\')"/>'; + echo '</form>'; + echo '</div>'; +} +?> diff --git a/beta_accents/app/popdeletelist.php b/beta_accents/app/popdeletelist.php new file mode 100644 index 0000000..3449714 --- /dev/null +++ b/beta_accents/app/popdeletelist.php @@ -0,0 +1,20 @@ +<?php require_once('include/connect.inc.php'); ?> +<h2>Désirer vous supprimer cette liste ?</h2> +<div class="popup_contenu"> +<?php + $result = mysql_query("SELECT libelleL FROM AWOR_Liste WHERE idL=".$_GET['idL']); + if (mysql_num_rows($result)>0) + { + $row = mysql_fetch_array($result); + echo "Libellé : " . $row[0] . "<br/><br/>"; + } + echo '<form id="formdelete" method="get" action="">'; + echo '<input type="hidden" name="action" value="delete_list" />'; + echo '<input type="hidden" name="idL" value="'.$_GET['idL'].'" />'; + echo '<input type="submit" value="Supprimer"/>'; + echo '<input type="button" value="Annuler" onclick="popoff(\'popdeletelist\')"/>'; + echo '</form>'; +?> +</div> + + diff --git a/beta_accents/app/popfixer.php b/beta_accents/app/popfixer.php new file mode 100644 index 0000000..7e1c85a --- /dev/null +++ b/beta_accents/app/popfixer.php @@ -0,0 +1,42 @@ +<?php + if (isset($_GET['idC'])) + { + include ('include/connect.inc.php'); + echo '<h2>Désirez-vous fixer ce créneau ?</h2>'; + echo '<div class="popup_contenu">'; + $result = mysql_query("SELECT UNIX_TIMESTAMP(dateHeure),duree FROM AWOR_Creneau WHERE idC=".$_GET['idC']); + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + $date_deb =$row[0]; + $date_fin = $date_deb + 60 * $row[1]; + echo 'Le ' . date('d/m/y', $date_deb) . ' de ' . date('H:i', $date_deb) . ' à ' . date('H:i', $date_fin); + } + } + + echo '<br/>'; + echo '<em>(Il vous sera impossible par la suite de modifier les informations concernant la réunion)</em>'; + echo '<br/>';echo '<br/>'; + //~ echo '<form id="formfixer" method="get" action="'.$_SERVER['PHP_SELF'].'">'; + echo '<form id="formfixer" method="get" action="">'; + echo '<input type="hidden" name="action" value="fixer_creneau" />'; + echo '<input type="hidden" name="idR" value="'.$_GET['idR'].'" />'; + echo '<input type="hidden" name="idC" value="'.$_GET['idC'].'" />'; + echo '<input type="submit" value="Valider"/>'; + echo '<input type="button" value="Annuler" onclick="popoff(\'popfixer\')"/>'; + echo '</form>'; + echo '</div>'; + } + else + { + echo '<div class="popup_contenu">'; + echo 'Erreur - pas d\'identifiant de cr&eaneau !'; + echo '<form id="formfixer" method="get" action="">'; + echo '<input type="button" value="Fermer" onclick="popoff(\'popfixer\')"/>'; + echo '</form>'; + echo '</div>'; + } +?> + diff --git a/beta_accents/app/popnewlist.php b/beta_accents/app/popnewlist.php new file mode 100644 index 0000000..d8d1010 --- /dev/null +++ b/beta_accents/app/popnewlist.php @@ -0,0 +1,3 @@ +<!-- Sert a rien !! --> + + diff --git a/beta_accents/app/poppersonne.php b/beta_accents/app/poppersonne.php new file mode 100644 index 0000000..e9225ba --- /dev/null +++ b/beta_accents/app/poppersonne.php @@ -0,0 +1,112 @@ +<?php require_once('include/connect.inc.php'); ?> +<h2><?php +//Pour le choix du Titre : +if(isset($_GET['idR'])) echo "Participants de la réunion"; + else + if (isset($_GET['idL'])) echo "Modification de la liste" ; else echo "Création d'une liste"; +?></h2> +<div class="popup_contenu"> + +<?php +//Pour la création de la liste et initialisation du propriétaire +echo "<form id=\"formpersonne\" action=\"\" method=\"get\" onsubmit=\"return ("; +$isOwner= false; + +if (!isset($_GET['idL'])) +{ + echo "(true==(isNotEmpty('listname') & "; + echo "dataListe('participants','dataParticipants'))));\">"; + echo "Nom de la liste : <input type=\"text\" name=\"listname\" id=\"listname\" />\n"; + echo " est privée : <input type=\"checkbox\" name=\"isPrivate\" checked/><br/><br/>\n"; + echo "<input type=\"hidden\" name=\"idP\" value=\"".$_GET['idP_orga']."\" />\n"; + $isOwner = true; +} +else +{ + echo "dataListe('participants','dataParticipants'));\">"; + if (isset($_GET['idR'])) $req = "SELECT * FROM AWOR_Liste L,AWOR_Reunion R WHERE (L.idP_Createur=".$_GET['idP_orga']." OR R.idP_Orga=".$_GET['idP_orga'].") AND R.idL=L.idL"; + else $req = "SELECT * FROM AWOR_Liste L,AWOR_Reunion R WHERE L.idL=".$_GET['idL']." AND L.idP_Createur=".$_GET['idP_orga']; + $result = mysql_query($req); + if (mysql_num_rows($result)>0) + { + $isOwner = true; + } +} + +?> +<table> +<tr> +<td>Contacts disponibles </td> +<td> </td> +<td>Participants </td> +</tr> +<tr> +<td> +<select name="listeDispo" id="listeDispo" onChange="loadlist('poppersonneliste.php?idL=','listeDispo','divListe');" <?php if (!$isOwner) echo ' disabled' ;?>> +<option value="None">Choisir ...</option> +<option value="Tous">Tous</option> +<?php + $req = "SELECT idL,libelleL,estPrivee FROM AWOR_Liste WHERE (idP_Createur=".$_GET['idP_orga']." OR estPrivee='non')"; + if (isset($_GET['idL'])) $req .= " AND idL <>".$_GET['idL']; + $req .= " ORDER BY estPrivee"; + $result = mysql_query($req); + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + echo '<option value="'.$row[0].'">'; + echo $row[1]; + echo '</option>'; + } + } +?> +</select> +</td> +<td> </td> +<td> </td> +</tr> +<tr> +<td> +<div id="divListe"> +</div> +</td> +<td> +<input name="AjouterParticipant" type="button" id="AjouterParticipant" value="Ajouter" onclick="addPers(this.form);" <?php if (!$isOwner) echo ' disabled' ;?>/><br/> +<br/> +<input name="AjouterTous" type="button" id="AjouterTous" value="Ajouter Tous" onclick="addAllPers(this.form);" <?php if (!$isOwner) echo ' disabled' ;?> /><br/> +<br/> +<input name="supprimerParticipant" type="button" id="supprimerParticipant" value="Retirer" onclick="removePers(this.form);" <?php if (!$isOwner) echo ' disabled' ;?>/> +</td> +<td> +<select name="participants" size="10" id="participants"> +<?php + if (isset($_GET['idL'])) + { + $req = "SELECT P.idP,P.courrielP,P.nomP,P.prenomP FROM AWOR_Personne P,AWOR_Appartenir A WHERE P.idP=A.idP AND A.idL=".$_GET['idL']; + $result = mysql_query($req); + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + echo '<option value="'.$row[0].'">'; + if ($row[2] !== "" & $row[3] !== "") echo $row[2] . " " . $row[3]; else echo $row[1]; + echo '</option>'; + } + } + } +?> +</select> +</td> +</tr> +</table> +<br/> +<input type="text" name="courriel" id="courriel" value="" size="30" <?php if (!$isOwner) echo ' disabled' ;?>/><input type="button" value="inscrire" onclick="newPers(this.form);" <?php if (!$isOwner) echo ' disabled' ;?>/> +<br/><br/> +<?php if (isset($_GET['idL'])) echo '<input type="hidden" name="idL" value="'.$_GET['idL'].'" />'; ?> +<?php if (isset($_GET['idR'])) echo '<input type="hidden" name="idR" value="'.$_GET['idR'].'" />'; ?> +<input type="hidden" name="action" value="valider_modif_personnes" /> +<input type="submit" name="Submit" value="Valider" /><input type="button" value="Fermer" onclick="popoff('poppersonne');" /> +</form> +</div> diff --git a/beta_accents/app/poppersonneliste.php b/beta_accents/app/poppersonneliste.php new file mode 100644 index 0000000..a0d60b5 --- /dev/null +++ b/beta_accents/app/poppersonneliste.php @@ -0,0 +1,27 @@ +<?php + require_once 'include/connect.inc.php'; + if ($_GET['idL'] != "None") + { + $req = "SELECT P.idP , P.courrielP , P.nomP , P.prenomP FROM AWOR_Personne P"; + if ($_GET['idL'] != "Tous") {$req=$req.",AWOR_Appartenir A WHERE P.idP=A.idP AND A.idL=".$_GET['idL'];} + $result = mysql_query($req) ; + echo '<select name="contactDispo" size="10" id="contactDispo">'; + + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + $row = mysql_fetch_array($result); + echo '<option value="'.$row[0].'" onDblClick="addPers(this.form);">'; + if ($row[2] !== "" & $row[3] !== "") echo $row[2] . " " . $row[3]; else echo $row[1]; + echo '</option>'; + } + } + echo '</select>'; + } + else + { + echo " "; + } + +?> diff --git a/beta_accents/app/profil.php b/beta_accents/app/profil.php new file mode 100644 index 0000000..289b7f1 --- /dev/null +++ b/beta_accents/app/profil.php @@ -0,0 +1,59 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/connect.inc.php'); +require_once('include/ju.inc.php'); +if ( isset($_REQUEST['action']) ) +{ + $nom_func = 'traiter_formulaire_' . $_REQUEST['action']; + $nom_func(); +} +generate_html_doctype_and_head("Modèle"); + +echo "<body>\n"; +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > Administration du profil + </p> + </div> +<?php +generate_html_div_help(); +echo "<div id=\"contenu\">\n"; +$idP = $_SESSION['session_idP']; +if ( isset( $_SESSION['session_prenomP'] ) && isset( $_SESSION['session_prenomP'] ) ) +{ + $nom=$_SESSION['session_prenomP'] . ' ' . $_SESSION['session_nomP']; +} +else +{ + $nom = $_SESSION['session_loginP']; +} +$resultat = mysql_query("SELECT * FROM AWOR_Personne WHERE idP = '".$_SESSION['session_idP']."'"); +if($resultat != false) +{ + $p = mysql_fetch_array($resultat); + echo "<form method=\"post\" action=\"profil.php\" onSubmit=\"return verifProfil()\" >\n"; + echo "<table>\n"; + echo "<tr><td>Methode d'authentification : </td><td>\n<select name=\"methodeAuth\">\n"; + if($p["methodeAuth"] == "webetud") echo "<option value=\"webetud\" selected=\"selected\">Webetud</option>\n"; else echo "<option value=\"webetud\">Webetud</option>\n"; + if($p["methodeAuth"] == "pop") echo "<option value=\"pop\" selected=\"selected\">POP3</option>\n"; else echo "<option value=\"pop\">POP3</option>\n"; + echo "</select></td></tr>\n"; + echo "<tr><td>Votre login :</td><td><input type=\"text\" name=\"loginP\" id=\"loginP\" value=\"".$p["loginP"]."\"/></td></tr>\n"; + echo "<tr><td>Votre adresse mail :</td><td><input type=\"text\" name=\"courrielP\" id=\"courrielP\" value=\"".$p["courrielP"]."\"/></td></tr>\n"; + echo "<tr><td>Votre nom :</td><td><input type=\"text\" name=\"nomP\" id=\"nomP\" value=\"".$p["nomP"]."\"/></td></tr>\n"; + echo "<tr><td>Votre prenom :</td><td><input type=\"text\" name=\"prenomP\" id=\"prenomP\" value=\"".$p["prenomP"]."\"/></td></tr>\n"; + echo "<tr><td colspan=\"2\"><input type=\"submit\" /></td></tr>\n"; + echo "</table>\n"; + echo "<input type=\"hidden\" name=\"action\" value=\"maj_profil\" />\n"; + echo "</form>\n"; + echo "</div>\n"; +} +if ( isset ($errmsg) ) generate_html_div_errmsg($errmsg); +?> +<div id="msg"></div> +</body> +</html> + diff --git a/beta_accents/app/script.js b/beta_accents/app/script.js new file mode 100644 index 0000000..2c14563 --- /dev/null +++ b/beta_accents/app/script.js @@ -0,0 +1,341 @@ +function isNotEmpty (idInput) +{ + if (document.getElementById(idInput).value.length > 0) { return (true);} else {return (false);} +} + +function addPers(form) +{ + if(form.contactDispo) + { + if(form.contactDispo.options.selectedIndex>=0) + { + var oValue = form.contactDispo.options[form.contactDispo.options.selectedIndex].value; + + var exist = false; + var i = 0; + while (i<form.participants.options.length && !exist) { if (form.participants.options[i].value == oValue) exist = true; i=i+1;} + + if (!exist) + { + var oText = form.contactDispo.options[form.contactDispo.options.selectedIndex].text; + var o = new Option(oText,oValue); + form.participants.options[form.participants.options.length]=o; + } + } + } +} + +function switchCSS() +{ + + alert ( "On change de CSS !"); + var listCSS = document.getElementById('switcherCSS'); + if (listCSS) + { + if (listCSS.options.selectedIndex>=0) + { + alert ( "On passe au css :" + listCSS.options[listCSS.options.selectedIndex].value); + setActiveStyleSheet(listCSS.options[listCSS.options.selectedIndex].value); + } + } + +} + +function addAllPers(form) +{ + if(form.contactDispo) + { + for (var j=0;j<form.contactDispo.options.length;j++) + { + var oValue = form.contactDispo.options[j].value; + var exist = false; + var i = 0; + + while (i<form.participants.options.length && !exist) { if (form.participants.options[i].value == oValue) exist = true; i=i+1;} + + if (!exist) + { + var oText = form.contactDispo.options[j].text; + var o = new Option(oText,oValue); + form.participants.options[form.participants.options.length]=o; + } + } + } +} + +function newPers(form) +{ + if (verifMail(form.courriel.value)) + { + var oValue = form.courriel.value; + + var exist = false; + var i = 0; + while (i<form.participants.options.length && !exist) { if (form.participants.options[i].value == oValue) exist = true; i=i+1;} + + if (!exist) + { + var oText = form.courriel.value; + var o = new Option(oText,oValue); + form.participants.options[form.participants.options.length]=o; + } + } + else + { + alert ("Mail invalide"); + } +} + +function verifMail(mail) +{ + if ((mail.indexOf("@")>=0)&&(mail.indexOf(".")>=0)) return true; else return false; +} + + +function removePers(form) +{ + if (form.participants.options.selectedIndex>=0) + { + var i = form.participants.options.selectedIndex; + form.participants.options[form.participants.options.selectedIndex]=null; + if (parseInt(i) > 0) {form.participants.options.selectedIndex=parseInt(i)-1;} else {form.participants.options.selectedIndex=0;} + } + else + { + alert("Suppression impossible : aucune ligne sélectionnée"); + } +} + +function loadid(url,id,isPop) { + if (isPop) + document.getElementById('msg').innerHTML = "<em>Chargement en cours ...<a href=\"#\" onclick=\"popoff('"+id+"')\" >Fermer</a></em>"; + else + document.getElementById('msg').innerHTML = "<em>Chargement en cours ...</em>"; + + document.getElementById(id).innerHTML = ""; + document.getElementById('msg').style.display='block'; + + var http_request = false; + + if (window.XMLHttpRequest) { // Mozilla, Safari,... + http_request = new XMLHttpRequest(); + if (http_request.overrideMimeType) { + http_request.overrideMimeType('text/xml'); + } + } else if (window.ActiveXObject) { // IE + try { + http_request = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + http_request = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + if (!http_request) { + alert('Abandon : Impossible de créer une instance XMLHTTP'); + return false; + } + + http_request.onreadystatechange = function(){ + + if (http_request.readyState == 4) { + if (http_request.status == 200) { + document.getElementById(id).innerHTML = http_request.responseText; + document.getElementById('msg').style.display='none'; + document.getElementById('msg').innerHTML = ""; + + } else { + if (isPop) + document.getElementById('msg').innerHTML = "<em>Un problème est survenu ...<a href=\"#\" onclick=\"loadid('"+url+"','"+id+"',true)\" >Réessayer</a> - <a href=\"#\" onclick=\"popoff('"+id+"')\" >Fermer</a></em>"; + else + document.getElementById('msg').innerHTML = "<em>Un problème est survenu ...<a href=\"#\" onclick=\"loadid('"+url+"','"+id+"',false)\" >Réessayer</a></em>"; + } + } + }; + + http_request.open('GET', url, true); + http_request.send(null); +} + +function popon (id) +{ + var thisPopup = document.getElementById(id); + thisPopup.style.display='block'; + //var thisMasque = document.getElementById('masque'); + //thisMasque.style.display='block'; +} + +function popoff (id) +{ + var thisPopup = document.getElementById(id); + thisPopup.style.display='none'; + //var thisMasque = document.getElementById('masque'); + //thisMasque.style.display='none'; +} + +function addcreneau(form) +{ + if(form.day.options.selectedIndex>=0 && form.month.options.selectedIndex>=0 && form.year.options.selectedIndex>=0 && form.hourStart.options.selectedIndex>=0 && form.minuteStart.options.selectedIndex>=0 && form.hourEnd.options.selectedIndex>=0 && form.minuteEnd.options.selectedIndex>=0) + { + if (verifDate(form.day.options[form.day.options.selectedIndex].value,form.month.options[form.month.options.selectedIndex].value,form.year.options[form.year.options.selectedIndex].value)) + { + //Création de la valeur + var oValue = form.hourStart.options[form.hourStart.options.selectedIndex].value + form.minuteStart.options[form.minuteStart.options.selectedIndex].value + "." + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; + oValue = oValue + "." + form.day.options[form.day.options.selectedIndex].value + "." + form.month.options[form.month.options.selectedIndex].value + "." + form.year.options[form.year.options.selectedIndex].value; + + //Test si la valeur est déja dans la liste + var exist = false; + var i = 0; + while (i<form.creneaux.options.length && !exist) { if (form.creneaux.options[i].value == oValue) exist = true; i=i+1;} + + //Création du texte et de l'option et insertion de l'option si la valeur n'a pas été trouvée + if (!exist) + { + var oText = form.hourStart.options[form.hourStart.options.selectedIndex].value + ":" + form.minuteStart.options[form.minuteStart.options.selectedIndex].value + " -> " + form.hourEnd.options[form.hourEnd.options.selectedIndex].value + ":" + form.minuteEnd.options[form.minuteEnd.options.selectedIndex].value; + oText = oText + " " + form.day.options[form.day.options.selectedIndex].value + "/" + form.month.options[form.month.options.selectedIndex].value + "/" + form.year.options[form.year.options.selectedIndex].value; + var o = new Option(oText,oValue); + form.creneaux.options[form.creneaux.options.length]=o; + } + } + } +} + +function removecreneau(form) +{ + if (form.creneaux.options.selectedIndex>=0) + { + var i = form.creneaux.options.selectedIndex; + form.creneaux.options[form.creneaux.options.selectedIndex]=null; + if (parseInt(i) > 0) {form.creneaux.options.selectedIndex=parseInt(i)-1;} else {form.creneaux.options.selectedIndex=0;} + } + else + { + alert("Suppression impossible : aucune ligne sélectionnée"); + } +} + +function dataListe(idSelect,idInput) +{ + var liste = document.getElementById(idSelect); + if (liste) + { + for (var i=0;i<liste.options.length;i++) + { + var newInput = document.createElement("input"); +/* newInput.setAttribute("type", "hidden"); + newInput.setAttribute("name", (idInput+"["+i+"]")); + newInput.setAttribute("value", liste.options[i].value);*/ + newInput.type = "hidden"; + newInput.name = idInput+"["+i+"]"; + newInput.value = liste.options[i].value; + liste.form.appendChild(newInput); + } + return (true); + } + else + { + return (false); + } + +} +function verifDate(day,month,year) +{ + var a= year; + var m= month; + var d= day; + var ok=true; + + var date2=new Date(a,m-1,d); + d2=date2.getDate(); + m2=date2.getMonth()+1; + a2=date2.getFullYear(); + if (a2<=100) {a2=1900+a2} //Pour depasser 2000 + if ( (d!=d2)||(m!=m2)||(a!=a2) ) + { + alert("Cette date n'existe pas !"); + ok=false; + } + return (ok); +} +function loadlist(url,id,idListe) +{ + + if (document.getElementById(id)) + { + loadid((url+document.getElementById(id).options[document.getElementById(id).options.selectedIndex].value),idListe,false); + } +} +//*************************************************************************// +// Formulaire profil +//*************************************************************************// +function verifProfil() +{ + //return(true==(isNotEmpty('nomP')) && true==(isNotEmpty('prenomP')) && true==(isNotEmpty('loginP')) && true==(isNotEmpty('courrielP'))); + if(false==isNotEmpty('nomP')) { alert("Saisissez votre nom avant de valider."); return false;} + if(false==isNotEmpty('prenomP')) { alert("Saisissez votre prenom avant de valider."); return false;} + if(false==isNotEmpty('courrielP')) { alert("Saisissez votre courriel avant de valider."); return false;} + if(false==isNotEmpty('loginP')) { alert("Saisissez votre login avant de valider."); return false;} + return true; +} + +//*************************************************************************// +// Switcher CSS +//*************************************************************************// +function setActiveStyleSheet(title) { + var i, a, main; + for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { + if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { + a.disabled = true; + if(a.getAttribute("title") == title) a.disabled = false; + } + } +} +function getActiveStyleSheet() { + var i, a; + for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { + if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); + } + return null; +} +function getPreferredStyleSheet() { + var i, a; + for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { + if(a.getAttribute("rel").indexOf("style") != -1 + && a.getAttribute("rel").indexOf("alt") == -1 + && a.getAttribute("title") + ) return a.getAttribute("title"); + } + return null; +} +function createCookie(name,value,days) { + if (days) { + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + } + else expires = ""; + document.cookie = name+"="+value+expires+"; path=/"; +} +function readCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; +} +window.onload = function(e) { + var cookie = readCookie("aworcustom_css"); + var title = cookie ? cookie : getPreferredStyleSheet(); + setActiveStyleSheet(title); +} +window.onunload = function(e) { + var title = getActiveStyleSheet(); + createCookie("aworcustom_css", title, 365); +} +var cookie = readCookie("aworcustom_css"); +var title = cookie ? cookie : getPreferredStyleSheet(); +setActiveStyleSheet(title);
\ No newline at end of file diff --git a/beta_accents/app/sendmail.php b/beta_accents/app/sendmail.php new file mode 100644 index 0000000..6969701 --- /dev/null +++ b/beta_accents/app/sendmail.php @@ -0,0 +1,196 @@ +<?php +require('include/ludo/session_verify.inc.php'); +require_once('include/ludo/html_elements.inc.php'); +require_once('include/connect.inc.php'); + + + +generate_html_doctype_and_head("Envoi de courriel"); +echo "<body>\n"; +generate_html_divs_menu(); +?> + <div id="sous_menu"> + <p class="arbre"> + > <a href="index.php">Accueil</a> + > <a href="index.php">Réunions</a> + > Envoi de courriel + </p> + </div> +<?php generate_html_div_help(); +if( isset($_POST['idR']) ) +{ + $idR=addslashes($_POST['idR']); +} +else +{ +?> + <div id="errmsg"> + Erreur lors de l'émission de l'email : Paramètre manquant ou érroné + </div></body></html> +<?php + exit(); +} + +if( isset($_POST['envoi']) ) +{ + include 'include/ludo/config.inc.php'; + + if ( !isset($_POST['msgObject']) || !isset($_POST['msgText']) || !is_array($_POST['dataParticipants']) ) + { + $errmsg = "Erreur lors de l'émission de l'email : Paramètre manquant ou érroné"; + } + else + { + if ( !isset($CONFIG['automatedMail']) ) + { + $errmsg = "Erreur lors de l'émission de l'email : Erreur de configuration par l'administrateur"; + } + else + { + // Potentiellement dangereux... + $query='SELECT nomP, prenomP, courrielP FROM AWOR_Personne WHERE idP=\'' . implode("' OR idP='", $_POST['dataParticipants']) . "'"; + //~ echo " DEBUG : QUERY : $query\n"; + $result = mysql_query($query); + if ( ! $result ) + { + $errmsg = "Erreur lors de l'émission de l'email : Erreur de base de données"; + } + else + { + $to=array(); + while ( list($nomP, $prenomP, $courrielP) = mysql_fetch_row($result) ) + { + $to[]="$nomP $prenomP <$courrielP>"; + } + $to=implode(', ',$to); + + + if ( ! mail ( $to, $_POST['msgObject'], wordwrap($_POST['msgText'],70), 'From: ' . $CONFIG['automatedMail'] . "\r\n" ) ) + { + $errmsg = "Erreur lors de l'émission de l'email : Erreur inconnue"; + } + } + } + } + + if ( isset($errmsg) ) + { + echo '<div id="errmsg">' . $errmsg .'</div></body></html>'; + } + else + { + echo '<div id="contenu">Le courriel à bien été envoyé<br />'; + echo '<a href="details_reunion.php?idR=' . $idR . '">Retour au détail de la réunion</a></div></body></html>'; + } + exit(); +} + + +$result = mysql_query("SELECT idL FROM AWOR_Reunion WHERE idR='$idR'"); +if (mysql_num_rows($result)===1) +{ + list($idL) = mysql_fetch_array($result); +} +else +{ + $errmsg=""; +} + + + if ( isset($errmsg) ) + { + echo '<div id="errmsg">' . $errmsg .'</div></body></html>'; + exit(); + } + +?> + + <div id="contenu"> + <form id="formmail" action="sendmail.php" method="post" onsubmit="return dataListe('participants','dataParticipants');"> + <table> + <tbody> + <tr> + <td>Contacts disponibles</td> + <td> </td> + <td>Destinataires</td> + </tr> + <tr> + <td> + <select name="contactDispo" size="10" id="contactDispo"> +<?php + $personnes = array(); + $req = 'SELECT P.idP , P.courrielP , P.nomP , P.prenomP FROM AWOR_Personne P, AWOR_Appartenir A WHERE P.idP=A.idP AND A.idL=' . $idL; + $result = mysql_query($req) ; + + if (mysql_num_rows($result)>0) + { + for($i=0;$i<mysql_num_rows($result);$i++) + { + list($idP, $courrielP, $nomP, $prenomP) = mysql_fetch_array($result); + $personnes[$idP]=array($courrielP, $nomP, $prenomP); + echo '<option value="'.$idP.'" ondblclick="addPers(this.form);">'; + echo $nomP . " " . $prenomP; + echo "</option>\n"; + } + } + +?> + </select> + </td> + <td> + <input name="AjouterParticipant" id="AjouterParticipant" value="Ajouter" onclick="addPers(this.form);" type="button" /> + <br /> + <br /> + <input name="supprimerParticipant" id="supprimerParticipant" value="Retirer" onclick="removePers(this.form);" type="button" /> + </td> + <td> + <select name="participants" size="10" id="participants"> +<?php + foreach( $personnes as $idP=>$p) + { + if ( isset($_POST['mail_idP' . $idP] ) ) + { + echo '<option value="'.$idP.'">'; + echo $p[1] . " " . $p[2]; + echo "</option>\n"; + } + } +?> + </select> + </td> + </tr> + </tbody> + </table> + <div> + Modèle : +<?php + echo '<select name="modelsList" id="modelsList" onchange="loadlist(\'include/ludo/mail_textarea.php?idR='; + echo $idR . "&model=','modelsList','divMsg');\">\n"; +?> + <option value="empty">Vierge</option> + <option value="cree">Nouvelle Réunion</option> + <option value="modif">Réunion modifiée</option> + <option value="annul">Réunion annulée</option> + <option value="fixee">Réunion fixée</option> + </select> + </div> + <div> + Objet : <input name="msgObject" type="text" size="40" value="AWOR : Courriel de notification" /> + </div> + <div id='divMsg'> +<?php include 'include/ludo/mail_textarea.php'; ?> + </div> + <div> + <?php + echo '<input name="idR" type="hidden" value="' . $idR . '" />' . "\n"; + ?> + <input name="envoi" type="hidden" value="1" /> + <input type="submit" value="Envoyer" /> + </div> + </form> + </div> +<?php generate_html_div_footer(); ?> + <div id="msg"></div> +</body> +</html> + diff --git a/beta_accents/app/templates/mail_annul.php b/beta_accents/app/templates/mail_annul.php new file mode 100644 index 0000000..74e0d3d --- /dev/null +++ b/beta_accents/app/templates/mail_annul.php @@ -0,0 +1,12 @@ +<?php +// Vous pouvez utiliser les variables suivantes pour personnaliser le modèle +// $objetR, $ordreJourR, $lieuR, $remarquesR +?> +Bonjour, +Une réunion vient d'être annulée sur l'Application Web d'Organisation de Réunion et vous y étiez conviés. +<?php +echo "Objet de la réunion : $objetR\n"; +echo "Lieu de la réunion : $lieuR\n"; +echo "Ordre du jour : $ordreJourR\n"; +echo "Remarques : $remarquesR\n"; +?>
\ No newline at end of file diff --git a/beta_accents/app/templates/mail_cree.php b/beta_accents/app/templates/mail_cree.php new file mode 100644 index 0000000..cd18c89 --- /dev/null +++ b/beta_accents/app/templates/mail_cree.php @@ -0,0 +1,13 @@ +<?php +// Vous pouvez utiliser les variables suivantes pour personnaliser le modèle +// $objetR, $ordreJourR, $lieuR, $remarquesR +?> +Bonjour, +Une réunion vient d'être ajoutée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt. +<?php +echo "Objet de la réunion : $objetR\n"; +echo "Lieu de la réunion : $lieuR\n"; +echo "Ordre du jour : $ordreJourR\n"; +echo "Remarques : $remarquesR\n"; +?>
\ No newline at end of file diff --git a/beta_accents/app/templates/mail_fixee.php b/beta_accents/app/templates/mail_fixee.php new file mode 100644 index 0000000..6259f9a --- /dev/null +++ b/beta_accents/app/templates/mail_fixee.php @@ -0,0 +1,14 @@ +<?php +// Vous pouvez utiliser les variables suivantes pour personnaliser le modèle +// $objetR, $ordreJourR, $lieuR, $remarquesR +?> +Bonjour, +Une réunion vient d'être fixée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, noter le créneau retenu, +et même télécharger le fichier iCal pour synchroniser votre logiciel de calendrier préféré. +<?php +echo "Objet de la réunion : $objetR\n"; +echo "Lieu de la réunion : $lieuR\n"; +echo "Ordre du jour : $ordreJourR\n"; +echo "Remarques : $remarquesR\n"; +?>
\ No newline at end of file diff --git a/beta_accents/app/templates/mail_modif.php b/beta_accents/app/templates/mail_modif.php new file mode 100644 index 0000000..3cbb7b1 --- /dev/null +++ b/beta_accents/app/templates/mail_modif.php @@ -0,0 +1,13 @@ +<?php +// Vous pouvez utiliser les variables suivantes pour personnaliser le modèle +// $objetR, $ordreJourR, $lieuR, $remarquesR +?> +Bonjour, +Une réunion vient d'être modifiée sur l'Application Web d'Organisation de Réunion et vous y êtes conviés. +Vous pouvez aller consulter le détail de la réunion sur le site, et merci de donner vos disponibilités au plus tôt si ce n'et déjà fait. +<?php +echo "Objet de la réunion : $objetR\n"; +echo "Lieu de la réunion : $lieuR\n"; +echo "Ordre du jour : $ordreJourR\n"; +echo "Remarques : $remarquesR\n"; +?>
\ No newline at end of file diff --git a/beta_accents/app/test.php b/beta_accents/app/test.php new file mode 100644 index 0000000..ea189ae --- /dev/null +++ b/beta_accents/app/test.php @@ -0,0 +1,8 @@ +<html> +<body> +<?php +include('include/ludo/html_elements.inc.php'); +generate_html_div_footer(); +?> +</body> +</html> diff --git a/beta_accents/app/testGet.php b/beta_accents/app/testGet.php new file mode 100644 index 0000000..03dc369 --- /dev/null +++ b/beta_accents/app/testGet.php @@ -0,0 +1,18 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>TestGEt</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<script type="text/javascript" src="script.js"></script> +</head> + +<body> +<?php + include("include/connect.inc.php"); + include("popcreneau.php"); + include("poppersonne.php"); +?> +<hr/> +<pre><?php print_r($_GET); ?></pre> +</body> +</html> |