Beispiel #1
0
function import_empr($dbh)
{
    global $lect_cree, $lect_erreur, $lect_modif, $type_import, $type_modif, $lect_supprime, $lect_interdit;
    $lect_tot = 0;
    $lect_supprime = 0;
    $lect_cree = 0;
    $lect_erreur = 0;
    $lect_modif = 0;
    $lect_interdit = 0;
    //La structure du fichier texte doit être la suivante avec ceci comme première ligne:
    // Etudiant
    // "MatriculeHenam","empr_cb","empr_nom","empr_prenom","empr_adr1","empr_cp","empr_ville","empr_pays","empr_tel1","empr_tel2","empr_mail","empr_sexe","empr_year","EmailPerso","localisation","groupe"
    //Professeur
    // "MatriculeHenam","empr_cb","empr_nom","empr_prenom","empr_adr1","empr_cp","empr_ville","empr_pays","empr_tel1","empr_tel2","empr_mail","empr_sexe","empr_year"
    //Upload du fichier
    if (!$_FILES['import_lec']['tmp_name']) {
        print "Cliquez sur Précédent et choisissez un fichier";
        return;
    } 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>";
        return;
    }
    $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r");
    if ($fichier) {
        $lect = decoup_fic_lect($fichier);
        for ($i = 0; $i < count($lect); $i++) {
            $statut = "";
            if ($type_modif == "modif_statut") {
                $statut = "Importé";
            }
            if (count($lect[$i]) == 1 or $lect[$i][0] == "MatriculeHenam") {
                //Passe ici pour l'entête et les ligne vide (la dernière)
            } elseif (count($lect[$i]) != 18 && count($lect[$i]) != 14) {
                $lect_tot++;
                $lect_erreur++;
                print "<b>Erreur : Personne non prise en compte car le nombre de champ n'est pas valide : </b><br />";
                echo "<pre>";
                print_r($lect[$i]);
                echo "</pre>";
            } elseif (trim($lect[$i][0]) == "" or trim($lect[$i][1]) == "" or trim($lect[$i][2]) === "") {
                $lect_tot++;
                $lect_erreur++;
                print "<b>Erreur : Personne non prise en compte car elle n'a pas de nom, de code barres ou de matricule : </b><br />";
                echo "<pre>";
                print_r($lect[$i]);
                echo "</pre>";
            } else {
                $lect_tot++;
                if ($type_import == "nouveau_lect") {
                    //Tout les lecteurs à traiter
                    //On regarde si le lecteur existe déja en le recherchant par son badge
                    $requete = "select id_empr from empr join empr_custom_values on empr_custom_origine=id_empr where empr_cb LIKE '" . addslashes($lect[$i][1]) . "%' and empr_custom_champ='2' and empr_custom_small_text='" . addslashes($lect[$i][0]) . "' ";
                    $select = mysql_query($requete, $dbh);
                    $nb_enreg = mysql_num_rows($select);
                    if ($nb_enreg == 1) {
                        maj_lect_par_lect($lect[$i], $dbh, $statut, mysql_result($select, 0, 0));
                    } elseif ($nb_enreg > 1) {
                        $lect_erreur++;
                        echo "<b>Erreur : Attention le code barre " . $lect[$i][0] . " est en double dans la base veuillez le modifier pour l'un des deux lecteurs<b><br />";
                        return;
                    } else {
                        import_lect_par_lect($lect[$i], $dbh);
                    }
                } else {
                    supp_lect_par_lect($lect[$i], $dbh);
                    $group_supp = 0;
                    if ($i + 1 == count($lect)) {
                        $requete = "delete groupe from groupe left join empr_groupe on id_groupe=groupe_id where empr_id is null";
                        $res = mysql_query($requete, $dbh);
                        $group_supp = mysql_affected_rows();
                    }
                }
            }
        }
        print "<br />_____________________<br />";
        if ($lect_erreur) {
            echo "<b> Attention " . $lect_erreur . " lecteur(s) n'a(ont) pas été traité(s) : voir erreur(s) ci-dessus </b><br />";
        }
        echo "Nombre total de lecteurs dans le fichier : " . $lect_tot . "<br />";
        if ($type_import == "nouveau_lect") {
            echo "Nombre de lecteurs créés : " . $lect_cree . "<br />";
            echo "Nombre de lecteurs modifiés : " . $lect_modif . "<br />";
        } else {
            echo "Nombre d'anciens lecteurs supprimés : " . $lect_supprime . "<br />";
            echo "Nombre d'anciens lecteurs avec un statut Interdit (non supprimés car ils ont au moins un prêt en cours) : " . $lect_interdit . "<br />";
            echo "Nombre de groupes inutilisés supprimés : " . $group_supp . "<br />";
        }
        fclose($fichier);
    }
}
function import_empr($dbh)
{
    global $lect_cree, $lect_erreur, $lect_modif, $lect_non_traite;
    $lect_tot = 0;
    $lect_supprime = 0;
    $lect_cree = 0;
    $lect_erreur = 0;
    $lect_modif = 0;
    $lect_interdit = 0;
    $lect_non_traite = 0;
    //La structure du fichier texte doit être la suivante avec ceci comme première ligne:
    //MATRICULE;NOM_USAGE;PRENOM_USAGE;DAT_DER_ENTREE;DAT_SORTIE;COD_UF;LIB_UF;POSTE;SEXE;TELEPHONE;USER_NAME;BADGE;MAIL
    //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) {
        //on change la date de mise a jour pour retrouver les lecteurs
        $requete = "select id_empr from empr where empr_modif='" . addslashes(date('Y-m-j')) . "'";
        $select = pmb_mysql_query($requete, $dbh);
        while ($verif = pmb_mysql_fetch_array($select)) {
            $requete = "update empr set empr_modif=DATE_SUB(empr_modif, INTERVAL 1 DAY) where id_empr='" . addslashes($verif["id_empr"]) . "' ";
            if (!pmb_mysql_query($requete, $dbh)) {
                echo "Erreur : requete echoué : " . $requete . "<br />";
            }
        }
        while (!feof($fichier)) {
            $buffer = fgets($fichier, 4096);
            //$buffer = pmb_mysql_escape_string($buffer);
            $tab = explode(";", $buffer);
            $nb = 0;
            $incr = 0;
            $empr = array();
            $valeur = false;
            for ($i = 0; $i < count($tab); $i++) {
                $nb = $nb + substr_count($tab[$i], "\"");
                if ($nb % 2 === 0) {
                    if ($valeur === false) {
                        $valeur = $tab[$i];
                    } else {
                        $valeur = $valeur . ";" . $tab[$i];
                    }
                    //$notices[$i][$incr]=trim(trim($valeur,"\""));
                    $empr[$incr] = preg_replace("/^\"|\"\$|\"\r\n\$/", "", $valeur);
                    $valeur = false;
                    $incr++;
                    $nb = 0;
                } else {
                    if ($valeur === false) {
                        $valeur = $tab[$i];
                    } else {
                        $valeur = $valeur . ";" . $tab[$i];
                    }
                }
            }
            if (count($empr) == 1 or $empr[0] == "MATRICULE") {
                //Passe ici pour l'entête et les ligne vide (la dernière)
            } elseif (count($empr) != 14) {
                $lect_tot++;
                $lect_erreur++;
                print "<b>Erreur : Personne non prise en compte car le nombre de champ n'est pas valide : </b><br />";
                echo "<pre>";
                print_r($empr);
                echo "</pre>";
            } elseif (trim($empr[1]) == "" or trim($empr[12]) === "") {
                $lect_tot++;
                $lect_erreur++;
                print "<b>Erreur : Personne non prise en compte car elle n'a pas de nom : </b><br />";
                echo "<pre>";
                print_r($empr);
                echo "</pre>";
            } else {
                //Tout les lecteurs à traiter
                $lect_tot++;
                import_lect_par_lect($empr, $dbh);
            }
        }
        //On supprime tout les lecteurs qui ne sont pas dans le fichier et qui n'ont pas de prets en cours
        $req_select_verif_pret = "SELECT distinct id_empr, pret_idempr FROM empr left join pret on id_empr=pret_idempr WHERE empr_modif != '" . addslashes(date('Y-m-j')) . "' ";
        $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 n'ont pas de pret en cours
            if ($verif_pret["pret_idempr"]) {
                $requete = "update empr set empr_statut='2' where id_empr='" . addslashes($verif_pret["id_empr"]) . "' ";
                if (!pmb_mysql_query($requete, $dbh)) {
                    $lect_erreur++;
                    echo " requete echoué : " . $requete . "<br />";
                } else {
                    $lect_interdit++;
                }
            } else {
                emprunteur::del_empr($verif_pret["id_empr"]);
                $lect_supprime++;
            }
        }
        print "<br />_____________________<br />";
        if ($lect_erreur) {
            echo "<b> Attention " . $lect_erreur . " lecteur(s) n'a(ont) pas été traité(s) : voir erreur(s) ci-dessus </b><br />";
        }
        echo "Nombre de lecteurs créés : " . $lect_cree . "<br />";
        echo "Nombre de lecteurs non traité (en double ou déjà traité) : " . $lect_non_traite . "<br />";
        echo "Nombre de lecteurs ou la date d'expiration à été repoussée : " . $lect_modif . "<br />";
        echo "Nombre total de lecteurs dans le fichier : " . $lect_tot . "<br />";
        echo "Nombre d'anciens lecteurs (non présent dans le fichier) supprimés : " . $lect_supprime . "<br />";
        echo "Nombre d'anciens lecteurs (non présent dans le fichier) avec un statut interdit (non supprimé car ils ont au moins un prêt en cours) : " . $lect_interdit . "<br />";
        fclose($fichier);
    }
}