$rqt

"); if (pmb_mysql_num_rows($r)) { while (($idchamp_obj=pmb_mysql_fetch_object($r))) { $idchamp[$idchamp_obj->name] = $idchamp_obj->idchamp; } } if ($idchamp['id_etudiant']=="") die ("Champ personnalisé id_etudiant inexistant"); if ($idchamp['numero_casier']=="") die ("Champ personnalisé numero_casier inexistant"); //ENSAI if ($idchamp['email2']=="") die ("Champ personnalisé email2 inexistant"); // AUTHENTIFICATION PORTAIL if ($idchamp['portail_only']=="") die ("Champ personnalisé portail_only inexistant"); switch($action) { case 1: // on récupère la localisation $rqt="select location_libelle from docs_location where idlocation='$empr_location_id'"; $r = pmb_mysql_query($rqt) or die(pmb_mysql_error()."

$rqt

"); if (pmb_mysql_num_rows($r)) { while (($idchamp_obj=pmb_mysql_fetch_object($r))) { $empr_location_lib = $idchamp_obj->location_libelle; } } if ($imp_elv){ if($file_format=='ensae') import_eleves_ensae($Sep_Champs, $dbh, $type_import); else import_eleves_ensai($Sep_Champs, $dbh, $type_import); } else { show_import_choix_fichier($dbh); } break; case 2: break; default: show_import_choix_fichier($dbh); break; } function show_import_choix_fichier($dbh) { global $msg, $deflt2docs_location; global $current_module, $PMBuserid ; print "

Choix du fichier d'import des élèves GENES


Mise à jour complète Ajout uniquement

L'ordre des colonnes dans votre fichier doit être :
Identifiant de l'étudiant ; Code-barres ; Voie ; Nom ; Prénom ; Mail ; Mail perso ; Numéro de casier ; Civilité ; Année de date de naissance ; Téléphone 1 ; Téléphone 2 ; Identifiant OPAC

Marquer les lecteurs appartenant aux groupes ci-dessous et ayant pour catégorie et localisation les choix ci-dessous
"." Et les placer dans le panier suivant: "; $requete = "SELECT idemprcaddie, name FROM empr_caddie where (autorisations='$PMBuserid' or autorisations like '$PMBuserid %' or autorisations like '% $PMBuserid %' or autorisations like '% $PMBuserid') order by name "; print gen_liste ($requete, "idemprcaddie", "name", "idemprcaddie", "", "", "", "","","",0); print "
"; $requete = "SELECT id_groupe, libelle_groupe FROM groupe left join empr_groupe on id_groupe=groupe_id group by id_groupe, libelle_groupe ORDER BY libelle_groupe "; $groupe_form_aff = gen_liste_multiple ($requete, "id_groupe", "libelle_groupe", "id_groupe", "id_grp[]", "", $id, 0, $msg['empr_form_aucungroupe'], 0,"", 60) ; print "
".$groupe_form_aff."
"; $requete = "SELECT id_categ_empr, libelle FROM empr_categ ORDER BY libelle "; $categ_form_aff = gen_liste ($requete, "id_categ_empr", "libelle", "id_categ_empr", "", 36, "", "","","",0); print "
".$categ_form_aff."
"; print "
".docs_location::gen_combo_box_empr($deflt2docs_location, 0)."
 
