[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Epnadmin-fr] CVS: epnadmin animateur.php,NONE,1.1 animateurs-horaires.p
From: |
Loïc Dayot |
Subject: |
[Epnadmin-fr] CVS: epnadmin animateur.php,NONE,1.1 animateurs-horaires.php,NONE,1.1 animateurs.inc.php,NONE,1.1 |
Date: |
Wed, 07 May 2003 13:30:56 -0400 |
Update of /cvsroot/epnadmin/epnadmin
In directory subversions:/tmp/cvs-serv32664/epnadmin
Added Files:
animateur.php animateurs-horaires.php animateurs.inc.php
Log Message:
Ajout des fichiers pour la gestion des animateurs (proposition).
--- NEW FILE ---
<?php
/*
Copyright (C) 2001, 2002 Bertand Pallie, Loïc 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");
require_once("constantes.inc.php"); // définition des constantes
if (! defined("FCT_ANIMATEURS"))
{
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("animateurs.inc.php"); // concernant la gestion des
animateurs
require_once("reservations.inc.php"); // concernant les réservations
des postes en accès individuel par des animateurs
//require_once("tableaux.inc.php"); // Concernant l'affichage
transposé d'un tableau
//require_once("siteweb.inc.php"); // concernant les pages perso
des animateurs 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 thèmes
require_once("parcours.inc.php"); // concernant les parcours des
animateurs et leur positionnement
echo "<html><head><title>$sanimateurs - epnadmin</title>
<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=iso-8859-1\"><body>";
$titr = $is_ident=="animateur" ? $sanimateurtitre1 : $sanimateurtitre2;
define("COULEUR", COULEUR_ANIMATEURS);
$datemaj="2 mars 2003";
require("entete.inc.php");
// Formulaire d'édition d'un animateur
function form_nouvel_animateur($operation=0)
{
global $sanimateurnouv1,$sNom,$sPrenom,$sconfirmer;
echo "<form name=\"form_nouvel_animateur\" method=\"post\"
action=\"animateurs.php\">";
echo "<input type=\"hidden\" name=\"operation\" value=\"$operation\">
<table border=\"1\" align=\"center\">
<tr><td>$sPrenom : </td>
<td><input type=\"text\" name=\"prenom\" value=\"\"
tabindex=1></td>
<td>$sNom :</td>
<td><input type=\"text\" name=\"nom\" value=\"\"
tabindex=2></td></tr>";
echo "<tr><td colspan=4 align=center>
<input type=\"submit\" name=\"Modifier\"
value=\"$sconfirmer\"></td></tr>
</table>
</form>\n";
}
// Formulaire d'édition d'un animateur
function form_animateur($id_animateur, $operation=0, $nom="", $prenom="",
$login="")
{
global $tarifs, $PHP_SELF, $id_structure,
$sNom,$sPrenom,$sconfirmer,$sinchangeable,$sMotdepasse,$slemodifier,
$sAdresse,$sTelephones,$sIdentifiant,$sCourrieldefaut,
$sVille,$smasculin,$sfeminin,
$sDatedenaissance,$sSexe,$sStructuredeprovenance,$scommentaireanimateur,
$starif,$sanimateurcarteimprimee,$sanimateurcarteprete,$sanimateurcarteattente,$sanimateurcarte,
$sheurereservable,$saccesindividuel,$sactivcollectives,
$sheurecredit,$sdepartabonnement,$sfinabonnement,$scommentairecredit,
$sconfirmer;
// on retrouve les informations personnelles
$res=recherche("animateurs", "id", $id_animateur);
$animateur=$res->fetchrow(DB_FETCHMODE_OBJECT); // si l'animateur
est inconnu, ce sera un formulaire vide
// on retrouve les information de crédits d'heures et abonnements
/* $res=recherche("credits", "id_animateur", $id_animateur);
$credit=$res->fetchrow(DB_FETCHMODE_OBJECT); // si l'animateur est
inconnu, ce sera un formulaire vide*/
echo "<form name=\"form_animateur\" method=\"post\"
action=\"animateurs.php\">";
if ($animateur)
echo "<input type=\"hidden\" name=\"id_animateur\"
value=\"$id_animateur\">";
echo "<input type=\"hidden\" name=\"operation\" value=\"$operation\">
<table border=\"1\" align=\"center\">
<tr><td>$sPrenom : </td>
<td><input tabindex=1 type=\"text\" name=\"prenom\"
value=\"$animateur->prenom$prenom\"></td>
<td>$sNom :</td>
<td><input tabindex=2 type=\"text\" name=\"nom\"
value=\"$animateur->nom$nom\"></td></tr>
<tr><td>$sIdentifiant :<br></td>
<td>";
if ($animateur)
echo "$animateur->login ($sinchangeable)";
else
echo "<input tabindex=3 type=\"text\" name=\"login\"
value=\"$login\">";
echo "</td>";
if (!$animateur)
echo "<td>$sMotdepasse :
<br>$sMotdepasse (2) :</td>
<td><input tabindex=4 type=\"password\"
name=\"motdepasse\" value=\"$animateur->motdepasse\" tabindex=1>
<br><input tabindex=5 type=\"password\"
name=\"motdepasse2\" value=\"$animateur->motdepasse\">
</td>";
else
echo "<td>$sMotdepasse :</td>
<td><a
href=\"$PHP_SELF?id_animateur=$id_animateur&operation=6\">$slemodifier</a></td>\n";
echo "</tr>
<tr><td>$sAdresse :</td>
<td><textarea tabindex=6 name=\"adresse\" cols=\"30\"
rows=\"2\">$animateur->adresse</textarea></td>
<td>$sTelephones : </td>
<td><input tabindex=8 type=\"text\" name=\"telephone\"
value=\"$animateur->telephone\"></td></tr>
<tr><td>$sVille</td>
<td><input tabindex=7 type=\"text\" name=\"ville\"
value=\"$animateur->ville\"></td>
<td>$sCourrieldefaut</b></td>
<td><input tabindex=9 type=\"text\" name=\"courriel\"
value=\"$animateur->courriel\"></td>
</tr><tr>
<td>$sDatedenaissance : </td>
<td>";
choixDate($animateur->naissance, "naissance", TRUE);
echo "<td>$sSexe :</td><td>
<select name='sexe'>
<option></option>
<option value='f'";
if ($animateur->sexe=='f') echo " selected";
echo ">$sfeminin</option>
<option value='m'";
if ($animateur->sexe=='m') echo " selected";
echo ">$smasculin</option>
</select>";
echo " </td></tr><tr>
<td>$sStructuredeprovenance :</td>
<td>";
choix_structure($animateur->id_structure_provenance,
"id_structure_provenance", "");
echo "</td></tr>";
echo "<tr><td>$scommentaireanimateur :</td>
<td colspan=3><textarea name=\"commentaire\" rows=\"5\"
cols=\"60\">$animateur->commentaire</textarea></td></tr>\n";
// Ici commence les informations sur les crédits
// Nota : version 0.5 - Les crédits sont dans une autre table
echo "<tr>";
/* if (defined("FCT_TARIFS"))
{
// code tarif
echo " <td>$starif :</td>
<td><select tabindex=10 name=\"tarif\"><option
value=\"-1\"></option>\n";
$t=0;
while ($tarifs[$t])
{
echo "<option value=\"$t\"";
if ($credit)
if ($credit->id_tarif==$t)
echo " SELECTED";
echo ">".$tarifs[$t]."\n";
$t++;
}
echo "</select></td>\n";
}
// état de la carte d'animateur
echo "<td rowspan=2>$sanimateurcarte :</td>
<td rowspan=2><input tabindex=11 type=\"radio\" name=\"carte\"
value=\"attente\"";
if ($credit->carte=="attente" | !$credit->carte) echo " checked";
echo ">$sanimateurcarteattente<br>
<input type=\"radio\" name=\"carte\" value=\"prête\"";
if ($credit->carte=="prête") echo "checked";
echo ">$sanimateurcarteprete<br>
<input type=\"radio\" name=\"carte\" value=\"imprimée\"";
if ($credit->carte=="imprimée") echo " checked";
echo ">$sanimateurcarteimprimee</select></td>
</tr>\n";
if (defined("FCT_UTILISATIONS"))
echo "<tr><td>$sheurereservable :</td>
<td><input tabindex=12 type=\"text\"
name=\"credit_reservable\"
value=\"".min2h($credit->credit_reservable)."\"></td>";
echo "</tr>";
// Accès individuels (colonne de gauche) - Activités collectives
(colonne de droite)
// Valeurs par défaut pour l'Arobase EPM. Sans doute à mettre dans le
fichier de configuration.
if (defined("FCT_CREDITS"))
{
if ($credit->credit_reservable=="")
$credit->credit_reservable="03:00";
if ($credit->credit_acces_individuel=="")
$credit->credit_acces_individuel="10:00";
if ($credit->credit_activites_collectives=="")
$credit->credit_activites_collectives="05:00";
if (defined("FCT_UTILISATIONS") || defined("FCT_PARCOURS"))
{
echo "<tr>";
if (defined("FCT_UTILISATIONS"))
echo "<th colspan=2 align=center
bgcolor='".COULEUR_UTILISATIONS."'>$saccesindividuel</th>";
if (defined("FCT_PARCOURS"))
echo "<th colspan=2 align=center
bgcolor='".COULEUR_PARCOURS."'>$sactivcollectives</th>";
echo "</tr>";
echo "<tr>";
if (defined("FCT_UTILISATIONS"))
echo "<td>$sheurecredit :</td>
<td><input tabindex=13 type=\"text\"
name=\"credit_acces_individuel\"
value=\"".min2h($credit->credit_acces_individuel)."\">
</td>";
//value=\"".datetoheurecourt($credit->credit_acces_individuel)."\">
if (defined("FCT_PARCOURS"))
echo "<td>$sheurecredit :</td>
<td><input tabindex=14 type=\"text\"
name=\"credit_activites_collectives\"
value=\"".min2h($credit->credit_activites_collectives)."\">
</td>";
//value=\"".datetoheurecourt($credit->credit_activites_collectives)."\">
echo "</tr>";
echo "<tr>";
if (defined("FCT_UTILISATIONS"))
{
echo "<td>$sdepartabonnement :</td>
<td>";
choixDate($credit->debut_abonnement_acces_individuel,
"debut_abonnement_acces_individuel");
echo "</td>";
}
if (defined("FCT_PARCOURS"))
{
echo "<td>$sdepartabonnement :</td>
<td>";
choixDate($credit->debut_abonnement_activites_collectives,
"debut_abonnement_activites_collectives");
echo "</td>";
}
echo "</tr>";
echo "<tr>";
if (defined("FCT_UTILISATIONS"))
{
echo "<td>$sfinabonnement :</td>
<td>";
choixDate($credit->fin_abonnement_acces_individuel,
"fin_abonnement_acces_individuel");
echo "</td>";
}
if (defined("FCT_PARCOURS"))
{
echo "<td>$sfinabonnement :</td>
<td>";
choixDate($credit->fin_abonnement_activites_collectives,
"fin_abonnement_activites_collectives");
echo "</td>\n";
}
echo "</tr>";
} // if fct_utilisation ou fct_parcours
echo "<tr><td>$scommentairecredit :</td>
<td colspan=3><textarea tabindex=15
name=\"commentaires\" rows=\"3\"
cols=\"60\">$credit->commentaires</textarea></td></tr>\n";
} // if fct_credits
echo "<tr><td colspan=4 align=center><input tabindex=16 type=\"submit\"
name=\"Modifier\" value=\"$sconfirmer\"></td>*/
echo " </tr>
</table>
</form>\n";
} // function form_animateur
function liste_animateurs()
{
global $code_barre, $id, $login, $nom, $prenom, $PHP_SELF, $operation;
// Recherche et visualisation de la liste des animateurs
if ($code_barre!="" & $id=="") $id=substr($code_barre,0,4);
affiche_liste_animateurs($id, $login, $nom, $prenom, "nom");
echo "<hr><a href=\"$PHP_SELF?operation=5\">Retour à la
liste</a>";
}
switch($operation)
{
case 61 : // Enregistrement du changement de mot de passe de l'animateur
echo cadre_debut($sanimateurchgmtmdp);
if (ANIMATEURS_AUTRES<"w" && ANIMATEURS_MOI<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
$mes="";
if ($motdepasse=="" && ANIMATEURS_AUTRES<"w")
$mes .= $smanquemotdepasseactuel."<br>";
if ($id_animateur=="")
$mes.=$sanimateurintrouvable."<br>";
else
{
$res=recherche("animateurs", "id", $id_animateur);
if (! $animateur=$res->fetchrow(DB_FETCHMODE_OBJECT))
$mes.=$sanimateurintrouvable."<br>";
}
if (ANIMATEURS_AUTRES<"w" && $motdepasse!=$animateur->motdepasse)
$mes.=$smauvaismotdepasse."<br>";
if ($motdepasse1=="") $mes .=$manquemotdepasse. "<br>";
if ($motdepasse1!=$motdepasse2) $mes .= $motdepassedifferents."<br>";
if ($mes!="")
echo "<p>$mes</p>";
else
{
// retrouver les informations de l'animateur
// TODO : Vérification que l'administrateur est
// d'une structure hébergeant les compte sur le serveur local
// 1 : modification du compte utilisateur NIS sur la machine
locale
// création du fichier contenant le mot de passe, nécessaire
avec chpasswd
$motdepasse = $motdepasse1;
$fp = fopen("$fichier_temporaire", "w");
$motdepassec = crypt($motdepasse, "Sa");
$r = fwrite ($fp, "$animateur->login:$motdepassec\n");
$r = fclose($fp);
// préparation des commandes à exécuter
echo "<p>$sanimateurchangementmdplinux</p>";
$cmd = "sudo chpasswd -e < $fichier_temporaire";
executecommande($cmd);
// Mise à jour provoquée pour que l'utilisateur puisse se
connecter immédiatement
echo "<p>$sanimateurmajnis</p>";
$cmd = "cd /var/yp; sudo make";
executecommande($cmd);
// 2 : modification du compte utilisateur Samba sur la machine
locale
echo "<p>$sanimateurchangementmdpsamba</p>";
$cmd = "sudo smbpasswd -s $animateur->login $motdepasse";
executecommande($cmd);
// 3 : modification du compte de courriel sur la machine locale
// Actuellement, utilise une commande vpopmail
// TODO : voir si l'adresse est parmis les domaines supportés
(dans la base domaines)
$req="select * from domaines";
$res=executeRequete($req);
while ($domaine=$res->fetchrow(DB_FETCHMODE_OBJECT))
if (strpos($courriel, $domaine->domaine))
{
echo "<p>$sanimateurchangementmdpcourriel</p>";
$cmd="$dirvpopmail/vpasswd $animateur->courriel
$motdepasse";
executecommande($cmd);
}
// 4 : modification du compte d'animateur dans la base locale
epnadmin
echo "<p>$sanimateurchangementmdpepnadmin</p>";
$motdepassec=md5($motdepasse);
$query = "UPDATE animateurs SET motdepasse='$motdepassec' WHERE
id='$id_animateur'";
$result = executeRequete($query);
echo cadre_fin();
break;
}
echo cadre_fin();
case 6 : // formulaire de changement de mot de passe
echo cadre_debut($sanimateurchgmtmdp);
if (ANIMATEURS_AUTRES<"w" && ANIMATEURS_MOI<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
$res=recherche("animateurs", "id", $id_animateur);
if ($animateur=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
echo "<form name=\"form_mp_animateur\" method=\"post\"
action=\"animateurs.php\">
<input type=\"hidden\" name=\"id_animateur\"
value=\"$id_animateur\">
<input type=\"hidden\" name=\"operation\"
value=\"61\">
<table border=\"1\" align=\"center\">
<tr><th align=center
colspan=2>$animateurchgmtmdp $animateur->prenom $animateur->nom
($animateur->login)</th></tr>";
// Si on est administrateur, on ne demande pas le mot de passe en cours
if (ANIMATEURS_AUTRES>"w")
echo "<tr><td>$smotdepasseactuel</td><td><input
type=\"password\" name=\"motdepasse\"></td></tr>";
echo "<tr><td>$smotdepassenouveau</td><td><input type=\"password\"
name=\"motdepasse1\"></td></tr>
<tr><td>$smotdepassenouveau (2)</td><td><input
type=\"password\" name=\"motdepasse2\"></td></tr>
<tr><td align=center colspan=2><input
type=\"submit\" value=\"$sconfirmer\"></td></tr>
<tr><td
colspan=2>$sanimateuravertissementcngmdp</td></tr>
</table></form>\n";
}
else
echo "<p>$sanimateurintrouvable</p>\n";
echo cadre_fin();
break;
case 1: // Edition des informations personnelles
echo cadre_debut($sanimateurnouv1);
if (ANIMATEURS_MOI>="w" || ANIMATEURS_AUTRES>="w")
{
//debug("id_animateur : $id_animateur");
form_animateur($id_animateur, 11); // 11 = operation au sortir
du formulaire pour le traiter
echo "<p><a href=\"$PHP_SELF?operation=5\">Retour à la
liste</a></p>\n";
}
else
echo $pasledroit;
echo cadre_fin();
break;
case 11: // Mise à jour suite à une édition des informations personnelles
echo cadre_debut($sanimateurnouv1);
if (ANIMATEURS_MOI<"w" && ANIMATEURS_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// Attention, les informations de courriels n'affectent pas le compte
de courriel local
$mes="";
if ($nom=="") $mes .= "$smanquenom<br>";
if ($prenom=="") $mes .= "$manqueprenom<br>";
if (defined("FCT_TARIFS"))
if ($tarif==-1) $mes .= "$smanquetarif<br>";
// Mise en condition des heures et des dates
$naissance="";
if ($naissanceannee>"" || $naissancemois>""
|| $naissancejour>"")
{
if (!checkdate($naissancemois,
$naissancejour,
$naissanceannee))
$mes.="$smanquenaissance<br>";
else
$naissance=$naissanceannee."-".
$naissancemois."-".
$naissancejour;
}
if (defined("FCT_CREDITS"))
{
if (defined("FCT_UTILISATIONS"))
{
$debut_abonnement_acces_individuel="";
if ($debut_abonnement_acces_individuelannee>"" ||
$debut_abonnement_acces_individuelmois>""
||
$debut_abonnement_acces_individueljour>"")
{
if
(!checkdate($debut_abonnement_acces_individuelmois,
$debut_abonnement_acces_individueljour,
$debut_abonnement_acces_individuelannee))
$mes.="$smanquedatedebabonnementindiv<br>";
else
$debut_abonnement_acces_individuel=$debut_abonnement_acces_individuelannee."-".
$debut_abonnement_acces_individuelmois."-".
$debut_abonnement_acces_individueljour;
}
$fin_abonnement_acces_individuel="";
if ($fin_abonnement_acces_individuelannee>"" ||
$fin_abonnement_acces_individuelmois>""
||
$fin_abonnement_acces_individueljour>"")
{
if
(!checkdate($fin_abonnement_acces_individuelmois,
$fin_abonnement_acces_individueljour,
$fin_abonnement_acces_individuelannee))
$mes.="$smanquedatefinabonnementindiv<br>";
else
$fin_abonnement_acces_individuel=$fin_abonnement_acces_individuelannee."-".
$fin_abonnement_acces_individuelmois."-".
$fin_abonnement_acces_individueljour;
}
} // if defined fct_utilisations
if (defined("FCT_PARCOURS"))
{
$debut_abonnement_activites_collectives="";
if ($debut_abonnement_activites_collectivesannee>"" ||
$debut_abonnement_activites_collectivesmois>""
||
$debut_abonnement_activites_collectivesjour>"")
{
if
(!checkdate($debut_abonnement_activites_collectivesmois,
$debut_abonnement_activites_collectivesjour,
$debut_abonnement_activites_collectivesannee))
$mes.="$smanquedatedebabonnementcolle<br>";
else
$debut_abonnement_activites_collectives=$debut_abonnement_activites_collectivesannee."-".
$debut_abonnement_activites_collectivesmois."-".
$debut_abonnement_activites_collectivesjour;
}
$fin_abonnement_activites_collectives="";
if ($fin_abonnement_activites_collectivesannee>"" ||
$fin_abonnement_activites_collectivesmois>""
||
$fin_abonnement_activites_collectivesjour>"")
{
if
(!checkdate($fin_abonnement_activites_collectivesmois,
$fin_abonnement_activites_collectivesjour,
$fin_abonnement_activites_collectivesannee))
$mes.="$smanquedatefinabonnementcolle<br>";
else
$fin_abonnement_activites_collectives=$fin_abonnement_activites_collectivesannee."-".
$fin_abonnement_activites_collectivesmois."-".
$fin_abonnement_activites_collectivesjour;
}
} // if defined FCT_PARCOURS
} // if defined FCT_CREDITS
if ($mes!="")
{
echo "<p>$mes</p>";
cadre_fin();
break;
}
// Mise à jour de l'enregistrement dans la table animateur
$query = "UPDATE animateurs SET nom=\"$nom\", prenom=\"$prenom\",
naissance='$naissance',
sexe='$sexe', adresse=\"$adresse\", ville='$ville',
id_structure_provenance='$id_structure_provenance',
courriel='$courriel',
telephone='$telephone',
commentaire=\"$commentaire\"
WHERE id='$id_animateur'";
if (!$result = executeRequete($query))
echo "<p>$spbmajanimateur</p>\n";
if (defined("FCT_CREDITS") || defined("FCT_TARIFS"))
{
// on regarde dans la table [crédits] si l'animateur existe ou non
$req="SELECT * FROM credits WHERE id_animateur=\"$id_animateur\"";
$res=executeRequete($req);
$credit_acces_individuel=h2min($credit_acces_individuel);
$credit_activites_collectives=h2min($credit_activites_collectives);
$credit_reservable=h2min($credit_reservable);
if ($res->fetchrow(DB_FETCHMODE_OBJECT))
{ // L'enregistrement existe, mise à jour de l'enregistrement dans la
table crédits
$query = "UPDATE credits SET
id_tarif='$tarif',
credit_acces_individuel=$credit_acces_individuel,
credit_activites_collectives=$credit_activites_collectives,
credit_reservable=$credit_reservable,
commentaires=\"$commentaires\",
debut_abonnement_acces_individuel='$debut_abonnement_acces_individuel',
fin_abonnement_acces_individuel='$fin_abonnement_acces_individuel',
debut_abonnement_activites_collectives='$debut_abonnement_activites_collectives',
fin_abonnement_activites_collectives='$fin_abonnement_activites_collectives',
carte=\"$carte\"
WHERE id_animateur='$id_animateur'";
}
else
// L'enregistrement n'existe pas, insertion dans la table crédits
$query = "INSERT INTO credits (id_animateur, id_tarif,
credit_acces_individuel,
credit_activites_collectives,
credit_reservable, commentaires,
debut_abonnement_acces_individuel,
fin_abonnement_acces_individuel,
debut_abonnement_activites_collectives,
fin_abonnement_activites_collectives,
carte)
VALUES
('$id_animateur', '$tarif', '$credit_acces_individuel',
'$credit_activites_collectives',
'$credit_reservable', \"$commentaires\",
'$debut_abonnement_acces_individuel',
'$fin_abonnement_acces_individuel',
'$debut_abonnement_activites_collectives',
'$fin_abonnement_activites_collectives',
\"$carte\")";
if (! executeRequete($query))
echo "<p>$spbmajcredit</p>\n";
} // if fctcredit ou tarifs
echo "<p>Informations mises à jour.</p>";
echo cadre_fin();
break;
case 2 : // demande de confirmation de suppression
echo cadre_debut($sanimateursuppr);
if (ANIMATEURS_AUTRES<"w")
echo $pasledroit;
else
{
echo "<table align=center border=1>
<tr><th align=center>";
printf ($sanimateursupprdemandeconf, animateur($id_animateur));
echo "</th></tr>
<tr><td><form action=\"$PHP_SELF\" method=\"POST\"
enctype=\"multipart/form-data\">
<input type=\"checkbox\" name=\"perso\" checked>
$sanimateursupprepnadmin
<br><input type=\"checkbox\" name=\"credit\" checked>
$sanimateursupprcredit
<br><input type=\"checkbox\" name=\"positionnement\" checked>
$sanimateursupprpositionnement
<br><input type=\"checkbox\" name=\"parcours\" checked>
$sanimateursupprparcours
<br><input type=\"checkbox\" name=\"utilisation\" checked>
$sanimateursupprutilisations
<br><input type=\"checkbox\" name=\"nis\" checked>
$sanimateursupprident
<br><input type=\"checkbox\" name=\"samba\" checked>
$sanimateursupprsamba
<br><input type=\"checkbox\" name=\"courriel\" checked>
$sanimateursupprcourriel
<tr><td align=center><input type=\"submit\" name=\"Supprimer\"
value=\"$sanimateursupprconf\">
<input type=\"hidden\" name=\"id_animateur\" value=\"$id_animateur\">
<input type=\"hidden\" name=\"operation\"
value=\"21\"></form></td></tr>
</table>\n";
}
echo cadre_fin();
break;
case 21: // Suppression réelle
echo cadre_debut($sanimateursuppr);
if (ANIMATEURS_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// On retrouve l'enregistrement de l'animateur
$res = recherche("animateurs", "id", $id_animateur);
if (!$animateur = $res->fetchrow(DB_FETCHMODE_OBJECT))
{
echo $sanimateurintrouvable;
echo cadre_fin();
break;
}
echo "<p>$sanimateursupprok<br>";
if ($perso=="on")
{ // Effacement de l'enregistrement des informations personnelles
$query = "DELETE FROM animateurs WHERE id=$id_animateur";
$result = executeRequete($query);
echo "$sanimateursupprepnadmin<br>";
}
if ($credit=="on")
{ // Effacement de l'enregistrement des informations de crédits
$query = "DELETE FROM credits WHERE id_animateur=$id_animateur";
$result = executeRequete($query);
echo "$sanimateursupprcredit<br>";
}
if ($positionnement=="on")
{ // Effacement de l'enregistrement du positionnement
$query = "DELETE FROM positionnement WHERE id_animateur=$id_animateur";
$result = executeRequete($query);
echo "$sanimateursupprpositionnement<br>";
}
if ($parcours=="on")
{ // Effacement de l'enregistrement du parcours pédagogique
$query = "DELETE FROM parcours WHERE id_animateur=$id_animateur";
$result = executeRequete($query);
echo "$sanimateursupprparcours<br>";
}
if ($utilisation=="on")
{ // Effacement de l'enregistrement des accès en individuel
$query = "DELETE FROM utilisation_postes WHERE id_animateur=$id_animateur";
$result = executeRequete($query);
echo "$sanimateursupprutilisations<br>";
}
echo "</p>\n";
// Effacement du compte sur la machine local
if ($nis=="on")
{ // Compte NIS et FTP
$comm="userdel -r $animateur->login";
executecommande("sudo $comm");
echo "<p>$sanimateursupprident</p>";
}
if ($samba=="on")
{ // compte Samba
$comm="smbpasswd -x $animateur->login";
executecommande("sudo $comm");
echo "<p>$sanimateursupprsamba</p>";
}
if ($courriel=="on")
{ // compte de messagerie
$req="SELECT * FROM domaines";
$res=executeRequete($req);
while ($domaine=$res->fetchrow(DB_FETCHMODE_OBJECT))
if (strpos($animateur->courriel, $domaine->domaine))
{
$comm="$dirvpopmail/vdeluser $animateur->courriel";
echo "<p>$sanimateursupprcourriel</p>";
executecommande("sudo $comm");
}
}
echo cadre_fin();
break;
case 3: // Ajout formulaire, juste le nom et le prénom
echo cadre_debut($sanimateurnouv1);
if (ANIMATEURS_AUTRES<"w")
echo $pasledroit;
else
form_nouvel_animateur(31); // 31 = operation au sortir du formulaire pour
regarder si c'est un doublon
echo cadre_fin();
break;
case 31: // Ajout formulaire, proposition de login
echo cadre_debut($sanimateurnouv1);
if (ANIMATEURS_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// Regarder s'il n'y a pas doublon
$req="SELECT * FROM animateurs WHERE nom=\"$nom\" AND prenom=\"$prenom\"";
$res=executeRequete($req);
if ($res->fetchrow(DB_FETCHMODE_OBJECT))
{
echo "<P>Attention, le nom et le prénom existent déjà !</P>\n";
echo cadre_fin();
break;
}
$login=strtolower(substr($prenom, 0, 1).substr($nom, 0, 7));
$res=recherche("animateurs", "login", $login);
$res2=recherche("hebergements", "login", $login);
if ($res->fetchrow(DB_FETCHMODE_OBJECT) ||
$res2->fetchrow(DB_FETCHMODE_OBJECT))
{
$login=strtolower(substr($prenom, 0, 2).substr($nom, 0, 6));
$res=recherche("animateurs", "login", $login);
$res2=recherche("hebergements", "login", $login);
$n=1;
while ($res->fetchrow(DB_FETCHMODE_OBJECT) ||
$res2->fetchrow(DB_FETCHMODE_OBJECT))
{
$login=strtolower(substr($prenom, 0, 1).substr($nom, 0, 6)).$n;
$res=recherche("animateurs", "login", $login);
$res2=recherche("hebergements", "login", $login);
$n++;
}
}
$nom=strtoupper($nom);
$prenom=ucfirst(strtolower($prenom));
form_animateur("nouveau", 32, $nom, $prenom, $login); // 32 = operation au
sortir du formulaire pour le traiter
echo cadre_fin();
break;
case 32: // Ajout confirmé
echo cadre_debut($sanimateurnouv1);
if (ANIMATEURS_AUTRES<"w")
{
echo $pasledroit;
echo cadre_fin();
break;
}
// Attention, les informations de courriels n'affectent pas le compte de
courriel local
$mes="";
if ($login=="")
$mes .= "$manqueidentifiant<br>";
else
{ // Regarder si le login n'existe pas déjà
$req="SELECT * FROM animateurs WHERE login=\"$login\"";
$res=executeRequete($req);
if ($res->fetchrow(DB_FETCHMODE_OBJECT))
echo "$ssiteidentexistantanimateur<br>";
$req="SELECT * FROM hebergements WHERE login=\"$login\"";
$res=executeRequete($req);
if ($res->fetchrow(DB_FETCHMODE_OBJECT))
echo "$ssiteidentexistant<br>";
}
if ($motdepasse=="" || $motdepasse2=="") $mes .= "$manquemotdepasse<br>";
if ($motdepasse!=$motdepasse2) $mes .= "$motdepassedifferents<br>";
if ($nom=="") $mes .= "$smanquenom<br>";
if ($prenom=="") $mes .= "$manqueprenom<br>";
if (defined("FCT_TARIFS"))
if ($tarif==-1) $mes .= "$smanquetarif<br>";
// Mise en condition des heures et des dates
$naissance="";
if ($naissanceannee>"" || $naissancemois>""
|| $naissancejour>"")
{
if (!checkdate($naissancemois,
$naissancejour,
$naissanceannee))
$mes.="$smanquenaissance<br>";
else
$naissance=$naissanceannee."-".
$naissancemois."-".
$naissancejour;
}
if (defined("FCT_CREDITS"))
{
if (defined("FCT_UTILISATIONS"))
{
$debut_abonnement_acces_individuel="";
if ($debut_abonnement_acces_individuelannee>"" ||
$debut_abonnement_acces_individuelmois>""
||
$debut_abonnement_acces_individueljour>"")
{
if
(!checkdate($debut_abonnement_acces_individuelmois,
$debut_abonnement_acces_individueljour,
$debut_abonnement_acces_individuelannee))
$mes.="$smanquedatedebabonnementindiv<br>";
else
$debut_abonnement_acces_individuel=$debut_abonnement_acces_individuelannee."-".
$debut_abonnement_acces_individuelmois."-".
$debut_abonnement_acces_individueljour;
}
$fin_abonnement_acces_individuel="";
if ($fin_abonnement_acces_individuelannee>"" ||
$fin_abonnement_acces_individuelmois>""
||
$fin_abonnement_acces_individueljour>"")
{
if
(!checkdate($fin_abonnement_acces_individuelmois,
$fin_abonnement_acces_individueljour,
$fin_abonnement_acces_individuelannee))
$mes.="$smanquedatefinabonnementindiv<br>";
else
$fin_abonnement_acces_individuel=$fin_abonnement_acces_individuelannee."-".
$fin_abonnement_acces_individuelmois."-".
$fin_abonnement_acces_individueljour;
}
} // if defined fct_utilisations
if (defined("FCT_PARCOURS"))
{
$debut_abonnement_activites_collectives="";
if ($debut_abonnement_activites_collectivesannee>"" ||
$debut_abonnement_activites_collectivesmois>""
||
$debut_abonnement_activites_collectivesjour>"")
{
if
(!checkdate($debut_abonnement_activites_collectivesmois,
$debut_abonnement_activites_collectivesjour,
$debut_abonnement_activites_collectivesannee))
$mes.="$smanquedatedebabonnementcolle<br>";
else
$debut_abonnement_activites_collectives=$debut_abonnement_activites_collectivesannee."-".
$debut_abonnement_activites_collectivesmois."-".
$debut_abonnement_activites_collectivesjour;
}
$fin_abonnement_activites_collectives="";
if ($fin_abonnement_activites_collectivesannee>"" ||
$fin_abonnement_activites_collectivesmois>""
||
$fin_abonnement_activites_collectivesjour>"")
{
if
(!checkdate($fin_abonnement_activites_collectivesmois,
$fin_abonnement_activites_collectivesjour,
$fin_abonnement_activites_collectivesannee))
$mes.="$smanquedatefinabonnementcolle<br>";
else
$fin_abonnement_activites_collectives=$fin_abonnement_activites_collectivesannee."-".
$fin_abonnement_activites_collectivesmois."-".
$fin_abonnement_activites_collectivesjour;
}
} // if defined FCT_PARCOURS
} // if defined FCT_CREDITS
if ($mes!="")
{
echo "<p>$mes</p>";
echo cadre_fin();
break;
}
// on crypte le mot de passe
// $motdepassec=md5($motdepasse);
// commenté parce qu'on attend l'impression de la carte d'animateur
// Insertion dans la table animateurs (informations personnelles)
$query = "INSERT INTO animateurs (nom,prenom,login,motdepasse,naissance,sexe,
adresse,ville,telephone, courriel,id_structure_provenance,
commentaire,date)
VALUES ('$nom','$prenom','$login','$motdepasse','$naissance','$sexe',
'$adresse','$ville','$telephone','$courriel','$id_structure_provenance',
'$commentaire', NOW())";
if (!$result = executeRequete($query))
{
echo "<p>$spbmajanimateur</p>\n";
echo cadre_fin();
break;
}
if (defined("FCT_CREDITS"))
{
// retrouver l'id pour s'en servir dans la table [crédits]
$id_animateur= $db->getOne("SELECT LAST_INSERT_ID()");
$credit_reservable=h2min($credit_reservable);
$credit_acces_individuel=h2min($credit_acces_individuel);
$credit_activites_collectives=h2min($credit_activites_collectives);
// Insertion dans la table crédits
$query = "INSERT INTO credits (id_animateur, id_tarif,
credit_acces_individuel,
credit_activites_collectives,
credit_reservable, commentaires,
debut_abonnement_acces_individuel,
fin_abonnement_acces_individuel,
debut_abonnement_activites_collectives,
fin_abonnement_activites_collectives,
carte)
VALUES
('$id_animateur', '$tarif', '$credit_acces_individuel',
'$credit_activites_collectives',
'$credit_reservable', \"$commentaires\",
'$debut_abonnement_acces_individuel',
'$fin_abonnement_acces_individuel',
'$debut_abonnement_activites_collectives',
'$fin_abonnement_activites_collectives',
\"$carte\")";
if (!$res=executeRequete($query))
echo "<p>$spbmajcredit</p>\n";
} // if defined fct_credit
// TODO : vérifier que l'admin est dans une structure qui gère les comptes
locaux sur le serveur
// On crypte le mot de passe pour créer le compte local sous Linux
$motdepassec = crypt($motdepasse, "Sa");
$comm="useradd $login -m -p $motdepassec -c \"$prenom $nom\" -s /bin/bash";
executecommande("sudo $comm");
echo "<p>$sanimateurcompteok</p>";
$comm="smbpasswd -a $login $motdepasse";
//ajoute_commande($comm);
executecommande("sudo $comm");
echo "<p>$sanimateursambaok</p>";
echo "<p>$sanimateurmajnis</p>";
$cmd = "cd /var/yp; sudo make";
executecommande($cmd);
// Dans le cas ou le compte n'est pas créé directement, mais via Webmin :
// <p><a href="https://soleil:10000/useradmin/edit_user.cgi"
target="webadmin">Aller à Webmin pour créer le compte utilisateur
sur le serveur.</a></p>
// <p><a href="http://www.pierrefitte93.fr/cgi-bin/qmailadmin"
target="qmailadmin">Aller ` QmailAdmin pour créer le compte de courriel
de l'animateur.</a></p>
$date=date('Y-m-d');
echo "<p><a
href=\"table_horaire_session.php?date=$date\">$sanimateurversplanning</a></p>
<p><a href=\"$PHP_SELF?operation=3\">$sanimateurencorecreer</a>.</p>\n";
cadre_fin();
break;
case 5 : // Affichage de la liste des animateurs
echo cadre_debut($sanimateurliste);
if (ANIMATEURS_AUTRES<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
liste_animateurs();
echo "<p><a href=\"$PHP_SELF?operation=3\">$sanimateurcreer</a>.</p>\n";
echo cadre_fin();
break;
case 7 : // Affichage des informations de crédit de l'animateur
echo cadre_debut($sanimateuretatcredits, "align=center",
COULEUR_CREDITS);
if (ANIMATEURS_AUTRES<"r" && ANIMATEURS_MOI<"r")
{
echo $pasledroit;
echo cadre_fin(COULEUR_CREDITS);
break;
}
$res = recherche("animateurs", "id", $id_animateur);
$animateur = $res->fetchrow(DB_FETCHMODE_OBJECT);
affiche_credit($animateur);
echo cadre_fin(COULEUR_CREDITS);
break;
case 8 : // Formulaire de signalement d'erreur ou de changement dans les
informations personnelles
// TODO
echo "<p>Pas encore prêt !</p>\n";
break;
default : // Affichage des données personnelles
echo cadre_debut($sanimateurinfoperso);
if (ANIMATEURS_AUTRES<"r" && ANIMATEURS_MOI<"r")
{
echo $pasledroit;
echo cadre_fin();
break;
}
$res = recherche("animateurs", "id", $id_animateur);
$animateur = $res->fetchrow(DB_FETCHMODE_OBJECT);
affiche_animateur($animateur, "COMPLET");
// TODO : proposer à l'animateur pas administrateur
// une demande de modification de
// coordonnées (par formulaire mail).
// et changement de mot de passe
if (ANIMATEURS_MOI>="w" || ANIMATEURS_AUTRES>="w")
{
echo "<p align=center>
<a
href=\"$PHP_SELF?operation=6&id_animateur=$id_animateur\">$schangermdp</a><br>
<a
href=\"$PHP_SELF?operation=1&id_animateur=$id_animateur\">$modifier
$sanimateurmodifier</a><br>";
if (COURRIELS_MOI>="w" || COURRIELS_AUTRES>="w")
echo "<a
href=\"courriel.php?operation=71&id_animateur=$id_animateur\">$ajouter
$screercourriel</a><br>";
if (ANIMATEURS_AUTRES>="w" && $is_ident=="structure")
echo "<a
href=\"$PHP_SELF?operation=2&id_animateur=$id_animateur\">$supprimer
$sanimateursupprimer</a>";
echo "</p>\n";
}
echo cadre_fin();
/*if (CREDITS_AUTRES>="r" && ($is_ident=="structure" ||
$is_ident=="animateur"))
{
echo "<br>";
echo cadre_debut($sCredits, "align=center", COULEUR_CREDITS);
affiche_credit($animateur);
echo cadre_fin(COULEUR_CREDITS);
}
if (PARCOURS_AUTRES>="r" && ($is_ident=="structure" ||
$is_ident=="animateur"))
{
echo "<br>";
echo cadre_debut($sParcours, "align=center", COULEUR_PARCOURS);
if ($id_animateur)
afficheparcours($id_animateur);
echo cadre_fin(COULEUR_PARCOURS);
echo cadre_debut($sinitiationsaccessibles, "align=center",
COULEUR_SESSIONS);
afficheSessionsAccessibles($id_animateur, "accessible");
echo cadre_fin(COULEUR_SESSIONS);
}
if (UTILISATIONS_AUTRES>="r" && ($is_ident=="structure" ||
$is_ident=="animateur"))
{
echo "<br>";
echo cadre_debut($saccesindivprevus, "align=center",
COULEUR_UTILISATIONS);
affiche_utilisations($id_animateur, FUTUR);
echo cadre_fin(COULEUR_UTILISATIONS);
echo cadre_debut($saccesindivpasses, "align=center", COULEUR_UTILISATIONS);
affiche_utilisations($id_animateur, PASSE);
echo cadre_fin(COULEUR_UTILISATIONS);
}
break;
*/
} // fin du switch
require("basdepage.inc.php");
echo "</body></html>";
require("footer.inc.php");
?>
--- NEW FILE ---
<?php
/*
Copyright (C) 2001, 2002 Loïc 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/
*/
//phpinfo();
require_once("header.inc.php"); // C'est dans header.inc.php que sont retrouvés
les droits issus de la table droits
if (!defined("FCT_HORAIRES"))
{
echo $fctnonactive;
exit;
}
require_once("constantes.inc.php"); // définition 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 réservations
des postes en accès individuel par des usagers
//require_once("tableaux.inc.php"); // Concernant l'affichage
transposé d'un tableau
require_once("animateurs.inc.php"); // concernant les animateurs
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 thèmes
//require_once("parcours.inc.php"); // concernant les parcours des
usagers et leur positionnement
echo "<html><head><title>$shorairesani - epnadmin</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>";
$titr = $shortitre;
$datemaj="30 avril 2003";
define("COULEUR", COULEUR_HORAIRES);
require("entete.inc.php");
function AfficheCalendrier($id_localisation, $date)
{
global $unitehoraire,
$PHP_SELF,$shorlegende,$shoraccesindiv,$shoractivcoll,$shorsemainedu,$id_animateur;
// 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 légende total d'heure par animateur par la suite
// On n'a nécessairement qu'une ligne
echo "<hr>\n";
$fini=true;
$lheure=MINHORAIRE;
$indtable=0;
$indi=0;
$heuretmp=MINHORAIRE;
$heure=MINHORAIRE;
$heure=min2h(h2min($heure) - 4*$unitehoraire);
while($fini)
{
$indtable++;
echo"<A NAME=\"[$indtable]\"></A>";
if(h2min($lheure)>=h2min(MAXHORAIRE))
break;
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 name=$indtable>\n";
// Ligne des horaires
$lignehoraires="<tr
bgcolor=\"".COULEUR_HORAIRES."\"><td></td>";//<th>".datetodate($date)."</th>";
$nbcolparheure = 60/$unitehoraire;
////////$heure=$lheure;
//die($heure. " ". $lheure . " " .h2min($heure) . " "
.(h2min($lheure)+240));
for
($heuretmp=$lheure;h2min($heuretmp)<(h2min($lheure)+240);$heuretmp=min2h(h2min($heuretmp)
+ 60))
{
$lignehoraires.="<td colspan=\"".$nbcolparheure."\">";
$lignehoraires.=sprintf("%sh - %sh", date("H",
strtotime($heuretmp)), date("H", strtotime("+1 hour", strtotime($heuretmp))));
$lignehoraires.="</td>\n";
}
$lignehoraires.="</tr>\n";
$lheure=$heuretmp;
echo $lignehoraires;
$datecur=$date;
$heureencours=0;
$heure=min2h(h2min($heure) + 4*$unitehoraire);
$datecur=date("Y-m-d", strtotime("+0 days", strtotime($datecur)));
while ($datecur<date("Y-m-d", strtotime("+7 days", strtotime($date))))
{
if(!($datecur<date("Y-m-d", strtotime("+7 days",
strtotime($date)))))
{
$fini=false;
break;
}
if($heureencours==4)
{
break;
}
echo "<tr><td
bgcolor=\"lightgrey\">".datetodate($datecur)."</td>";
// Il va falloir construire la ligne des horaires en tenant
compte des horaires et des réservations
$nbcol=1;
//while (min2h($heure)<min2h(MAXHORAIRE))
while ($heureencours!=4)
{
$indi++;
$heureencours++;
// On regarde si c'est déjà ouvert ou pas.
/* $req3 = "SELECT * FROM calendrier WHERE
date=\"$datecur\" AND calendrier.debut<=\"$heure\" AND \"$heure\"<fin";
$res3 = executeRequete($req3);
if(DB::iserror($res3))
break;
$tranchehoraire =
$res3->fetchrow(DB_FETCHMODE_OBJECT);*/
$nbcol++;
echo "<td";
/*if ($tranchehoraire->id_localisation)
{*/
echo " bgcolor=\"grey\">\n";
/*}
else
{
echo " bgcolor=\"pink\">\n";
}*/
echo "<form action=$PHP_SELF#[$indtable]
name=\"localisateur$indi\">";
echo "<select name=\"id_localisation\"
onchange=\"document.localisateur$indi.submit();\"";
$req="select *,localisations.id as
id_localisation from localisations,structures where
structures.id=localisations.id_structure";
$res=executerequete($req);
$reqvv="select * from animateurs_calendrier
where id_animateur=$id_animateur and date=\"$datecur\" and debut=\"$heure\"";
$resvv=executerequete($reqvv);
$pardefaut=0;
if(!DB::iserror($resvv))
{
$dejaprevu=$resvv->fetchrow(DB_FETCHMODE_OBJECT);
$pardefaut=1;
}
echo "<option value=0></option>";
while($listloc=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
$req3 = "SELECT * FROM calendrier WHERE
date=\"$datecur\" AND debut<=\"$heure\" AND fin>\"$heure\" AND
id_localisation=\"$listloc->id_localisation\"";
//echo($req3);
$res3 = executeRequete($req3);
if(DB::iserror($res3))
{
$etat="F:";
}
else
{
$rien=$res3->numrows();
if ($rien!=0)
$etat="O:";
else
$etat="F:";
}
if ($pardefaut==1)
{
/*while
($dejaprevu=$resvv->fetchrow(DB_FETCHMODE_OBJECT) ||
($dejaprevu->id_localisation==$listloc->id_localisation))
{}*/
if
($dejaprevu->id_localisation==$listloc->id_localisation)
{
echo "<option
selected value=\"$listloc->id_localisation\">$etat
$listloc->structure:$listloc->salle</option>";
$pardefaut=0;
}
else
echo "<option
value=\"$listloc->id_localisation\">$etat
$listloc->structure:$listloc->salle</option>";
}
else
echo "<option
value=\"$listloc->id_localisation\">$etat
$listloc->structure:$listloc->salle</option>";
}
echo "</select>";
echo "<input type=\"hidden\" name=\"id_animateur\"
value=\"$id_animateur\"></input>";
echo "<input type=\"hidden\" name=\"operation\"
value=\"11\"></input>";
echo "<input type=\"hidden\" name=\"heure\" value=\"" .
h2min($heure) ."\"></input>";
echo "<input type=\"hidden\" name=\"date\"
value=\"$datecur\"></input>";
echo "</form>";
echo "</TD>";
$res3->free();
$heure=min2h(h2min($heure) + $unitehoraire);
} // while $heure
$heure=min2h(h2min($heure) - 4*$unitehoraire);
$heureencours=0;
$datecur=date("Y-m-d", strtotime("+1 days",
strtotime($datecur)));
} // while
echo "</tr>\n";
if (HORAIRES_AUTRES>="w" || (HORAIRES_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 modèle</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 AfficheModèle($id_localisation)
{
global $unitehoraire, $PHP_SELF;
// Construction de la requête.
/* $req = "SELECT DISTINCT structures.ville AS ville,
structures.structure AS structure,
localisations.salle AS salle,
id_structure
FROM localisations
LEFT JOIN structures ON structures.id=localisations.id_structure
WHERE localisations.id=\"$id_localisation\"";
$res = executeRequete($req);*/
$unlieu=false;
// On n'a qu'une ligne
//$reponse = $res->fetchrow(DB_FETCHMODE_OBJECT);
echo cadre_debut("<h3>".localisation($id_localisation)."</h3>");
// Affichage des disponibilités en fonction du calendrier et des réservations
// Là, il faudrait afficher le planning de la salle concernée.
// 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;$heure<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 réservations
$heure=MINHORAIRE;
while ($heure<MAXHORAIRE)
{
// On regarde si c'est déjà ouvert ou pas.
$req3 = "SELECT * FROM animateurs_calendrier
WHERE jour=\"$nomjour\"
AND id_localisation=\"$id_localisation\"
AND debut<=\"$heure\" AND \"$heure\"<fin";
$res3 = executeRequete($req3);
$tranchehoraire = $res3->fetchrow(DB_FETCHMODE_OBJECT);
echo "<td";
switch ($tranchehoraire->ouverture)
{
case "accès individuels" :
echo " bgcolor=\"".COULEUR_UTILISATIONS."\">\n";
break;
case "activités collectives" :
echo " bgcolor=\"".COULEUR_SESSIONS."\">\n";
break;
default :
echo " bgcolor=\"grey\">\n";
break;
} // switch
if (!$tranchehoraire->ouverture)
echo "F ";
elseif (HORAIRES_AUTRES>="w" || (HORAIRES_MOI>="w" &&
id_structure==$reponse->id_structure))
echo "<a
href=\"$PHP_SELF?operation=51&id_localisation=$id_localisation&nomjour=$nomjour&debut=$heure\">f</a>
\n";
if ($tranchehoraire->ouverture=="accès individuels")
echo "I ";
elseif (HORAIRES_AUTRES>="w" || (HORAIRES_MOI>="w" &&
id_structure==$reponse->id_structure))
echo "<a
href=\"$PHP_SELF?operation=52&id_localisation=$id_localisation&nomjour=$nomjour&debut=$heure\">i</a>
";
if ($tranchehoraire->ouverture=="activités collectives")
echo "C ";
elseif (HORAIRES_AUTRES>="w" || (HORAIRES_MOI>="w" &&
id_structure==$reponse->id_structure))
echo "<a
href=\"$PHP_SELF?operation=53&id_localisation=$id_localisation&nomjour=$nomjour&debut=$heure\">c</a>";
echo "</td>\n";
$heure=min2h(h2min($heure)+$unitehoraire);
$res3->free();
} // 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=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
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;
}
// Début du contenu de la page
echo cadre_debut("calendrier de l'animateur");
echo "<form action=\"$PHPSELF?operation=1\" method=\"post\" name=\"choixanim\">
<select name=\"id_animateur\"
onchange=\"document.choixanim.submit();\"";
$req="select * from animateurs";
$res=executerequete($req);
echo "<option value=0></option>";
while($listanim=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
if($listanim->id==$id_animateur)
echo "<option selected
value=\"$listanim->id\">$listanim->prenom,$listanim->nom</option>";
else
echo "<option
value=\"$listanim->id\">$listanim->prenom,$listanim->nom</option>";
}
echo "</select>";
echo "</form>";
//fonction de choix d'animateurs
echo cadre_fin();
if(defined("ANIMATEURS") && ANIMATEURS>="~")
{
switch($operation)
{
case 51 : // fermer un créneau
$ouverture="";
case 52 : // ouvrir accès individuel d'un créneau
if (!$ouverture)
$ouverture="accès individuels";
case 53 : // ouvrir activité collective d'un créneau
if (! verifiedroits("w"))
break;
if (!$ouverture)
$ouverture="activités collectives";
// calcul de la fin du créneau
// $heure=$debut;
$heurefin=date("H:i:00", strtotime("+".$unitehoraire." minutes",
strtotime($heure)));
//debug("$heure à $heurefin");
// On commence par retirer le créneau ancien s'il existe
$req = "SELECT * FROM animateurs_calendrier
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut<=\"$heure\" AND \"$heurefin\"<=fin
AND id_animateur=\"$id_animateur\"";
$res = executeRequete($req);
if ($tranche=$res->fetchrow(DB_FETCHMODE_OBJECT))
{ // oui, ça fait partie d'une tranche horaire
if (($heure==$tranche->debut) & ($heurefin==$tranche->fin))
{ // ça correspond exactement à une tranche, alors on la détruit
$req1 = "DELETE FROM animateurs_calendrier
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut=\"$heure\" AND \"$heurefin\"=fin
AND id_animateur=\"$id_animateur\"";
$res1 = executeRequete($req1);
//debug("tranche supprimee");
}
elseif ($heure==$tranche->debut)
{ // la tranche débute le créneau, il faut le reculer
$req1 = "UPDATE animateurs_calendrier SET debut=\"$heurefin\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut=\"$heure\"
AND id_animateur=\"$id_animateur\"";
$res1 = executeRequete($req1);
//debug ("tranche réduite par le début");
}
elseif ($heurefin==$tranche->fin)
{ // la tranche termine le créneau, il faut la réduire
$req1 = "UPDATE animateurs_calendrier SET fin=\"$heure\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND fin=\"$heurefin\"
AND id_animateur=\"$id_animateur\"";
$res1 = executeRequete($req1);
//debug ("tranche réduite par la fin");
}
else
{ // on se trouve au milieu d'un créneau, il faut le cinder en deux
// celui du début
$heurefinorigine=$tranche->fin;
$req1 = "INSERT INTO animateurs_calendrier
(id_animateur,id_localisation, jour, debut, fin)
VALUES (\"$id_animateur\",\"$id_localisation\",
\"$nomjour\", \"$heurefin\", \"$tranche->fin\")";
$res1 = executeRequete($req1);
$req1 = "UPDATE animateurs_calendrier SET fin=\"$heure\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut<=\"$heure\" AND \"$heure\"<=fin
AND id_animateur=\"$id_animateur\"";
$res1 = executeRequete($req1);
//debug ("tranche coupée en deux");
}
}
// ouf, ça y est, on est sur qu'il n'y a plus de créneau qu'on veut
configurer.
//debug("$heure à $heurefin");
// Maintenant, il faut l'ajouter si besoin.
if ($operation!=51)
{
// On regarde si l'horaire précédent est du même genre que celui qu'on
veut
$req = "SELECT * FROM animateurs_calendrier
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND fin=\"$heure\"
AND ouverture=\"$ouverture\"";
$res = executeRequete($req);
$commeprecedent = $res->fetchrow(DB_FETCHMODE_OBJECT);
// On regarde si l'horaire suivant est du même genre que celui qu'on
veut
$req = "SELECT * FROM animateurs_calendrier
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut=\"$heurefin\"
AND ouverture=\"$ouverture\"";
$res = executeRequete($req);
$commesuivant = $res->fetchrow(DB_FETCHMODE_OBJECT);
if ($commeprecedent AND $commesuivant)
{ // réunir les deux créneaux
$req1 = "UPDATE animateurs_calendrier SET fin=\"$commesuivant->fin\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
$req1 = "DELETE FROM animateurs_calendrier
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut=\"$heurefin\"";
$res1 = executeRequete($req1);
//debug ("deux tranches réunies");
}
elseif ($commeprecedent AND !$commesuivant)
{ // allonger le crénau précédent
$req1 = "UPDATE animateurs_calendrier SET fin=\"$heurefin\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND fin=\"$heure\"";
$res1 = executeRequete($req1);
//debug ("créneau allongé");
}
elseif (!$commeprecedent AND $commesuivant)
{ // avancer le crénau suivant
$req1 = "UPDATE animateurs_calendrier SET debut=\"$heure\"
WHERE jour=\"$nomjour\" AND id_localisation=\"$id_localisation\"
AND debut=\"$heurefin\"";
$res1 = executeRequete($req1);
//debug ("créneau avancé");
}
else // en dehors de tout créneau identique
{ // ajouter le créneau
$req1 = "INSERT INTO animateurs_calendrier (id_localisation, jour,
debut, fin, ouverture)
VALUES (\"$id_localisation\", \"$nomjour\", \"$heure\",
\"$heurefin\", \"$ouverture\")";
$res1 = executeRequete($req1);
//debug("créneau ajouté");
}
} // if $operation!=51
case 5 : // Affichage des modèles hebdomadaires
if (! verifiedroits("r"))
break;
afficheModèle($id_localisation);
break;
case 11 : // fermer un créneau
// calcul de la fin du créneau
// $heure=$debut;
$heurefin=min2h($heure + $unitehoraire);
$heure=min2h($heure);
//$heurefin=date("H:i:00", strtotime("+".$unitehoraire." minutes",
strtotime($heure)));
//debug("$heure à $heurefin");
// On commence par retirer le créneau ancien s'il existe
$req = "SELECT * FROM animateurs_calendrier
WHERE date=\"$date\" AND debut=\"$heure\"
AND id_animateur=\"$id_animateur\"";
$res = executeRequete($req);
if ($tranche=$res->fetchrow(DB_FETCHMODE_OBJECT))
{ // oui, ça fait partie d'une tranche horaire
$req1 = "DELETE FROM animateurs_calendrier
WHERE date=\"$date\" AND debut=\"$heure\"
AND id_animateur=\"$id_animateur\"";
$res1 = executeRequete($req1);
}
// ouf, ça y est, on est sur qu'il n'y a plus de créneau qu'on veut
configurer.
//debug("$heure à $heurefin");
// Maintenant, il faut l'ajouter si besoin.
if ($id_localisation!=0)
{
$req1 = "INSERT INTO animateurs_calendrier
(id_animateur,id_localisation, date, debut, fin)
VALUES (\"$id_animateur\",\"$id_localisation\",
\"$date\", \"$heure\", \"$heurefin\")";
$res1 = executeRequete($req1);
//debug("créneau ajouté");
} // if $operation!=11
case 1 : // Affichage du animateurs_calendrier d'une salle pour un moi
correpondant à une date (courante)
if (! verifiedroits("r"))
break;
afficheCalendrier($id_animateur, $date);
break;
case 2 : // Appliquer le modèle de calendrier pour une semaine donnée
if (! verifiedroits("w"))
break;
// On commence par vider complètement le calendrier pour la semaine
donnée.
echo "<p>Vider le calendrier pour la semaine concernée...";
$datefin=date("Y-m-d", strtotime("+6 days", strtotime($date)));
$req="DELETE FROM animateurs_calendrier WHERE date>=\"$date\" AND
date<=\"$datefin\"
AND id_localisation=\"$id_localisation\"";
$res = executeRequete($req);
echo " fait !</p>";
// Ensuite, on applique le modèle sur la semain concernée
echo "<p>Appliquer le modèle au calendrier pour la semaine concernée...";
$req="SELECT * FROM animateurs_calendrier
WHERE id_localisation=\"$id_localisation\"
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_calendrier (id_localisation, date, debut,
fin, ouverture)
VALUES (\"$id_localisation\", \"$datejour\",
\"$horaire->debut\", \"$horaire->fin\", \"$horaire->ouverture\")";
$res2=executeRequete($req2);
}
$res3->free();
echo " fait !</p>";
// enfin, on affiche le résultat
afficheCalendrier($id_localisation, $date);
break;
case 3 : // Vider le calendrier pour une semaine donnée
if (! verifiedroits("w"))
break;
// On commence par vider complètement le calendrier pour la semaine
donnée.
echo "<p>Vider le calendrier pour la semaine concernée...";
$datefin=date("Y-m-d", strtotime("+6 days", strtotime($date)));
$req="DELETE FROM animateurs_calendrier WHERE date>=\"$date\" AND
date<=\"$datefin\"
AND id_localisation=\"$id_localisation\"";
$res = executeRequete($req);
// et on affiche le résultat
afficheCalendrier($id_localisation, $date);
break;
default : // liste des localisations
echo cadre_debut($slistelocalisations);
if (ANIMATEURS<="~")
{
echo $pasledroit;
echo cadre_fin();
break;
}
} // switch
} // if
else
echo $pasledroit;
include("basdepage.inc.php");
echo "</body></html>\n";
require("footer.inc.php");
?>
--- NEW FILE ---
<?php
/*
Copyright (C) 2001, 2002 Bertand Pallie, Loïc Dayot - Mairie 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");
require_once("constantes.inc.php"); // définition 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 réservations
des postes en accès 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 thèmes
//require_once("parcours.inc.php"); // concernant les parcours des
usagers et leur positionnement
// -
// Structures, lieux, salles -
// -
function animateur($id_structure)
{
$res=recherche("animateurs", "id", $id_structure);
$stru=$res->fetchrow(DB_FETCHMODE_OBJECT);
return "$stru->nom $stru->prenom à $stru->ville";
}
// Partie d'un formulaire proposant la liste déroulante des structures
function choix_animateur($id_stru, $champ="id_structure", $vide="n'importe
lequel")
{
echo "<select name=\"$champ\"><option value=\"\">$vide</option>\n";
$req="SELECT * FROM animateurs ORDER BY nom";
$res=executeRequete($req);
while ($structure=$res->fetchrow(DB_FETCHMODE_OBJECT))
{
echo "<option value=\"$structure->id\"";
if ($structure->id==$id_stru)
echo " selected";
echo ">".substr($structure->ville,0,10)." :
".substr($structure->structure,0,20)."\n";
}
echo "</select>\n";
}
?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Epnadmin-fr] CVS: epnadmin animateur.php,NONE,1.1 animateurs-horaires.php,NONE,1.1 animateurs.inc.php,NONE,1.1,
Loïc Dayot <=
- Prev by Date:
[Epnadmin-fr] CVS: epnadmin 6cartes.inc.php,1.3,1.4 AUTHORS,1.2,1.3 INSTALL,1.3,1.4 TODO,1.5,1.6 basdepage.inc.php,1.6,1.7 cartes.inc.php,1.4,1.5 config.php,1.11,1.12 configuration.php,1.11,1.12 constantes.inc.php,1.29,1.30 courriel.php,1.13,1.14 dateheure.inc.php,1.15,1.16 debug.inc.php,1.1,1.2 entete.inc.php,1.26,1.27 fonctions.inc.php,1.16,1.17 footer.inc.php,1.3,1.4 fr.lang.inc.php,1.21,1.22 header.inc.php,1.20,1.21 horaires.php,1.16,1.17 index.php,1.9,1.10 initiations.inc.php,1.9,1.10 initiations.php,1.11,1.12 inscription_session.php,1.21,1.22 localisations.php,1.7,1.8 logiciels.php,1.9,1.10 materiels.php,1.11,1.12 mysql.inc.php,1.3,1.4 parcours.inc.php,1.7,1.8 parcours.php,1.11,1.12 positionnement.php,1.9,1.10 prets.php,1.4,1.5 print.php,1.9,1.10 questions.php,1.5,1.6 reservations.inc.php,1.6,1.7 reservations.php,1.14,1.15 session.php,1.16,1.17 sessions.inc.php,1.8,1.9 siteweb.inc.php,1.11,1.12 siteweb.php,1.20,1.21 stats.php,1.17,1.18 structure.sql,1.9,1.10 structures.inc.php,1.10,1.11 structures.php,1.11,1.12 table_horaire.php,1.19,1.20 table_horaire_session.php,1.23,1.24 tarifs.php,1.2,1.3 themes.php,1.6,1.7 usagers.inc.php,1.13,1.14 usagers.php,1.22,1.23 usages.php,1.4,1.5
- Next by Date:
[Epnadmin-fr] attention
- Previous by thread:
[Epnadmin-fr] CVS: epnadmin 6cartes.inc.php,1.3,1.4 AUTHORS,1.2,1.3 INSTALL,1.3,1.4 TODO,1.5,1.6 basdepage.inc.php,1.6,1.7 cartes.inc.php,1.4,1.5 config.php,1.11,1.12 configuration.php,1.11,1.12 constantes.inc.php,1.29,1.30 courriel.php,1.13,1.14 dateheure.inc.php,1.15,1.16 debug.inc.php,1.1,1.2 entete.inc.php,1.26,1.27 fonctions.inc.php,1.16,1.17 footer.inc.php,1.3,1.4 fr.lang.inc.php,1.21,1.22 header.inc.php,1.20,1.21 horaires.php,1.16,1.17 index.php,1.9,1.10 initiations.inc.php,1.9,1.10 initiations.php,1.11,1.12 inscription_session.php,1.21,1.22 localisations.php,1.7,1.8 logiciels.php,1.9,1.10 materiels.php,1.11,1.12 mysql.inc.php,1.3,1.4 parcours.inc.php,1.7,1.8 parcours.php,1.11,1.12 positionnement.php,1.9,1.10 prets.php,1.4,1.5 print.php,1.9,1.10 questions.php,1.5,1.6 reservations.inc.php,1.6,1.7 reservations.php,1.14,1.15 session.php,1.16,1.17 sessions.inc.php,1.8,1.9 siteweb.inc.php,1.11,1.12 siteweb.php,1.20,1.21 stats.php,1.17,1.18 structure.sql,1.9,1.10 structures.inc.php,1.10,1.11 structures.php,1.11,1.12 table_horaire.php,1.19,1.20 table_horaire_session.php,1.23,1.24 tarifs.php,1.2,1.3 themes.php,1.6,1.7 usagers.inc.php,1.13,1.14 usagers.php,1.22,1.23 usages.php,1.4,1.5
- Next by thread:
[Epnadmin-fr] attention
- Index(es):