<?php
/*
Copyright (C) 2001, 2002 Bertand Pallie, Loc Dayot - Mairie de Pierrefitte-sur-Seine (93)
2003 Vincent Vairelles - Mairie de Dijon (21)
EPNadmin - Version 0.6
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
http://epnadmin.pierrefitte93.fr/
*/
require_once("header.inc.php");
if (! defined("PARCOURS") && ! defined("SESSIONS"))
{
echo $fctnonactive;
exit;
}
//require_once("constantes.inc.php"); // dfinition des constantes
require_once("fonctions.inc.php"); // concernant des fonctions transversales inclassables
require_once("mysql.inc.php"); // concernant mysql
require_once("sessions.inc.php"); // concernant les sessions et initiations
require_once("usagers.inc.php"); // concernant la gestion des usagers
//require_once("reservations.inc.php"); // concernant les rservations des postes en accs individuel par des usagers
//require_once("tableaux.inc.php"); // Concernant l'affichage transpos d'un tableau
//require_once("siteweb.inc.php"); // concernant les pages perso des usagers et les sites web des structures
require_once("dateheure.inc.php"); // concernant la manipulation des heures et des dates, formulaire, conversion...
//require_once("structures.inc.php"); // concernant les structures
//require_once("initiations.inc.php"); // concernant les initiations et les thmes
require_once("parcours.inc.php"); // concernant les parcours des usagers et leur positionnement
$ptitr=$sinscriptionsession;
$titr = $stitreinscriptionsession;
$datemaj="3 mai 2003";
define("COULEUR", COULEUR_SESSIONS);
require("entete.inc.php");
function formInscriptionSession($id_session)
{
global $PHP_SELF,
$sIdentifiant,$sCredits,$sStatut,$sinscrit,$sdesinscrire,$seffectue,$sabsent,$sprobleme,
$snbparticipants,$sbilan,$envoyer;
echo "<form name=\"form\" method=\"post\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"operation\" value=\"11\">
<input type=\"hidden\" name=\"id_session\" value=\"$id_session\">
<table align=\"center\" border=\"1\">
<tr><th>$sIdentifiant</th><th>$sCredits</th><th>$sStatut</th></tr>";
$res = recherche("parcours", "id_session", $id_session);
while($parcours = fetch_object($res))
{
$usager = trouveUsager($parcours->id_usager);
echo "<tr>
<td";
if ($usager->credit_activites_collectives<=0)
echo " bgcolor=\"".$couleurTarif[$usager->id_tarif]."\"";
echo "><A HREF=\"usagers.php?id_usager=$usager->id\">
$usager->prenom $usager->nom ($usager->login)</A></td>
<td nowrap>I : ";
if ($usager->credit_acces_individuel != 0)
echo datetoheure(min2h($usager->credit_acces_individuel));
if ($usager->fin_abonnement_acces_individuel>"1")
echo "->".datetodatecourt($usager->fin_abonnement_acces_individuel);
echo "<br>C : ";
if ($usager->credit_activites_collectives!=0)
echo datetoheure(min2h($usager->credit_activites_collectives));
if ($usager->fin_abonnement_activites_collectives>"1")
echo "->".datetodatecourt($usager->fin_abonnement_activites_collectives);
echo "</td>
<td>
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"inscrit(e)\"";
if ($parcours->etat=="indispensable" | $parcours->etat=="conseill") echo " checked"; echo ">$sinscrit
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"dsinscrire\">$sdesinscrire
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"effectu\"";
if ($parcours->etat=="effectu") echo " checked"; echo ">$seffectue
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"en retard\"";
if ($parcours->etat=="en retard") echo " checked"; echo ">en retard
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"absent\"";
if ($parcours->etat=="absent") echo " checked"; echo ">$sabsent
<input type=\"radio\" name=\"id$parcours->id_usager\" value=\"problme\"";
if ($parcours->etat=="problme") echo " checked"; echo ">$sprobleme
</td>
</tr>\n";
} // while
$res = recherche("sessions", "id", $id_session);
$session = fetch_object($res);
if ($session->nom_session!="")
{
echo "<tr><td>
$snbparticipants :</td><td>
<input type=\"text\" name=\"nbparticipants\" value=\"$session->nbparticipants\" size=\"10\" maxlength=\"2\">
</td><tr>\n";
}
else
echo "<input type=\"hidden\" name=\"nbparticipants\" value=\"0\">";
echo "<tr><td colspan=3 align=center>$sbilan
<br><textarea name=\"commentaires\" rows=\"8\" cols=\"50\">$session->commentaires</textarea>
</td></tr>\n";
echo "<tr><td colspan=3><center><input type=\"submit\" name=\"Envoyer\" value=\"$envoyer\"></center></td></tr>
</form>
</table>\n";
} // function formInscriptionSession
// Dbut de la page
switch($operation)
{
case 3: // Formulaire d'inscription
if (PARCOURS_MOI<"w")
{
echo $pasledroit;
break;
}
echo "<table align=center border=1><tr><td align=center>
<form name=\"form\" method=\"post\" action=\"$PHP_SELF\">
<input type=\"hidden\" name=\"operation\" value=\"31\">
<input type=\"hidden\" name=\"id_session\" value=\"$id_session\">
<input type=\"hidden\" name=\"id_usagerv\" value=\"$id_usager\">
<b>Suis-je certain(e) de vouloir m'inscrire la session d'initiation ?</b>";
$res = recherche("sessions", "id", $id_session);
$session = fetch_object($res);
if ($session->id_initiation)
{
$res2 = recherche("initiations", "id", $session->id_initiation);
$initiation=fetch_object($res2);
echo "<br><b>$initiation->initiation</b>";
}
else
echo "<br><b>$session->nom_session</b>";
echo "<br>du ".datetodate($session->date);
echo " de ".datetoheure($session->debut);
echo " ".datetoheure($session->fin);
echo "<br> ".localisation($session->id_localisation);
echo " avec ".$session->animateur;
echo "</td></tr>
<tr><td align=center><input type=\"submit\" name=\"Ajouter\" value=\"$souijeminscris\">
</form></td></tr></table>\n"; // '
break;
// LD : Normalement, il n'y en a plus besoin, grce la rcriture de case 31...
case 33 :
/* if ($is_ident=="structure" && PARCOURS_AUTRES>="w")
{
echo $pasledroit;
break;
}
$confirmeInscription='vrai';
*/
case 32 : // Ajout de l'initiation au parcours pdagogique
/* if (PARCOURS_AUTRES<"w" && (PARCOURS_MOI<"w" || $id_usager!=$id_usagerv))
{
echo $pasledroit;
break;
}
ajouteInitiation($id_usagerv, $id_initiation);
*/
case 31 : // Ajout final
// C'est tellement brouillon, cette programmation, que je recommence tout. LD 16/02/2003
// Est-ce qu'on a le droit d'tre ici
if (PARCOURS_AUTRES<"w" && (PARCOURS_MOI<"w" || $id_usager!=$id_usagerv))
{
echo $pasledroit;
break;
}
// Est-ce que la session existe
$req1="SELECT * FROM sessions WHERE id=\"$id_session\"";
$res1=executeRequete($req1);
if (!$session=fetch_object($res1))
{
echo "<p><b>$ssessionintrouvable</b></p>";
break;
}
// Est-ce que l'usager existe
$req2="SELECT * FROM usagers WHERE id=\"$id_usagerv\"";
$res2=executeRequete($req2);
if (!$usager=fetch_object($res2))
{
echo "<p><b>$susagerintrouvable</b></p>";
break;
}
// Est-ce que la session est ouverte aux inscriptions automatiques
if ($session->inscriptionauto!="oui")
{
echo "<p><b>$ssessionpasinscriptionauto</b></p>";
break;
}
// Est-ce que la session fait partie d'un parcours ?
if ($session->id_initiation>0)
{
$req3="SELECT * FROM initiations WHERE id=$session->id_initiation";
$res3=executeRequete($req3);
$initiation=fetch_object($res3);
if ($initiation->dans_parcours=="oui")
{
// Est-ce que l'initiation fait partie du parcours de l'usager
$req4 = "SELECT * FROM parcours
WHERE id_initiation=$session->id_initiation AND id_usager=$id_usagerv";
$res4 = executeRequete($req4);
if (!$parcours=fetch_object($res4))
{ // l'initiation ne fait pas partie du parcours pdagogique
echo "<p>$sinitiationpasparcours</p>\n";
if (PARCOURS_AUTRES<"w" && (PARCOURS_MOI<"w" || $id_usager!=$id_usagerv))
{
echo $pasledroit;
break;
}
ajouteInitiation($id_usagerv, $initiation->id);
} // !$parcours
// Est-ce que la session est accessible,
if (!accessible($id_usagerv, $session->id_initiation))
if (PARCOURS_AUTRES<"w")
{ // non :
echo "<p><b></b>$sfautsinitieravant</b></p>\n";
printf ($sveutvoirlisteinitiationsaccessibles, "parcours.php?operation=6");
printf($sveutvoirparcours, "parcours.php");
printf($sveutallercompetences, "positionnement.php");
break;
} // ! accessible
else
{ // on prend le droit
echo "<p><b></b>$sfautsinitieravant</b></p>\n";
}
} // $dans_parcours
} // $id_initiation
// Est-ce qu'il reste de la place
// on regarde si la session n'est pas pleine
// Combien sont inscrits ?
$req5 = "SELECT count(*) AS compte FROM parcours
WHERE id_session=$id_session";
if ($res5 = executeRequete($req5))
{
$nbparcours = fetch_object($res5);
if (($inscrirs=$nbparcours->compte) >= ($nbmax=nbmaxparticipants($id_session)))
{
if ($is_ident!="structure" && $is_ident!="animateur")
{
echo "<p><b>$splusdeplace</b></p>\n";
break;
}
else
printf("<p><b>$ssessionpleine</b></p>\n", $inscrits, $nbmax);
}
} // $res
// Est-ce que l'usager n'a pas dpass son quota d'heures rservables
/* Pour le moment, le quota d'heures n'est pas valable pour les initiations.
$req1 = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(fin)-TIME_TO_SEC(debut))) AS nb FROM utilisation_postes
WHERE id_usager='$id_usager' AND (date>CURRENT_DATE OR (date=CURRENT_DATE AND debut>=CURRENT_TIME))
AND etat<>'annule' AND etat<>'non tenue'";
$res1 = executeRequete($req1);
if ($nbresa = mysql_fetch_object($res1)) // nombre d'heures dj rserves
$nbresa = $nbresa->nb;
else
$nbresa = 0;
if ($nbresa=="") $nbresa=0;
// Nombre d'heures reservables
$nbhr=resteCredit($id_usager, "reservable");
if ($nbresa >= $nbhr)
{
echo "<p><b>Dsol, mais vous avez puis le nombre d'heures rservables.</b>
Veuillez contacter le personnel de l'espace.</p>\n";
break;
} */
// Est-ce que l'usager n'est pas dj inscrit cette session
$req8="SELECT * FROM parcours
WHERE id_usager=$id_usagerv
AND id_session=$session->id";
$res8=executeRequete($req8);
if (num_rows($res8))
{
echo "<p><b>$sdejainscrit</b></p>";
break;
}
// Est-ce que l'usager n'est pas inscrit une autre session en mme temps
$req6="SELECT * FROM parcours
LEFT JOIN sessions ON sessions.id=parcours.id_session
WHERE id_usager=$id_usagerv
AND date='$session->date'
AND fin>'$session->debut' AND debut<'$session->fin'";
$res6=executeRequete($req6);
if (num_rows($res6))
{
echo "<p><b>$sdejainscritautre</b></p>";
break;
}
// vrification que l'usager n'a pas dj rserv la mme heure sur un poste
$req7 = "SELECT * FROM utilisation_postes
WHERE (etat<>'annule')
AND (date='$session->date')
AND (debut<='$session->debut' AND '$session->debut'<fin)
AND id_usager=$id_usagerv";
$res7 = executeRequete($req7);
if (fetch_object($res7))
{
$mes.="<p><b>$sreservationsynchro</b></p>\n";
break;
}
// Est-ce que l'usager n'est pas dj inscrit cette mme initiation
if ($initiation)
{
$req11="SELECT * FROM parcours
LEFT JOIN sessions ON sessions.id=parcours.id_session
WHERE id_usager=$id_usagerv AND date>=NOW()
AND parcours.id_initiation=$session->id_initiation";
$res11=executeRequete($req11);
if (fetch_object($res11))
{
echo "<p><b>$sdejainscritapres</b></p>";
break;
}
}
// Est-ce que la session fait partie de la table parcours
// C'est juste pour savoir si'il faut crer l'enregistrement ou le modifier.
$req9 = "SELECT * FROM parcours
WHERE id_initiation=$session->id_initiation
AND id_usager=$id_usagerv
AND (id_session=0 OR id_session IS NULL)";
$res9 = executeRequete($req9);
if (fetch_object($res9))
{
$req10="UPDATE parcours SET id_session=$id_session
WHERE id_usager=$id_usagerv
AND id_initiation=$session->id_initiation
AND (id_session=0 OR id_session IS NULL)";
}
else // Ca ne fait pas partie du parcours
{ // Il faut alors crer l'enregistrement
$req10="INSERT INTO parcours (id_usager, id_initiation, id_session, etat)
VALUES ($id_usagerv, $session->id_initiation, $id_session, 'conseill')";
}
if (executeRequete($req10))
echo "<p>$sokinscrit</p>\n";
else
echo "<p><b>$snokinscrit</b></p>\n";
if ($is_ident=="usager" || $is_ident=="animateur")
printf($sveutvoirparcours, "parcours.php");
break;
case 8: // annulation confirmer
if (PARCOURS_AUTRES<"w" && PARCOURS_MOI<"w")
{
echo $pasledroit;
break;
}
$session=trouveSession($id_session);
// Regarder s'il s'agit d'une session pour le jour mme.
if (date("Y-m-d", strtotime($session->date)) == date("Y-m-d", strtotime("now")) )
{
echo "<p><b>$snokannuleinscription</b></p>\n";
}
else
{ // Il s'agit d'une session programme plus tard
echo "<form name=\"form\" method=\"post\" action=\"$PHP_SELF\">
<table align=center border=1>
<tr><td align=center><b>$ssuisjesurannulerinscription</b>";
$res = recherche("sessions", "id", $id_session);
$session = fetch_object($res);
if ($session->id_initiation)
{
$res2 = recherche("initiations", "id", $session->id_initiation);
$initiation=fetch_object($res2);
echo "<br><b>$initiation->initiation</b>";
}
else
echo "<br><b>$session->nom_session</b>";
echo "<br>du ".datetodate($session->date);
echo " de ".datetoheure($session->debut);
echo " ".datetoheure($session->fin);
echo "<br> ".localisation($session->id_localisation);
echo " avec ".$session->animateur;
echo "</td></tr>
<tr><td align=center>
<input type=\"submit\" name=\"Annuler\" value=\"$souijannule\">
<input type=\"hidden\" name=\"id_session\" value=\"$id_session\">
<input type=\"hidden\" name=\"id_usager\" value=\"$id_usager\">
<input type=\"hidden\" name=\"operation\" value=\"81\">
</td></tr></table>
</form>"; //'
}
break;
case 81: // annulation confirme
if (PARCOURS_AUTRES<"w" && PARCOURS_MOI<"w")
{
echo $pasledroit;
break;
}
$res=recherche("usagers", "id", $id_usager);
if ($usager = fetch_object($res))
{
// on retrouve la session pour calculer la dure
$res = recherche("sessions", "id", $id_session);
$session = fetch_object($res);
if ($session->id_initiation!=0)
{ // Il faut regarder si a fait partie du parcours.
$res2=recherche("initiations", "id", $session->id_initiation);
$initiation=fetch_object($res2);
if ($initiation->dans_parcours)
{
// on retire l'inscription en laissant l'initiation dans le parcours
$reqsuppr = "UPDATE parcours SET id_session=NULL
WHERE id_session=$id_session AND id_usager=$id_usager";
}
}
if (! $reqsuppr)
{ // Ca ne faisait pas partie du parcours, il faut supprimer la ligne
$reqsuppr = "DELETE FROM parcours
WHERE id_session=$id_session AND id_usager=$id_usager";
}
if ($res3 = executeRequete($reqsuppr))
{ // la modification s'est bien passe
echo "<p>$sokannulationinscription</p>\n";
// calcul de la dure de la session pour remettre le crdit d'heure
$dureeSession = h2min($session->fin) - h2min($session->debut);
// On regarde s'il s'agit d'une session de dcouverte
if ($session->id_initiation!='1') // id=1 = session de dcouverte
{
$credit = resteCredit($id_usager, "activites_collectives", $dureeSession);
if ($credit>0)
{
printf($srestecreditactivcoll, min2h($credit));
}
}
}
else
echo "<p><b>$snokannulationinscription</b></p>\n";
if ($is_ident!="usager" && $is_ident!="animateur")
printf($svoiplanningsessions, "table_horaire_session.php");
else
printf($sveutvoirparcours, "parcours.php");
}
else
echo "<p><b>$susagerintrouvable<br>$snokannulationinscription</b></p>\n";
break;
case 11 : // Traitement de la mise jour de la liste des participants
if ($is_ident!="structure" && $is_ident!="animateur")
{
echo $pasledroit;
break;
}
if (PARCOURS_AUTRES>="w")
for ($i=0;$i<100000;$i++) // On regarde tous les usagers possibles
{
$nom = "id".$i;
if (isset($$nom)) // l'usager est concern
{
// on recherche l'ancien tat d'inscription
$req = "SELECT * FROM parcours WHERE id_usager='$i' AND id_session='$id_session'";
$res = executeRequete($req);
$pa = fetch_object($res);
// on en profite pour voir s'il n'y a pas un doublon
while ($pa2 = fetch_object($res))
{
echo "<br>$ssupprdoublon $i";
$r = "DELETE FROM parcours WHERE id_usager='$i' AND id_session='$id_session' LIMIT 1";
$s = executeRequete($r);
}
switch ($$nom) // suivant l'tat demand dans le formulaire
{
case 'dsinscrire' :
$req = "UPDATE parcours SET id_session='' WHERE id_usager='$i' AND id_session='$id_session'";
if ($res = executeRequete($req))
echo "<br>$i $sdesinscrit\n";
break;
case 'inscrit(e)' :
$req = "UPDATE parcours SET etat='indispensable'
WHERE id_usager='$i' AND id_session='$id_session'";
if ($res = executeRequete($req))
echo "<br>$i $stoujoursinscrit\n";
break;
case '' :
break;
case 'problme' :
case 'effectu' :
$req = "UPDATE parcours SET etat='".$$nom."' WHERE id_usager='$i' AND id_session='$id_session'";
if ($res = executeRequete($req))
echo "<br>$i ".$$nom;
if ($pa) // il y a un tat prcdent
if ($pa->etat=="indispensable" || $pa->etat=="conseill" || $pa->etat=="absent")
{
// on retrouve l'id de l'initiation
$req8 = "SELECT * FROM sessions WHERE sessions.id='$id_session'";
$res8 = executeRequete ($req8);
$init = fetch_object($res8);
if ($init->id_initiation!='1') // si ce n'est pas la session de dcouverte obligatoire
{ // on va retirer du crdit d'heures
$dureeSession = h2min($init->fin) - h2min($init->debut);
$credit = resteCredit($i, "activites_collectives", $dureeSession);
printf($screditcollretire, datetoheure(min2h($dureeSession)), datetoheure(min2h($credit)) );
}
}
break;
case 'absent' : // absent
default : // ou en retard
$req = "UPDATE parcours SET etat='".$$nom."'
WHERE id_usager='$i' AND id_session='$id_session'";
if ($res = executeRequete($req))
echo "<br>$i ".$$nom;
if ($pa->etat!="absent")
{ // Comme punition, il pourra moins rserver, punition d'une heure, quelque soit la dure de la session...
$credit = resteCredit($id_usager, "reservable", -60);
echo $screditresemuh;
}
break;
} // switch
if ($pa) // on a retrouv l'ancienne inscription ?
if (($pa->etat=="effectu" || $pa->etat=="problme") && ($$nom!="effectu"))
{
// on retrouve l'id de l'initiation
$req8 = "SELECT * FROM sessions
WHERE sessions.id='$id_session'";
$res8 = executeRequete($req8);
$init = fetch_object($res8);
if ($init->id_initiation!='1') // si ce n'est pas la session de dcouverte obligatoire
{ // On remet le crdit si besoin...
$dureeSession = h2min($init->fin) - h2min($init->debut);
$credit = resteCredit($i, "activites_collectives", $dureeSession);
printf($screditcollremis, datetoheure(min2h($dureeSession)), datetoheure(min2h($credit)) );
}
}
} // if l'usager est dans le formulaire de la liste des inscrits
} // for et if
// mise jour du commentaire s'il y en a et aussi du nombre de prsents si besoins
$req = "UPDATE sessions SET commentaires=\"$commentaires\",
nbparticipants=\"$nbparticipants\"
WHERE id=$id_session";
executeRequete($req);
break;
default : // autre cas, affichage de la liste des inscrits
echo cadre_debut($slisteinscrits);
if (SESSIONS_AUTRES>="r")
{
$res=recherche("sessions", "id", $id_session);
if (! $session=fetch_object($res))
{
echo "<p><b>$ssessionintrouvable</b></p>";
echo cadre_fin();
break;
}
echo "<table align=center>";
session($id_session);
echo "<tr><td align=center>";
formInscriptionSession($id_session);
echo "</td></tr></table>\n";
// TODO : est-on administrateur ?
//if ($isadmin)
{
// recherche de la session
if ($session->id_initiation>0)
{
echo "<hr>\n";
if ($code_barre!="" && $id=="")
$id=substr($code_barre,0,4);
affiche_liste_usagers($id, $login, $nom, $prenom, "id", "SESSION");
}
} // if $isadmin
} //if $id_structure
else
echo $pasledroit;
echo cadre_fin();
break;
} // switch
if ($id_session && PARCOURS_AUTRES>="r")
printf($svoirlisteinscrits, "$PHP_SELF?id_session=$id_session");
if (SESSIONS>"~" && ($is_ident=="structure" || $is_ident=="animateur"))
{
printf($svoiplanningsessions, "table_horaire_session.php?date=$date");
printf($svoirlistesessionfutur, "session.php?operation=4");
printf($svoirlistesessionpasse, "session.php?operation=5");
}
if (SESSIONS_MOI>="w" || SESSIONS_AUTRES>="w")
printf($sajoutersession, "session.php?operation=1");
require("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
?>