"; } function cre_login($nom, $prenom, $dbh) { $empr_login = substr($prenom,0,1).$nom ; $empr_login = strtolower($empr_login); $empr_login = clean_string($empr_login) ; $empr_login = convert_diacrit(strtolower($empr_login)) ; $empr_login = preg_replace('/[^a-z0-9\.\ ]/', '', $empr_login); $empr_login = str_replace(" ","-",$empr_login); $pb = 1 ; $num_login=1 ; $debut_log = $empr_login; while ($pb==1) { $requete = "SELECT empr_login FROM empr WHERE empr_login like '$empr_login' AND (empr_nom <> '$nom' OR empr_prenom <> '$prenom') LIMIT 1 "; $res = pmb_mysql_query($requete, $dbh); $nbr_lignes = pmb_mysql_num_rows($res); if ($nbr_lignes) { $empr_login = $debut_log.$num_login ; $num_login++; } else $pb = 0 ; } return $empr_login; } function import_eleves_ensae($separateur, $dbh, $type_import){ global $idchamp, $id_grp, $empr_location_id, $empr_location_lib, $id_categ_empr, $idemprcaddie ; if (!isset($id_grp)) $id_grp=array(); //La structure du fichier texte doit être la suivante : //id_etudiant/CB/Voie/Nom/Prénom/courriel/courriel_perso/casier/libelle_etat_civil/année de naissance/tel dom/tel_mobile/identifiant OPAC/ $eleve_abrege = array("Numéro identifiant","Nom","Prénom"); $date_auj = date("Y-m-d", time()); $date_an_proch = date("Y-m-d", time()+3600*24*30.42*12); //Upload du fichier if (!($_FILES['import_lec']['tmp_name'])) print "Cliquez sur Précédent et choisissez un fichier"; elseif (!(move_uploaded_file($_FILES['import_lec']['tmp_name'], "./temp/" .basename($_FILES['import_lec']['tmp_name'])))) { print "Le fichier n'a pas pu être téléchargé. Voici plus d'informations :
"; print_r($_FILES)."

"; } $fichier = @fopen( "./temp/".basename($_FILES['import_lec']['tmp_name']), "r" ); if ($fichier) { if ($type_import == 'maj_complete' && implode(',',$id_grp)!="") { // les lecteurs de la localisation et appartenant aux groupes $id_grp vont être marqués : // empr_prof = !!A SUPPRIMER!! $rqt = "select distinct empr_id from empr_groupe join empr on empr_id=id_empr where empr_location=$empr_location_id and empr_categ=$id_categ_empr and groupe_id in (".implode(',',$id_grp).")"; $r = pmb_mysql_query($rqt) or die(pmb_mysql_error()."

$rqt

