From 5dac82f52f45ad27f16ec2ff63ee75e2f39ef942 Mon Sep 17 00:00:00 2001
From: Ludovic Pouzenc <ludovic@pouzenc.fr>
Date: Sat, 30 Jun 2018 11:37:30 +0200
Subject: Renommage pour diff de beta_old1 vers beta_accents

---
 beta_accents/app/include/ludo/TODO_list.txt        |  24 +
 beta_accents/app/include/ludo/auth.inc.php         |  78 +++
 beta_accents/app/include/ludo/config.inc.php       |  74 +++
 .../app/include/ludo/div_create_or_modif.php       |  72 +++
 beta_accents/app/include/ludo/fonctions.inc.php    | 550 +++++++++++++++++++++
 .../app/include/ludo/html_elements.inc.php         | 185 +++++++
 beta_accents/app/include/ludo/mail_textarea.php    |  44 ++
 beta_accents/app/include/ludo/majDispo.php         |  39 ++
 beta_accents/app/include/ludo/redir.inc.php        |  20 +
 .../app/include/ludo/session_verify.inc.php        |   9 +
 10 files changed, 1095 insertions(+)
 create mode 100644 beta_accents/app/include/ludo/TODO_list.txt
 create mode 100644 beta_accents/app/include/ludo/auth.inc.php
 create mode 100644 beta_accents/app/include/ludo/config.inc.php
 create mode 100644 beta_accents/app/include/ludo/div_create_or_modif.php
 create mode 100644 beta_accents/app/include/ludo/fonctions.inc.php
 create mode 100644 beta_accents/app/include/ludo/html_elements.inc.php
 create mode 100644 beta_accents/app/include/ludo/mail_textarea.php
 create mode 100644 beta_accents/app/include/ludo/majDispo.php
 create mode 100644 beta_accents/app/include/ludo/redir.inc.php
 create mode 100644 beta_accents/app/include/ludo/session_verify.inc.php

(limited to 'beta_accents/app/include/ludo')

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>&nbsp;</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 '			&nbsp;&nbsp;';
+			generate_html_dispo_dire_non($idR, $idC);
+		}
+		else
+		{
+			if ( $estDispo == 'oui' )
+			{	// Disponible
+				generate_html_dispo_oui($idP, $idC);
+				//~ echo '				&nbsp;&nbsp;'."\n				";
+				generate_html_dispo_dire_non($idR, $idC);
+			}else
+			{
+				// Non Disponible
+				generate_html_dispo_dire_oui($idR, $idC);
+				//~ echo '				&nbsp;&nbsp;'."\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 '&amp;idL=' . $idL_interne . '&amp;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>&nbsp;';
+	}
+	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 '&amp;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>&nbsp;</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 '&amp;idL=' . $idL_interne . '&amp;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>&nbsp;</td>\n"; }
+			if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo "			<td>&nbsp;</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>&nbsp;</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>&nbsp;</td>\n";
+			echo "		</tr>\n";
+			
+			echo "		<tr>\n";
+			echo "			<td>&nbsp;</td>\n";
+			echo "			<td>Personnes absentes</td>\n";
+			foreach ( $creneaux as $c_id )
+			{
+				echo '			<td>' . $dispos[$c_id]['nbNonDispo'] . "</td>\n";
+			}
+			echo "			<td>&nbsp;</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 . '&amp;objetR=' . urlencode($objetR) . '&amp;lieuR=' . urlencode($lieuR) . '&amp;ordreJourR=';
+		echo urlencode($ordreJourR) . '&amp;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&eacute;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&eacute;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&amp;idC=$idC&amp;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&amp;idC=$idC&amp;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&eacute;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 &amp;
+	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
-- 
cgit v1.2.3