<?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)
{
	// Alignement html
	require_once('html_elements.inc.php');
	if ( ! $isEditable )
	{
		if ( $withTD ) { echo "			<td>\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}\">\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;';
				generate_html_dispo_dire_non($idR, $idC);
			}else
			{
				// Non Disponible
				generate_html_dispo_dire_oui($idR, $idC);
				echo '			&nbsp;&nbsp;';
				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, $idP_Self)
{
	// 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 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); 
		//echo "$is_admin = ( $idP_Self == $idP_orga );";
		$is_admin = ( $idP_Self == $idP_orga );
		$montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ;
		//echo "DEBUG : annul�� $estAnnulee\n";
		$estAnnulee = ( $estAnnulee == 'oui' );
		$estFixee = ( $idC_Fixe != null);
	}
	else
	{
		// TODO : erreur
	}
	// DEBUG : tests en for�ant les variables
	//$estAnnulee=true;
	
	echo "\nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n";
?>
<table class="details" cellspacing="0" 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>Personnes</th>' . "\n";	

	// Remplissage des ent�tes de colonnes (cr�neaux)
	$query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM 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;
			echo '			<th>';
			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;

		}
	}
	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>
	<form id="formmail" action="sendmail.php" method="get">
		<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 Choisir ch, Creneau c, Personne p, Appartenir a, 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 Choisir ch, 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=='oui' ) { $dispos[$idC]['nbDispo']++; }
			if ( $estDispo=='non' ) { $dispos[$idC]['nbNonDispo']++; }
		}
	}
	//print_r($dispos);
	

	$query='SELECT p.idP, p.prenomP, p.nomP FROM Personne p, Appartenir a, 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";
				generate_html_dispo_case($idR, $p[0], $c_id, ( ! $estFixee && ! $estAnnulee && ( $p[0]==$idP_Self ) ),$estDispo, true);
			}
			// 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?idL=';
					echo $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>&nbsp;</td>'; }
			if ( $is_admin && ! $estFixee && ! $estAnnulee ) { echo "\n				<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 )
			{
				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 "		</form>\n	</table>\n";
}

?>