"); while ($empr=pmb_mysql_fetch_object($r)) { pmb_mysql_query("update empr set empr_prof='!!A SUPPRIMER!!' where id_empr=".$empr->empr_id) or die("update empr set empr_prof='!!A SUPPRIMER!!' where id_empr=".$empr->empr_id); } } $totallignes=0; while (!feof($fichier)) { $buffer = fgets($fichier, 4096); $tab = explode($separateur, $buffer); $idetudiant=trim(str_replace(" ","",$tab[0])); if ($idetudiant!="id_etudiant" && $idetudiant!="") { // ce n'est pas la première ligne d'entête de colonne $voie=trim($tab[2]); $nom=trim($tab[3]); $prenom=trim($tab[4]); $cb = trim(str_replace(" ","",$tab[1])); $email=array(); if (trim($tab[5])) $email[]=trim($tab[5]); if (trim($tab[6])) $email[]=trim($tab[6]); $emails=implode(';',$email); $casier=trim($tab[7]); $anneenaiss=trim($tab[9]); $tel1=trim($tab[10]); $tel2=trim($tab[11]); $loginopacfic=trim($tab[12]); //Gestion du sexe switch ($tab[8]) { case "Monsieur": $sexe = 1; break; case "Madame": case "Mademoiselle": $sexe = 2; break; default: $sexe = 0; break; } // recherche du groupe $id_groupe = quel_groupe($empr_location_lib." - ".$voie); // Traitement de l'élève $rqt="select empr_custom_origine as id_empr from empr_custom_values where empr_custom_champ=".$idchamp['id_etudiant']." and empr_custom_small_text='".addslashes($idetudiant)."' "; $nb = pmb_mysql_query($rqt,$dbh); $nb_enreg=pmb_mysql_num_rows($nb); switch ($nb_enreg) { case 0: //Cet élève n'est pas enregistré if (!$loginopacfic) $login = cre_login($nom, $prenom, $dbh); else $login = $loginopacfic; $req_insert = "insert into empr SET empr_nom='".addslashes($nom)."', empr_prenom='".addslashes($prenom)."', empr_cb='".addslashes($cb)."', "; $req_insert .= "empr_tel1='".addslashes($tel1)."', empr_tel2='".addslashes($tel2)."', empr_year='".addslashes($anneenaiss)."', empr_categ =$id_categ_empr, empr_codestat=8, empr_sexe='$sexe', "; $req_insert .= "empr_login='".$login."', empr_password='".addslashes($anneenaiss)."', empr_mail='".addslashes($emails)."', "; $req_insert .= "empr_prof='', empr_lang='fr_FR', empr_statut=1, "; $req_insert .= "empr_location='$empr_location_id', "; $req_insert .= "empr_modif='$date_auj', empr_date_adhesion = '$date_auj', empr_date_expiration = '$date_an_proch' "; $insert = pmb_mysql_query($req_insert,$dbh) or die("
".pmb_mysql_error()."
".$req_insert); if (!$insert) { print("Echec de la création de l'élève suivant (Erreur : ".pmb_mysql_error().") :
"); print("
"); } else { $id_cree = pmb_mysql_insert_id(); emprunteur::update_digest($login,$anneenaiss); emprunteur::hash_password($login,$anneenaiss); $resu = gestion_groupe($id_groupe, $id_cree, $dbh); gestion_champ_portail($id_cree, $dbh); gestion_champ_numero_casier($id_cree, $casier, $dbh); gestion_champ_id_etudiant($id_cree, $idetudiant, $dbh); $cpt_insert ++; } $j++; break; case 1: //Cet élève est déja enregistré if ($type_import != 'maj_complete') { break; } $empr=pmb_mysql_fetch_object($nb) ; $req_update = "UPDATE empr SET empr_nom='".addslashes($nom)."', empr_prenom='".addslashes($prenom)."', empr_cb='".addslashes($cb)."', "; $req_update .= "empr_tel1='".addslashes($tel1)."', empr_tel2='".addslashes($tel2)."', empr_year = '".addslashes($anneenaiss)."', empr_categ =$id_categ_empr, empr_codestat=8, empr_modif='$date_auj', empr_sexe='$sexe', "; $req_update .= "empr_mail='".addslashes($emails)."', "; $req_update .= "empr_prof='', empr_lang='fr_FR', empr_statut=1, "; $req_update .= "empr_date_expiration = '$date_an_proch' "; $req_update .= "WHERE id_empr = '".$empr->id_empr."'"; $update = pmb_mysql_query($req_update, $dbh) or die("
".pmb_mysql_error()."
".$req_update); if (!$update) { print("Echec de la modification de l'élève suivant (Erreur : ".pmb_mysql_error().") :
"); print("
"); } else { $resu = gestion_groupe($id_groupe, $empr->id_empr, $dbh); gestion_champ_portail($empr->id_empr, $dbh); gestion_champ_numero_casier($empr->id_empr, $casier, $dbh); $cpt_maj ++; } $j++; break; default: print("Echec pour l'élève suivant (Erreur : ".pmb_mysql_error().") :
"); print "

