function import_lecteurs($type_import) { global $dbh; global $text, $n, $t_xml; global $deflt2docs_location; //La structure du fichier xml doit être la suivante : /* <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <inm:Results productTitle="Superdoc Premium" productVersion="9.00" xmlns:inm="http://www.inmagic.com/webpublisher/query"> <inm:Recordset setCount="3"> <inm:Record setEntry="0"> <inm:Date-de-creation>10/01/2007</inm:Date-de-creation> <inm:ID>103</inm:ID> <inm:Centre>CDI LYC. MENDES FRANCE</inm:Centre> <inm:Numero-Emprunteur>00001987</inm:Numero-Emprunteur> <inm:Nom>SOULIER</inm:Nom> <inm:Prenom>ALAIN</inm:Prenom> <inm:Nom-Prenom>SOULIER ALAIN</inm:Nom-Prenom> <inm:Civilite /> <inm:Service>C.D.I.</inm:Service> <inm:Telephone /> <inm:Fax /> <inm:Mel /> <inm:Adresse /> <inm:Code-Postal /> <inm:Ville /> <inm:Pays /> <inm:Notes /> <inm:Exclusion-du-pret /> <inm:Groupe /> <inm:Droits /> <inm:DateFinDroits /> <inm:DroitEmprunteur>CDI LYC. MENDES FRANCE : Professeur</inm:DroitEmprunteur> </inm:Record>... */ //Upload du fichier if (!$_FILES['import_lec']['tmp_name']) { print "Cliquez sur Précédent et choisissez un fichier"; exit; } 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>"; exit; } $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r"); if ($fichier) { print "<br /><br />"; print "Téléchargement du fichier effectué.<br /><hr />"; if ($type_import == 'maj_complete') { print "Suppression des groupes et lecteurs sans prêts.<br /><br />"; //Vide la table empr_groupe mysql_query("DELETE FROM empr_groupe", $dbh); //Supprime les lecteurs qui n'ont pas de prêts en cours $req_select_verif_pret = "SELECT id_empr FROM empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null "; $select_verif_pret = mysql_query($req_select_verif_pret, $dbh); while ($verif_pret = mysql_fetch_array($select_verif_pret)) { //pour tous les lecteurs qui n'ont pas de pret en cours emprunteur::del_empr($verif_pret["id_empr"]); } } print "Traitement du fichier en cours.<br />"; $nb_ok = 0; $tab_err = array(); //definition header et footer $header = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><inm:results>"; $footer = "</inm:results>"; while (!feof($fichier)) { $buffer = ""; $deb = FALSE; $i = 0; while ($i < 200 && !feof($fichier)) { $line = fgets($fichier, 4096); if (strpos($line, "<inm:Recordset") === FALSE && strpos($line, "<inm:Record") !== FALSE) { $deb = TRUE; } if ($deb) { $buffer .= trim($line); } if (strpos($line, "</inm:Record>") !== FALSE) { $deb = FALSE; $i++; } } if ($buffer) { $buffer = $header . $buffer . $footer; //print "<hr />";print htmlentities($buffer,ENT_QUOTES,$charset);print "<br />"; //parse buffer $text = ''; $t_xml = array(); $n = 0; $encoding = "UTF-8"; $parser = xml_parser_create($encoding); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $encoding); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($parser, "debutBalise", "finBalise"); xml_set_character_data_handler($parser, "texte"); if (!xml_parse($parser, $buffer, TRUE)) { die(sprintf("erreur XML %s à la ligne: %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); //traitement des enregistrements for ($i = 1; $i <= count($t_xml); $i++) { //il faut au minimum un nom ou un prénom $t_xml[$i]['INM:NOM'][0] = trim($t_xml[$i]['INM:NOM'][0]); $t_xml[$i]['INM:PRENOM'][0] = trim($t_xml[$i]['INM:PRENOM'][0]); if ($t_xml[$i]['INM:NOM'][0] != '' || $t_xml[$i]['INM:PRENOM'][0] != '') { $e_data = array(); //print "Enregistrement n° ".$t_xml[$i]['INM:ID'][0]."<br />"; //localisation $e_data['location'] = $deflt2docs_location; //nom + prenom if ($t_xml[$i]['INM:NOM'][0] != '') { $e_data['nom'] = $t_xml[$i]['INM:NOM'][0]; $e_data['prenom'] = $t_xml[$i]['INM:PRENOM'][0]; } else { $e_data['nom'] = $t_xml[$i]['INM:NOM'][0]; $e_data['prenom'] = ''; } //cb emprunteur $t_xml[$i]['INM:NUMERO-EMPRUNTEUR'][0] = trim($t_xml[$i]['INM:NUMERO-EMPRUNTEUR'][0]); if ($t_xml[$i]['INM:NUMERO-EMPRUNTEUR'][0] != '') { $e_data['cb'] = trim($t_xml[$i]['INM:NUMERO-EMPRUNTEUR'][0]); } else { $q = "select (count(*)+1) from empr"; $r = mysql_query($q, $dbh); $x = mysql_result($r, 0, 0); $e_data['cb'] = 'PMB_' . $x; } //civilité $t_xml[$i]['INM:CIVILITE'][0] = substr(strtolower(trim($t_xml[$i]['INM:CIVILITE'][0])), 0, 2); switch ($t_xml[$i]['INM:CIVILITE'][0]) { case 'm.': case 'mr': case 'mo': $e_data['sexe'] = 1; break; case 'ma': case 'me': case 'ml': $e_data['sexe'] = 2; break; default: $e_data['sexe'] = 0; break; } //tel $e_data['tel1'] = trim($t_xml[$i]['INM:TELEPHONE'][0]); //mail $e_data['mail'] = trim($t_xml[$i]['INM:MEL'][0]); //adresse $e_data['adr1'] = trim($t_xml[$i]['INM:ADRESSE'][0]); //cp $e_data['cp'] = trim($t_xml[$i]['INM:CP'][0]); //ville $e_data['ville'] = trim($t_xml[$i]['INM:VILLE'][0]); //pays $e_data['pays'] = trim($t_xml[$i]['INM:PAYS'][0]); //notes $e_data['msg'] = trim($t_xml[$i]['INM:NOTES'][0]); //categorie $t_xml[$i]['INM:DROITEMPRUNTEUR'][0] = strtolower($t_xml[$i]['INM:DROITEMPRUNTEUR'][0]); $t_xml[$i]['INM:DROITEMPRUNTEUR'][0] = convert_diacrit($t_xml[$i]['INM:DROITEMPRUNTEUR'][0]); if (strpos($t_xml[$i]['INM:DROITEMPRUNTEUR'][0], "eleve") !== FALSE) { $e_data['categ'] = 1; } elseif (strpos($t_xml[$i]['INM:DROITEMPRUNTEUR'][0], "professeur") !== FALSE) { $e_data['categ'] = 2; } else { $e_data['categ'] = 3; } //code statistique $e_data['codestat'] = 1; //statut if (strtolower(trim($t_xml[$i]['INM:EXCLUSION-DU-PRET'][0])) == 'yes') { $e_data['statut'] = 2; } else { $e_data['statut'] = 1; } //date creation lecteur $t_xml[$i]['INM:DATE-DE-CREATION'][0] = trim($t_xml[$i]['INM:DATE-DE-CREATION'][0]); $e_data['date_creation'] = substr($t_xml[$i]['INM:DATE-DE-CREATION'][0], 6, 4) . '-' . substr($t_xml[$i]['INM:DATE-DE-CREATION'][0], 3, 2) . '-' . substr($t_xml[$i]['INM:DATE-DE-CREATION'][0], 0, 2); //date adhesion $e_data['date_adhesion'] = today(); //date fin adhesion $qda = "select duree_adhesion from empr_categ where id_categ_empr='" . $e_data['categ'] . "' "; $rda = mysql_query($qda, $dbh); if (mysql_num_rows($rda)) { $da = mysql_result($rda, 0, 0); } else { $da = 365; } $qd = "select date_add('" . $e_data['date_adhesion'] . "', INTERVAL " . $da . " DAY) "; $rd = mysql_query($qd, $dbh); if (mysql_num_rows($rd)) { $de = mysql_result($rd, 0, 0); } $e_data['date_expiration'] = $de; //login $e_data['login'] = emprunteur::do_login($e_data['nom'], $e_data['prenom']); //import lecteur $e = new emprunteur(); $e_id = 0; $e_id = $e->import($e_data); if ($e_id) { $nb_ok++; //groupe et champ perso service $t_xml[$i]['INM:SERVICE'][0] = trim($t_xml[$i]['INM:SERVICE'][0]); if ($t_xml[$i]['INM:SERVICE'][0]) { //groupe $qg = "select groupe_id from groupe where libelle_groupe='" . addslashes($t_xml[$i]['INM:SERVICE'][0]) . "' limit 1 "; $rg = mysql_query($qg, $dbh); if (mysql_num_rows($rg)) { $g_id = mysql_result($rg, 0, 0); } else { $qg = "insert into groupe set libelle_groupe='" . addslashes($t_xml[$i]['INM:SERVICE'][0]) . "' "; mysql_query($qg, $dbh); $g_id = mysql_insert_id($dbh); } $qeg = "insert into empr_groupe (empr_id,groupe_id) values ({$e_id},{$g_id}) "; mysql_query($qeg, $dbh); //champ perso service $qn = "select idchamp from empr_custom where name='service' "; $rn = mysql_query($qn, $dbh); if (mysql_num_rows($rn)) { $idc = mysql_result($rn, 0, 0); $requete = "select max(empr_custom_list_value*1) from empr_custom_lists where empr_custom_champ={$idc} "; $resultat = mysql_query($requete, $dbh); $max = @mysql_result($resultat, 0, 0); $n = $max + 1; $requete = "select empr_custom_list_value from empr_custom_lists where empr_custom_list_lib='" . addslashes($t_xml[$i]['INM:SERVICE'][0]) . "' and empr_custom_champ={$idc} "; $resultat = mysql_query($requete, $dbh); if (mysql_num_rows($resultat)) { $value = mysql_result($resultat, 0, 0); } else { $requete = "insert into empr_custom_lists (empr_custom_champ,empr_custom_list_value,empr_custom_list_lib) values({$idc},{$n},'" . addslashes($t_xml[$i]['INM:SERVICE'][0]) . "')"; mysql_query($requete, $dbh); $value = $n; $n++; } $requete = "insert into empr_custom_values (empr_custom_champ,empr_custom_origine,empr_custom_integer) values({$idc},{$e_id},{$value})"; mysql_query($requete, $dbh); } } } else { $tab_err[] = $t_xml[$i]['INM:ID'][0]; } } else { $tab_err[] = $t_xml[$i]['INM:ID'][0]; } } } } fclose($fichier); unlink("./temp/" . basename($_FILES['import_lec']['tmp_name'])); print "Traitement du fichier terminé."; print "<br /><hr />"; print "Nombre de lecteurs importés : " . $nb_ok . "<br />"; print "Nombre d'erreurs de traitement : " . count($tab_err) . "<br /><hr />"; if (count($tab_err)) { for ($i = 0; $i < count($tab_err); $i++) { print "Erreur à l'enregistrement n° " . $tab_err[$i] . "<br />"; } print "<hr /><br />"; } } else { print "Le fichier n'a pu être lu ."; } }
function import_lect_par_lect($tab, $dbh) { global $lect_cree, $lect_erreur; //update empr set `empr_modif`= DATE_SUB(empr_modif, INTERVAL 6 MONTH),`empr_date_expiration`= DATE_SUB(`empr_date_expiration`, INTERVAL 6 MONTH) $data = array(); if (count($tab) == 18) { //Si on a 16 champs c'est un etudiant $data['categ_libelle_create'] = "Etudiants HENAM"; } else { //Sinon c'est un prof $data['categ_libelle_create'] = "Professeurs HENAM"; } $data['codestat_libelle_create'] = "-"; $data['date_creation'] = date('Y-m-j'); $data['date_adhesion'] = date('Y-m-j'); $data['date_modif'] = date('Y-m-j'); if ($result = mysql_query("SELECT DATE_ADD('" . addslashes(date('Y-m-j')) . "', INTERVAL 1 YEAR)")) { if ($row = mysql_fetch_row($result)) { $data['date_expiration'] = $row[0]; } } $empr_cb = $tab[1]; if (!$empr_cb) { $empr_cb = "ind"; } $pb = 1; $num_cb = 1; $empr_cb2 = $empr_cb; while ($pb == 1) { $q = "SELECT empr_cb FROM empr WHERE empr_cb='" . addslashes($empr_cb2) . "' LIMIT 1 "; $r = mysql_query($q, $dbh); $nb = mysql_num_rows($r); if ($nb) { $empr_cb2 = $empr_cb . "-" . $num_cb; $num_cb++; } else { $pb = 0; } } $data['cb'] = $empr_cb2; /*if($data['cb'] != $tab[1]){ $lect_erreur++; echo "<b>Erreur : pour le lecteur ".$tab[2]." ".$tab[3]." le code barres ".$data['cb']." est déja utilisé comme code barre pour un autre lecteur</b><br />"; return; }*/ $data['nom'] = $tab[2]; $data['prenom'] = $tab[3]; if ($tab[11] == "F") { $data['sexe'] = 2; } elseif ($tab[11] == "M") { $data['sexe'] = 1; } else { $data['sexe'] = 0; } $data['adr1'] = $tab[4]; $data['adr2'] = ""; $data['ville'] = ucfirst(mb_strtolower($tab[6])); $data['pays'] = $tab[7]; $data['cp'] = $tab[5]; $data['mail'] = $tab[10]; $data['tel1'] = $tab[8]; $data['tel2'] = $tab[9]; $data['prof'] = ""; $date = explode("/", $tab[12]); $data['year'] = $date[2]; if (count($tab) == 18) { //Si on a 18 champs c'est un etudiant $data['login'] = $tab[17]; } else { //Sinon c'est un prof $data['login'] = $tab[13]; } $data['password'] = $tab[1]; $data['location_libelle_create'] = $tab[14]; if (!$data['location_libelle_create']) { $data['location_libelle_create'] = "Indéterminé"; } $data['msg'] = ""; $data['lang'] = 'fr_FR'; $data['statut_libelle_create'] = "Importé"; $mon_emprunteur = new emprunteur(); $id_empr = $mon_emprunteur->import($data); if (!$id_empr) { $lect_erreur++; echo "Erreur : Lecteur non créé\n"; echo "<pre>"; print_r($data); echo "</pre>"; } else { $lect_cree++; if ($tab[13] and count($tab) == 18) { $q = "select idchamp from empr_custom where name='email_perso' limit 1"; $r = mysql_query($q, $dbh); if (mysql_num_rows($r)) { $idchamp = mysql_result($r, 0, 0); $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q .= "values('" . $idchamp . "', '" . $id_empr . "','" . addslashes($tab[13]) . "' ) "; $r = mysql_query($q, $dbh); } } if ($tab[0]) { $q = "select idchamp from empr_custom where name='matricule' limit 1"; $r = mysql_query($q, $dbh); if (mysql_num_rows($r)) { $idchamp = mysql_result($r, 0, 0); $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q .= "values('" . $idchamp . "', '" . $id_empr . "','" . addslashes($tab[0]) . "' ) "; $r = mysql_query($q, $dbh); } } if (trim($tab[15])) { //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete = "select id_groupe from groupe where libelle_groupe='" . addslashes(trim($tab[15])) . "'"; $r = mysql_query($requete, $dbh); if (mysql_num_rows($r)) { $id_grp = mysql_result($r, 0, 0); } else { $q = "insert into groupe (libelle_groupe) values ('" . addslashes(trim($tab[15])) . "') "; $r = mysql_query($q, $dbh); $id_grp = mysql_insert_id($dbh); } $requete = "insert into empr_groupe(empr_id,groupe_id) values ('" . $id_empr . "','" . $id_grp . "')"; if (!mysql_query($requete)) { echo "Requete echoué : " . $requete . "<br>"; } } if (trim($tab[16]) and trim($tab[16]) != trim($tab[15])) { //On créer le groupe si il n'existe pas et on y affecte le lecteur $requete = "select id_groupe from groupe where libelle_groupe='" . addslashes(trim($tab[16])) . "'"; $r = mysql_query($requete, $dbh); if (mysql_num_rows($r)) { $id_grp = mysql_result($r, 0, 0); } else { $q = "insert into groupe (libelle_groupe) values ('" . addslashes(trim($tab[16])) . "') "; $r = mysql_query($q, $dbh); $id_grp = mysql_insert_id($dbh); } $requete = "insert into empr_groupe(empr_id,groupe_id) values ('" . $id_empr . "','" . $id_grp . "')"; if (!mysql_query($requete)) { echo "Requete echoué : " . $requete . "<br>"; } } } }
function import_lect_par_lect($tab, $dbh) { global $lect_cree, $lect_erreur, $lect_modif, $lect_non_traite; //update empr set `empr_modif`= DATE_SUB(empr_modif, INTERVAL 6 MONTH),`empr_date_expiration`= DATE_SUB(`empr_date_expiration`, INTERVAL 6 MONTH) //On regarde si le lecteur existe déja en le recherchant par son badge $requete = "select id_empr,empr_modif from empr where empr_cb='" . addslashes($tab[12]) . "'"; $select = pmb_mysql_query($requete, $dbh); $nb_enreg = pmb_mysql_num_rows($select); if ($nb_enreg == 1) { if (pmb_mysql_result($select, 0, 1) != date('Y-m-j')) { $requete = "update empr set empr_modif='" . addslashes(date('Y-m-j')) . "'"; if ($tab[4]) { $data3 = array(); $data3 = explode('/', $tab[4]); $data = $data3[2] . "-" . $data3[1] . "-" . $data3[0]; $requete = $requete . ", empr_date_expiration='" . addslashes($data) . "'"; } else { $requete = $requete . ", empr_date_expiration=DATE_ADD('" . addslashes(date('Y-m-j')) . "', INTERVAL 6 MONTH)"; } $requete = $requete . " where empr_cb='" . addslashes($tab[12]) . "' "; if (!pmb_mysql_query($requete, $dbh)) { $lect_erreur++; echo "Erreur : requete echoué : " . $requete . "<br />"; } else { $lect_modif++; } } else { $lect_non_traite++; echo "Information : Le lecteur " . $tab[1] . " " . $tab[2] . " avec le code barres " . $tab[12] . " est présent plusieurs fois dans le fichier ou le fichier à déjà été traité<br />"; } return; } elseif ($nb_enreg > 1) { $lect_erreur++; echo "<b>Erreur : Attention le code barre " . $tab[12] . " est en double veuillez le modifier pour l'un des deux lecteurs<b><br />"; return; } $data = array(); //$data['categ_libelle_create']="Indéterminé"; if ($tab[8]) { $data['categ_libelle_create'] = $tab[8]; } else { $data['categ_libelle_create'] = "Indéterminé"; } if ($tab[6]) { $data['codestat_libelle_create'] = $tab[6]; } else { $data['codestat_libelle_create'] = "Indéterminé"; } $data['date_adhesion'] = date('Y-m-j'); $data['date_modif'] = date('Y-m-j'); if ($tab[3]) { $data3 = array(); $data3 = explode('/', $tab[3]); if (count($data3) == 3) { $data['date_creation'] = $data3[2] . "-" . $data3[1] . "-" . $data3[0]; } else { $data['date_creation'] = date('Y-m-j'); } } else { $data['date_creation'] = date('Y-m-j'); } if ($tab[4]) { $data3 = array(); $data3 = explode('/', $tab[4]); if (count($data3) == 3) { $data['date_expiration'] = $data3[2] . "-" . $data3[1] . "-" . $data3[0]; } } if (!$data['date_expiration']) { if ($result = pmb_mysql_query("SELECT DATE_ADD('" . addslashes(date('Y-m-j')) . "', INTERVAL 6 MONTH)")) { if ($row = pmb_mysql_fetch_row($result)) { $data['date_expiration'] = $row[0]; } } } $empr_cb = addslashes($tab[12]); if (!$empr_cb) { $empr_cb = "ind"; } $pb = 1; $num_cb = 1; $empr_cb2 = $empr_cb; while ($pb == 1) { $q = "SELECT empr_cb FROM empr WHERE empr_cb='" . $empr_cb2 . "' LIMIT 1 "; $r = pmb_mysql_query($q, $dbh); $nb = pmb_mysql_num_rows($r); if ($nb) { $empr_cb2 = $empr_cb . "-" . $num_cb; $num_cb++; } else { $pb = 0; } } $data['cb'] = stripslashes($empr_cb2); if ($data['cb'] != $tab[12]) { echo "<b>Information : pour le lecteur " . $tab[1] . " " . $tab[2] . " son code barres sera " . $data['cb'] . " car le matricule " . $tab[12] . " est déja utilisé comme code barre pour un autre lecteur</b><br />"; } $data['nom'] = $tab[1]; $data['prenom'] = $tab[2]; if ($tab[9] == "F") { $data['sexe'] = 2; } elseif ($tab[9] == "M") { $data['sexe'] = 1; } else { $data['sexe'] = 0; } $data['adr1'] = ""; $data['adr2'] = ""; $data['ville'] = ""; $data['pays'] = ""; $data['cp'] = ""; $data['mail'] = $tab[13]; $data['tel1'] = $tab[10]; $data['tel2'] = ""; $data['prof'] = $tab[7]; $data['year'] = ""; $data['login'] = $tab[11]; $data['password'] = $tab[11]; $data['location_libelle_create'] = "Clcc"; $data['msg'] = ""; $data['lang'] = 'fr_FR'; $data['statut_libelle_create'] = "Actif"; $mon_emprunteur = new emprunteur(); $id_empr = $mon_emprunteur->import($data); if (!$id_empr) { $lect_erreur++; echo "Erreur : Lecteur non cree\n"; echo "<pre>"; print_r($data); echo "</pre>"; } else { $lect_cree++; if ($tab[0]) { $q = "select idchamp from empr_custom where name='matricule' limit 1"; $r = pmb_mysql_query($q, $dbh); if (pmb_mysql_num_rows($r)) { $idchamp = pmb_mysql_result($r, 0, 0); $q = "insert into empr_custom_values (empr_custom_champ, empr_custom_origine, empr_custom_small_text) "; $q .= "values('" . $idchamp . "', '" . $id_empr . "','" . addslashes($tab[0]) . "' ) "; $r = pmb_mysql_query($q, $dbh); } } } }