<?php
/*
Copyright (C) 2001, 2002 Loc Dayot Mairie de Pierrefitte(93)
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"); // C'est dans header.inc.php que sont retrouvs les droits issus de la table droits
if (!defined("ANIMATEURS"))
{
echo $fctnonactive;
exit;
}
require_once("DB.php");
require_once("constantes.inc.php"); // dfinition des constantes
//require_once("fonctions.inc.php"); // concernant des fonctions transversales inclassables
require_once("animateurs.inc.php"); // concernant les animateurs
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="$shoraires $sanimateurs";
$titr = $shortitre;
$datemaj="25 juillet 2003";
define("COULEUR", COULEUR_ANIMATEURS);
require("entete.inc.php");
function AfficheCalendrier($id_animateur, $date)
{
global $unitehoraire, $PHP_SELF,
$sdislegende,$sanimocc,$sanimdispo,$id_animateur,
$sdissemainedu;
// On retrouve le lundi
while (date("w", strtotime($date))!=1) // 1 pour commencer le lundi, 0 pour commencer le dimanche
$date=date("Y-m-d", strtotime("-1 days", strtotime($date)));
// on initialise faux. Si la fin du script il est encore faux,
// c'est qu'on n'a trouv aucune salle.
$unlieu=false;
// Affichage de la lgende
echo cadre_debut($sdislegende);
echo "<table>
<tr><td bgcolor=\"pink\">A</td><td>= Absent</td>
<td> </td>
<td bgcolor=\"".COULEUR_UTILISATIONS."\">D</td><td>= $sanimdispo</td>
<td> </td>
<td bgcolor=\"".COULEUR_SESSIONS."\">O</td><td>= $sanimocc</td>
</tr>
</table>\n";
echo cadre_fin();
// On n'a ncessairement qu'une ligne
//$reponse = $res->fetchrow(DB_FETCHMODE_OBJECT);
echo "<hr>\n";
echo cadre_debut("<h3>".animateur($id_animateur, TRUE)."</h3>");
$datesemaineprec=date("Y-m-d", strtotime("-7 days", strtotime($date)));
$datesemainesuiv=date("Y-m-d", strtotime("+7 days", strtotime($date)));
$datemoisprec=date("Y-m-d", strtotime("-1 month", strtotime($date)));
$datemoissuiv=date("Y-m-d", strtotime("+1 month", strtotime($date)));
$lignechoixdate=
"<p align=center><a href=\"$PHP_SELF?id_animateur=$id_animateur&operation=1&date=$datemoisprec\"><<<</a> - "
."<a href=\"$PHP_SELF?id_animateur=$id_animateur&operation=1&date=$datesemaineprec\"><<</a> - "
."<b>$shorsemainedu ".datetodate($date)."</b> - "
."<a href=\"$PHP_SELF?id_animateur=$id_animateur&operation=1&date=$datesemainesuiv\">>></a> - "
."<a href=\"$PHP_SELF?id_animateur=$id_animateur&operation=1&date=$datemoissuiv\">>>>></a></p>\n";
echo $lignechoixdate;
// on construit le tableau des horaires
echo "<table align=center border=1>\n";
// Ligne des horaires
$lignehoraires="<tr bgcolor=\"".COULEUR_ANIMATEURS."\"><td></td>";//<th>".datetodate($date)."</th>";
$nbcolparheure = 1;
for ($heure=MINHORAIRE;min2h($heure)<min2h(MAXHORAIRE);$heure=min2h(h2min($heure) + 60))
{
$lignehoraires.="<td colspan=\"".$nbcolparheure."\">";
$lignehoraires.=sprintf("%sh - %sh", date("H", strtotime($heure)), date("H", strtotime("+1 hour", strtotime($heure))));
$lignehoraires.="</td>\n";
}
$lignehoraires.="</tr>\n";
echo $lignehoraires;
$datecur=$date;
while ($datecur<date("Y-m-d", strtotime("+7 days", strtotime($date))))
{
echo "<tr><td bgcolor=\"lightgrey\">".datetodate($datecur)."</td>";
// Il va falloir construire la ligne des horaires en tenant compte des horaires et des rservations
$heure=MINHORAIRE;
$nbcol=1;
while (h2min($heure)<h2min(MAXHORAIRE))
{
// On recupere les info sur les disponibilites de l'animateur
$req3 = "SELECT * FROM animateurs_horaires
LEFT JOIN animateurs ON animateurs.id=animateurs_horaires.id_animateur
WHERE animateurs_horaires.date=\"$datecur\"
AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND fin>\"$heure\"";
//die($req3);
$res3 = executeRequete($req3);
$tranchehoraire = fetch_object($res3);
$nbcol++;
echo "<td";
switch ($tranchehoraire->presence)
{
case "disponible" :
echo " bgcolor=\"".COULEUR_UTILISATIONS."\">\n";
break;
case "occup" :
echo " bgcolor=\"".COULEUR_SESSIONS."\">\n";
break;
default :
echo " bgcolor=\"pink\">\n";
break;
} // switch
if (!$tranchehoraire->presence)
echo "A ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$tranchehoraire->id_structure))
echo "<a href=\"$PHP_SELF?operation=11&id_animateur=$id_animateur&date=$datecur&debut=$heure\">a</a> \n";
if ($tranchehoraire->presence=="disponible")
echo "D ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$tranchehoraire->id_structure))
echo "<a href=\"$PHP_SELF?operation=12&id_animateur=$id_animateur&date=$datecur&debut=$heure\">d</a> ";
if ($tranchehoraire->presence=="occup")
echo "O ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$tranchehoraire->id_structure))
echo "<a href=\"$PHP_SELF?operation=13&id_animateur=$id_animateur&date=$datecur&debut=$heure\">o</a>";
echo "</td>\n";
$heure=min2h(h2min($heure) + 60);
free_result($res3);
} // while $heure
$datecur=date("Y-m-d", strtotime("+1 days", strtotime($datecur)));
} // while
echo "</tr>\n";
if (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && id_structure==$tranchehoraire->id_structure))
echo "<tr><td colspan=\"$nbcol\" align=\"center\">
<a href=\"$PHP_SELF?operation=2&id_animateur=$id_animateur&date=$date\">Appliquer le modle</a>
- <a href=\"$PHP_SELF?operation=4&id_animateur=$id_animateur&date=$date\">Appliquer pour 4 semaines</a>
- <a href=\"$PHP_SELF?operation=3&id_animateur=$id_animateur&date=$date\">Vider</a></td>
</tr>";
echo "</table>\n";
echo $lignechoixdate;
echo cadre_fin();
}
function AfficheModle($id_animateur)
{
global $unitehoraire, $PHP_SELF;
// Construction de la requte.
$unlieu=false;
echo cadre_debut("<h3>".animateur($id_animateur)."</h3>");
// Affichage des disponibilits en fonction du calendrier et des rservations
// L, il faudrait afficher le planning de la salle concerne.
// on a id_localisation
// on construit le tableau des horaires
echo "<table align=center border=1>\n";
// Ligne des horaires
echo "<tr><td></td>";
$nbcolparheure = 60/$unitehoraire;
for ($heure=MINHORAIRE;h2min($heure)<h2min(MAXHORAIRE);$heure=min2h(h2min($heure) +60))
{
echo "<td colspan=\"".$nbcolparheure."\">";
printf("%sh - %sh", date("H", strtotime($heure)), date("H", strtotime("+1 hour", strtotime($heure))));
echo "</td>\n";
}
echo "</tr>\n";
for ($jour=1; $jour<8; $jour++)
{
$nomjour=jourSemaine($jour!=8 ? $jour : 0);
echo "<tr><td>".$nomjour."</td>";
// Il va falloir construire la ligne des horaires en tenant compte des horaires et des rservations
$heure=MINHORAIRE;
while (h2min($heure)<h2min(MAXHORAIRE))
{
// On regarde si c'est dj ouvert ou pas.
$req3 = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\"
AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND \"$heure\"<fin";//
$res3 = executeRequete($req3);
// die($req3);
$tranchehoraire = fetch_object($res3);
echo "<td";
switch ($tranchehoraire->presence)
{
case "disponible" :
echo " bgcolor=\"".COULEUR_UTILISATIONS."\">\n";
break;
case "occup" :
echo " bgcolor=\"".COULEUR_SESSIONS."\">\n";
break;
default :
echo " bgcolor=\"pink\">\n";
break;
} // switch
if (!$tranchehoraire->presence)
echo "A ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$reponse->id_structure))
echo "<a href=\"$PHP_SELF?operation=51&id_animateur=$id_animateur&nomjour=$nomjour&debut=$heure\">a</a> \n";
if ($tranchehoraire->presence=="disponible")
echo "D ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$reponse->id_structure))
echo "<a href=\"$PHP_SELF?operation=52&id_animateur=$id_animateur&nomjour=$nomjour&debut=$heure\">d</a> ";
if ($tranchehoraire->presence=="occup")
echo "O ";
elseif (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$reponse->id_structure))
echo "<a href=\"$PHP_SELF?operation=53&id_animateur=$id_animateur&nomjour=$nomjour&debut=$heure\">o</a>";
echo "</td>\n";
$heure=min2h(h2min($heure) + 60);
free_result($res3);
} // while $heure
echo "</tr>";
} // for jour
echo "</table>\n";
echo cadre_fin();
}
function verifiedroits($droit="r")
{
global $id_animateur, $id_structure,
$manqueinfosalle, $salleintrouvable, $pasledroit;
// retrouver la localisation
if (! $id_animateur)
{
echo $manqueinfosalle;
return FALSE;
}
$res=recherche("animateurs", "id", $id_animateur);
if (! $localisation=fetch_object($res))
{
echo $salleintrouvable;
return FALSE;
}
// On regarde si on a les droits
if ( !(ANIMATEURS_AUTRES>=$droit || (ANIMATEURS_MOI>=$droit && $id_structure==$reponse->id_structure)))
{
echo $pasledroit;
return FALSE;
}
return TRUE;
}
// Dbut du contenu de la page
if(defined("ANIMATEURS") && ANIMATEURS>="~")
{
switch($operation)
{
case 51 : // fermer un crneau
$presence="absent";
case 52 : // ouvrir accs individuel d'un crneau
if (!$presence)
$presence="disponible";
case 53 : // ouvrir activit collective d'un crneau
if (! verifiedroits("w"))
break;
if (!$presence)
$presence="occup";
if ($presence=="absent")
$presence="";
// calcul de la fin du crneau
$heure=$debut;
$heurefin=min2h(h2min($heure) + 60);
$req = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND fin>=\"$heurefin\"";
$res = executeRequete($req);
//Supression d'un crenau
$tranche=fetch_object($res);
//die($res->numrows(). " " . $presence);
if (num_rows($res)>=1 & $presence=="")
{
//die((h2min($heure) . " " .h2min($tranche->debut)) . " " . (h2min($heurefin). " " . h2min($tranche->fin)));
if ((h2min($heure)==h2min($tranche->debut)) & (h2min($heurefin)==h2min($tranche->fin)))
{
$req1 = "DELETE FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND fin>=\"$heurefin\"";
$res1 = executeRequete($req1);
}
else
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$tranche->presence\",fin=\"$heure\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$tranche->debut\"";
$res1 = executeRequete($req1);
if(h2min($heurefin)!=h2min($tranche->fin))
{
$req1 = "insert into animateurs_modeles_horaires (id_animateur, jour, debut, fin,presence)
VALUES (\"$id_animateur\",\"$nomjour\",\"$heurefin\",\"$tranche->fin\",\"$tranche->presence\")";
$res1 = executeRequete($req1);
}
}
afficheModle($id_animateur);
break;
}
elseif ($presence=="")
break;
//remplacement d'un crenau
if (num_rows($res)>=1)
{
if ((h2min($heure)==h2min($tranche->debut)) & (h2min($heurefin)==h2min($tranche->fin)))
{
$i=0;
$req4 = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\" AND presence=\"$presence\"";
$res4 = executeRequete($req4);
if ($trancheav=fetch_object($res4))
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$presence\",fin=\"$heurefin\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
$req5 = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\" AND presence=\"$presence\"";
$res5 = executeRequete($req5);
if ($trancheap=fetch_object($res5))
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$presence\",fin=\"$trancheap->fin\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"";
if($trancheav->debut)
$req1 .=" AND debut=\"$trancheav->debut\"";
else
$req1 .=" AND debut=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
if ($i==1)
{
afficheModle($id_animateur);
break;
}
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$presence\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res1 = executeRequete($req1);
//debug("tranche supprimee");
afficheModle($id_animateur);
break;
}
else
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$tranche->presence\",fin=\"$heure\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$tranche->debut\"";
$res1 = executeRequete($req1);
$req1 = "INSERT INTO animateurs_modeles_horaires (id_animateur, jour, debut, fin,presence)
VALUES (\"$id_animateur\", \"$nomjour\" , \"$heure\", \"$heurefin\", \"$presence\")";
$res1 = executeRequete($req1);
if(h2min($heurefin)!=h2min($tranche->fin))
{
$req1 = "insert into animateurs_modeles_horaires (id_animateur, jour, debut, fin,presence)
VALUES (\"$id_animateur\",\"$nomjour\",\"$heurefin\",\"$tranche->fin\",\"$tranche->presence\")";
$res1 = executeRequete($req1);
}
afficheModle($id_animateur);
break;
}
}
else
{ //ajout ou mix d'un crenau
$req1 = "INSERT INTO animateurs_modeles_horaires (id_animateur, jour, debut, fin, presence)
VALUES (\"$id_animateur\", \"$nomjour\", \"$heure\", \"$heurefin\", \"$presence\")";
$res1 = executeRequete($req1);
$i=0;
$req4 = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\" AND presence=\"$presence\"";
$res4 = executeRequete($req4);
if ($trancheav=fetch_object($res4))
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$presence\",fin=\"$heurefin\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
$req5 = "SELECT * FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\" AND presence=\"$presence\"";
$res5 = executeRequete($req5);
if ($trancheap=fetch_object($res5))
{
$req1 = "UPDATE animateurs_modeles_horaires SET presence=\"$presence\",fin=\"$trancheap->fin\"
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"";
if($trancheav->debut)
$req1 .=" AND debut=\"$trancheav->debut\"";
else
$req1 .=" AND debut=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_modeles_horaires
WHERE jour=\"$nomjour\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
if ($i==1)
{
$req1 = "DELETE FROM animateurs_modeles_horaires
WHERE id_animateur=\"$id_animateur\" AND jour=\"$nomjour\" AND debut=\"$heure\" AND fin=\"$heurefin\" AND presence=\"$presence\"";
$res1 = executeRequete($req1);
afficheModle($id_animateur);
break;
}
}
afficheModle($id_animateur);
break;
case 5 : // Affichage des modles hebdomadaires
if (! verifiedroits("r"))
break;
afficheModle($id_animateur);
break;
case 11 : // fermer un crneau
$presence="absent";
case 12 : // ouvrir accs individuel d'un crneau
if (!$presence)
$presence="disponible";
case 13 : // ouvrir activit collective d'un crneau
if (! verifiedroits("w"))
break;
if (!$presence)
$presence="occup";
if($presence=="absent")
$presence="";
// calcul de la fin du crneau
$heure=$debut;
$heurefin=min2h(h2min($heure)+60);
$req = "SELECT * FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND fin>=\"$heurefin\"";
$res = executeRequete($req);
//Supression d'un crenau
$tranche=fetch_object($res);
//die($res->numrows(). " " . $presence);
if (num_rows($res)>=1 & $presence=="")
{
//die((h2min($heure) . " " .h2min($tranche->debut)) . " " . (h2min($heurefin). " " . h2min($tranche->fin)));
if ((h2min($heure)==h2min($tranche->debut)) & (h2min($heurefin)==h2min($tranche->fin)))
{
$req1 = "DELETE FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut<=\"$heure\" AND fin>=\"$heurefin\"";
$res1 = executeRequete($req1);
}
else
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$tranche->presence\",fin=\"$heure\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$tranche->debut\"";
$res1 = executeRequete($req1);
if(h2min($heurefin)!=h2min($tranche->fin))
{
$req1 = "insert into animateurs_horaires (id_animateur, date, debut, fin,presence)
VALUES (\"$id_animateur\",\"$date\",\"$heurefin\",\"$tranche->fin\",\"$tranche->presence\")";
$res1 = executeRequete($req1);
}
}
afficheCalendrier($id_animateur,$date);
break;
}
elseif ($presence=="")
break;
//remplacement d'un crenau
if (num_rows($res)>=1)
{
if ((h2min($heure)==h2min($tranche->debut)) & (h2min($heurefin)==h2min($tranche->fin)))
{
$i=0;
$req4 = "SELECT * FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\" AND presence=\"$presence\"";
$res4 = executeRequete($req4);
if ($trancheav=fetch_object($res4))
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$presence\",fin=\"$heurefin\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
$req5 = "SELECT * FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\" AND presence=\"$presence\"";
$res5 = executeRequete($req5);
if ($trancheap=fetch_object($res5))
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$presence\",fin=\"$trancheap->fin\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"";
if($trancheav->debut)
$req1 .=" AND debut=\"$trancheav->debut\"";
else
$req1 .=" AND debut=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
if ($i==1)
{
afficheCalendrier($id_animateur,$date);
break;
}
$req1 = "UPDATE animateurs_horaires SET presence=\"$presence\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res1 = executeRequete($req1);
//debug("tranche supprimee");
afficheCalendrier($id_animateur,$date);
break;
}
else
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$tranche->presence\",fin=\"$heure\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$tranche->debut\"";
$res1 = executeRequete($req1);
$req1 = "INSERT INTO animateurs_horaires (id_animateur, date, debut, fin,presence)
VALUES (\"$id_animateur\", \"$date\" , \"$heure\", \"$heurefin\", \"$presence\")";
$res1 = executeRequete($req1);
if(h2min($heurefin)!=h2min($tranche->fin))
{
$req1 = "insert into animateurs_horaires (id_animateur, date, debut, fin,presence)
VALUES (\"$id_animateur\",\"$date\",\"$heurefin\",\"$tranche->fin\",\"$tranche->presence\")";
$res1 = executeRequete($req1);
}
afficheCalendrier($id_animateur,$date);
break;
}
}
else
{ //ajout ou mix d'un crenau
$req1 = "INSERT INTO animateurs_horaires (id_animateur, date, debut, fin, presence)
VALUES (\"$id_animateur\", \"$date\", \"$heure\", \"$heurefin\", \"$presence\")";
$res1 = executeRequete($req1);
$i=0;
$req4 = "SELECT * FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\" AND presence=\"$presence\"";
$res4 = executeRequete($req4);
if ($trancheav=fetch_object($res4))
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$presence\",fin=\"$heurefin\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heure\" AND fin=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
$req5 = "SELECT * FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\" AND presence=\"$presence\"";
$res5 = executeRequete($req5);
if ($trancheap=fetch_object($res5))
{
$req1 = "UPDATE animateurs_horaires SET presence=\"$presence\",fin=\"$trancheap->fin\"
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"";
if($trancheav->debut)
$req1 .=" AND debut=\"$trancheav->debut\"";
else
$req1 .=" AND debut=\"$heure\"";
$res1 = executeRequete($req1);
$req = "DELETE FROM animateurs_horaires
WHERE date=\"$date\" AND id_animateur=\"$id_animateur\"
AND debut=\"$heurefin\"";
$res = executeRequete($req);
$i=1;
}
if ($i==1)
{
$req1 = "DELETE FROM animateurs_horaires
WHERE id_animateur=\"$id_animateur\" AND date=\"$date\" AND debut=\"$heure\" AND fin=\"$heurefin\" AND presence=\"$presence\"";
$res1 = executeRequete($req1);
afficheCalendrier($id_animateur,$date);
break;
}
}
afficheCalendrier($id_animateur,$date);
break;
case 1 : // Affichage du calendrier d'une salle pour un mois correpondant une date (courante)
if (! verifiedroits("r"))
break;
afficheCalendrier($id_animateur, $date);
break;
case 2 : // Appliquer le modle de calendrier pour une semaine donne
if (! verifiedroits("w"))
break;
// On commence par vider compltement le calendrier pour la semaine donne.
echo "<p>Vider le calendrier pour la semaine concerne...";
$datefin=date("Y-m-d", strtotime("+6 days", strtotime($date)));
$req="DELETE FROM animateurs_horaires WHERE date>=\"$date\" AND date<=\"$datefin\"
AND id_animateur=\"$id_animateur\"";
$res = executeRequete($req);
echo " fait !</p>";
// Ensuite, on applique le modle sur la semain concerne
echo "<p>Appliquer le modle au calendrier pour la semaine concerne...";
$req="SELECT * FROM animateurs_modeles_horaires
WHERE id_animateur=\"$id_animateur\"
ORDER BY jour, debut";
$res=executeRequete($req);
while ($horaire=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
$datejour = $date;
while (jourSemaine(date("w", strtotime($datejour))) != $horaire->jour)
$datejour = date("Y-m-d", strtotime("+1 days", strtotime($datejour)));
$req2="INSERT INTO animateurs_horaires (id_animateur, date, debut, fin, presence)
VALUES (\"$id_animateur\", \"$datejour\", \"$horaire->debut\", \"$horaire->fin\", \"$horaire->presence\")";
$res2=executeRequete($req2);
}
$res->free();
//$res3->free();
echo " fait !</p>";
// enfin, on affiche le rsultat
afficheCalendrier($id_animateur, $date);
break;
case 3 : // Vider le calendrier pour une semaine donne
if (! verifiedroits("w"))
break;
// On commence par vider compltement le calendrier pour la semaine donne.
echo "<p>Vider le calendrier pour la semaine concerne...";
$datefin=date("Y-m-d", strtotime("+6 days", strtotime($date)));
$req="DELETE FROM animateurs_horaires WHERE date>=\"$date\" AND date<=\"$datefin\"
AND id_animateur=\"$id_animateur\"";
$res = executeRequete($req);
// et on affiche le rsultat
afficheCalendrier($id_animateur, $date);
break;
case 4 : // Appliquer le modle de calendrier pour 4 semaines
if (! verifiedroits("w"))
break;
// On commence par vider compltement le calendrier pour la semaine donne.
echo "<p>Vider le calendrier pour la semaine concerne...";
$datefin=date("Y-m-d", strtotime("+28 days", strtotime($date)));
$req="DELETE FROM animateurs_horaires WHERE date>=\"$date\" AND date<=\"$datefin\"
AND id_animateur=\"$id_animateur\"";
$res = executeRequete($req);
echo " fait !</p>";
// Ensuite, on applique le modle sur la semain concerne
echo "<p>Appliquer le modle au calendrier pour la semaine concerne...";
$wee=0;
while ($wee!=4)
{
$req="SELECT * FROM animateurs_modeles_horaires
WHERE id_animateur=\"$id_animateur\"
ORDER BY jour, debut";
$res=executeRequete($req);
while ($horaire=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
$datejour = $date;
while (jourSemaine(date("w", strtotime($datejour))) != $horaire->jour)
$datejour = date("Y-m-d", strtotime("+1 days", strtotime($datejour)));
$req2="INSERT INTO animateurs_horaires (id_animateur, date, debut, fin, presence)
VALUES (\"$id_animateur\", \"$datejour\", \"$horaire->debut\", \"$horaire->fin\", \"$horaire->presence\")";
$res2=executeRequete($req2);
}
$wee+=1;
$date = date("Y-m-d", strtotime("+7 days", strtotime($date)));
}
$res->free();
echo " fait !</p>";
// enfin, on affiche le rsultat
// $date = date("Y-m-d", strtotime("-6 days", strtotime($date)));
afficheCalendrier($id_animateur, $date);
break;
default : // liste des localisations
echo cadre_debut($slistelocalisations);
if (ANIMATEURS<="~")
{
echo $pasledroit;
echo cadre_fin();
break;
}
$req = "SELECT ville, animateurs.id AS id_animateur, nom, prenom
FROM animateurs";
//if (ANIMATEURS_AUTRES<"r" && $is_ident=="structure")
$req.= " ORDER BY ville";
//die($req);
$res = executeRequete($req);
echo "<table align=center border=1>
<tr><th align=center>$snom</th><th align=center>$sprenom</th><th align=center>$sville</th><th colspan=2></th></tr>\n";
if(!DB::iserror($res))
{
while ($local= fetch_object($res))
{
echo "<tr><td>$local->nom</td>
<td>$local->prenom</td>
<td>$local->ville</td>\n";
$date= date('Y-m-d');
if (ANIMATEURS_AUTRES>="r" || (ANIMATEURS_MOI>="r" && $id_structure==$local->id_structure))
echo "<td><a href=\"$PHP_SELF?operation=1&id_animateur=$local->id_animateur&date=$date\">$sdiscalendrier</a></td>\n";
else
echo "<td></td>\n";
if (ANIMATEURS_AUTRES>="w" || (ANIMATEURS_MOI>="w" && $id_structure==$local->id_structure))
echo "<td><a href=\"$PHP_SELF?operation=5&id_animateur=$local->id_animateur\">$sdismodelehebdo</a></td>\n";
else
echo "<td></td>\n";
echo "</tr>\n";
}
}
echo "</table>\n";
echo cadre_fin();
break;
} // switch
printf($sdisvoirlisteanimateurs, $PHP_SELF);
} // if
else
echo $pasledroit;
include("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
?>