"; print("
"); break; } $totallignes++; } // fin if pas première ligne ni vide } // while // post traitement if ($type_import == 'maj_complete' && implode(',',$id_grp)!="") { $req_select_verif_pret = "SELECT id_empr FROM empr WHERE empr_prof='!!A SUPPRIMER!!' "; $select_verif_pret = pmb_mysql_query($req_select_verif_pret,$dbh); while ($verif_pret = pmb_mysql_fetch_array($select_verif_pret)) { //pour tous les emprunteurs qui ne figurent pas dans le fichier $rqt_del = "delete from empr_groupe where empr_id=".$verif_pret["id_empr"]; $resultat_del=pmb_mysql_query($rqt_del); @pmb_mysql_query("insert into empr_caddie_content set empr_caddie_id=$idemprcaddie, object_id=".$verif_pret["id_empr"]) ; $cpt_suppr++; } // On supprime les groupes qui ne sont plus utilisés parmi ceux qui étaient sélectionnés bien entendu pmb_mysql_query("create temporary table tmpidgroupe as SELECT distinct id_groupe FROM groupe left join empr_groupe on groupe_id=id_groupe WHERE empr_id is null",$dbh) or die(pmb_mysql_error()."
"); $req_del_groupe = "delete from groupe where id_groupe in (select id_groupe from tmpidgroupe) and id_groupe in (".implode(',',$id_grp).")"; pmb_mysql_query($req_del_groupe,$dbh) or die(pmb_mysql_error()."
".$req_del_groupe); } //Affichage des insert et update if ($cpt_insert) print($cpt_insert." élèves créés.
"); if ($cpt_maj) print($cpt_maj." élèves modifiés.
"); if ($cpt_suppr) print($cpt_suppr." élèves à supprimer inscrits dans le panier.
"); print("
_____________________
"); print($totallignes." lignes à traiter dans ce fichier.
"); fclose($fichier); } } function gestion_groupe($id_groupe, $id_empr, $dbh) { //insertion dans la table empr_groupe $delete_empr_grpe = pmb_mysql_query("delete from empr_groupe where empr_id=$id_empr",$dbh); $insert_empr_grpe = pmb_mysql_query("INSERT INTO empr_groupe(empr_id, groupe_id) VALUES ($id_empr,$id_groupe)",$dbh); } function gestion_groupe_add($id_groupe, $id_empr, $dbh) { //insertion dans la table empr_groupe $insert_empr_grpe = pmb_mysql_query("INSERT INTO empr_groupe(empr_id, groupe_id) VALUES ($id_empr,$id_groupe)",$dbh); } function gestion_empr_categ($libelle, $dbh) { $rqt="SELECT id_categ_empr FROM empr_categ where libelle ='".addslashes($libelle)."' "; $r_categ = pmb_mysql_query($rqt) or die(pmb_mysql_error()."

$rqt

"); if (($categ=pmb_mysql_fetch_object($r_categ))) { $id_categ_empr= $categ->id_categ_empr; }else { pmb_mysql_query("INSERT INTO empr_categ(libelle, duree_adhesion ) VALUES ('".addslashes($libelle)."',365)",$dbh); $id_categ_empr = pmb_mysql_insert_id(); } return $id_categ_empr; } function gestion_empr_idcode_codestat($idcode, $dbh) { // Si pas existant, on en crée un avec '-' comme label $rqt="SELECT * FROM empr_codestat where idcode ='$idcode' "; $r_codestat = pmb_mysql_query($rqt) or die(pmb_mysql_error()."

$rqt

