<?php
// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: import_lecteurs_localises_ouche.inc.php,v 1.17 2026/04/16 12:51:20 dgoron Exp $

if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");

//ce script issu d'import belgique a été modifié par Ouche CCVO par Patrice Desfray le 2/4/2007 (p.desfray@orange.fr)
//son fonctionnement est expliqué sur le Wiki PMB dans Import "Belgique" : import des élève ....
//notre contexte d'utilisation: 7 bibliothèques municipales en réseau avec gestion publique et gestion accueil scolaire différenciée
//modification apportées / import Belgique
//suppression import profs
//liste choix pour la localisation de l'école codé en dur mais peut-être remplacé par une requête sur docs_location
//un fichier csv sur le modèle import belgique 11 colonnes avec code barre
//codage du code: année école incrément ex: 2006EV00001 : rentrée 2006 école de velars incrément sur 5 digits
//2 var globales crées: $code_categorie et $code_statistique pour le codage en dur des catégories
//$code_categorie=12 : collectivité - élèves (si il y a des profs dans la liste, il faudra les passer après l'import en 8 : collectivité - école droits de prêt différents
//$code_statistique=3 commune de la bibliothèque
//en option 2 : efface les lecteurs sans prêts, sur la localisation choisie qui sont dans la catégorie : collectivité - élèves (12)  les profs en (8) ne seront donc pas effacés
// merci à A.M. Cubat et à aux concepteur de import_Bretagne
//Patrice Desfray

//La structure du fichier texte doit être la suivante : 11 champs (pour tout le monde)
//Numéro identifiant/Nom/Prénom/Rue/Complément de rue/Code postal/Commune/Téléphone/Date de naissance/Classe/Sexe

//Supprimez la première ligne du fichier excel si elle contient la liste des champs

global $class_path;
global $location, $user;
global $action, $type_import, $cnl_bibli;

require_once $class_path."/emprunteur.class.php";
require_once $class_path."/import/import_empr.class.php";

echo $location;
echo $user;

