function import_profs($separateur, $dbh, $type_import, $mdp_auto, $num_auto, $adr_mail) { //La structure du fichier texte doit être la suivante : //[numéro],nom, prénom, adr1, adr2, code postal, commune, tel, année de naissance, sexe, e-mail,[login,mdp] $prof = array("Numéro auto", "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 :<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 //$delete_empr_groupe = pmb_mysql_query("DELETE FROM empr_groupe",$dbh); //echo $type_import; //Supprime les profs qui n'ont pas de prêts en cours $req_select_verif_pret = "SELECT id_empr, empr_cb FROM groupe, empr_groupe, empr left join pret on id_empr=pret_idempr WHERE pret_idempr is null and empr_groupe.empr_id = empr.id_empr and empr_groupe.groupe_id = id_groupe and libelle_groupe like 'Professeurs'"; $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 emprunteur::del_empr($verif_pret["id_empr"]); } } //Récupération dans la table 'empr' du 'empr_cb' maximum $req = pmb_mysql_query("SELECT MAX(empr_cb) AS cbmax FROM empr WHERE empr_categ=2 and empr_codestat=1", $dbh); $cb = pmb_mysql_result($req, 0, "cbmax"); if (!$cb) { $numeroP = "0000"; } else { $numeroP = substr($cb, 1, 4); } while (!feof($fichier)) { $buffer = fgets($fichier, 4096); $buffer = pmb_mysql_escape_string($buffer); $tab = explode($separateur, $buffer); if ($num_auto != 'num_auto') { $buf_prenom = explode("\\", $tab[1]); $prenom = $buf_prenom[0]; } else { $buf_prenom = explode("\\", $tab[2]); $prenom = $buf_prenom[1]; } // Traitement du prof $select = pmb_mysql_query("SELECT id_empr, empr_cb FROM empr WHERE empr_nom = '" . $tab[0] . "' AND empr_prenom = '" . $prenom . "'", $dbh); $nb_enreg = pmb_mysql_num_rows($select); if (!$tab[0] || $tab[0] == "") { if ($tab[1] != "") { print "<b> Professeur non pris en compte car \"Nom\" non renseigné : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; } $nb_enreg = 2; } if ($num_auto == 'num_auto') { // Si il y a un numéro en debut de fichier, // on decale les indices du tab à la baisse : $prof_cb = $tab[0]; $tab[0] = $tab[1]; $tab[1] = $tab[2]; $tab[2] = $tab[3]; $tab[3] = $tab[4]; $tab[4] = $tab[5]; $tab[5] = $tab[6]; $tab[6] = $tab[7]; $tab[7] = $tab[8]; $tab[8] = $tab[9]; if ($adr_mail == 'adr_mail') { $tab[9] = $tab[10]; $tab[10] = $tab[11]; $tab[11] = $tab[12]; } else { $tab[9] = ""; } } else { //Génération du code-barre $numeroP = $numeroP + 1; if ($numeroP < 10) { $prof_cb = "P000" . $numeroP; } elseif ($numeroP < 100) { $prof_cb = "P00" . $numeroP; } elseif ($numeroP < 1000) { $prof_cb = "P0" . $numeroP; } elseif ($numeroP < 10000) { $prof_cb = "P" . $numeroP; } } // On verifie que le mail est bien de la forme chaine@chaine : if ($adr_mail == 'adr_mail') { if (preg_match("#.*@.*#", $tab[9]) == false) { $tab[9] = ""; } } //Gestion du sexe switch ($tab[8][0]) { case M: $sexe = 1; break; case F: $sexe = 2; break; default: $sexe = 0; break; } //Génération du login if ($mdp_auto != 'mdp_auto') { $login = cre_login($tab[0], $prenom, $dbh); $mdp = $tab[7]; } else { $login = $tab[10]; $mdp = $tab[11]; } if (!$mdp || $mdp == "") { $mdp = $login; } switch ($nb_enreg) { case 0: //Ce prof n'est pas enregistré $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, "; $req_insert .= "empr_mail, empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe, "; $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration) "; $req_insert .= "VALUES ('{$prof_cb}','{$tab['0']}','{$tab['1']}', '{$tab['2']}', '{$tab['3']}', '{$tab['4']}', '{$tab['5']}', '{$tab['9']}', '{$tab['6']}', '{$tab['7']}', "; $req_insert .= "2, 1, '{$date_auj}', {$sexe}, '{$login}', replace(replace('" . $mdp . "','\n',''),'\r',''), '{$date_auj}', '{$date_an_proch}' )"; $insert = pmb_mysql_query($req_insert, $dbh); if (!$insert) { print "<b>Échec de la création du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $mdp)); emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $mdp)); $cpt_insert++; } $j++; gestion_groupe("Professeurs", $prof_cb, $dbh); break; case 1: //Ce prof est déja enregistré $empr_cbs = pmb_mysql_fetch_array($select); $prof_cb = $empr_cbs['empr_cb']; $req_update = "UPDATE empr SET empr_nom = '{$tab['0']}', empr_prenom = '{$tab['1']}', empr_adr1 = '{$tab['2']}', "; $req_update .= "empr_adr2 = '{$tab['3']}', empr_cp = '{$tab['4']}', empr_ville = '{$tab['5']}', empr_mail = '{$tab['9']}', "; $req_update .= "empr_tel1 = '{$tab['6']}', empr_year = '{$tab['7']}', empr_categ = '2', empr_codestat = '1', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', "; $req_update .= "empr_login = '******', empr_password=replace(replace('" . $mdp . "','\n',''),'\r',''), "; $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}' "; $req_update .= "WHERE empr_nom = '{$tb['0']}' AND empr_prenom = '{$prenom}'"; $update = pmb_mysql_query($req_update, $dbh); if (!$update) { print "<b>Échec de la modification du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $mdp)); emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $mdp)); $cpt_maj++; } $j++; break; case 2: break; default: print "<b>Échec pour le professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i] . ", "; } print "<br />"; break; } //gestion_groupe("Professeurs", $prof_cb, $dbh); } //Affichage des insert et update print "<br />_____________________<br />"; if ($cpt_insert) { print $cpt_insert . " Professeurs créés. <br />"; } if ($cpt_maj) { print $cpt_maj . " Professeurs modifiés. <br />"; } fclose($fichier); } }
function import_profs($separateur, $dbh, $type_import) { //La structure du fichier texte doit être la suivante : //nom, prénom (le cb est généré automatiquement) $prof = array("Numéro auto", "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 :<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 pmb_mysql_query("DELETE FROM empr_groupe", $dbh); echo $type_import; //Supprime les profs 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 and empr_cb NOT LIKE 'P%'"; $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 emprunteur::del_empr($verif_pret["id_empr"]); } } //Récupération dans la table 'empr' du 'empr_cb' maximum $req = pmb_mysql_query("SELECT MAX(empr_cb) AS cbmax FROM empr WHERE empr_categ=2 and empr_codestat=1", $dbh); $cb = pmb_mysql_result($req, 0, "cbmax"); if (!$cb) { $numeroP = "000"; } else { $numeroP = substr($cb, 1, 3); } while (!feof($fichier)) { $buffer = fgets($fichier, 4096); $buffer = pmb_mysql_escape_string($buffer); $tab = explode($separateur, $buffer); $buf_prenom = explode("\\", $tab[1]); $prenom = $buf_prenom[0]; // Traitement du prof $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_nom = '" . $tab[0] . "' AND empr_prenom = '" . $prenom . "'", $dbh); $nb_enreg = pmb_mysql_num_rows($select); if (!$tab[0] || $tab[0] == "") { print "<b> Professeur non pris en compte car \"Nom\" non renseigné : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; $nb_enreg = 2; } //Gestion du sexe switch ($tab[8][0]) { case M: $sexe = 1; break; case F: $sexe = 2; break; default: $sexe = 0; break; } //Génération du code-barre $numeroP = $numeroP + 1; if ($numeroP < 10) { $prof_cb = "P00" . $numeroP; } elseif ($numeroP < 100) { $prof_cb = "P0" . $numeroP; } elseif ($numeroP < 1000) { $prof_cb = "P" . $numeroP; } //Génération du login $login = cre_login($tab[0], $prenom, $dbh); //Pour l'instant login = mdp car lors de l'import des profs, aucune date de naissance n'est fournie switch ($nb_enreg) { case 0: //Ce prof n'est pas enregistré $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, "; $req_insert .= "empr_mail, empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe, "; $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration) "; $req_insert .= "VALUES ('{$prof_cb}','{$tab['0']}','{$prenom}', '{$tab['2']}', '{$tab['3']}', '{$tab['4']}', '{$tab['5']}', '{$tab['9']}', '{$tab['6']}', '{$tab['7']}', "; $req_insert .= "2, 1, '{$date_auj}', {$sexe}, '{$login}', replace(replace('" . $tab[7] . "','\n',''),'\r',''), '{$date_auj}', '{$date_an_proch}' )"; $insert = pmb_mysql_query($req_insert, $dbh); if (!$insert) { print "<b>Echec de la création du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $tab[7])); emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $tab[7])); $cpt_insert++; } $j++; break; case 1: //Ce prof est déja enregistré $req_update = "UPDATE empr SET empr_nom = '{$tab['0']}', empr_prenom = '{$tab['1']}', empr_adr1 = '{$tab['2']}', "; $req_update .= "empr_adr2 = '{$tab['3']}', empr_cp = '{$tab['4']}', empr_ville = '{$tab['5']}', empr_mail = '{$tab['9']}', "; $req_update .= "empr_tel1 = '{$tab['6']}', empr_year = '{$tab['7']}', empr_categ = '2', empr_codestat = '1', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', "; $req_update .= "empr_login = '******', empr_password= replace(replace('" . $tab[7] . "','\n',''),'\r',''), "; $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}' "; $req_update .= "WHERE empr_nom = '{$tb['0']}' AND empr_prenom = '{$prenom}'"; $update = pmb_mysql_query($req_update, $dbh); if (!$update) { print "<b>Echec de la modification du professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 1; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i - 1] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, str_replace(array("\n", "\r"), "", $tab[7])); emprunteur::hash_password($login, str_replace(array("\n", "\r"), "", $tab[7])); $cpt_maj++; } $j++; break; case 2: break; default: print "<b>Echec pour le professeur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $prof[$i] . " : " . $tab[$i] . ", "; } print "<br />"; break; } } //Affichage des insert et update print "<br />_____________________<br />"; if ($cpt_insert) { print $cpt_insert . " Professeurs créés. <br />"; } if ($cpt_maj) { print $cpt_maj . " Professeurs modifiés. <br />"; } fclose($fichier); } }
print $buf_contenu; return; } $the_procedure = $procedure["procedure"]; } if (!$the_procedure) { echo htmlentities($msg["remote_procedures_error_client"], ENT_QUOTES, $charset); break; } if ($the_procedure->type != "PEMPS") { echo htmlentities($msg["remote_procedures_circ_noPEMPS"], ENT_QUOTES, $charset); break; } $sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs"; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)"; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $idproc = pmb_mysql_insert_id($dbh); $hp = new parameters($idproc, "remote_proc"); if (preg_match_all("|!!(.*)!!|U", $hp->proc->requete, $query_parameters)) { $hp->get_final_query(); $the_procedure->sql = $hp->final_query; } $execute_external = true; $execute_external_procedure = $the_procedure; include "./circ/caddie/gestion/execute.inc.php"; break; default: if (!$pmb_procedure_server_address) { echo $msg["remote_procedures_error_noaddress"]; break;
function make_serialized_task_params() { global $dbh, $type_proc, $form_procs, $form_procs_remote; global $tocsv_checked, $tocsv_sep, $tocsv_filepath, $tocsv_enclosure; global $pmb_procedure_server_credentials, $pmb_procedure_server_address; $t = parent::make_serialized_task_params(); $t['type_proc'] = stripslashes($type_proc); $t['form_procs'] = stripslashes($form_procs); $t['form_procs_remote'] = stripslashes($form_procs_remote); $t['tocsv']['checked'] = $tocsv_checked; $t['tocsv']['sep'] = stripslashes($tocsv_sep); $t['tocsv']['filepath'] = stripslashes($tocsv_filepath); $t['tocsv']['enclosure'] = stripslashes($tocsv_enclosure); if ($form_procs) { $hp = new parameters($form_procs, 'procs'); $t['envt'] = $hp->make_serialized_parameters_params(); } else { if ($form_procs_remote) { $id = $form_procs_remote; $pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials); if ($pmb_procedure_server_address && count($pmb_procedure_server_credentials_exploded) == 2) { $aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1])); $procedure = $aremote_procedure_client->get_proc($id, "AP"); if (!$procedure['error_message']) { $the_procedure = $procedure['procedure']; if ($the_procedure) { $sql = "CREATE TEMPORARY TABLE remote_proc LIKE procs"; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)"; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $idproc = pmb_mysql_insert_id($dbh); $hp = new parameters($idproc, "remote_proc"); $t['envt'] = $hp->make_serialized_parameters_params(); } } } } } return serialize($t); }
print $desc_empr[0][2].", "; // mysql_field_longeur print $desc_empr[0][3];", "; // estNumerique ou non! print $desc_table[$j][4]; // auto_increment ou non! */ $nbChamp_empr = count($desc_empr); // // traitement du buffer pour chaque ligne // foreach ($bufferLine as $dummykey => $tmp) { $bufferChamp = explode($Sep_Champs, $tmp); $cpt = count($bufferChamp) - 1; // de 1 ? la fin, le 0 est comme null! for ($j = $cpt; $j >= 0; $j--) { // el?ve les " et les espaces en debut et fin du string(pour chaque champ!) $bufferChamp[$j + 1] = trim($bufferChamp[$j], "\""); $bufferChamp[$j + 1] = pmb_mysql_escape_string($bufferChamp[$j + 1]); } $bufferChamp[0] = ""; if (return_cb($dbh, $bufferChamp[${$desc_empr}[1][0]])) { // ca veut dire que c'est un update d'une personne deja dans la BD for ($i = 1; $i < $nbChamp_empr; $i++) { if (!$desc_empr[$i][4] and $bufferChamp[${$desc_empr}[$i][0]]) { // s'il n'est pas auto incr?mentable if ($desc_empr[$i][3]) { // s'il est num?rique $query2 = 'update empr set ' . $desc_empr[$i][0] . ' = ' . substr($bufferChamp[${$desc_empr}[$i][0]], 0, $desc_empr[$i][2]) . ' where empr_cb = "' . $bufferChamp[${$desc_empr}[1][0]] . '";'; } else { $query2 = 'update empr set ' . $desc_empr[$i][0] . ' = "' . substr($bufferChamp[${$desc_empr}[$i][0]], 0, $desc_empr[$i][2]) . '" where empr_cb = "' . $bufferChamp[${$desc_empr}[1][0]] . '";'; } if ($i == 4) { // l'exeption pour l'adresse (2 champs dans le 2e formulaire)
function fetch_data() { global $dbh; //enumerate tables $res = pmb_mysql_list_tables(DATA_BASE); $i = 0; while ($i < pmb_mysql_num_rows($res)) { $update_a_faire = 0; /* permet de gérer les id auto_increment qui auraient pour valeur 0 */ $table_name = pmb_mysql_tablename($res, $i); bzwrite($this->fptr, "delete from {$table_name};\n"); $this->dump .= "delete from {$table_name};\n"; //parse the field info first $res2 = pmb_mysql_query("select * from {$table_name} order by 1 ", $dbh); $nf = pmb_mysql_num_fields($res2); $nr = pmb_mysql_num_rows($res2); $fields = ''; $values = ''; for ($b = 0; $b < $nf; $b++) { $fn = pmb_mysql_field_name($res2, $b); $ft = pmb_mysql_field_type($res2, $b); $fs = pmb_mysql_field_len($res2, $b); $ff = pmb_mysql_field_flags($res2, $b); $is_numeric = false; switch (strtolower($ft)) { case "int": $is_numeric = true; break; case "blob": $is_numeric = false; break; case "real": $is_numeric = true; break; case "string": $is_numeric = false; break; case "unknown": switch (intval($fs)) { case 4: // little weakness here... // there is no way (thru the PHP/MySQL interface) // to tell the difference between a tinyint and a year field type $is_numeric = true; break; default: $is_numeric = true; break; } break; case "timestamp": $is_numeric = true; break; case "date": $is_numeric = false; break; case "datetime": $is_numeric = false; break; case "time": $is_numeric = false; break; default: //future support for field types that are not recognized //(hopefully this will work without need for future modification) $is_numeric = true; //I'm assuming new field types will follow SQL numeric syntax.. // this is where this support will breakdown break; } $fields ? $fields .= ', ' . $fn : ($fields .= $fn); $fna[$b] = $fn; $ina[$b] = $is_numeric; } //parse out the table's data and generate the SQL INSERT statements in order to replicate the data itself... for ($c = 0; $c < $nr; $c++) { $row = pmb_mysql_fetch_row($res2); $values = ''; for ($d = 0; $d < $nf; $d++) { $data = strval($row[$d]); if ($d == 0 && strval($row[$d]) == 0) { /* traiter ici l'insertion avec valeur 1 pour id autoincrement et update à suivre */ $values ? $values .= ', ' . '1' : ($values .= '1'); $cle_update = pmb_mysql_field_name($res2, 0); $update_a_faire = 1; } else { if ($ina[$d] == true) { $values ? $values .= ', ' . intval($data) : ($values .= intval($data)); } else { $values ? $values .= ", \"" . pmb_mysql_escape_string($data) . "\"" : ($values .= "\"" . pmb_mysql_escape_string($data) . "\""); } } } bzwrite($this->fptr, "insert into {$table_name} ({$fields}) values ({$values});\n"); $this->dump .= "insert into {$table_name} ({$fields}) values ({$values});\n"; if ($update_a_faire == 1) { $update_a_faire = 0; bzwrite($this->fptr, "update {$table_name} set " . $cle_update . "='0' where " . $cle_update . "='1';\n"); $this->dump .= "update {$table_name} set " . $cle_update . "='0' where " . $cle_update . "='1';\n"; } } pmb_mysql_free_result($res2); $i++; } }
function executeProc($procedure, $idProc, $tparams) { global $msg, $dbh, $charset, $PMBuserid; global $pmb_procedure_server_credentials, $pmb_procedure_server_address; if (SESSrights & ADMINISTRATION_AUTH) { $name = ''; $report = ''; if ($tparams['envt']) { foreach ($tparams['envt'] as $aparam => $vparam) { global ${$aparam}; ${$aparam} = $vparam; } } switch ($procedure) { case INTERNAL: $hp = new parameters($idProc, 'procs'); $hp->get_final_query(); $code_sql = $hp->final_query; $autorisations = $hp->proc->autorisations; break; case EXTERNAL: $pmb_procedure_server_credentials_exploded = explode("\n", $pmb_procedure_server_credentials); if ($pmb_procedure_server_address && count($pmb_procedure_server_credentials_exploded) == 2) { $aremote_procedure_client = new remote_procedure_client($pmb_procedure_server_address, trim($pmb_procedure_server_credentials_exploded[0]), trim($pmb_procedure_server_credentials_exploded[1])); $procedure = $aremote_procedure_client->get_proc($idProc, "AP"); $the_procedure = $procedure['procedure']; if ($procedure['error_message']) { $report = htmlentities($msg['remote_procedures_error_server'], ENT_QUOTES, $charset) . ':<br /><i>' . $procedure['error_message'] . '</i>'; $result = array('name' => $the_procedure->name, 'report' => $report); return $result; } else { if ($the_procedure->params && $the_procedure->params != 'NULL') { $sql = 'CREATE TEMPORARY TABLE remote_proc LIKE procs'; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $sql = "INSERT INTO remote_proc (idproc, name, requete, comment, autorisations, parameters, num_classement) VALUES (0, '" . pmb_mysql_escape_string($the_procedure->name) . "', '" . pmb_mysql_escape_string($the_procedure->sql) . "', '" . pmb_mysql_escape_string($the_procedure->comment) . "', '', '" . pmb_mysql_escape_string($the_procedure->params) . "', 0)"; pmb_mysql_query($sql, $dbh) or die(pmb_mysql_error()); $idproc = pmb_mysql_insert_id($dbh); $hp = new parameters($idproc, 'remote_proc'); $hp->get_final_query(); $the_procedure->sql = $hp->final_query; $name = $the_procedure->name; $code_sql = $the_procedure->sql; $commentaire = $the_procedure->comment; } } } break; } $linetemp = explode(';', $code_sql); if ($autorisations) { $temp_autorisation = explode(' ', $autorisations); } $allow = false; if ($temp_autorisation) { foreach ($temp_autorisation as $userid) { if ($userid == $PMBuserid) { $allow = true; } } if (!$allow) { $report = $msg[11]; // throw new Exception($message, $code); $result = array('name' => $name, 'report' => $report); return $result; } } $line = array(); for ($i = 0; $i < count($linetemp); $i++) { if (trim($linetemp[$i])) { $line[] = trim($linetemp[$i]); } } while (list($cle, $valeur) = each($line)) { if ($valeur) { $report .= "<strong>" . $msg['procs_ligne'] . " {$cle} </strong>: {$valeur}<br /><br />"; $er = explain_requete($valeur); if ($er) { $res = @pmb_mysql_query($valeur, $dbh); $report .= pmb_mysql_error(); $nbr_lignes = @pmb_mysql_num_rows($res); $nbr_champs = @pmb_mysql_num_fields($res); if ($nbr_lignes) { $report .= "<table >"; for ($i = 0; $i < $nbr_champs; $i++) { $fieldname = pmb_mysql_field_name($res, $i); $report .= "<th>{$fieldname}</th>"; } for ($i = 0; $i < $nbr_lignes; $i++) { $row = pmb_mysql_fetch_row($res); $report .= "<tr>"; foreach ($row as $dummykey => $col) { if (trim($col) == '') { $col = ' '; } $report .= '<td >' . $col . '</td>'; } $report .= "</tr>"; } $report .= "</table><hr />"; $report .= "<font color='#ff0000'>" . $msg['admin_misc_lignes'] . " " . pmb_mysql_affected_rows($dbh) . "</font>"; } else { $report .= "<br /><font color='#ff0000'>" . $msg['admin_misc_lignes'] . " " . pmb_mysql_affected_rows($dbh); $err = pmb_mysql_error($dbh); if ($err) { $report .= "<br />{$err}"; } $report .= "</font><hr />"; } } else { // erreur explain_requete $report .= $valeur . "<br /><br />" . $msg['proc_param_explain_failed'] . "<br /><br />" . $erreur_explain_rqt; } } } // fin while //Export CSV sur le resultat de la derniere requete if ($er && $nbr_lignes && $tparams['tocsv']['checked'] == '1' && $tparams['tocsv']['filepath']) { if (!$tparams['tocsv']['sep']) { $tparams['tocsv']['sep'] = ','; } $trow = array(); if ($tparams['tocsv']['enclosure']) { for ($i = 0; $i < $nbr_champs; $i++) { $trow[] = addcslashes(pmb_mysql_field_name($res, $i), $tparams['tocsv']['enclosure']); } $row = $tparams['tocsv']['enclosure'] . implode($tparams['tocsv']['enclosure'] . $tparams['tocsv']['sep'] . $tparams['tocsv']['enclosure'], $trow) . $tparams['tocsv']['enclosure'] . "\r\n"; } else { $row = implode($tparams['tocsv']['sep'], $trow) . "\r\n"; } file_put_contents($tparams['tocsv']['filepath'], $row); pmb_mysql_data_seek($res, 0); for ($i = 0; $i < $nbr_lignes; $i++) { $trow = pmb_mysql_fetch_row($res); if ($tparams['tocsv']['enclosure']) { foreach ($trow as $k => $v) { $trow[$k] = addcslashes($v, $tparams['tocsv']['enclosure']); } $row = $tparams['tocsv']['enclosure'] . implode($tparams['tocsv']['enclosure'] . $tparams['tocsv']['sep'] . $tparams['tocsv']['enclosure'], $trow) . $tparams['tocsv']['enclosure'] . "\r\n"; } else { $row = implode($tparams['tocsv']['sep'], $trow) . "\r\n"; } file_put_contents($tparams['tocsv']['filepath'], $row, FILE_APPEND); } } $result = array('name' => $name, 'report' => $report); return $result; } return array(); }
function import($separateur, $dbh, $type_import) { global $categorie, $codestat, $localisation; global $pmb_lecteurs_localises; //La structure du fichier texte doit être la suivante : //Code-barres ; Nom ; Prénom ; Rue ; Complément de rue ; Code postal ; Commune ; Téléphone ; Année de date de naissance ; Classe ; Sexe ; Téléphone 2 ; Mail ; Profession ; Message $requete = "SELECT duree_adhesion FROM empr_categ WHERE id_categ_empr='" . $categorie . "'"; $resultat = pmb_mysql_query($requete, $dbh); if (pmb_mysql_num_rows($resultat)) { $duree = pmb_mysql_result($resultat, 0, 0); } else { $duree = 365; } $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 * $duree); //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 :<br />"; print_r($_FILES) . "<p>"; } $fichier = @fopen("./temp/" . basename($_FILES['import_lec']['tmp_name']), "r"); if ($fichier) { while (!feof($fichier)) { //initialise la variable tableau, au cas où on ait pas toutes les colonnes dans le fichier csv $buffer = fgets($fichier, 4096); $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; } if ($tab[8] != "0") { $password = $tab[8]; } else { $password = ""; } //pour éviter un saut de ligne dans les trois dernières colonnes qui sont facultatives $tab[12] = str_replace("\\r\\n", "", $tab[12]); $tab[13] = str_replace("\\r\\n", "", $tab[13]); $tab[14] = str_replace("\\r\\n", "", $tab[14]); // Traitement du lecteur $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_cb = '" . $tab[0] . "'", $dbh); $nb_enreg = pmb_mysql_num_rows($select); //Test si un numéro id est fourni, rejet si pas d'id avec message si au moins nom ou au moins prénom contient qqch //si pas d'id, pas de nom, pas de prénom, erreur muette : dernière ligne if ((!$tab[0] || $tab[0] == "") && !($tab[1] == "" && $tab[2] == "" && $tab[3] == "" && $tab[4] == "")) { print "<b> Lecteur 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; } $login = cre_login($tab[1], $tab[2], $dbh); switch ($nb_enreg) { case 0: //Ce lecteur n'est pas enregistré $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, "; $req_insert .= "empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe, "; $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration, empr_tel2, empr_mail, empr_prof, empr_msg, empr_location) "; $req_insert .= "VALUES ('{$tab['0']}','{$tab['1']}','{$tab['2']}','{$tab['3']}', '{$tab['4']}', '{$tab['5']}', "; $req_insert .= "'{$tab['6']}', '{$tab['7']}', '{$tab['8']}', {$categorie}, {$codestat}, '{$date_auj}', '{$sexe}', "; $req_insert .= "'{$login}', '{$password}', '{$date_auj}', '{$date_an_proch}','{$tab['11']}','{$tab['12']}','{$tab['13']}','{$tab['14']}','{$localisation}')"; $insert = pmb_mysql_query($req_insert, $dbh); if (!$insert) { print "<b>Echec de la création du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, $password); emprunteur::hash_password($login, $password); $cpt_insert++; } gestion_groupe($tab[9], $tab[0], $dbh); $j++; break; case 1: //Ce lecteur est déjà enregistré $req_update = "UPDATE empr SET empr_nom = '{$tab['1']}', empr_prenom = '{$tab['2']}', empr_adr1 = '{$tab['3']}', "; $req_update .= "empr_adr2 = '{$tab['4']}', empr_cp = '{$tab['5']}', empr_ville = '{$tab['6']}', "; $req_update .= "empr_tel1 = '{$tab['7']}', empr_year = '{$tab['8']}', empr_categ = '" . $categorie . "', empr_codestat = '{$codestat}', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', "; // on ne modifie ni login ni mot de passe pour éviter d'écraser un mot de passe changé par le lecteur // $req_update .= "empr_login = $login, empr_password= $tab[8], "; $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}', empr_tel2 = '{$tab['11']}', empr_location='{$localisation}' "; $req_update .= "WHERE empr_cb = '{$tab['0']}'"; $update = pmb_mysql_query($req_update, $dbh); if (!$update) { print "<b>Echec de la modification du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } else { if ($tab[12] != "") { $req_update_mail = "UPDATE empr SET empr_mail='{$tab['12']}' WHERE empr_cb = '{$tab['0']}'"; $update_mail = pmb_mysql_query($req_update_mail, $dbh); if (!$update_mail) { print "<b>Echec de la modification du mail du lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } $tab[12] = ""; } if ($tab[13] != "") { $req_update_prof = "UPDATE empr SET empr_prof='{$tab['13']}' WHERE empr_cb = '{$tab['0']}'"; $update_prof = pmb_mysql_query($req_update_prof, $dbh); if (!$update_prof) { print "<b>Echec de la modification de la profession lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } $tab[13] = ""; } if ($tab[14] != "") { $req_update_msg = "UPDATE empr SET empr_msg='{$tab['14']}' WHERE empr_cb = '{$tab['0']}'"; $update_msg = pmb_mysql_query($req_update_msg, $dbh); if (!$update_msg) { print "<b>Echec de la modification du message sur le lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } $tab[14] = ""; } $cpt_maj++; } gestion_groupe($tab[9], $tab[0], $dbh); $j++; break; case 2: break; default: print "<b>Echec pour le lecteur suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; break; } } if ($type_import == 'maj_complete') { $requete_empr_groupe_delete = "DELETE FROM empr_groupe LEFT JOIN empr ON empr_id=id_empr LEFT JOIN pret ON pret_idempr=id_empr WHERE pret_idempr IS NULL and empr_modif != '{$date_auj}' and empr_categ={$categorie} and empr_codestat= {$codestat}"; if ($pmb_lecteurs_localises == "1") { $requete_empr_where .= " and empr_location={$localisation}"; } pmb_mysql_query($requete_empr_groupe_delete . $requete_empr_where, $dbh); $requete_list_empr_delete = "SELECT id_empr FROM empr LEFT JOIN pret ON pret_idempr=id_empr \n \t\tWHERE pret_idempr IS NULL and empr_modif != '{$date_auj}' and empr_categ={$categorie} and empr_codestat= {$codestat} {$requete_empr_where} "; $list_empr_delete = pmb_mysql_query($requete_list_empr_delete, $dbh); while ($empr_delete = pmb_mysql_fetch_array($list_empr_delete)) { emprunteur::del_empr($empr_delete["id_empr"]); } } //Affichage des insert et update print "<br />"; if ($cpt_delete) { print $cpt_delete . " lecteurs supprimés. <br />"; } if ($cpt_insert) { print $cpt_insert . " lecteurs créés. <br />"; } if ($cpt_maj) { print $cpt_maj . " lecteurs modifiés. <br />"; } fclose($fichier); } }
function import_eleves($separateur, $dbh, $type_import, $commune) { global $code_categorie; global $code_statistique; $code_categorie = 12; $code_statistique = 3; $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 :<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é à 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, $dbh); 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); } //$delete_empr_groupe = pmb_mysql_query("DELETE FROM empr_groupe",$dbh); //Supprime les élèves qui n'ont pas de prêts en cours et qui sont localisé à 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, $dbh); 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 = 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 $select = pmb_mysql_query("SELECT id_empr FROM empr WHERE empr_cb = '" . $tab[0] . "'", $dbh); $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; } $login = cre_login($tab[1], $tab[2], $dbh); switch ($nb_enreg) { case 0: //Ce élève n'est pas enregistré $req_insert = "INSERT INTO empr(empr_cb, empr_nom, empr_prenom, empr_adr1, empr_adr2, empr_cp, empr_ville, "; $req_insert .= "empr_tel1, empr_year, empr_categ, empr_codestat, empr_creation, empr_sexe, "; $req_insert .= "empr_login, empr_password, empr_date_adhesion, empr_date_expiration, empr_location) "; $req_insert .= "VALUES ('{$tab['0']}','{$tab['1']}','{$tab['2']}','{$tab['3']}', '{$tab['4']}', '{$tab['5']}', "; //Vérifier dans la table empr_categ si id_categ_empr 1 = élèves //Vérifier dans la table empr_codestat si idcode 2 = école Sinon, changer les valeurs $req_insert .= "'{$tab['6']}', '{$tab['7']}', '{$tab['8']}', {$code_categorie} , '3', '{$date_auj}', '{$sexe}', "; $req_insert .= "'{$login}', '{$tab['8']}', '{$date_auj}', '{$date_an_proch}' , '{$commune}' )"; $insert = pmb_mysql_query($req_insert, $dbh); if (!$insert) { 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 { emprunteur::update_digest($login, $tab[8]); emprunteur::hash_password($login, $tab[8]); $cpt_insert++; } gestion_groupe($tab[9], $tab[0], $dbh); $j++; break; case 1: //Ce élève est déjà enregistré $req_update = "UPDATE empr SET empr_nom = '{$tab['1']}', empr_prenom = '{$tab['2']}', empr_adr1 = '{$tab['3']}', "; $req_update .= "empr_adr2 = '{$tab['4']}', empr_cp = '{$tab['5']}', empr_ville = '{$tab['6']}', "; //Vérifier dans la table empr_categ si id_categ_empr 1 = élèves Vérifier dans la table empr_codestat si idcode 2 = école Sinon, changer les valeurs $req_update .= "empr_tel1 = '{$tab['7']}', empr_year = '{$tab['8']}', empr_categ = '{$code_categorie} ', empr_codestat = '3', empr_modif = '{$date_auj}', empr_sexe = '{$sexe}', "; $req_update .= "empr_login = '******', empr_password= '******'8']}', "; $req_update .= "empr_date_adhesion = '{$date_auj}', empr_date_expiration = '{$date_an_proch}', empr_location = '{$commune}'"; $req_update .= "WHERE empr_cb = '{$tab['0']}'"; $update = pmb_mysql_query($req_update, $dbh); if (!$update) { print "<b>Echec de la modification de l'élève suivant (Erreur : " . pmb_mysql_error() . ") : </b><br />"; print $path; print '$code_categorie'; print "3"; print "{$location}"; print "{$user}"; for ($i = 0; $i < 3; $i++) { print $eleve_abrege[$i] . " : " . $tab[$i] . ", "; } print "<br />"; } else { emprunteur::update_digest($login, $tab[8]); emprunteur::hash_password($login, $tab[8]); $cpt_maj++; } gestion_groupe($tab[9], $tab[0], $dbh); $j++; break; case 2: break; default: print $path; 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); } }