"); if (($codestat=pmb_mysql_fetch_object($r_codestat))) { $idcode = $codestat->idcode; }else { pmb_mysql_query("INSERT INTO empr_codestat(libelle ) VALUES ('".addslashes("-")."')",$dbh); $idcode = pmb_mysql_insert_id(); } return $idcode; } function gestion_champ_portail($id_empr, $dbh) { global $idchamp; //insertion dans la table empr_custom_values $del = @pmb_mysql_query("delete from empr_custom_values where empr_custom_origine='$id_empr' and empr_custom_champ='".$idchamp['portail_only']."' ",$dbh); $ins = @pmb_mysql_query("insert into empr_custom_values set empr_custom_origine='$id_empr', empr_custom_champ='".$idchamp['portail_only']."', empr_custom_integer='1' ",$dbh); } function gestion_champ_id_etudiant($id_empr, $valeur="", $dbh) { global $idchamp; //insertion dans la table empr_custom_values $del = @pmb_mysql_query("delete from empr_custom_values where empr_custom_origine='$id_empr' and empr_custom_champ='".$idchamp['id_etudiant']."' ",$dbh); $ins = @pmb_mysql_query("insert into empr_custom_values set empr_custom_origine='$id_empr', empr_custom_champ='".$idchamp['id_etudiant']."', empr_custom_small_text='".$valeur."' ",$dbh); } function gestion_champ_numero_casier($id_empr, $valeur, $dbh) { global $idchamp; //insertion dans la table empr_custom_values $del = @pmb_mysql_query("delete from empr_custom_values where empr_custom_origine='$id_empr' and empr_custom_champ='".$idchamp['numero_casier']."' ",$dbh); $ins = @pmb_mysql_query("insert into empr_custom_values set empr_custom_origine='$id_empr', empr_custom_champ='".$idchamp['numero_casier']."', empr_custom_small_text='".addslashes($valeur)."' ",$dbh); } function gestion_empr_statut($libelle, $dbh) { $rqt="SELECT idstatut FROM empr_statut where statut_libelle ='".addslashes($libelle)."' "; $r_statut = pmb_mysql_query($rqt,$dbh) or die(pmb_mysql_error()."

$rqt

"); if (($statut=pmb_mysql_fetch_object($r_statut))) { return $statut->idstatut; } else { return 0; } } function quel_groupe($lib) { global $dbh; global $groupes ; if (count($groupes)==0) { $rqt="select id_groupe, libelle_groupe from groupe order by 2"; $r = pmb_mysql_query($rqt) or die(pmb_mysql_error()."

$rqt

"); while ($idgroupe_obj=pmb_mysql_fetch_object($r)) { $groupes[$idgroupe_obj->libelle_groupe] = $idgroupe_obj->id_groupe; } } if ($groupes[$lib]) { return $groupes[$lib]; } else { // création du groupe et retour de son id $insert_grpe = pmb_mysql_query("INSERT INTO groupe(libelle_groupe) VALUES('".addslashes($lib)."')"); $groupes[$lib] = pmb_mysql_insert_id(); return $groupes[$lib]; } return 0; } function import_eleves_ensai($separateur, $dbh, $type_import){ global $idchamp, $id_grp, $empr_location_lib, $id_categ_empr, $idemprcaddie ; if (!isset($id_grp)) $id_grp=array(); //La structure du fichier texte doit être la suivante : //empr_nom empr_prenom empr_mail categ Groupe1 Groupe2 statut_libelle location_libelle Pays empr_date_adhesion //empr_date_expiration Numéro Identifiant OPAC $eleve_abrege = array("Numéro identifiant","Nom","Prénom"); $date_auj = date("Y-m-d", time()); $date_an_proch = date("Y-m-d", time()+3600*24*30.42*12); $empr_codestat_local=gestion_empr_idcode_codestat(8, $dbh); $empr_codestat_etranger=gestion_empr_idcode_codestat(9, $dbh); //Upload du fichier if (!($_FILES['import_lec']['tmp_name'])) { print "Cliquez sur Précédent et choisissez un fichier"; } elseif (!(move_uploaded_file($_FILES['import_lec']['tmp_name'], "./temp/".basename($_FILES['import_lec']['tmp_name'])))) { print "Le fichier n'a pas pu être téléchargé. Voici plus d'informations :
"; print_r($_FILES)."