function show_import_choix_fichier() {
	global $msg;
	global $current_module ;

print "
<form class='form-$current_module' name='form1' ENCTYPE=\"multipart/form-data\" method='post' action=\"./admin.php?categ=empr&sub=implec&action=1\">
<h3>Choix du fichier</h3>
<div class='form-contenu'>
	<div class='row'>
		<label class='etiquette' for='form_import_lec'>".$msg["import_lec_fichier"]."</label>
        <input name='import_lec' accept='text/plain' type='file' class='saisie-80em' size='50'>
		   Fichier csv sur 11 colonnes

	</div>
	<br />
	<div class='row'>
        <label class='etiquette' for='form_import_lec'>". $msg["empr_location"]."</label>
        <select name='cnl_bibli'>";

/* ajout GM : liste des localisations */
$requete_localisation="SELECT idlocation, location_libelle FROM docs_location ORDER BY location_libelle";
$select_requete_localisation = pmb_mysql_query($requete_localisation);
while (($liste_localisation = pmb_mysql_fetch_array($select_requete_localisation))) {
	print "<option value='".$liste_localisation["idlocation"]."' >".$liste_localisation["location_libelle"]."</option>";
}

print "		</select>
	<br />
	 </div>
	   <!--<form>-->
	<br />
	<!--</form>-->
		<div class='row'>
	        <input type=radio name='type_import' value='nouveau_lect' checked>
	        <label class='etiquette' for='form_import_lec'>Nouveaux lecteurs</label>
	        (ajoute ou modifie les lecteurs présents dans le fichier)
	        <br />
	        <input type=radio name='type_import' value='maj_complete'>
	        <label class='etiquette' for='form_import_lec'>Mise à jour complète</label>
	        (supprime les lecteurs non présents de cette localisation qui n'ont pas de prêt en cours)
	    </div>
	    <div class='row'></div>
		</div>
	<div class='row'>
		<input name='imp_elv' type='submit' class='bouton' value='Import des élèves'/>
	</div>
	</form>";
}

function import_eleves($separateur, $type_import,$commune){
	global $code_categorie;
	global $code_statistique;
	global $location, $user;
	
	$code_categorie = 12;
	$code_statistique = 3;

	$cpt_insert = 0;
	$cpt_maj = 0;

    $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&eacute;c&eacute;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 :<br />";
        print_r($_FILES)."<p>";
    }
    $fichier = @fopen( "./temp/".basename($_FILES['import_lec']['tmp_name']), "r" );
    if ($fichier) {
        if ($type_import == 'maj_complete') {
            //Vide la table empr_groupe des élèves qui n'ont pas de prêts en cours et qui sont localisés à la commune sélectionnée et de categorie collectivité eleves
			$req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_location= '$commune' and empr_categ = '$code_categorie' ";
            $select_verif_pret = pmb_mysql_query($req_select_verif_pret);
            while (($verif_pret = pmb_mysql_fetch_array($select_verif_pret))) {
            	//pour tous les emprunteurs qui n'ont pas de pret en cours
                $req_delete = "DELETE FROM empr_groupe WHERE empr_id = '".$verif_pret["id_empr"]."'";
                pmb_mysql_query($req_delete);
            }
            //Supprime les élèves qui n'ont pas de prêts en cours et qui sont localisés à la commune sélectionnée et de categorie collectivité eleves
            $req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_location= '$commune' and empr_categ = '$code_categorie' ";
            $select_verif_pret = pmb_mysql_query($req_select_verif_pret);
            while (($verif_pret = pmb_mysql_fetch_array($select_verif_pret))) {
            	//pour tous les emprunteurs qui n'ont pas de pret en cours
                emprunteur::del_empr($verif_pret["id_empr"]);
            }
        }
        while (!feof($fichier)) {
            $buffer = fgets($fichier, 4096);
            $buffer = import_empr::get_encoded_buffer($buffer);
            $buffer = pmb_mysql_escape_string($buffer);
            $tab = explode($separateur, $buffer);

            //Gestion du sexe
            switch ($tab[10][0]) {
                case 'M':
                    $sexe = 1;
                    break;
                case 'F':
                    $sexe = 2;
                    break;
                default:
                    $sexe = 0;
                    break;
            }

            // Traitement de l'élève
            $id_empr = 0;
            $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_cb = '".$tab[0]."'");
            $nb_enreg = pmb_mysql_num_rows($select);

            //Test si un numéro id est fourni
            if (!$tab[0] || $tab[0] == "") {
                print("<b> Elève non pris en compte car \"Numéro identifiant\" non renseigné : </b><br />");
                for ($i=0;$i<3;$i++) {
                    print($eleve_abrege[$i]." : ".$tab[$i].", ");
                }
                print("<br />");
                $nb_enreg = 2;
            }
            if($nb_enreg == 1) {
                $row = pmb_mysql_fetch_assoc($select);
                $id_empr = $row['id_empr'];
            }

            $login = import_empr::cre_login($tab[1],$tab[2]);
			
            $empr_data = [
                'empr_cb' => $tab[0],
                'empr_nom' => $tab[1],
                'empr_prenom' => $tab[2],
                'empr_adr1' => $tab[3],
                'empr_adr2' => $tab[4],
                'empr_cp' => $tab[5],
                'empr_ville' => $tab[6],
                'empr_tel1' => $tab[7],
                'empr_year' => $tab[8],
                'empr_categ' => $code_categorie,
                'empr_codestat' => 3,
                'empr_sexe' => $sexe,
                'empr_login' => $login,
                'empr_password' => $tab[8],
                'empr_date_adhesion' => $date_auj,
                'empr_date_expiration' => $date_an_proch,
                'empr_location' => $commune
            ];
            switch ($nb_enreg) {
                case 0:
                	//Cet élève n'est pas enregistré
                    $inserted = import_empr::insert_empr($empr_data);
                    if (!$inserted) {
                        print("<b>Echec de la création de l'élève suivant (Erreur : ".pmb_mysql_error().") : </b><br />");
						print($code_categorie);
						print("3");
						print( "$location");
						print( "$user");
                        for ($i=0;$i<3;$i++) {
                            print($eleve_abrege[$i]." : ".$tab[$i].", ");
                        }
                        print("<br />");
                    } else {
                        $id_empr = $inserted;
                        $cpt_insert ++;
                    }
                    import_empr::gestion_groupe($tab[9], $tab[0]);
                    break;

                case 1:
                	//Cet élève est déjà enregistré
                    $updated = import_empr::update_empr($empr_data);
                    if (!$updated) {
                        print("<b>Echec de la modification de l'élève suivant (Erreur : ".pmb_mysql_error().") : </b><br />");
						print('$code_categorie');
						print("3");
						print( "$location");
						print( "$user");
                        for ($i=0;$i<3;$i++) {
                            print($eleve_abrege[$i]." : ".$tab[$i].", ");
                        }
                        print("<br />");

                    } else {
                        $cpt_maj ++;
                    }
                    import_empr::gestion_groupe($tab[9], $tab[0]);
                    break;
                case 2:
                    break;
                default:
                    print($code_categorie);
                    print(3);
                    print( $location);
                    echo $user;
                    print("<b>Echec pour l'élève suivant (Erreur : ".pmb_mysql_error().") : </b><br />");
                    for ($i=0;$i<3;$i++) {
                        print($eleve_abrege[$i]." : ".$tab[$i].", ");
                    }
                    print("<br />");
                    break;
            }
        }

        //Affichage des insert et update
        print("<br />_____________________<br />");
        if ($cpt_insert) print($cpt_insert." Elèves créés. <br />");
        if ($cpt_maj) print($cpt_maj." Elèves modifiés. <br />");
        fclose($fichier);
    }
}

switch($action) {
    case 1:
        import_eleves(";", $type_import, $cnl_bibli);
        break;
    case 2:
        break;
    default:
        show_import_choix_fichier();
        break;
}
