<?php
/*
Copyright (C) 2001 Loc Dayot
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");
require_once("constantes.inc.php"); // dfinition des constantes
if (!defined("FCT_POSITIONNEMENT"))
{
echo $fctnonactive;
exit;
}
//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=$spositionnement;
$titr = $sposititre;
define("COULEUR", COULEUR_POSITIONNEMENT);
$datemaj="18 mai 2003";
require("entete.inc.php");
// dbut des fonctions -
function rechercheQuestion($id, $champ="id_initiation")
{
$req = "SELECT *, RAND() AS hasard FROM questions WHERE $champ=$id";
$req .= " ORDER BY hasard LIMIT 0, 4";
$res = executeRequete($req);
return $res;
}
function formulaireTheme($mode, $id_usager, $id_theme, $niveaucourant, $id_initiation)
{
global $PHP_SELF, $sposiindiquerniveau, $snon, $sposijaiundoute, $soui, $sposijaibesoindaide,
$sposioucachoerdirectniveau, $sposimettreajourleniveau, $sposidebutant, $sposiinitie,
$sposiavance, $sposienvoyer;
echo "<script src=\"autoeval.js\">\n";
echo "</script>\n";
echo "<form name=\"formulaire\" action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">\n";
echo "<input type=\"hidden\" name=\"operation\" value=\"2\">\n";
echo "<input type=\"hidden\" name=\"mode\" value=\"$mode\">\n";
echo "<input type=\"hidden\" name=\"id_usager\" value=\"$id_usager\">\n";
echo "<input type=\"hidden\" name=\"id_theme\" value=\"$id_theme\">\n";
echo "<input type=\"hidden\" name=\"id_initiation\" value=\"$id_initiation\">\n";
echo "<input type=\"hidden\" name=\"niveaucourant\" value=\"$niveaucourant\">\n";
echo "<table border=1 align=center>";
$req = "SELECT * FROM initiations WHERE id=$id_initiation";
$res = executeRequete($req);
if ($initiation=fetch_object($res))
{
$res2=recherchePositionnement($id_usager, $initiation->id);
if ($res2)
$positionnement = fetch_object($res2);
else
$positionnement = "";
echo "<tr><th>$initiation->initiation</th></tr>\n";
// Les questions d'aide au positionnement
$res3 = rechercheQuestion ($initiation->id, "id_initiation");
$ques=false;
while ($question = fetch_object($res3))
{
if (! $ques)
echo "<tr><td><i>$sposiindiquerniveau</i>\n";
echo "<br>\n<br>\n<b>$question->question</b>\n";
echo "<br> <input type=\"radio\" name=\"rponse_".$id_initiation."_".$question->id."\" value=\"non\" onClick=\"autoeval($initiation->id)\">$snon\n";
echo " <input type=\"radio\" name=\"rponse_".$id_initiation."_".$question->id."\" value=\"doute\" onClick=\"autoeval($initiation->id)\")>$sposijaiundoute\n";
echo " <input type=\"radio\" name=\"rponse_".$id_initiation."_".$question->id."\" value=\"oui\" onClick=\"autoeval($initiation->id)\">$soui\n";
if ($question->url_aide!="")
echo " <a href=\"".$question->url_aide."\" target=\"aide\">$sposijaibesoindaide</a>";
$ques=true;
}
if($ques)
{
echo "<br>\n<br>\n<a href=\"javascript:autoeval($initiation->id)\">$sposimettreajourleniveau</a></td></tr>\n";
echo "</td></tr>\n";
}
// Directement le niveau
echo "<tr><td>";
if ($ques)
echo "<i>$sposioucachoerdirectniveau</i><br>";
echo "<input type=\"radio\" name=\"niveau\" value=\"dbutant(e)\"";
if ($positionnement->niveau=="dbutant(e)")
echo " checked";
echo "><b>$sposidebutant</b>\n";
echo "<br><input type=\"radio\" name=\"niveau\" value=\"initi(e)\"";
if ($positionnement->niveau=="initi(e)")
echo " checked";
echo "><b>$sposiinitie</b>\n";
echo "<br><input type=\"radio\" name=\"niveau\" value=\"avanc(e)\"";
if ($positionnement->niveau=="avanc(e)")
echo " checked";
echo "><b>$sposiavance</b>\n";
echo "</td></tr>";
}
echo "</table>\n";
echo "<p align=\"center\"><input type=\"submit\" name=\"Envoyer les rponses\" value=\"$sposienvoyer\"><p>\n";
echo "</form>\n";
}
function afficheEvaluation($id_usager)
{
global $PHP_SELF, $info, $sposipasencoreeu, $sposimevaluer,
$sposimereevaluer, $sposidebutant, $sposiinitie, $sposiavance, $nbmaxthemes;
echo "<table align=\"center\" cellspacing=\"0\">\n";
for ($id_theme=1; $id_theme<=$nbmaxthemes; $id_theme++)
{
$res = rechercheTheme($id_theme);
$theme = fetch_object($res);
$req = "SELECT positionnement.*, initiation, initiations.niveau as iniveau FROM positionnement";
$req.= " LEFT JOIN initiations ON positionnement.id_initiation=initiations.id";
$req.= " WHERE (id_usager=$id_usager) AND (id_theme=$id_theme) ORDER BY iniveau, id_initiation";
$res2 = executeRequete($req);
echo "<tr><td rowspan=\"2\" align=\"center\" valign=\"top\" bgColor=\"".COULEUR_POSITIONNEMENT."\">";
if ($theme->url_image!="")
echo "<img src=\"./$theme->url_image\" alt=\"$theme->theme : $theme->commentaire\" border=0 height=80>";
echo "</td>\n";
echo "<td bgColor=\"".COULEUR_POSITIONNEMENT."\" align=center><font size=\"+2\"><b>$theme->theme</b>";
if ($niveau!="") echo " - $niveau";
echo "</font>";
if ($theme->commentaire!="") echo "<br>$theme->commentaire";
echo "</td></tr>\n";
echo "<tr><td width=\"100%\"><table width=\"100%\">";
$aucun=true;
while ($positionnement=fetch_object($res2))
{
$aucun=false;
switch ($positionnement->niveau)
{
case "dbutant(e)" : $c="#FF0000\">$sposidebutant"; break; //"
case "initi(e)" : $c="#00FF00\">$sposiinitie"; break; //"
case "avanc(e)" : $c="#880088\">$sposiavance"; break; //"
}
echo "<tr><td>$positionnement->initiation</td>
<td><font color=\"$c</font></td>
<td align='right'><a href=\"$PHP_SELF?operation=4&mode=session&id_usager=$id_usager&id_initiation=$positionnement->id_initiation&id_theme=$id_theme&niveau=$positionnement->iniveau\">$sposimereevaluer</a></td>
</tr>\n"; // "
}
if ($aucun)
echo "<tr><td><i>$sposipasencoreeu</i></td>
<td>
<a href=\"$PHP_SELF?operation=3&mode=session&id_usager=$id_usager&id_theme=$id_theme\">$sposimevaluer</a>
</td></tr>";
echo "</table></td></tr>
<tr><td colspan=2 bgcolor=\"#FFFFFF\"> </td></tr>\n";
}
echo "</table>\n";
}
// fin des fonctions -
// Dbut de la page effective
// Calcul de NBMAXTHEMES
$req="SELECT * FROM themes";
$res=executeRequete($req);
$nbmaxthemes=num_rows($res);
free_result($res);
switch ($operation)
{
case 2 : // Il s'agit d'un retour de formulaire. On doit exploiter les donnes.
if (POSITIONNEMENT_MOI<"w" && POSITIONNEMENT_AUTRES<"w")
{
echo $pasledroit;
break;
}
$req = "SELECT * FROM initiations WHERE id=$id_initiation";
$res = executeRequete($req);
if ($initiation = fetch_object($res))
{
// supprimer un ancien positionnement s'il existait
$req = "DELETE FROM positionnement WHERE id_usager=$id_usager AND id_initiation=$initiation->id";
executeRequete($req);
if ($niveau != "")
{ // ajout du nouveau positionnement
$req = "INSERT INTO positionnement (id_usager, id_initiation, niveau)";
$req .= " VALUES (\"$id_usager\", \"$initiation->id\", \"$niveau\")";
executeRequete($req);
}
}
// pour savoir si on prsente le niveau suprieur
$req = "SELECT positionnement.niveau AS niv, COUNT(*) AS nb FROM positionnement
LEFT JOIN initiations ON positionnement.id_initiation=initiations.id
WHERE id_usager='$id_usager' AND initiations.niveau='$niveaucourant' AND id_theme=$id_theme
GROUP BY positionnement.niveau";
$res = executeRequete($req);
while ($res2 = fetch_object($res))
{
// si l'usager n'est pas dbutant, on proposera le niveau suivant
// S'il est dbutant, il ne compredra pas les questions suivantes, c'est pas la peine
if ($res2->niv!="dbutant(e)")
$continue="oui";
}
if (!$continue) $niveaucourant="rien";
case 3 : // Calcul de l'initiation, du niveau ou du thme suivant
if (POSITIONNEMENT_MOI<"w" && POSITIONNEMENT_AUTRES<"w")
{
echo $pasledroit;
break;
}
$ancien_niveau=$niveaucourant;
$ancien_initiation=$id_initiation;
$ancien_theme=$id_theme;
if (!$id_theme)
$id_theme=1;
if (!$niveaucourant)
$niveaucourant="dbutant(e)";
if (!$id_initiation)
$id_initiation=-1;
$req = "SELECT * FROM initiations
WHERE id>$id_initiation AND id_theme=$id_theme AND niveau='$niveaucourant'
ORDER BY id";
$res = executeRequete($req);
if ($initiation = fetch_object($res))
$id_initiation= $initiation->id; // on passe l'initiation suivante
if (!$initiation)
{
do
{
switch ($niveaucourant)
{
case "dbutant(e)" :
$niveaucourant="initi(e)";
$id_initiation=-1;
break;
case "initi(e)" :
$niveaucourant="avanc(e)";
$id_initiation=-1;
break;
default :
$niveaucourant="dbutant(e)";
$id_initiation=-1;
if (!isset($id_theme))
$id_theme = 1;
else
$id_theme++;
break;
}
$req = "SELECT * FROM initiations
WHERE id>$id_initiation AND id_theme='$id_theme' AND niveau='$niveaucourant'
ORDER BY id";
$res = executeRequete($req);
}
while (($id_theme<=$nbmaxthemes) && !$initiation=fetch_object($res));
$id_initiation = $initiation->id;
}
if ($id_theme!=$ancien_theme && $mode=="session")
{
echo "<h3>$spositermine</h3>\n";
echo cadre_debut($sposibilandemescompetences);
afficheEvaluation($id_usager);
echo cadre_fin();
break;
}
// pas de break;
case 4 : // Prsentation du formulaire
if (POSITIONNEMENT_MOI<"w" && POSITIONNEMENT_AUTRES<"w")
{
echo $pasledroit;
break;
}
if ($id_theme==$nbmaxthemes+1) // Il n'y a plus de thme, la positionnement est temrin.
{
echo "<h3>$spositermine</h3>\n";
echo cadre_debut($sposibilandemescompetences);
afficheEvaluation($id_usager);
}
else // Le positionnement n'est pas termin, on peut continuer.
{
if (!$niveaucourant) $niveaucourant="dbutant(e)";
$res = rechercheTheme($id_theme);
$theme = fetch_object($res);
echo cadre_debut($sposiautoevaluation);
afficheTheme($theme,$niveaucourant);
formulaireTheme($mode, $id_usager, $id_theme, $niveaucourant, $id_initiation);
}
echo cadre_fin();
break;
case 5 : // Repositionnement dans le thme qui concerne la denire initiation vcue ou en cours
// Trouver la dernire session effectue ou en cours (ie = dont le dbut est le plus rcent
$req = "SELECT parcours.id_initiation AS id_initiation, id_theme, date, debut,
initiation, animateur
FROM parcours
LEFT JOIN sessions ON parcours.id_session=sessions.id
LEFT JOIN initiations ON parcours.id_initiation=initiations.id
WHERE id_usager=$id_usager
AND sessions.date<=NOW()
AND (parcours.etat='effectu' OR parcours.etat='conseill' OR parcours.etat='indispensable')
AND initiations.dans_parcours='oui'
ORDER BY sessions.date, sessions.debut DESC";
echo cadre_debut($sposiapresinitiation);
if (POSITIONNEMENT_MOI<"w" && POSITIONNEMENT_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
if (! $res=executeRequete($req))
{
echo "<p>$sposievalapresinitiationpasini</p>";
echo cadre_fin();
break;
}
$nbsess=5;
echo "<table align=center border=1>";
$aucun=TRUE;
while ($nbsess>0 && $parcours = fetch_object($res))
{
$aucun=FALSE;
$nbsess--;
echo "<tr>\n";
$res = recherche("themes", "id", $parcours->id_theme);
$theme = fetch_object($res);
echo "<td><img src=\"$theme->url_image\" alt=\"$theme->theme\" border=0 height=20></td>\n";
echo "<td>$parcours->initiation</td>\n";
echo "<td>le ".datetodate($parcours->date)." ".datetoheure($parcours->debut)." avec $parcours->animateur";
if (POSITIONNEMENT_MOI>="w" || POSITIONNEMENT_AUTRES>="w")
echo "<td><a href=\"$PHP_SELF?operation=4&mode=session&id_theme=$parcours->id_theme&id_initiation=$parcours->id_initiation\">me repositionner</a></td>";
echo "</tr>\n";
}
if ($aucun)
echo "<p>$sposievalapresinitiationpasini</p>";
echo "</table>\n";
echo cadre_fin();
break;
default : // Affichage du compte-rendu du positionnement
echo cadre_debut($sposibilandemescompetences);
if (POSITIONNEMENT_MOI>="r" || POSITIONNEMENT_AUTRES>="r")
afficheEvaluation($id_usager);
else
echo $pasledroit;
echo cadre_fin();
break;
} // switch
echo "<hr>\n";
echo "<p align=center>";
if (POSITIONNEMENT_MOI>="w" || POSITIONNEMENT_AUTRES>="w")
echo "<a href=\"?operation=3&id_usager=$id_usager\">$sposirecommencertout</a> - ";
if (POSITIONNEMENT_MOI>="r" || POSITIONNEMENT_AUTRES>="r")
echo "<a href=\"?id_usager=$id_usager\">$sposiafftout</a>";
echo "</p>\n";
// ---------------------------------------------------------
require("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
?>