"; } $fichier = @fopen( "./temp/".basename($_FILES['import_lec']['tmp_name']), "r" ); if ($fichier) { $totallignes=0; while (!feof($fichier)) { $buffer = fgets($fichier, 4096); $tab = explode($separateur, $buffer); $cb=trim(str_replace(" ","",$tab[13])); if ($cb!="Numéro" && $cb!="") { // ce n'est pas la première ligne d'entête de colonne $nom=trim($tab[0]); $prenom=trim($tab[1]); $emails=trim($tab[2]); $mail_perso=$tab[3]; if(trim($mail_perso)){ //Si valorisé, alors on concatène. if(trim($emails)){ $emails.=";".trim($mail_perso); }else{ $emails=trim($mail_perso); } } $categ=trim($tab[4]); $groupe1=trim($tab[5]); $groupe2=trim($tab[6]); $groupe3=trim($tab[7]); $statut_libelle=trim($tab[8]); $location_libelle=trim($tab[9]); $pays=trim($tab[10]); $empr_date_adhesion=trim($tab[11]); $empr_date_expiration=trim($tab[12]); // cb en 13 $identifiant_opac=trim($tab[14]); $tel1=trim($tab[15]); $tel2=trim($tab[16]); $liste_date=explode('/',$empr_date_adhesion); if($liste_date[2]<100)$liste_date[2]+=2000; $date_adhesion=$liste_date[2]."-".$liste_date[1]."-".$liste_date[0]; $liste_date=explode('/',$empr_date_expiration); if($liste_date[2]<100)$liste_date[2]+=2000; $date_fin_adhesion=$liste_date[2]."-".$liste_date[1]."-".$liste_date[0]; if($pays)$empr_codestat=$empr_codestat_etranger; else $empr_codestat=$empr_codestat_local; // recherche de id catégorie $id_categ_empr=gestion_empr_categ($categ, $dbh); // recherche des groupes $id_groupe1 = quel_groupe($groupe1); $id_groupe2 = quel_groupe($groupe2); $id_groupe3 = quel_groupe($groupe3); // recherche de id statut $id_statut_empr=gestion_empr_statut($statut_libelle, $dbh); if (!$id_statut_empr) $id_statut_empr = "4"; // Traitement de l'élève $rqt="select * from empr where empr_cb='".addslashes($cb)."' "; $nb = pmb_mysql_query($rqt,$dbh); $nb_enreg=pmb_mysql_num_rows($nb); switch ($nb_enreg) { case 0: //Cet élève n'est pas enregistré if (!$identifiant_opac) $login = cre_login($nom, $prenom, $dbh); else $login = $identifiant_opac; $req_insert = "insert into empr SET empr_nom='".addslashes($nom)."', empr_prenom='".addslashes($prenom)."', empr_cb='".addslashes($cb)."', empr_pays='".addslashes($pays)."', "; $req_insert .= "empr_tel1='".addslashes($tel1)."', empr_tel2='".addslashes($tel2)."', empr_categ =$id_categ_empr, empr_codestat=$empr_codestat, "; $req_insert .= "empr_login='".$login."', empr_password='".addslashes($login)."', empr_mail='".addslashes($emails)."', "; $req_insert .= "empr_prof='', empr_lang='fr_FR', empr_statut='".$id_statut_empr."', "; //4=Inactif $req_insert .= "empr_location='17', "; //17=ENSAI $req_insert .= "empr_creation='$date_auj', empr_modif='$date_auj', empr_date_adhesion = '$date_adhesion', empr_date_expiration = '$date_fin_adhesion' "; $insert = pmb_mysql_query($req_insert,$dbh) or die("
".pmb_mysql_error()."
".$req_insert); if (!$insert) { print("Echec de la création de l'élève suivant (Erreur : ".pmb_mysql_error().") :
"); print("
"); } else { $id_cree = pmb_mysql_insert_id(); emprunteur::update_digest($login,$login); emprunteur::hash_password($login,$login); gestion_groupe_add($id_groupe1, $id_cree, $dbh); gestion_groupe_add($id_groupe2, $id_cree, $dbh); gestion_groupe_add($id_groupe3, $id_cree, $dbh); $cpt_insert ++; } $j++; break; default: print "

"; print("
"); break; } $totallignes++; } // fin if pas première ligne ni vide } // while //Affichage des insert et update if ($cpt_insert) print($cpt_insert." élèves créés.
"); print("
_____________________
"); print($totallignes." lignes ont été traitées dans ce fichier.
"); fclose($fichier); } } ?>