";
else
{
// on active ou réactive l'encodage
if (!active_encodage_nom_photo($alea_nom_photo)) $bilan="Impossible d'activer l'encodage dans la table 'setting').
";
else
{
// Cas du multisite
$rne="";
if (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == 'y' && !$rne=$_COOKIE['RNE'])
$bilan="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
if ($bilan=="")
{
$rne=(isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y')?$rne=$_COOKIE['RNE']."/":"";
$dossier_photos_eleves="../photos/".$rne."eleves/";
$R_dossier_photos_eleves=opendir($dossier_photos_eleves);
while ($photo=readdir($R_dossier_photos_eleves))
{
if (is_file($dossier_photos_eleves.$photo) && pathinfo($dossier_photos_eleves.$photo,PATHINFO_EXTENSION)=="jpg" && $photo!="index.html")
{
$t_noms_photos[]=$photo;
}
}
closedir($R_dossier_photos_eleves);
// on crée (ou recrée) un fichier témoin d'encodage activé
$fic_temoin=fopen($dossier_photos_eleves."encodage_active.txt","w");
fwrite($fic_temoin,encode_nom_photo("nom_photo"));
fclose($fic_temoin);
// on renomme les fichiers photo
foreach($t_noms_photos as $photo)
{
$nom_photo=pathinfo($dossier_photos_eleves.$photo,PATHINFO_FILENAME);
// si on re-encode les noms de fichiers il faut supprimer l'ancien encodage
if ($re_encoder) $nom_photo=substr($nom_photo,5);
// on en profite pour normaliser l'extension en .jpg
if (rename($dossier_photos_eleves.$photo,$dossier_photos_eleves.encode_nom_photo($nom_photo).".jpg")) $nb_modifs++;
else
{
$nb_erreurs++;
if ($nb_erreurs<=10) $bilan.="Impossible d'encoder ".$nom_photo.".jpg
";
}
}
}
}
}
return $bilan;
}
/**
* Désactive l'encodage des noms des fichiers photo
* Renvoie un chaîne vide si tout s'est bien passé, les erreurs rencontrées sinon
*/
function des_encode_nom_photo_des_eleves()
{
global $nb_modifs,$nb_erreurs,$gepiSettings;
$bilan="";
// tableau stockant les noms des fichiers photo
// on ne peut pas renommer les fichiers tout en parcourant le dossier photos
// sinon des fichiers peuvent être renommés plusieurs fois
$t_noms_photos=array();
if (!getSettingAOui('encodage_nom_photo')) return "L'encodage n'est pas activé.
";
else
{
// on désactive l'encodage des photos
if (!saveSetting('encodage_nom_photo','no')) $bilan="Impossible de désactiver l'encodage.
";
else
{
// Cas du multisite
$rne="";
if (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == 'y' && !$rne=$_COOKIE['RNE'])
$bilan="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
if ($bilan=="")
{
$rne=(isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y')?$rne=$_COOKIE['RNE']."/":"";
$dossier_photos_eleves="../photos/".$rne."eleves/";
$R_dossier_photos_eleves=opendir($dossier_photos_eleves);
while ($photo=readdir($R_dossier_photos_eleves))
{
if (is_file($dossier_photos_eleves.$photo) && pathinfo($dossier_photos_eleves.$photo,PATHINFO_EXTENSION)=="jpg" && $photo!="index.html")
{
$t_noms_photos[]=$photo;
}
}
closedir($R_dossier_photos_eleves);
// on supprime le fichier témoin d'encodage activé
if (file_exists($dossier_photos_eleves."encodage_active.txt")) unlink($dossier_photos_eleves."encodage_active.txt");
// on renomme les fichiers photo
foreach($t_noms_photos as $photo)
{
$nom_photo=pathinfo($dossier_photos_eleves.$photo,PATHINFO_FILENAME);
// supprimer l'ancien encodage
$nom_photo=substr($nom_photo,5);
// on en profite pour normaliser l'extension en .jpg
if (rename($dossier_photos_eleves.$photo,$dossier_photos_eleves.$nom_photo.".jpg")) $nb_modifs++;
else
{
$nb_erreurs++;
if ($nb_erreurs<=10) $bilan.="Impossible de dés-encoder ".$nom_photo.".jpg
";
}
}
}
}
}
return $bilan;
}
/**
* Vérifie la cohérence entre le contenu du dossier des photos des éléves
* et les entrées de la table 'setting'
* Renvoie un chaîne donnant l'état présent de l'encodage si tout est correct
* ou un descriptif de l'incohérence et de la solution éventuelle
*/
function verifie_coherence_encodage()
{
// Cas du multisite
$rne=""; $bilan="";
if (isset($GLOBALS['multisite']) && $GLOBALS['multisite'] == 'y' && !$rne=$_COOKIE['RNE'])
$bilan="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
if ($bilan=="")
{
$rne=(isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y')?$rne=$_COOKIE['RNE']."/":"";
$dossier_photos_eleves="../photos/".$rne."eleves/";
if (getSettingAOui('encodage_nom_photo'))
if (file_exists($dossier_photos_eleves."encodage_active.txt"))
{
// on vérifie la cohérence entre son contenu et la valeur de 'alea_nom_photo'
$fic_temoin=fopen($dossier_photos_eleves."encodage_active.txt","r");
$temoin=fgets($fic_temoin);
fclose($fic_temoin);
if ($temoin==encode_nom_photo("nom_photo"))
return array('message'=>"l'encodage est activé.",'type_incoherence'=>0);
else return array('message'=>"l'encodage est activé mais il y a une incohérence avec l'état de la base, il faut ré-encoder les noms des fichiers photo des élèves.",'type_incoherence'=>1);
}
else return array('message'=>"l'encodage n'est pas activé mais il y a une incohérence avec l'état de la base, il faut actualiser le paramètre 'encodage_nom_photo' en cliquant sur ce lien.",'type_incoherence'=>2);
else
if (file_exists($dossier_photos_eleves."encodage_active.txt"))
{
return array('message'=>"l'encodage est activé mais il y a une incohérence avec l'état de la base, il faut actualiser le paramètre 'encodage_nom_photo' en cliquant sur ce lien puis, si nécessaire, ré-encoder les noms des fichiers photo des élèves.",'type_incoherence'=>3);
}
else return array('message'=>"l'encodage est désactivé.",'type_incoherence'=>0);
}
}
function purge_dossier_photos($type_utilisateurs) {
// $type_utilisateurs : eleves ou personnels
global $repertoire_photos,$nb_photos_supp,$nb_erreurs;
// $tab_identifiants : tableau des login ou elenoet présents dans la base
$tab_identifiants=array(); $pt=0;
// pour les élèves on cherchera parmi les fichiers elenoet.jpg
if ($type_utilisateurs=="eleves")
{
$r_sql="SELECT `elenoet` FROM `eleves`";
$R_identifiants=mysqli_query($GLOBALS["mysqli"], $r_sql);
if ($R_identifiants)
{
while ($pt";
if ($chemin_fichier!=$destination.$fichier)
if (!@unlink($chemin_fichier)) $erreurs.="Impossible de supprimer le fichier ".$chemin_fichier.".
";
}
}
}
closedir($dossier);
}
return $erreurs;
}
function del_tree($chemin) {
// supprime le dossier ou le fichier $chemin
$erreurs="";
if ($chemin[strlen($chemin)-1] != "/") $chemin.= "/";
if (is_dir($chemin)) {
$dossier = opendir($chemin);
while ($fichier = readdir($dossier)) {
if ($fichier != "." && $fichier != "..") {
$chemin_fichier = $chemin . $fichier;
if (is_dir($chemin_fichier)) del_tree($chemin_fichier);
else if (!@unlink($chemin_fichier)) $erreurs.="Impossible de supprimer le fichier ".$chemin_fichier.".
";
}
}
closedir($dossier);
if (!@rmdir($chemin)) $erreurs.="Impossible de supprimer le dossier ".$chemin.".
";
}
else if (!@unlink($chemin)) $erreurs.="Impossible de supprimer le fichier".$chemin.".
";
return $erreurs;
}
function copie_temp_vers_photos(&$nb_photos,$dossier_a_traiter,$type_a_traiter,$ecraser=true,$test_folder=false,$encodage=false)
// $dossier_a_traiter : 'eleves' ou 'personnels'
// $type_a_traiter : : 'élève' ou 'personnel'
{
global $repertoire_photos,$dir_temp,$msg_nb_trts,$msg,$avertissement;
$folder = $dir_temp."/photos/".$dossier_a_traiter."/";
if($test_folder && !file_exists($folder)) {
$avertissement.="Votre ZIP ne contient pas l'arborescence /photos/".$dossier_a_traiter." :
Si vous souhaitiez restaurer des photos des ".$type_a_traiter."s, vous devriez avoir
dans votre ZIP les photos des ".$type_a_traiter."s dans un sous-dossier photos/".$dossier_a_traiter."/
\n";
}
else {
$nb_photos=0;
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
//if ($Fichier != "index.html" && $Fichier != "." && $Fichier != ".." && ((preg_match('/\.jpg/i', $Fichier))||(preg_match('/\.jpeg/i', $Fichier)))) {
if ((preg_match('/\.jpg/i', $Fichier))||(preg_match('/\.jpeg/i', $Fichier))) {
$Fichier_dest=pathinfo($Fichier,PATHINFO_FILENAME);
if ($encodage) $Fichier_dest=encode_nom_photo($Fichier_dest);
$Fichier_dest.=".jpg";
$source=$folder.$Fichier;
$dest=$repertoire_photos.$dossier_a_traiter."/".$Fichier_dest;
if ($ecraser) {
@copy($source, $dest);
$nb_photos++;
} else {
if (!is_file($dest)) {
@copy($source, $dest);
$nb_photos++;
}
}
}
}
if($nb_photos>0) {$msg_nb_trts.=$nb_photos." photo(s) ".$type_a_traiter."(s) transférée(s).
\n";}
closedir($dossier);
}
}
function redimensionne_photos($dossier)
{
$nb_photos_redim=0;
$h_dossier = opendir($dossier);
while ($fichier=readdir($h_dossier))
{
if (mb_strtolower(pathinfo($fichier,PATHINFO_EXTENSION))=="jpg")
{
if (getSettingValue("active_module_trombinoscopes_rt")!='')
$redim_OK=redim_photo($dossier.$fichier,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes"),getSettingValue("active_module_trombinoscopes_rt"));
else
$redim_OK=redim_photo($dossier.$fichier,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes"));
if ($redim_OK) $nb_photos_redim++;
}
}
closedir($h_dossier);
return $nb_photos_redim;
}
// Resume session
$resultat_session = $session_gepi->security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
// Check access
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
/******************************************************************
* Enregistrement des variables passées en $_POST si besoin
******************************************************************/
$msg="";
$msg_parametres="";
if (isset($_POST['num_aid_trombinoscopes'])) {
check_token();
if ($_POST['num_aid_trombinoscopes']!='') {
if (!saveSetting("num_aid_trombinoscopes", $_POST['num_aid_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre num_aid_trombinoscopes !
";
} else {
$del_num_aid_trombinoscopes = mysqli_query($GLOBALS["mysqli"], "delete from setting where NAME='num_aid_trombinoscopes'");
$gepiSettings['num_aid_trombinoscopes']="";
}
}
if (isset($_POST['activer'])) {
check_token();
if (!saveSetting("active_module_trombinoscopes", $_POST['activer']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre activation/désactivation !
";
if (!cree_repertoire_multisite())
$msg_parametres .= "Erreur lors de la création du répertoire photos de l'établissement !
";
}
if (isset($_POST['activer_personnels'])) {
check_token();
if (!saveSetting("active_module_trombino_pers", $_POST['activer_personnels']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre activation/désactivation du trombinoscope des personnels !";
}
if (isset($_POST['activer_redimensionne'])) {
check_token();
if (!saveSetting("active_module_trombinoscopes_rd", $_POST['activer_redimensionne']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre de redimenssionement des photos !
";
}
if (isset($_POST['activer_rotation'])) {
check_token();
if (!saveSetting("active_module_trombinoscopes_rt", $_POST['activer_rotation']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre rotation des photos !
";
}
if (isset($_POST['l_max_aff_trombinoscopes'])) {
check_token();
if (!saveSetting("l_max_aff_trombinoscopes", $_POST['l_max_aff_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre largeur maximum !
";
}
if (isset($_POST['h_max_aff_trombinoscopes'])) {
check_token();
if (!saveSetting("h_max_aff_trombinoscopes", $_POST['h_max_aff_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre hauteur maximum !
";
}
if (isset($_POST['l_max_imp_trombinoscopes'])) {
check_token();
if (!saveSetting("l_max_imp_trombinoscopes", $_POST['l_max_imp_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre largeur maximum !
";
}
if (isset($_POST['h_max_imp_trombinoscopes'])) {
check_token();
if (!saveSetting("h_max_imp_trombinoscopes", $_POST['h_max_imp_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre hauteur maximum !
";
}
if (isset($_POST['nb_col_imp_trombinoscopes'])) {
check_token();
if (!saveSetting("nb_col_imp_trombinoscopes", $_POST['nb_col_imp_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du nombre de colonnes sur les trombinos imprimés !
";
}
if (isset($_POST['l_resize_trombinoscopes'])) {
check_token();
if (!saveSetting("l_resize_trombinoscopes", $_POST['l_resize_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre l_resize_trombinoscopes !
";
}
if (isset($_POST['h_resize_trombinoscopes'])) {
check_token();
if (!saveSetting("h_resize_trombinoscopes", $_POST['h_resize_trombinoscopes']))
$msg_parametres .= "Erreur lors de l'enregistrement du paramètre h_resize_trombinoscopes !
";
}
if (count($_POST)>0)
$msg=($msg_parametres!="")?$msg_parametres:"Modifications enregistrées";
/******************************************************************
* Enregistrement des variables (fin)
******************************************************************/
// Redimensionner les photos
if ((isset($_POST['redim_photos_pers']) && $_POST['redim_photos_pers']=="oui") || (isset($_POST['redim_photos_eleve']) && $_POST['redim_photos_eleve']=="oui"))
{
$msg="";
check_token();
if (cree_zip_archive("photos")==TRUE)
{
$repertoire_photos=""; $msg_multisite="";
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite']=='y')
// On récupère le RNE de l'établissement
if (!$repertoire_photos=$_COOKIE['RNE'])
$msg_multisite="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
if ($msg_multisite=="")
{
if ($repertoire_photos!="") $repertoire_photos.="/";
$repertoire_photos="../photos/".$repertoire_photos;
$nb_photos_redim=0;
if (isset($_POST['redim_photos_pers']) && $_POST['redim_photos_pers']=="oui") $nb_photos_redim+=redimensionne_photos($repertoire_photos."personnels/");
if (isset($_POST['redim_photos_eleve']) && $_POST['redim_photos_eleve']=="oui") $nb_photos_redim+=redimensionne_photos($repertoire_photos."eleves/");
if ($nb_photos_redim>0)
if ($nb_photos_redim>1) $msg=$nb_photos_redim." photos ont été redimensionnées.
";
else $msg="Une photo a été redimensionnée.
";
else $msg="Aucune photo n'a été redimensionnée.
";
}
else $msg=msg_multisite;
}
}
// Suppression de photos
if(isset($_POST['sup_pers']) && $_POST['sup_pers']=="oui"){
check_token();
// suppression des photos du personnel
if (!efface_photos("personnels"))
$msg.="Erreur lors de la suppression des photos du personnel";
}
if (isset($_POST['supp_eleve']) && $_POST['supp_eleve']=="oui"){
check_token();
// suppression des photos des élèves
if (!efface_photos("eleves"))
$msg.="Erreur lors de la suppression des photos des élèves";
}
// Affichage du personnel sans photo
if(isset ($_POST['voirPerso']) && $_POST['voirPerso']=="yes"){
check_token();
if (!recherche_personnel_sans_photo()){
$msg .= "Erreur lors de la sélection de professeur(s) sans photo";
}else{
$personnel_sans_photo=recherche_personnel_sans_photo();
$msg.="liste des professeurs sans photo en bas de page
";
}
}
// Affichage des élèves sans photo
if (isset ($_POST['voirEleve']) && $_POST['voirEleve']=="yes"){
check_token();
if (!recherche_eleves_sans_photo()){
$msg .= "Erreur lors de la sélection des élèves sans photo";
}else{
$eleves_sans_photo=recherche_eleves_sans_photo();
$msg.="liste des élèves sans photo en bas de page";
}
}
// Sauvegarde du dossier 'photos'
if (isset($_POST['sauvegarder_dossier_photos']) && $_POST['sauvegarder_dossier_photos']=="oui")
{
check_token();
if (cree_zip_archive('photos')) $msg="Le dossier 'photos' a été sauvegardé, vous pouvez le récupérer dans le module de gestion des sauvegardes.";
else $msg="Echec de la sauvegarde du dossier 'photos'";
}
// Purge du dossier photos
if (isset($_POST['purge_dossier_photos']) && $_POST['purge_dossier_photos']=="oui")
{
$msg="";
check_token();
if (cree_zip_archive("photos")==TRUE)
{
$repertoire_photos=""; $msg_multisite="";
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite']=='y')
// On récupère le RNE de l'établissement
if (!$repertoire_photos=$_COOKIE['RNE'])
$msg_multisite.="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
if ($msg_multisite=="")
{
if ($repertoire_photos!="") $repertoire_photos.="/";
$repertoire_photos="../photos/".$repertoire_photos;
$nb_photos_supp=0; $nb_erreurs=0;
// purge du dossier photos/eleves
purge_dossier_photos("eleves");
// purge du dossier photos/personnels
purge_dossier_photos("personnels");
if ($nb_photos_supp>0)
if ($nb_photos_supp>1) $msg=$nb_photos_supp." photos ont été suprimées.
";
else $msg="Une photo a été suprimée.
";
else $msg="Aucune photo n'a été supprimée.
";
if ($nb_erreurs>0)
{
if ($nb_erreurs>1) $msg.=$nb_erreurs." photos n'ont pu être supprimées.
";
else $msg.="Une photo n'a pu être supprimée.
";
}
} else $msg=$msg_multisite.$msg;
}
else $msg.="Erreur lors de la création de la sauvegarde.
";
}
// Encodage ou re-encodage des noms des fichiers photo des élèves
if ((isset($_POST['encoder_noms_photo']) and ($_POST['encoder_noms_photo']=='oui')) || (isset($_POST['re_encoder_noms_photo']) and ($_POST['re_encoder_noms_photo']=='oui')))
{
$msg="";
check_token();
$nb_modifs=0; $nb_erreurs=0;
$re_encode=false;
$re_encoder=(isset($_POST['re_encoder_noms_photo']) && ($_POST['re_encoder_noms_photo']=='oui'));
$retour=encode_nom_photo_des_eleves($re_encoder);
if ($retour!="" && $nb_erreurs==0) $msg=$retour;
else
if ($nb_erreurs==0)
if ($nb_modifs>0)
if ($nb_modifs>1) $msg=$nb_modifs." noms de fichiers photo ont été encodés.
";
else $msg="Un nom de fichier photo a été encodé.
";
else $msg="Aucun nom de fichier photo n'a été encodé (le dossier est probablement vide).
";
else
if ($nb_erreurs<=10) $msg=$retour;
else $msg=$nb_erreurs." noms de fihiers photo n'ont pu être encodés.
";
}
// Dés-encodage des noms des fichiers photo des élèves
if ((isset($_POST['des_encoder_noms_photo']) and ($_POST['des_encoder_noms_photo']=='oui')))
{
$msg="";
check_token();
$nb_modifs=0; $nb_erreurs=0;
$retour=des_encode_nom_photo_des_eleves();
if ($retour!="" && $nb_erreurs==0) $msg=$retour;
else
if ($nb_erreurs==0)
if ($nb_modifs>0)
if ($nb_modifs>1) $msg=$nb_modifs." noms de fichiers photo ont été dés-encodés.
";
else $msg="Un nom de fichier photo a été encodé.
";
else $msg="Aucun nom de fichier photo n'a été dés-encodé (le dossier est probablement vide).
";
else
if ($nb_erreurs<=10) $msg=$retour;
else $msg=$nb_erreurs." noms de fihiers photo n'ont pu être dés-encodés.
";
}
// Modification par url de la valeur de 'encodage_nom_photo' dans la table 'setting'
if (isset($_GET['set_encodage_nom_photo']))
{
$msg="";
check_token();
if (!saveSetting('encodage_nom_photo',$_GET['set_encodage_nom_photo'])) $msg="Impossible de modifier la valeur de 'encodage_nom_photo' dans la table 'setting'.
";
}
// Liste des données élève
if (isset($_GET['liste_eleves']) and ($_GET['liste_eleves']=='oui')) {
check_token();
/*
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=eleves_".getSettingValue("gepiYear").".csv");
header("Content-Type: text/csv; charset=utf-8");
header("Content-Transfer-Encoding: base64");
// pb de download avec IE
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
{
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}
else {header('Pragma: no-cache');
}
*/
$csv="";
$csv.="\"classe\",\"nom\",\"prénom\",\"prénom nom\",\"login\",\"elenoet\"\n";
$r_sql="SELECT `eleves`.`nom`,`eleves`.`prenom`,`eleves`.`login`,`eleves`.`elenoet`,`classes`.`nom_complet` FROM `eleves`,`j_eleves_classes`,`classes` WHERE (`eleves`.`login`=`j_eleves_classes`.`login` AND `j_eleves_classes`.`id_classe`=`classes`.`id`) GROUP BY `login` ORDER BY `nom_complet`,`nom`,`prenom`";
$R_eleves=mysqli_query($GLOBALS["mysqli"], $r_sql);
if ($R_eleves) {
while ($un_eleve=mysqli_fetch_assoc($R_eleves)) {
$csv.="\"".$un_eleve['nom_complet']."\",\"".$un_eleve['nom']."\",\"".$un_eleve['prenom']."\",\"".$un_eleve['prenom']." ".$un_eleve['nom']."\",\"".$un_eleve['login']."\",\"".$un_eleve['elenoet']."\"\n";
}
}
$nom_fic="eleves_".getSettingValue("gepiYear").".csv";
send_file_download_headers('text/x-csv',$nom_fic);
//echo $csv;
echo echo_csv_encoded($csv);
die();
}
// Chargement des photos élèves
function erreur_rename_correspondances_csv()
{
global $msg,$une_ligne;
$msg.="correspondances.csv : impossible de renommer \"".$une_ligne[0]."\" en \"".$une_ligne[1]."\"
";
}
if (isset($_POST['action']) and ($_POST['action']=='upload_photos_eleves')) {
check_token();
$msg="";
// Le téléchargement s'est-il bien passé ?
$sav_file = isset($_FILES["nom_du_fichier"]) ? $_FILES["nom_du_fichier"] : NULL;
if ($sav_file) {
// c'est dans $dir_temp que le travail se fera
$dir_temp="../temp/trombinoscopes";
if ($multisite=='y' && isset($_COOKIE['RNE'])) $dir_temp."_".$_COOKIE['RNE'];
if (is_file($dir_temp) && !@unlink($dir_temp)) $msg.="Impossible de supprimer ".$dir_temp.".
\n";
else if (!file_exists($dir_temp))
if (!@mkdir($dir_temp,0700,true)) $msg.="Impossible de créer ".$dir_temp."..
\n";
if ($msg=="") {
// astuce : pour rester compatible avec le script de restauration
// on crée l'arborescence /photos/eleves
$dir_temp_photos_eleves=$dir_temp."/photos/eleves";
if (!file_exists($dir_temp_photos_eleves))
if (!@mkdir($dir_temp_photos_eleves,0700,true)) $msg.="Impossible de créer ".$dir_temp_photos_eleves.".
\n"; ;
if ($msg=="") {
// copie du fichier ZIP dans $dir_temp
$reponse=telecharge_fichier($sav_file,$dir_temp_photos_eleves,"zip",'application/zip application/octet-stream application/x-zip-compressed multipart/x-zip');
if ($reponse!="ok") {
$msg.=$reponse;
} else {
// dézipage du fichier
$reponse=dezip_PclZip_fichier($dir_temp_photos_eleves."/".$sav_file['name'],$dir_temp_photos_eleves."/",1);
if ($reponse!="ok") {
$msg.=$reponse;
} else {
//suppression du fichier .zip
if (!@unlink ($dir_temp_photos_eleves."/".$_FILES["nom_du_fichier"]['name'])) {
$msg .= "Erreur lors de la suppression de ".$dir_temp."/".$_FILES["nom_du_fichier"]."
\n";
}
// quelque soit la structure du fichier .zip on déplace les photos dans $dir_temp_photos_eleves
aplanir_tree($dir_temp_photos_eleves,$dir_temp_photos_eleves);
// on renomme éventuellement les photos
if (file_exists($dir_temp_photos_eleves."/correspondances.csv")) {
if (($fichier_csv=fopen($dir_temp_photos_eleves."/correspondances.csv","r"))!==FALSE)
{
$old_error_handler = set_error_handler("erreur_rename_correspondances_csv");
while (($une_ligne=fgetcsv($fichier_csv,1000,","))!==FALSE)
if (count($une_ligne)==2) rename($dir_temp_photos_eleves."/".$une_ligne[0],$dir_temp_photos_eleves."/".$une_ligne[1].".jpg");
fclose($fichier_csv);
restore_error_handler();
}
}
$repertoire_photos=""; $msg_multisite="";
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite']=='y')
// On récupère le RNE de l'établissement
if (!$repertoire_photos=$_COOKIE['RNE'])
{
$msg_multisite.="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
}
if ($msg_multisite=="")
{
if ($repertoire_photos!="") $repertoire_photos.="/";
$repertoire_photos="../photos/".$repertoire_photos;
$msg_nb_trts=""; // nb de fichiers traités
// copie des fichiers vers /photos
$ecraser=isset($_POST["ecraser"]) && ($_POST["ecraser"]=="yes");
copie_temp_vers_photos($nb_photos_eleves,'eleves','élève',$ecraser,false,true);
if ($msg_nb_trts=="") $msg_nb_trts="Aucune photo n'a été transférée.
\n";
if ($msg==""){
$msg= $msg_nb_trts;
} else $msg=$msg_nb_trts.$msg;
} else $msg= $msg.$msg_multisite;
}
}
}
}
// quoiqu'il se soit passé on supprime le dossier ../temp/trombinoscopes
del_tree("../temp/trombinoscopes");
}
}
// Restauration d'une sauvegarde, ceci peut-ête appelé depuis gestion/acceuil_sauve.php (on a alors isset($_POST['action']) à false)
if ((isset($_POST['action']) && $_POST['action'] == 'upload') || (isset($_GET['action']) && $_GET['action'] == 'restaurer_photos' && isset($_GET['file']))) {
check_token();
$msg="";
// Le fichier sauvegarde est-il téléchargé ou défini ?
if (isset($_POST['action']))
$fichier_sauvegarde = isset($_FILES["nom_du_fichier"]) ? $_FILES["nom_du_fichier"] : NULL;
else $fichier_sauvegarde['name']=$_GET['file'];
if ($fichier_sauvegarde) {
// c'est dans $dir_temp que le travail se fera
$dir_temp ="../temp/trombinoscopes";
if ($multisite=='y' && isset($_COOKIE['RNE'])) $dir_temp."_".$_COOKIE['RNE'];
if (is_file($dir_temp) && !@unlink($dir_temp)) $msg.="Impossible de supprimer ".$dir_temp."
\n";
else if (!file_exists($dir_temp))
if (!@mkdir($dir_temp,0700,true)) $msg.="Impossible de créer ".$dir_temp."
\n";
if ($msg=="") {
// copie du fichier ZIP dans $dir_temp
if (isset($_POST['action']))
$reponse=telecharge_fichier($fichier_sauvegarde,$dir_temp,"zip",'application/zip application/octet-stream application/x-zip-compressed');
else $reponse=(copy("../backup/".getSettingValue("backup_directory")."/".$fichier_sauvegarde['name'],$dir_temp."/".$fichier_sauvegarde['name']))?"ok":"";
if ($reponse!="ok") {
$msg.=$reponse;
} else {
// dézipage du fichier
$reponse=dezip_PclZip_fichier($dir_temp."/".$fichier_sauvegarde['name'],$dir_temp,1);
if ($reponse!="ok") {
$msg .= $reponse;
} else {
//suppression du fichier .zip
if (!@unlink ($dir_temp."/".$fichier_sauvegarde['name'])) {
$msg .= "Erreur lors de la suppression de ".$dir_temp."/".$_FILES["nom_du_fichier"]."
\n";
}
// détermination du dossier destination
$repertoire_photos=""; $msg_multisite="";
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite']=='y')
// On récupère le RNE de l'établissement
if (!$repertoire_photos=$_COOKIE['RNE'])
{
$msg_multisite.="Multisite : erreur lors de la récupération du dossier photos de l'établissement.
";
}
if ($msg_multisite=="")
{
if ($repertoire_photos!="") $repertoire_photos.="/";
$repertoire_temp_photos=$dir_temp."/photos/".$repertoire_photos;
$repertoire_photos="../photos/".$repertoire_photos;
if (file_exists($repertoire_temp_photos."alea_nom_photo.txt"))
{
// si le fichier alea_nom_photo.txt est présent
// les noms de fichier sont encodés dans la sauvegarde
// on récupère la valeur alea_nom_photo
$f_alea=fopen($repertoire_temp_photos."alea_nom_photo.txt","r");
$alea_nom_photo=fgets($f_alea);
fclose($f_alea);
// l'encodage est-il activé
$re_encoder=getSettingAOui('encodage_nom_photo');
// on encode ou on ré-encode les noms des photos élèves présentes avec cette nouvelle valeur
encode_nom_photo_des_eleves($re_encoder,$alea_nom_photo);
// les noms des fichiers restaurés n'ont pas à être encodés
$post_restauration_encodage=false;
}
else
{
// les noms de fichier ne sont pas encodés dans la sauvegarde
// faudra-t-il encoder les noms des fichiers restaurés
$post_restauration_encodage=getSettingAOui('encodage_nom_photo');
// si l'encodage est activé il faut désencoder les noms des photos élèves présentes
if ($post_restauration_encodage)
{$retour=des_encode_nom_photo_des_eleves()."
"; if ($retour!="") $msg.=$retour;}
}
// copie des fichiers vers /photos
$msg_nb_trts=""; // nb de fichiers traités
$avertissement=""; // si l'arborescence est incomplète
$ecraser=(isset($_POST['action']))?(isset ($_POST["ecraser"]) && $_POST["ecraser"]=="yes"):true;
//Elèves
copie_temp_vers_photos($nb_photos_eleves,'eleves','élève',$ecraser,true);
if ($post_restauration_encodage)
{$retour=encode_nom_photo_des_eleves()."
"; if ($retour!="") $msg.=$retour;}
//Personnels
copie_temp_vers_photos($nb_photos_personnels,'personnels','personnel',$ecraser,true);
if ($msg_nb_trts=="") $msg_nb_trts="Aucune photo n'a été transférée.
\n";
if ($msg==""){
$msg= $msg_nb_trts.$avertissement;
} else $msg= $msg_nb_trts.$avertissement.$msg;
} else $msg= $avertissement.$msg.$msg_multisite;
}
}
}
// quoiqu'il se soit passé on supprime le dossier ../temp/trombinoscopes
del_tree("../temp/trombinoscopes");
}
}
// header
//$titre_page = "Gestion du module trombinoscope";
// En multisite, on ajoute le répertoire RNE
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y') {
// On récupère le RNE de l'établissement
$repertoire=$_COOKIE['RNE']."/";
}else{
$repertoire="";
}
/****************************************************************
HAUT DE PAGE
****************************************************************/
// ====== Inclusion des balises head et du bandeau =====
include_once("../lib/header_template.inc.php");
if (!suivi_ariane($_SERVER['PHP_SELF'],$titre_page))
echo "erreur lors de la création du fil d'ariane";
/****************************************************************
FIN HAUT DE PAGE
****************************************************************/
//debug_var();
if (getSettingValue("GepiAccesModifMaPhotoEleve")=='yes') {
$req_trombino = mysqli_query($GLOBALS["mysqli"], "select indice_aid, nom from aid_config order by nom");
$nb_aid = mysqli_num_rows($req_trombino);
$i = 0;
for($i = 0;$i < $nb_aid;$i++){
$aid_trouve[$i]["indice"]= old_mysql_result($req_trombino,$i,'indice_aid');
$aid_trouve[$i]["nom"]= old_mysql_result($req_trombino,$i,'nom');
if (getSettingValue("num_aid_trombinoscopes")==$aid_trouve[$i]["indice"]){
$aid_trouve[$i]["selected"]= TRUE;
echo getSettingValue("num_aid_trombinoscopes")." : ".$aid_trouve[$i]["indice"];
}else {
$aid_trouve[$i]["selected"]= FALSE;
}
}
}
/*
* TODO :
*