示例#1
0
文件: sort.class.php 项目: hogsim/PMB
 /**
  * Parse les fichiers XML de parametres
  * il y a un fichier par type de tris
  */
 function parse()
 {
     global $include_path;
     global ${$params_name};
     global $charset;
     global $dbh;
     $params_name = $this->dSort->sortName . "_params";
     $params = ${$params_name};
     if ($params) {
         $this->params = $params;
     } else {
         $nomfichier = $include_path . "/sort/" . $this->dSort->sortName . "/sort.xml";
         if (file_exists($include_path . "/sort/" . $this->dSort->sortName . "/sort_subst.xml")) {
             $nomfichier = $include_path . "/sort/" . $this->dSort->sortName . "/sort_subst.xml";
             $fp = fopen($nomfichier, "r");
         } else {
             if (file_exists($nomfichier)) {
                 $fp = fopen($nomfichier, "r");
             }
         }
         if ($fp) {
             //un fichier est ouvert donc on le lit
             $xml = fread($fp, filesize($nomfichier));
             //on le ferme
             fclose($fp);
             //on le parse pour le transformer en tableau
             $params = _parser_text_no_function_($xml, "SORT");
             //on le stocke dans la classe
             $this->params = $params;
         } else {
             $this->error = true;
             $this->error_message = "Can't open definition file";
         }
     }
     //tri perso
     $p_perso = new parametres_perso("notices");
     foreach ($p_perso->t_fields as $key => $t_field) {
         if ($t_field['OPAC_SHOW'] && $t_field['OPAC_SORT']) {
             $param = _parser_text_no_function_("<?xml version='1.0' encoding='" . $charset . "'?>\n" . $t_field['OPTIONS'], "OPTIONS");
             switch ($t_field['TYPE']) {
                 case "comment":
                 case "text":
                     if ($param['REPETABLE'][0]['value']) {
                         $tablefield = "group_concat(" . $p_perso->prefix . "_custom_" . $t_field['DATATYPE'] . " separator ' ')";
                         $groupby = "group by notice_id";
                     } else {
                         $tablefield = $p_perso->prefix . "_custom_" . $t_field['DATATYPE'];
                         $groupby = "";
                     }
                     $p_tri = array('SOURCE' => "cp", 'TYPEFIELD' => "select", 'ID' => "cp" . $key, 'TYPE' => "text", 'NAME' => $t_field['NAME'], 'LABEL' => $t_field['TITRE'], 'TABLEFIELD' => array('value' => $tablefield), 'REQ_SUITE' => "left join " . $p_perso->prefix . "_custom_values on notices.notice_id = " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_origine where " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_champ = '" . $key . "' " . $groupby);
                     break;
                 case "list":
                     if ($param['MULTIPLE'][0]['value']) {
                         $tablefield = "group_concat(" . $p_perso->prefix . "_custom_list_lib separator ' ')";
                         $groupby = "group by notice_id";
                     } else {
                         $tablefield = $p_perso->prefix . "_custom_list_lib";
                         $groupby = "";
                     }
                     $p_tri = array('SOURCE' => "cp", 'TYPEFIELD' => "select", 'ID' => "cp" . $key, 'TYPE' => "text", 'NAME' => $t_field['NAME'], 'LABEL' => $t_field['TITRE'], 'TABLEFIELD' => array('value' => $tablefield), 'REQ_SUITE' => "left join " . $p_perso->prefix . "_custom_values on notices.notice_id = " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_origine \nleft join " . $p_perso->prefix . "_custom_lists on " . $p_perso->prefix . "_custom_" . $t_field['DATATYPE'] . " = " . $p_perso->prefix . "_custom_list_value \nwhere " . $p_perso->prefix . "_custom_lists." . $p_perso->prefix . "_custom_champ ='" . $key . "' and " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_champ ='" . $key . "'  " . $groupby);
                     break;
                 case "date_box":
                     $p_tri = array('SOURCE' => "cp", 'TYPEFIELD' => "select", 'ID' => "cp" . $key, 'TYPE' => "text", 'NAME' => $t_field['NAME'], 'LABEL' => $t_field['TITRE'], 'TABLEFIELD' => array('value' => $p_perso->prefix . "_custom_" . $t_field['DATATYPE']), 'REQ_SUITE' => "left join " . $p_perso->prefix . "_custom_values on notices.notice_id = " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_origine where " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_champ = '" . $key . "'");
                     break;
                 case "query_list":
                     $tableid = "";
                     $tablefield = "";
                     $tablename = "";
                     if ($param['MULTIPLE'][0]['value']) {
                         if ($param['QUERY'][0]['value']) {
                             $res = pmb_mysql_query($param['QUERY'][0]['value'], $dbh);
                             if ($res) {
                                 $tableid = pmb_mysql_field_name($res, 0);
                                 $tablefield = "group_concat(" . pmb_mysql_field_name($res, 1) . " separator ' ')";
                                 $tablename = pmb_mysql_field_table($res, 0);
                             }
                         }
                         $groupby = "group by notice_id";
                     } else {
                         if ($param['QUERY'][0]['value']) {
                             $res = pmb_mysql_query($param['QUERY'][0]['value'], $dbh);
                             if ($res) {
                                 $tableid = pmb_mysql_field_name($res, 0);
                                 $tablefield = pmb_mysql_field_name($res, 1);
                                 $tablename = pmb_mysql_field_table($res, 0);
                             }
                         }
                         $groupby = "";
                     }
                     $p_tri = array('SOURCE' => "cp", 'TYPEFIELD' => "select", 'ID' => "cp" . $key, 'TYPE' => "text", 'NAME' => $t_field['NAME'], 'LABEL' => $t_field['TITRE'], 'TABLEFIELD' => array('value' => $tablefield), 'REQ_SUITE' => "left join " . $p_perso->prefix . "_custom_values on notices.notice_id = " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_origine\nleft join " . $tablename . " on " . $p_perso->prefix . "_custom_" . $t_field['DATATYPE'] . " = " . $tableid . "\t\t\t\t\t\t \nwhere " . $p_perso->prefix . "_custom_values." . $p_perso->prefix . "_custom_champ ='" . $key . "' " . $groupby);
                     break;
                 default:
                     $p_tri = array();
                     break;
             }
             if ($p_tri) {
                 $this->params['FIELD'][] = $p_tri;
             }
         }
     }
 }
示例#2
0
function show_results_stats($id_proc = 0)
{
    global $msg, $dbh, $form_type, $categ, $numero_page, $limite_page, $sub, $charset;
    global $dest, $pmb_set_time_limit, $force_exec, $erreur_explain_rqt, $nombre_lignes_total;
    @set_time_limit($pmb_set_time_limit);
    //Récupération des variables postées, on en aura besoin pour les liens
    $page = "./edit.php";
    $requete = "SELECT idproc, name, requete, comment, num_vue FROM statopac_request where idproc='" . $id_proc . "' ";
    $res = pmb_mysql_query($requete, $dbh);
    $row = pmb_mysql_fetch_row($res);
    //Requete et calcul du nombre de pages à afficher selon la taille de la base 'pret'
    //********************************************************************************/
    // récupérer ici la procédure à lancer
    $sql = $row[2];
    $sql = str_replace("VUE()", "statopac_vue_{$row['4']}", $sql);
    if (preg_match_all("|!!(.*)!!|U", $sql, $query_parameters) && $form_type == "") {
        $hp = new parameters($id_proc, "statopac_request");
        $hp->gen_form("edit.php?categ=stat_opac&sub=&action=execute&id_proc=" . $id_proc . "&force_exec=" . $force_exec);
    } else {
        $param_hidden = "";
        if ($force_exec) {
            $param_hidden .= "<input type='hidden' name='force_exec'  value='" . $force_exec . "' />";
            //On a forcé la requete
        }
        if (preg_match_all("|!!(.*)!!|U", $sql, $query_parameters)) {
            $hp = new parameters($id_proc, "statopac_request");
            $hp->get_final_query();
            $sql = $hp->final_query;
            $param_hidden .= $hp->get_hidden_values();
            //Je mets les paramêtres en champ caché en cas de forçage
            $param_hidden .= "<input type='hidden' name='form_type'  value='gen_form' />";
            //Je mets le marqueur des paramêtres en champ caché en cas de forçage
        }
        $sql = str_replace("VUE()", "statopac_vue_{$row['4']}", $sql);
        if ($dest != "TABLEAU" && $dest != "TABLEAUHTML" && $dest != "TABLEAUCSV") {
            print "<form class=\"form-edit\" id=\"formulaire\" name=\"formulaire\" action='./edit.php?categ=stat_opac&sub=&action=execute&id_proc=" . $id_proc . "&force_exec=" . $force_exec . "' method=\"post\">";
            print "<input type='button' class='bouton' value='" . htmlentities($msg[654], ENT_QUOTES, $charset) . "'  onClick='this.form.action=\"./edit.php?categ=stat_opac\";this.form.submit();' />";
            if (!explain_requete($sql) && SESSrights & EDIT_FORCING_AUTH && !$force_exec) {
                print $param_hidden;
                print "<input type='button' id='procs_button_exec' class='bouton' value='" . htmlentities($msg["procs_force_exec"], ENT_QUOTES, $charset) . "' onClick='this.form.action=\"./edit.php?categ=stat_opac&sub=&action=execute&id_proc=" . $id_proc . "&force_exec=1\";this.form.submit();' />";
            } else {
                print "<input type='submit' id='procs_button_exec' class='bouton' value='" . htmlentities($msg[708], ENT_QUOTES, $charset) . "'/>";
            }
            print "<br />";
            print "</form>";
            // la procédure n'a pas de parm ou les paramètres ont été reçus
            if (!explain_requete($sql) && !(SESSrights & EDIT_FORCING_AUTH && $force_exec)) {
                die("<br /><br />" . $sql . "<br /><br />" . htmlentities($msg["proc_param_explain_failed"], ENT_QUOTES, $charset) . "<br /><br />" . $erreur_explain_rqt);
            }
        }
        $req_nombre_lignes = "";
        if (!$nombre_lignes_total) {
            $req_nombre_lignes = pmb_mysql_query($sql);
            if (!$req_nombre_lignes) {
                die($sql . "<br /><br />" . pmb_mysql_error());
            }
            $nombre_lignes_total = pmb_mysql_num_rows($req_nombre_lignes);
        }
        $param_hidden .= "<input type='hidden' name='nombre_lignes_total'  value='" . $nombre_lignes_total . "' />";
        //Je garde le nombre de ligne total pour le pas refaire la requête à la page suivante
        //Si aucune limite_page n'a été passée, valeur par défaut : 10
        if (!$limite_page) {
            $limite_page = 10;
        }
        $nbpages = $nombre_lignes_total / $limite_page;
        // on arondi le nombre de page pour ne pas avoir de virgules, ici au chiffre supérieur
        $nbpages_arrondi = ceil($nbpages);
        // on enlève 1 au nombre de pages, car la 1ere page affichée ne fait pas partie des pages suivantes
        $nbpages_arrondi = $nbpages_arrondi - 1;
        if (!$numero_page) {
            $numero_page = 0;
        }
        $limite_mysql = $limite_page * $numero_page;
        //REINITIALISATION DE LA REQUETE SQL
        switch ($dest) {
            case "TABLEAU":
            case "TABLEAUHTML":
            case "TABLEAUCSV":
                if (!$req_nombre_lignes) {
                    $res = @pmb_mysql_query($sql, $dbh) or die($sql . "<br /><br />" . pmb_mysql_error());
                } else {
                    $res = $req_nombre_lignes;
                }
                break;
            default:
                echo "<h1>" . htmlentities($msg["opac_admin_menu"], ENT_QUOTES, $charset) . "&nbsp;:&nbsp;" . htmlentities($msg["stat_opac_menu"], ENT_QUOTES, $charset) . "</h1>";
                echo "<h1>" . htmlentities($row[1], ENT_QUOTES, $charset) . "</h1><h2>" . htmlentities($row[3], ENT_QUOTES, $charset) . "</h2>";
                $sql = $sql . " LIMIT " . $limite_mysql . ", " . $limite_page;
                // on execute la requete avec les bonnes limites
                $res = @pmb_mysql_query($sql, $dbh) or die($sql . "<br /><br />" . pmb_mysql_error());
                echo "<p>";
                break;
        }
        $nbr_lignes = @pmb_mysql_num_rows($res);
        $nbr_champs = @pmb_mysql_num_fields($res);
        if ($nbr_lignes) {
            switch ($dest) {
                case "TABLEAU":
                    $fichier_temp_nom = tempnam(sys_get_temp_dir(), $fichier_temp_nom);
                    $workbook = new writeexcel_workbook($fichier_temp_nom);
                    $worksheet =& $workbook->addworksheet();
                    $worksheet->write(0, 0, $row[1]);
                    $worksheet->write(0, 1, $row[3]);
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        // entête de colonnes
                        $fieldname = pmb_mysql_field_name($res, $i);
                        $worksheet->write(2, $i, ${fieldname});
                    }
                    for ($i = 0; $i < $nbr_lignes; $i++) {
                        $row = pmb_mysql_fetch_row($res);
                        $j = 0;
                        foreach ($row as $dummykey => $col) {
                            if (is_numeric($col) && preg_match("/^0/", $col)) {
                                $col = "'" . $col;
                            }
                            if (trim($col) == '') {
                                $col = " ";
                            }
                            $worksheet->write($i + 3, $j, $col);
                            $j++;
                        }
                    }
                    $workbook->close();
                    $fh = fopen($fichier_temp_nom, "rb");
                    fpassthru($fh);
                    unlink($fichier_temp_nom);
                    break;
                case "TABLEAUHTML":
                    echo "<h1>{$row['1']}</h1><h2>{$row['3']}</h2>{$sql}<br/>";
                    echo "<table>";
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    for ($i = 0; $i < $nbr_lignes; $i++) {
                        $row = pmb_mysql_fetch_row($res);
                        echo "<tr>";
                        foreach ($row as $dummykey => $col) {
                            /*if (is_numeric($col)){
                            			$col = "'".$col ;
                            		}*/
                            if (trim($col) == '') {
                                $col = "&nbsp;";
                            }
                            print '<td>' . $col . '</td>';
                        }
                        echo "</tr>";
                    }
                    echo "</table>";
                    break;
                case "TABLEAUCSV":
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "{$fieldname}\t";
                    }
                    for ($i = 0; $i < $nbr_lignes; $i++) {
                        $row = pmb_mysql_fetch_row($res);
                        echo "\n";
                        foreach ($row as $dummykey => $col) {
                            /* if (is_numeric($col)) {
                            				$col = "\"'".(string)$col."\"" ;
                            			} */
                            print "{$col}\t";
                        }
                    }
                    break;
                default:
                    echo "<table>";
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    $odd_even = 0;
                    for ($i = 0; $i < $nbr_lignes; $i++) {
                        $row = pmb_mysql_fetch_row($res);
                        if ($odd_even == 0) {
                            echo "\t<tr class='odd'>";
                            $odd_even = 1;
                        } elseif ($odd_even == 1) {
                            echo "\t<tr class='even'>";
                            $odd_even = 0;
                        }
                        foreach ($row as $dummykey => $col) {
                            if (trim($col) == '') {
                                $col = "&nbsp;";
                            }
                            print '<td>' . $col . '</td>';
                        }
                        echo "</tr>";
                    }
                    echo "</table><hr>";
                    echo "<p align=left size='-3' class='pn-normal'>\n\t\t\t\t\t<form name='navbar' class='form-edit' action='{$page}' method='post'>";
                    echo "\n\t\t\t\t\t<input type='hidden' name='numero_page'  value='{$numero_page}' />\n\t\t\t\t\t<input type='hidden' name='id_proc'  value='{$id_proc}' />\n\t\t\t\t\t<input type='hidden' name='categ'  value='{$categ}' />\n\t\t\t\t\t<input type='hidden' name='sub' value='{$sub}' />";
                    print $param_hidden;
                    // LIENS PAGE SUIVANTE et PAGE PRECEDENTE
                    // si le nombre de page n'est pas 0 et si la variable numero_page n'est pas définie
                    // dans cette condition, la variable numero_page est incrémenté et est inférieure à $nombre
                    // constitution des liens
                    $suivante = $numero_page + 1;
                    $precedente = $numero_page - 1;
                    // affichage du lien précédent si nécéssaire
                    if ($precedente >= 0) {
                        $nav_bar .= "<img src='./images/left.gif' border='0' title='{$msg['48']}' alt='[{$msg['48']}]' hspace='3' align='bottom' onClick=\"document.navbar.dest.value='';document.navbar.numero_page.value='{$precedente}'; document.navbar.limite_page.value='{$limite_page}'; document.navbar.submit(); \"/>";
                    }
                    for ($i = 0; $i <= $nbpages_arrondi; $i++) {
                        if ($i == $numero_page) {
                            $nav_bar .= "<strong>" . ($i + 1) . "/" . ($nbpages_arrondi + 1) . "</strong>";
                        }
                    }
                    if ($suivante <= $nbpages_arrondi) {
                        $nav_bar .= "<img src='./images/right.gif' border='0' title='{$msg['49']}' alt='[{$msg['49']}]' hspace='3' align='bottom' onClick=\"document.navbar.dest.value='';document.navbar.numero_page.value='{$suivante}'; document.navbar.limite_page.value='{$limite_page}'; document.navbar.submit(); \" />";
                    }
                    echo $nav_bar;
                    echo "\n\t\t\t\t\t<input type='hidden' name='dest' value='' />\n\t\t\t\t\t{$msg['edit_cbgen_mep_afficher']} <input type='text' name='limite_page' value='{$limite_page}' class='saisie-5em' /> {$msg['1905']}\n\t\t\t\t\t<input type='submit' class='bouton' value='" . $msg['actualiser'] . "' onclick=\"this.form.dest.value='';document.navbar.numero_page.value=0;\" /><font size='4'>&nbsp;&nbsp;&nbsp;&nbsp;</font>\n\t\t\t\t\t<input type='image' src='./images/tableur.gif' border='0' onClick=\"this.form.dest.value='TABLEAU';\" alt='Export tableau EXCEL' title='Export tableau EXCEL' /><font size='4'>&nbsp;&nbsp;&nbsp;&nbsp;</font>\n\t\t\t\t\t<input type='image' src='./images/tableur_html.gif' border='0' onClick=\"this.form.dest.value='TABLEAUHTML';\" alt='Export tableau HTML' title='Export tableau HTML' />\n\t\t\t\t\t</form></p>";
                    break;
            }
        } else {
            echo $msg["etatperso_aucuneligne"];
        }
        pmb_mysql_free_result($res);
    }
}
         $tmpString = str_replace("!!group_expl_checkbox!!", '', $tmpString);
     }
 }
 foreach ($values_array as $values) {
     if ($nb % 2) {
         $tmpLigne = str_replace("!!class_ligne!!", "odd", $transferts_popup_ligne_tableau);
     } else {
         $tmpLigne = str_replace("!!class_ligne!!", "even", $transferts_popup_ligne_tableau);
     }
     //on parcourt toutes les colonnes de la requete
     for ($i = 0; $i < $nbCols; $i++) {
         //on remplace les données à afficher
         $tmpLigne = str_replace("!!" . pmb_mysql_field_name($res, $i) . "!!", $values[$i], $tmpLigne);
         if ($nb == 0 && $transferts_ghost_expl_enable) {
             $tmpStringGhost = str_replace("!!" . pmb_mysql_field_name($res, $i) . "!!", $values[$i], $tmpStringGhost);
             switch (pmb_mysql_field_name($res, $i)) {
                 case 'expl_id':
                     $tmpStringGhost = str_replace("!!expl_status!!", do_selector('docs_statut', "expl_virtual_status", $transferts_ghost_statut_expl_transferts), $tmpStringGhost);
                     $tmpStringGhost = str_replace("!!expl_parent_id!!", $values[$i], $tmpStringGhost);
                     break;
                 case 'expl_cb':
                     $tmpStringGhost = str_replace("!!cb_ghost_from!!", $values[$i], $tmpStringGhost);
                     break;
                 case 'expl_notice':
                     $tmpStringGhost = str_replace("!!parent_type!!", 'notice', $tmpStringGhost);
                     $tmpStringGhost = str_replace("!!parent_num!!", $values[$i], $tmpStringGhost);
                     break;
                 case 'expl_bulletin':
                     $tmpStringGhost = str_replace("!!parent_type!!", 'bulletin', $tmpStringGhost);
                     $tmpStringGhost = str_replace("!!parent_num!!", $values[$i], $tmpStringGhost);
                     break;
示例#4
0
    if ($empr_location_id != 0) {
        $sql .= "empr_location='{$empr_location_id}' AND ";
    }
    if ($docs_location_id != 0) {
        $sql .= "expl_location='{$docs_location_id}' AND ";
    }
}
$sql .= "expl_typdoc = idtyp_doc and pret_idexpl = expl_id  and empr.id_empr = pret.pret_idempr ";
$sql .= $critere_requete;
if ($nombre_lignes_pret > 0) {
    switch ($dest) {
        case "TABLEAU":
            $res = @pmb_mysql_query($sql, $dbh);
            $nbr_champs = @pmb_mysql_num_fields($res);
            for ($n = 0; $n < $nbr_champs; $n++) {
                $worksheet->write(2, $n, pmb_mysql_field_name($res, $n));
            }
            for ($i = 0; $i < $nombre_lignes_pret; $i++) {
                $row = pmb_mysql_fetch_row($res);
                $j = 0;
                foreach ($row as $dummykey => $col) {
                    if (!$col) {
                        $col = " ";
                    }
                    $worksheet->write($i + 3, $j, $col);
                    $j++;
                }
            }
            $workbook->close();
            $fh = fopen($fname, "rb");
            fpassthru($fh);
示例#5
0
文件: mysql.inc.php 项目: hogsim/PMB
 $num_tables = @pmb_mysql_num_rows($tables);
 $i = 0;
 while ($i < $num_tables) {
     $table[$i] = pmb_mysql_tablename($tables, $i);
     $i++;
 }
 echo "<table >";
 while (list($cle, $valeur) = each($table)) {
     $requete = $action . " TABLE " . $valeur . " ";
     $res = @pmb_mysql_query($requete, $dbh);
     $nbr_lignes = @pmb_mysql_num_rows($res);
     $nbr_champs = @pmb_mysql_num_fields($res);
     if ($nbr_lignes) {
         if (!$cle) {
             for ($i = 0; $i < $nbr_champs; $i++) {
                 printf("<th>%s</th>", pmb_mysql_field_name($res, $i));
             }
         }
         for ($i = 0; $i < $nbr_lignes; $i++) {
             $row = pmb_mysql_fetch_row($res);
             echo "<tr>";
             foreach ($row as $dummykey => $col) {
                 if (!$col) {
                     $col = "&nbsp;";
                 }
                 print "<td>{$col}</td>";
             }
             echo "</tr>";
         }
     }
 }
示例#6
0
function startSession($SESSNAME, $login, $database = LOCATION)
{
    global $dbh;
    // le lien MySQL
    global $stylesheet;
    /* pour qu'à l'ouverture de la session le user récupère de suite son style */
    global $PMBuserid, $PMBusername, $PMBgrp_num;
    global $checkuser_type_erreur;
    global $PMBusernom;
    global $PMBuserprenom;
    global $PMBuseremail;
    global $PMBdatabase;
    if (!$PMBdatabase) {
        $PMBdatabase = $database;
    }
    // nettoyage des sessions 'oubliées'
    cleanTable($SESSNAME);
    // génération d'un identificateur unique
    // initialisation du générateur de nombres aléatoires
    mt_srand((double) microtime() * 1000000);
    // nombre aléatoire entre 1111111111 et 9999999999
    $SESSID = mt_rand(1111111111, 9999999999);
    // début session (date UNIX)
    $SESSstart = time();
    // adresse IP du client
    $IP = $_SERVER['REMOTE_ADDR'];
    $query = "SELECT rights, user_lang FROM users WHERE username='******'";
    $result = pmb_mysql_query($query, $dbh);
    $ff = pmb_mysql_fetch_object($result);
    $flag = $ff->rights;
    // inscription de la session dans la table
    $query = "INSERT INTO sessions (SESSID, login, IP, SESSstart, LastOn, SESSNAME) VALUES(";
    $query .= "'{$SESSID}'";
    $query .= ", '{$login}'";
    $query .= ", '{$IP}'";
    $query .= ", '{$SESSstart}'";
    $query .= ", '{$SESSstart}'";
    $query .= ", '{$SESSNAME}' )";
    $result = pmb_mysql_query($query, $dbh);
    if (!$result) {
        $checkuser_type_erreur = CHECK_USER_PB_OUVERTURE_SESSION;
        return CHECK_USER_PB_OUVERTURE_SESSION;
    }
    // cookie pour le login de l'utilisateur
    setcookie($SESSNAME . "-LOGIN", $login, 0);
    // cookie pour le nom de la session
    setcookie($SESSNAME . "-SESSNAME", $SESSNAME, 0);
    // cookie pour l'ID de session
    setcookie($SESSNAME . "-SESSID", $SESSID, 0);
    // cookie pour la base de donnée
    setcookie($SESSNAME . "-DATABASE", $PMBdatabase, 0);
    // mise à disposition des variables de la session
    define('SESSlogin', $login);
    define('SESSname', $SESSNAME);
    define('SESSid', $SESSID);
    define('SESSstart', $SESSstart);
    define('SESSlang', $ff->user_lang);
    define('SESSrights', $flag);
    /* param par défaut */
    $requete_param = "SELECT * FROM users WHERE username='******' LIMIT 1 ";
    $res_param = pmb_mysql_query($requete_param, $dbh);
    $field_values = pmb_mysql_fetch_row($res_param);
    $i = 0;
    while ($i < pmb_mysql_num_fields($res_param)) {
        $field = pmb_mysql_field_name($res_param, $i);
        $field_deb = substr($field, 0, 6);
        switch ($field_deb) {
            case "deflt_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "deflt2":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "param_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "value_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "xmlta_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "deflt3":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            default:
                break;
        }
        $i++;
    }
    $requete_nom = "SELECT nom, prenom, user_email, userid, username, grp_num FROM users WHERE username='******' ";
    $res_nom = pmb_mysql_query($requete_nom, $dbh);
    $param_nom = pmb_mysql_fetch_object($res_nom);
    $PMBusernom = $param_nom->nom;
    $PMBuserprenom = $param_nom->prenom;
    $PMBgrp_num = $param_nom->grp_num;
    $PMBuseremail = $param_nom->user_email;
    // pour que l'id user soit dispo partout
    define('SESSuserid', $param_nom->userid);
    $PMBuserid = $param_nom->userid;
    $PMBusername = $param_nom->username;
    /* on va chercher la feuille de style du user */
    $stylesheet = $deflt_styles;
    //Ouverture de la session php
    header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: post-check=0, pre-check=0", false);
    session_cache_limiter('must-revalidate');
    session_name("pmb" . SESSid);
    session_start();
    //Récupération  de l'historique
    $query = "select session from admin_session where userid=" . $PMBuserid;
    $resultat = pmb_mysql_query($query);
    if ($resultat) {
        if (pmb_mysql_num_rows($resultat)) {
            $_SESSION["session_history"] = @unserialize(@pmb_mysql_result($resultat, 0, 0));
        }
    }
    return CHECK_USER_SESSION_OK;
}
function extrait_info_notice($sql = "", $entete = 1, $flag = "")
{
    global $dbh;
    global $dest;
    global $worksheet;
    global $myCart;
    global $entete_bloc;
    global $msg;
    global $debligne_excel;
    global $etat_table;
    // permet de savoir si les tag table sont ouverts ou fermés
    global $max_aut;
    // le nombre max de colonnes d'auteurs
    global $thesaurus_mode_pmb;
    global $thesaurus_defaut;
    global $lang;
    global $pmb_keyword_sep;
    global $max_perso;
    global $res_compte3;
    if (!$debligne_excel) {
        $debligne_excel = 0;
    }
    $res = @pmb_mysql_query($sql, $dbh);
    $nbr_lignes = @pmb_mysql_num_rows($res);
    $nbr_champs = @pmb_mysql_num_fields($res);
    if ($nbr_lignes) {
        // Pour les champs personnalisés
        $caddie_type = $myCart->type;
        switch ($caddie_type) {
            case 'EXPL':
                $libelle_caddie_type = "expl";
                break;
            case 'NOTI':
            default:
                $libelle_caddie_type = "notices";
                break;
        }
        switch ($dest) {
            case "TABLEAU":
                if ($entete) {
                    $worksheet->write_string(1 + $debligne_excel, 0, $msg["caddie_mess_edition_" . $entete_bloc]);
                    $debligne_excel++;
                    $worksheet->write_string(1 + $debligne_excel, 0, $msg['caddie_action_marque']);
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        // entête de colonnes
                        $fieldname = pmb_mysql_field_name($res, $i);
                        $worksheet->write_string(1 + $debligne_excel, $i + 1, $fieldname);
                    }
                    for ($i = 0; $i < $max_aut; $i++) {
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 1 + $nbr_champs, "aut_entree_{$i}");
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 2 + $nbr_champs, "aut_rejete_{$i}");
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 3 + $nbr_champs, "aut_dates_{$i}");
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 4 + $nbr_champs, "aut_fonction_{$i}");
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 5 + $nbr_champs, "aut_type_{$i}");
                        $worksheet->write_string(1 + $debligne_excel, $i * 6 + 6 + $nbr_champs, "aut_resp_type_{$i}");
                    }
                    $worksheet->write_string(1 + $debligne_excel, $max_aut * 6 + $nbr_champs + 1, "DESCR");
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte3);
                        $worksheet->write_string(1 + $debligne_excel, $max_aut * 6 + $nbr_champs + 2 + $i, $perso->titre);
                    }
                    $debligne_excel++;
                }
                //Fonctions d'auteurs
                $codes_auteurs = get_functions_authors();
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $debligne_excel++;
                    $row = pmb_mysql_fetch_row($res);
                    switch ($caddie_type) {
                        case 'EXPL':
                            $id_notice = $row[2];
                            break;
                        case 'NOTI':
                        default:
                            $id_notice = $row[0];
                            break;
                    }
                    if ($flag) {
                        $worksheet->write_string($debligne_excel, 0, "X");
                    }
                    $j = 0;
                    foreach ($row as $dummykey => $col) {
                        if (!$col) {
                            $col = " ";
                        }
                        $worksheet->write_string($debligne_excel, $j + 1, $col);
                        $j++;
                    }
                    $rqt_aut = "SELECT author_name, author_rejete, author_date, responsability_fonction, author_type, responsability_type ";
                    $rqt_aut .= "FROM responsability JOIN authors ON responsability_author=author_id ";
                    $rqt_aut .= "WHERE responsability_notice={$id_notice} ";
                    $rqt_aut .= "ORDER BY responsability_type ASC, responsability_ordre ASC";
                    $res_aut = @pmb_mysql_query($rqt_aut);
                    for ($iaut = 0; $iaut < $max_aut; $iaut++) {
                        $aut = @pmb_mysql_fetch_row($res_aut);
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 1 + $nbr_champs, $aut[0]);
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 2 + $nbr_champs, $aut[1]);
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 3 + $nbr_champs, $aut[2]);
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 4 + $nbr_champs, $codes_auteurs[$aut[3]]);
                        if ($aut[4] == "70") {
                            $lib_type_aut = $msg[203];
                        } else {
                            if ($aut[4] == "71") {
                                $lib_type_aut = $msg[204];
                            } else {
                                if ($aut[4] == "72") {
                                    $lib_type_aut = $msg["congres_libelle"];
                                } else {
                                    $lib_type_aut = $aut[4];
                                }
                            }
                        }
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 5 + $nbr_champs, $lib_type_aut);
                        $lib_resp_type = "";
                        if ($aut[0]) {
                            if ($aut[5] == 0) {
                                $lib_resp_type = $msg["export_main_author"];
                            } else {
                                if ($aut[5] == 1) {
                                    $lib_resp_type = $msg["export_other_author"];
                                } else {
                                    if ($aut[5] == 2) {
                                        $lib_resp_type = $msg["export_secondary_author"];
                                    }
                                }
                            }
                        }
                        $worksheet->write_string($debligne_excel, $iaut * 6 + 6 + $nbr_champs, $lib_resp_type);
                    }
                    $q = "drop table if exists catlg ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "CREATE TEMPORARY TABLE catlg ENGINE=MyISAM as ";
                    $q .= "SELECT categories.num_noeud, categories.libelle_categorie ";
                    $q .= "FROM noeuds, categories, notices_categories ";
                    $q .= "WHERE notices_categories.notcateg_notice = '" . $id_notice . "' ";
                    $q .= "AND categories.langue = '" . $lang . "' ";
                    $q .= "AND categories.num_noeud = notices_categories.num_noeud ";
                    $q .= "AND categories.num_noeud = noeuds.id_noeud ";
                    $q .= "ORDER BY ordre_categorie";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "DROP TABLE IF EXISTS catdef ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "CREATE TEMPORARY TABLE catdef ( ";
                    $q .= "num_noeud int(9) unsigned not null default '0', ";
                    $q .= "num_thesaurus int(3) unsigned not null default '0', ";
                    $q .= "libelle_categorie text not null ) ENGINE=MyISAM ";
                    $r = pmb_mysql_query($q, $dbh);
                    $thes_list = thesaurus::getThesaurusList();
                    $q = '';
                    foreach ($thes_list as $id_thesaurus => $libelle_thesaurus) {
                        $thes = new thesaurus($id_thesaurus);
                        $q = "INSERT INTO catdef ";
                        $q .= "SELECT categories.num_noeud, noeuds.num_thesaurus, categories.libelle_categorie ";
                        $q .= "FROM noeuds, categories, notices_categories ";
                        $q .= "WHERE noeuds.num_thesaurus={$id_thesaurus} and notices_categories.notcateg_notice = '" . $id_notice . "' ";
                        $q .= "AND categories.langue = '" . $thes->langue_defaut . "' ";
                        $q .= "AND categories.num_noeud = notices_categories.num_noeud ";
                        $q .= "AND categories.num_noeud = noeuds.id_noeud ";
                        $q .= "ORDER BY ordre_categorie";
                        $r = pmb_mysql_query($q, $dbh);
                    }
                    $q = "select catdef.num_thesaurus as num_thesaurus, ";
                    $q .= "if (catlg.num_noeud is null, catdef.libelle_categorie, catlg.libelle_categorie) as libelle_categorie ";
                    $q .= "from catdef left join catlg on catdef.num_noeud = catlg.num_noeud ";
                    if (!$thesaurus_mode_pmb) {
                        $q .= "where catdef.num_thesaurus = '" . $thesaurus_defaut . "' ";
                    }
                    $res_desc = pmb_mysql_query($q, $dbh);
                    $lib_desc = "";
                    while ($desc = pmb_mysql_fetch_object($res_desc)) {
                        $lib_desc .= $lib_desc ? $pmb_keyword_sep : "";
                        if ($thesaurus_mode_pmb) {
                            $lib_desc .= '[' . thesaurus::getLibelle($desc->num_thesaurus) . '] ';
                        }
                        $lib_desc .= $desc->libelle_categorie;
                    }
                    $worksheet->write_string($debligne_excel, $max_aut * 6 + $nbr_champs + 1, "{$lib_desc}");
                    $p_perso = new parametres_perso($libelle_caddie_type);
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            $worksheet->write_string($debligne_excel, $max_aut * 6 + $nbr_champs + 2 + $i, html_entity_decode($p["AFF"], ENT_QUOTES | ENT_COMPAT, "iso-8859-15"));
                        }
                    }
                }
                break;
            case "TABLEAUHTML":
                if ($entete) {
                    if ($etat_table) {
                        echo "\n</table>";
                    }
                    echo "<h3>" . $msg["caddie_mess_edition_" . $entete_bloc] . "</h3>";
                    echo "\n<table><th align='left'>" . $msg['caddie_action_marque'] . "</th>";
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    for ($i = 0; $i < $max_aut; $i++) {
                        print pmb_bidi("<th align='left'>aut_entree_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_rejete_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_dates_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_fonction_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_type_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_resp_type_{$i}</th>");
                    }
                    print "<th align='left'>DESCR</th>";
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte3);
                        print "<th align='left'>" . $perso->titre . "</th>";
                    }
                    $etat_table = 1;
                }
                //Fonctions d'auteurs
                $codes_auteurs = get_functions_authors();
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $row = pmb_mysql_fetch_row($res);
                    switch ($caddie_type) {
                        case 'EXPL':
                            $id_notice = $row[2];
                            break;
                        case 'NOTI':
                        default:
                            $id_notice = $row[0];
                            break;
                    }
                    echo "<tr>";
                    if ($flag) {
                        print "<td>X</td>";
                    } else {
                        print "<td>&nbsp;</td>";
                    }
                    foreach ($row as $dummykey => $col) {
                        if (is_numeric($col)) {
                            $col = "'" . $col;
                        }
                        if (!$col) {
                            $col = "&nbsp;";
                        }
                        print pmb_bidi("<td>{$col}</td>");
                    }
                    $rqt_aut = "SELECT author_name, author_rejete, author_date, responsability_fonction, author_type, responsability_type ";
                    $rqt_aut .= "FROM responsability JOIN authors ON responsability_author=author_id ";
                    $rqt_aut .= "WHERE responsability_notice={$id_notice} ";
                    $rqt_aut .= "ORDER BY responsability_type ASC, responsability_ordre ASC";
                    $res_aut = @pmb_mysql_query($rqt_aut, $dbh);
                    for ($i = 0; $i < $max_aut; $i++) {
                        $aut = @pmb_mysql_fetch_row($res_aut);
                        print pmb_bidi("<td>{$aut['0']}</td>");
                        print pmb_bidi("<td>{$aut['1']}</td>");
                        print pmb_bidi("<td>{$aut['2']}</td>");
                        print pmb_bidi("<td>" . $codes_auteurs[$aut[3]] . "</td>");
                        if ($aut[4] == "70") {
                            $lib_type_aut = $msg[203];
                        } else {
                            if ($aut[4] == "71") {
                                $lib_type_aut = $msg[204];
                            } else {
                                if ($aut[4] == "72") {
                                    $lib_type_aut = $msg["congres_libelle"];
                                } else {
                                    $lib_type_aut = $aut[4];
                                }
                            }
                        }
                        print pmb_bidi("<td>{$lib_type_aut}</td>");
                        $lib_resp_type = "";
                        if ($aut[0]) {
                            if ($aut[5] == 0) {
                                $lib_resp_type = $msg["export_main_author"];
                            } else {
                                if ($aut[5] == 1) {
                                    $lib_resp_type = $msg["export_other_author"];
                                } else {
                                    if ($aut[5] == 2) {
                                        $lib_resp_type = $msg["export_secondary_author"];
                                    }
                                }
                            }
                        }
                        print pmb_bidi("<td>{$lib_resp_type}</td>");
                    }
                    $q = "drop table if exists catlg ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "create temporary table catlg ENGINE=MyISAM as ";
                    $q .= "select categories.num_noeud, categories.libelle_categorie ";
                    $q .= "from noeuds, categories, notices_categories ";
                    $q .= "where notices_categories.notcateg_notice = '" . $id_notice . "' ";
                    $q .= "and categories.langue = '" . $lang . "' ";
                    $q .= "and categories.num_noeud = notices_categories.num_noeud ";
                    $q .= "and categories.num_noeud = noeuds.id_noeud ";
                    $q .= "ORDER BY ordre_categorie";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "drop table if exists catdef ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "create temporary table catdef ( ";
                    $q .= "num_noeud int(9) unsigned not null default '0', ";
                    $q .= "num_thesaurus int(3) unsigned not null default '0', ";
                    $q .= "libelle_categorie text not null ";
                    $q .= ") ENGINE=MyISAM ";
                    $r = pmb_mysql_query($q, $dbh);
                    $thes_list = thesaurus::getThesaurusList();
                    $q = '';
                    foreach ($thes_list as $id_thesaurus => $libelle_thesaurus) {
                        $thes = new thesaurus($id_thesaurus);
                        $q = "insert into catdef ";
                        $q .= "select categories.num_noeud, noeuds.num_thesaurus, categories.libelle_categorie ";
                        $q .= "from noeuds, categories, notices_categories ";
                        $q .= "where noeuds.num_thesaurus={$id_thesaurus} and notices_categories.notcateg_notice = '" . $id_notice . "' ";
                        $q .= "and categories.langue = '" . $thes->langue_defaut . "' ";
                        $q .= "and categories.num_noeud = notices_categories.num_noeud ";
                        $q .= "and categories.num_noeud = noeuds.id_noeud ";
                        $q .= "ORDER BY ordre_categorie";
                        $r = pmb_mysql_query($q, $dbh);
                    }
                    $q = "select catdef.num_thesaurus as num_thesaurus, ";
                    $q .= "if (catlg.num_noeud is null, catdef.libelle_categorie, catlg.libelle_categorie) as libelle_categorie ";
                    $q .= "from catdef left join catlg on catdef.num_noeud = catlg.num_noeud ";
                    if (!$thesaurus_mode_pmb) {
                        $q .= "where catdef.num_thesaurus = '" . $thesaurus_defaut . "' ";
                    }
                    $res_desc = pmb_mysql_query($q, $dbh);
                    $lib_desc = "";
                    while ($desc = pmb_mysql_fetch_object($res_desc)) {
                        $lib_desc .= $lib_desc ? $pmb_keyword_sep : "";
                        if ($thesaurus_mode_pmb) {
                            $lib_desc .= '[' . thesaurus::getLibelle($desc->num_thesaurus) . '] ';
                        }
                        $lib_desc .= $desc->libelle_categorie;
                    }
                    print pmb_bidi("<td>{$lib_desc}</td>");
                    $p_perso = new parametres_perso($libelle_caddie_type);
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            print "<td>" . $p["AFF"] . "</td>";
                        }
                    }
                    echo "</tr>";
                }
                break;
            default:
                if ($entete) {
                    if ($etat_table) {
                        echo "\n</table>";
                    }
                    echo "<h3>" . $msg["caddie_mess_edition_" . $entete_bloc] . "</h3>";
                    echo "\n<table><th align='left'>" . $msg['caddie_action_marque'] . "</th>";
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    for ($i = 0; $i < $max_aut; $i++) {
                        print pmb_bidi("<th align='left'>aut_entree_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_rejete_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_dates_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_fonction_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_type_{$i}</th>");
                        print pmb_bidi("<th align='left'>aut_resp_type_{$i}</th>");
                    }
                    print "<th align='left'>DESCR</th>";
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte3);
                        print "<th align='left'>" . $perso->titre . "</th>";
                    }
                    $etat_table = 1;
                }
                //Fonctions d'auteurs
                $codes_auteurs = get_functions_authors();
                $odd_even = 0;
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $row = pmb_mysql_fetch_row($res);
                    switch ($caddie_type) {
                        case 'EXPL':
                            $id_notice = $row[2];
                            break;
                        case 'NOTI':
                        default:
                            $id_notice = $row[0];
                            break;
                    }
                    if ($odd_even == 0) {
                        echo "\t<tr class='odd'>";
                        $odd_even = 1;
                    } else {
                        if ($odd_even == 1) {
                            echo "\t<tr class='even'>";
                            $odd_even = 0;
                        }
                    }
                    if ($flag) {
                        print "<td>X</td>";
                    } else {
                        print "<td>&nbsp;</td>";
                    }
                    foreach ($row as $dummykey => $col) {
                        if (!$col) {
                            $col = "&nbsp;";
                        }
                        print pmb_bidi("<td>{$col}</td>");
                    }
                    $rqt_aut = "SELECT author_name, author_rejete, author_date, responsability_fonction, author_type, responsability_type ";
                    $rqt_aut .= "FROM responsability JOIN authors ON responsability_author=author_id ";
                    $rqt_aut .= "WHERE responsability_notice={$id_notice} ";
                    $rqt_aut .= "ORDER BY responsability_type ASC, responsability_ordre ASC";
                    $res_aut = @pmb_mysql_query($rqt_aut, $dbh);
                    for ($i = 0; $i < $max_aut; $i++) {
                        $aut = @pmb_mysql_fetch_row($res_aut);
                        print pmb_bidi("<td>{$aut['0']}</td>");
                        print pmb_bidi("<td>{$aut['1']}</td>");
                        print pmb_bidi("<td>{$aut['2']}</td>");
                        print pmb_bidi("<td>" . $codes_auteurs[$aut[3]] . "</td>");
                        if ($aut[4] == "70") {
                            $lib_type_aut = $msg[203];
                        } else {
                            if ($aut[4] == "71") {
                                $lib_type_aut = $msg[204];
                            } else {
                                if ($aut[4] == "72") {
                                    $lib_type_aut = $msg["congres_libelle"];
                                } else {
                                    $lib_type_aut = $aut[4];
                                }
                            }
                        }
                        print pmb_bidi("<td>{$lib_type_aut}</td>");
                        $lib_resp_type = "";
                        if ($aut[0]) {
                            if ($aut[5] == 0) {
                                $lib_resp_type = $msg["export_main_author"];
                            } else {
                                if ($aut[5] == 1) {
                                    $lib_resp_type = $msg["export_other_author"];
                                } else {
                                    if ($aut[5] == 2) {
                                        $lib_resp_type = $msg["export_secondary_author"];
                                    }
                                }
                            }
                        }
                        print pmb_bidi("<td>{$lib_resp_type}</td>");
                    }
                    $q = "drop table if exists catlg ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "create temporary table catlg ENGINE=MyISAM as ";
                    $q .= "select categories.num_noeud, categories.libelle_categorie ";
                    $q .= "from noeuds, categories, notices_categories ";
                    $q .= "where notices_categories.notcateg_notice = '" . $id_notice . "' ";
                    $q .= "and categories.langue = '" . $lang . "' ";
                    $q .= "and categories.num_noeud = notices_categories.num_noeud ";
                    $q .= "and categories.num_noeud = noeuds.id_noeud ";
                    $q .= "ORDER BY ordre_categorie";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "drop table if exists catdef ";
                    $r = pmb_mysql_query($q, $dbh);
                    $q = "create temporary table catdef ( ";
                    $q .= "num_noeud int(9) unsigned not null default '0', ";
                    $q .= "num_thesaurus int(3) unsigned not null default '0', ";
                    $q .= "libelle_categorie text not null ";
                    $q .= ") ENGINE=MyISAM ";
                    $r = pmb_mysql_query($q, $dbh);
                    $thes_list = thesaurus::getThesaurusList();
                    $q = '';
                    foreach ($thes_list as $id_thesaurus => $libelle_thesaurus) {
                        $thes = new thesaurus($id_thesaurus);
                        $q = "insert into catdef ";
                        $q .= "select categories.num_noeud, noeuds.num_thesaurus, categories.libelle_categorie ";
                        $q .= "from noeuds, categories, notices_categories ";
                        $q .= "where noeuds.num_thesaurus={$id_thesaurus} and notices_categories.notcateg_notice = '" . $id_notice . "' ";
                        $q .= "and categories.langue = '" . $thes->langue_defaut . "' ";
                        $q .= "and categories.num_noeud = notices_categories.num_noeud ";
                        $q .= "and categories.num_noeud = noeuds.id_noeud ";
                        $q .= "ORDER BY ordre_categorie";
                        $r = pmb_mysql_query($q, $dbh);
                    }
                    $q = "select catdef.num_thesaurus as num_thesaurus, ";
                    $q .= "if (catlg.num_noeud is null, catdef.libelle_categorie, catlg.libelle_categorie) as libelle_categorie ";
                    $q .= "from catdef left join catlg on catdef.num_noeud = catlg.num_noeud ";
                    if (!$thesaurus_mode_pmb) {
                        $q .= "where catdef.num_thesaurus = '" . $thesaurus_defaut . "' ";
                    }
                    $res_desc = pmb_mysql_query($q, $dbh);
                    $lib_desc = "";
                    while ($desc = pmb_mysql_fetch_object($res_desc)) {
                        $lib_desc .= $lib_desc ? $pmb_keyword_sep : "";
                        if ($thesaurus_mode_pmb) {
                            $lib_desc .= '[' . thesaurus::getLibelle($desc->num_thesaurus) . '] ';
                        }
                        $lib_desc .= $desc->libelle_categorie;
                    }
                    print pmb_bidi("<td>{$lib_desc}</td>");
                    $p_perso = new parametres_perso($libelle_caddie_type);
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            print "<td>" . $p["AFF"] . "</td>";
                        }
                    }
                    echo "</tr>";
                }
                break;
        }
        // fin switch
    }
    // fin if nbr_lignes
}
示例#8
0
 } else {
     echo "rqt=" . $valeur . "=<br />";
     error_message_history("Requête invalide", "Vous ne pouvez tester que des requêtes de sélection", 1);
     exit;
 }
 if (!explain_requete($valeur)) {
     die("<br /><br />" . $valeur . "<br /><br />" . $msg["proc_param_explain_failed"] . "<br /><br />" . $erreur_explain_rqt);
 }
 $res = @pmb_mysql_query($valeur, $dbh);
 $nbr_lignes = @pmb_mysql_num_rows($res);
 $nbr_champs = @pmb_mysql_num_fields($res);
 if ($nbr_lignes) {
     echo "<table >";
     for ($i = 0; $i < $nbr_champs; $i++) {
         // ajout de liens pour trier les pages
         $fieldname = pmb_mysql_field_name($res, $i);
         $sortasc = "<a href='{$urlbase}&sortfield=" . ($i + 1) . "&desc=0'>asc</a>";
         $sortdesc = "<a href='{$urlbase}&sortfield=" . ($i + 1) . "&desc=1'>desc</a>";
         print "<th>{$fieldname}</th>";
     }
     for ($i = 0; $i < $nbr_lignes; $i++) {
         $row = pmb_mysql_fetch_row($res);
         echo "<tr>";
         foreach ($row as $dummykey => $col) {
             if (!$col) {
                 $col = "&nbsp;";
             }
             print pmb_bidi("<td>{$col}</td>");
         }
         echo "</tr>";
     }
示例#9
0
function desc_table($dbh, $table)
{
    $querry = "Select * from {$table}";
    $res = pmb_mysql_query($querry, $dbh);
    $nbr = pmb_mysql_num_fields($res);
    if ($nbr) {
        for ($j = 0; $j < $nbr; $j++) {
            $desc_table[$j][0] = pmb_mysql_field_name($res, $j);
            $desc_table[$j][1] = pmb_mysql_field_type($res, $j);
            $desc_table[$j][2] = pmb_mysql_field_len($res, $j);
            $desc_table[$j][3] = estNumerique($desc_table[$j][1], $desc_table[$j][2]);
            // j'ai seulement besoin de l'auto_increment, $desc_table[$j][4] est vrai si trouv?!
            $desc_table[$j][4] = array_search("auto_increment", explode(" ", pmb_mysql_field_flags($res, $j)));
        }
        //print_r($desc_table);
        return $desc_table;
    }
}
示例#10
0
function affiche_liste_valide($tpl_global, $tpl_ligne, $rqt_liste, $action)
{
    //on parcours tous les résultats de retours de la page de liste
    foreach ($_REQUEST as $k => $v) {
        //si c'est une case a cocher d'une liste
        if (substr($k, 0, 4) == "sel_" && $v == "1") {
            //le no de transfert
            $numeros .= substr($k, 4, strlen($k)) . ",";
        }
    }
    //on enleve la derniere virgule
    $numeros = substr($numeros, 0, strlen($numeros) - 1);
    //la requete pour récupérer les infos
    $rqt = str_replace("!!liste_numeros!!", $numeros, $rqt_liste);
    $res_rqt = pmb_mysql_query($rqt);
    //le nombre de colonnes dans la requete pour remplacer les champs dans le template
    $nbCols = pmb_mysql_num_fields($res_rqt);
    $nb = 0;
    //on parcours tous les enregistrements
    while ($values = pmb_mysql_fetch_array($res_rqt)) {
        //pour la coloration
        if ($nb % 2) {
            $tmpLigne = str_replace("!!class_ligne!!", "odd", $tpl_ligne);
        } else {
            $tmpLigne = str_replace("!!class_ligne!!", "even", $tpl_ligne);
        }
        //on parcours toutes les colonnes de la requete
        for ($i = 0; $i < $nbCols; $i++) {
            //on remplace les données à afficher
            $tmpLigne = aff_colonne($tmpLigne, pmb_mysql_field_name($res_rqt, $i), $values[$i]);
        }
        //affichage du titre
        $tmpLigne = str_replace("!!val_titre!!", aff_titre($values[0], $values[1]), $tmpLigne);
        //on ajoute la ligne aux autres
        $tmpString .= $tmpLigne;
        //le compteur pour la couleur
        $nb++;
    }
    $tmpString = str_replace("!!liste_transferts!!", $tmpString, $tpl_global);
    $tmpString = str_replace("!!liste_id!!", $numeros, $tmpString);
    $tmpString = str_replace("!!action_formulaire!!", $action, $tmpString);
    return $tmpString;
}
 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++;
     }
 }
示例#12
0
 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>:&nbsp;{$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 = '&nbsp;';
                                 }
                                 $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();
 }
示例#13
0
function table_dump($table_name, $fp)
{
    global $dbh;
    fwrite($fp, "#" . $table_name . "\r\n");
    fwrite($fp, "drop table if exists " . $table_name . ";\r\n");
    //Get strucutre
    fwrite($fp, create_statement($table_name) . "\n");
    //enumerate tables
    $update_a_faire = 0;
    /* permet de gérer les id auto_increment qui auraient pour valeur 0 */
    //parse the field info first
    $res2 = pmb_mysql_query("select * from {$table_name} order by 1 ", $dbh);
    if ($res2) {
        $nf = pmb_mysql_num_fields($res2);
        $nr = pmb_mysql_num_rows($res2);
    }
    $fields = '';
    $values = '';
    if ($nf) {
        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":
                    // Afin de résoudre le pb des timestamp pas corrects en restauration $is_numeric=true;
                    $is_numeric = false;
                    break;
                case "date":
                    $is_numeric = false;
                    break;
                case "datetime":
                    $is_numeric = false;
                    break;
                case "time":
                    $is_numeric = false;
                    break;
                case "geometry":
                    $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;
            }
            (string) $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...
    if ($nr) {
        for ($c = 0; $c < $nr; $c++) {
            $row = pmb_mysql_fetch_row($res2);
            $values = '';
            for ($d = 0; $d < $nf; $d++) {
                $data = strval($row[$d]);
                if ($ina[$d] == true) {
                    (string) $values != "" ? $values .= ', ' . floatval($data) : ($values .= floatval($data));
                } else {
                    (string) $values != "" ? $values .= ", \"" . pmb_mysql_real_escape_string($data) . "\"" : ($values .= "\"" . pmb_mysql_real_escape_string($data) . "\"");
                }
            }
            fwrite($fp, "insert into {$table_name} ({$fields}) values ({$values});\r\n");
            if ($update_a_faire == 1) {
                $update_a_faire = 0;
                fwrite($fp, "update {$table_name} set " . $cle_update . "='0' where " . $cle_update . "='1';\r\n");
            }
        }
    }
    if ($res2) {
        pmb_mysql_free_result($res2);
    }
}
示例#14
0
     // écriture de la méthode de création
     $dump_buffer .= "{$crlf}{$separator}# structure de la table {$valeur}{$crlf}{$separator}{$crlf}";
     $dump_buffer .= "DROP TABLE IF EXISTS " . $valeur . ";{$crlf}";
     $dump_buffer .= $create[1] . ";{$crlf}";
     $dump_buffer .= "{$crlf}{$separator}# contenu de la table {$valeur}{$crlf}{$separator}{$crlf}";
     // écriture des données
     $requete = "SELECT * FROM {$valeur}";
     $result = pmb_mysql_query($requete, $dbh);
     $nbr_lignes = pmb_mysql_num_rows($result);
     $field_set = "";
     $field = "";
     for ($i = 0; $i < $nbr_lignes; $i++) {
         $row = pmb_mysql_fetch_row($result);
         // on regarde si le champ est un entier
         for ($j = 0; $j < pmb_mysql_num_fields($result); $j++) {
             $field_set[$j] = pmb_mysql_field_name($result, $j);
             $type = pmb_mysql_field_type($result, $j);
             if ($type == 'tinyint' || $type == 'smallint' || $type == 'mediumint' || $type == 'int' || $type == 'bigint' || $type == 'timestamp') {
                 $field[$j] = $row[$j];
             } else {
                 $field[$j] = "'" . addslashes($row[$j]) . "'";
             }
         }
         $fields = implode(', ', $field_set);
         $content = implode(', ', $field);
         $dump_buffer .= "INSERT INTO " . $valeur . " ({$fields}) VALUES ({$content});{$crlf}";
     }
 }
 $file = "./tables/" . $file . ".sql";
 @set_time_limit(0);
 // timeout illimité
示例#15
0
     break;
 default:
     //le nombre de colonnes dans la requete pour remplacer les champs dans le template
     $nbCols = pmb_mysql_num_fields($req);
     $tmpAff = "";
     //on boucle sur la liste
     while ($value = pmb_mysql_fetch_array($req)) {
         //pour la coloration
         if ($nb % 2) {
             $tmpLigne = str_replace("!!class_ligne!!", "odd", $tabLigne);
         } else {
             $tmpLigne = str_replace("!!class_ligne!!", "even", $tabLigne);
         }
         //on parcours toutes les colonnes de la requete
         for ($i = 0; $i < $nbCols; $i++) {
             $tmpLigne = str_replace("!!" . pmb_mysql_field_name($req, $i) . "!!", $value[$i], $tmpLigne);
         }
         //affichage du titre
         $tmpLigne = str_replace("!!val_titre!!", aff_titre($value[0], $value[1]), $tmpLigne);
         //on ajoute la ligne a la liste
         $tmpAff .= $tmpLigne;
         $nb++;
     }
     //fin while
     //on met les lignes du tableau dans le tableau
     $tmpAff = str_replace("!!lignes_tableau!!", $tmpAff, $transferts_edition_tableau);
     //si on a des colonnes en plus
     $tmpAff = str_replace("!!colonnes_variables!!", $cols_supp, $tmpAff);
     //la sub pour retomber sur ses pattes
     $tmpAff = str_replace("!!sub!!", $sub, $tmpAff);
     //les filtres
示例#16
0
function extrait_info_empr($sql = "", $entete = 1, $flag = "")
{
    global $dbh;
    global $dest;
    global $worksheet;
    global $entete_bloc;
    global $msg;
    global $charset;
    global $debligne_excel;
    global $etat_table;
    // permet de savoir si les tag table sont ouverts ou fermés
    global $max_perso;
    global $res_compte1;
    if (!$debligne_excel) {
        $debligne_excel = 0;
    }
    $res = @pmb_mysql_query($sql, $dbh);
    $nbr_lignes = @pmb_mysql_num_rows($res);
    $nbr_champs = @pmb_mysql_num_fields($res);
    if ($nbr_lignes) {
        switch ($dest) {
            case "TABLEAU":
                if ($entete) {
                    $worksheet->write_string(1 + $debligne_excel, 0, $msg["caddie_mess_edition_" . $entete_bloc]);
                    $debligne_excel++;
                }
                for ($i = 0; $i < $nbr_champs; $i++) {
                    // entête de colonnes
                    $fieldname = pmb_mysql_field_name($res, $i);
                    if ($entete) {
                        $worksheet->write_string(1 + $debligne_excel, 0, $msg['caddie_action_marque']);
                        $worksheet->write_string(1 + $debligne_excel, $i + 1, ${fieldname});
                    }
                }
                if ($entete) {
                    $worksheet->write_string(1 + $debligne_excel, $nbr_champs + 1, "DESCR");
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte1);
                        $worksheet->write_string(1 + $debligne_excel, $nbr_champs + 2 + $i, $perso->titre);
                    }
                }
                if ($entete) {
                    $debligne_excel++;
                }
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $debligne_excel++;
                    $row = pmb_mysql_fetch_row($res);
                    $id_notice = $row[0];
                    if ($flag) {
                        $worksheet->write_string($i + $debligne_excel, 0, "X");
                    }
                    $j = 0;
                    foreach ($row as $dummykey => $col) {
                        if (!$col) {
                            $col = " ";
                        }
                        $worksheet->write_string($i + $debligne_excel, $j + 1, $col);
                        $j++;
                    }
                    $p_perso = new parametres_perso("empr");
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            $worksheet->write_string($debligne_excel, $nbr_champs + 2 + $i, html_entity_decode($p["AFF"], ENT_QUOTES | ENT_COMPAT, $charset));
                        }
                    }
                }
                break;
            case "TABLEAUHTML":
                if ($entete) {
                    if ($etat_table) {
                        echo "\n</table>";
                    }
                    echo "<h3>" . $msg["caddie_mess_edition_" . $entete_bloc] . "</h3>";
                    echo "\n<table><th align='left'>" . $msg['caddie_action_marque'] . "</th>";
                    $etat_table = 1;
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    print "<th align='left'>DESCR</th>";
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte1);
                        print "<th align='left'>" . $perso->titre . "</th>";
                    }
                }
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $row = pmb_mysql_fetch_row($res);
                    $id_notice = $row[0];
                    echo "<tr>";
                    if ($flag) {
                        print "<td>X</td>";
                    } else {
                        print "<td>&nbsp;</td>";
                    }
                    foreach ($row as $dummykey => $col) {
                        if (is_numeric($col)) {
                            $col = "'" . $col;
                        }
                        if (!$col) {
                            $col = "&nbsp;";
                        }
                        print pmb_bidi("<td>{$col}</td>");
                    }
                    print "<td>&nbsp;</td>";
                    $p_perso = new parametres_perso("empr");
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            print "<td>" . $p["AFF"] . "</td>";
                        }
                    }
                    echo "</tr>";
                }
                break;
            default:
                if ($entete) {
                    if ($etat_table) {
                        echo "\n</table>";
                    }
                    echo "<h3>" . $msg["caddie_mess_edition_" . $entete_bloc] . "</h3>";
                    echo "\n<table><th align='left'>" . $msg['caddie_action_marque'] . "</th>";
                    $etat_table = 1;
                    for ($i = 0; $i < $nbr_champs; $i++) {
                        $fieldname = pmb_mysql_field_name($res, $i);
                        print "<th align='left'>{$fieldname}</th>";
                    }
                    print "<th align='left'>DESCR</th>";
                    for ($i = 0; $i < $max_perso; $i++) {
                        $perso = pmb_mysql_fetch_object($res_compte1);
                        print "<th align='left'>" . $perso->titre . "</th>";
                    }
                }
                $odd_even = 0;
                for ($i = 0; $i < $nbr_lignes; $i++) {
                    $row = pmb_mysql_fetch_row($res);
                    $id_notice = $row[0];
                    if ($odd_even == 0) {
                        echo "\t<tr class='odd'>";
                        $odd_even = 1;
                    } else {
                        if ($odd_even == 1) {
                            echo "\t<tr class='even'>";
                            $odd_even = 0;
                        }
                    }
                    if ($flag) {
                        print "<td>X</td>";
                    } else {
                        print "<td>&nbsp;</td>";
                    }
                    foreach ($row as $dummykey => $col) {
                        if (!$col) {
                            $col = "&nbsp;";
                        }
                        print pmb_bidi("<td>{$col}</td>");
                    }
                    print "<td>&nbsp;</td>";
                    $p_perso = new parametres_perso("empr");
                    //Champs personalisés
                    if (!$p_perso->no_special_fields) {
                        $perso_ = $p_perso->show_fields($id_notice);
                        for ($i = 0; $i < count($perso_["FIELDS"]); $i++) {
                            $p = $perso_["FIELDS"][$i];
                            print "<td>" . $p["AFF"] . "</td>";
                        }
                    }
                    echo "</tr>";
                }
                break;
        }
        // fin switch
    }
    // fin if nbr_lignes
}
        $OPTIMIZE_QUERY = $param["OPTIMIZE_QUERY"][0][value];
        $FIELD0 = $param["FIELD0"][0]["value"];
        $FIELD1 = $param["FIELD1"][0]["value"];
    } else {
        $CHECKBOX_NB_ON_LINE = stripslashes($CHECKBOX_NB_ON_LINE);
        $UNSELECT_ITEM_VALUE = stripslashes($UNSELECT_ITEM_VALUE);
        $UNSELECT_ITEM_LIB = stripslashes($UNSELECT_ITEM_LIB);
        $REQUETE = stripslashes($REQUETE);
        $FIELD0 = stripslashes($FIELD0);
        $FIELD1 = stripslashes($FIELD1);
    }
    if ($first == 2) {
        $resultat = pmb_mysql_query($REQUETE);
        if ($resultat) {
            $FIELD0 = pmb_mysql_field_name($resultat, 0);
            $FIELD1 = pmb_mysql_field_name($resultat, 1);
        }
    }
    ?>
<form class='form-<?php 
    echo $current_module;
    ?>
' name="formulaire" action="options_query_list.php" method="post">
<h3><?php 
    echo $type_list_empr[$type];
    ?>
</h3>
<div class='form-contenu'>
<input type="hidden" name="first" value="0">
<input type="hidden" name="name" value="<?php 
    echo $name;
示例#18
0
$result = pmb_mysql_query($query, $dbh);
$valid_user = pmb_mysql_result($result, 0, 0);
if (!$valid_user) {
    die("Interdit : utilisateur invalide ");
}
if (!$dsi_auto) {
    die("DSI Auto pas activée sur base {$database} (user={$user}) Version noyau: {$pmb_bdd_version} ");
}
/* param par défaut */
$requete_param = "SELECT * FROM users WHERE username='******' LIMIT 1 ";
$res_param = pmb_mysql_query($requete_param, $dbh);
$field_values = pmb_mysql_fetch_row($res_param);
$array_values = pmb_mysql_fetch_array($res_param);
$i = 0;
while ($i < pmb_mysql_num_fields($res_param)) {
    $field = pmb_mysql_field_name($res_param, $i);
    $field_deb = substr($field, 0, 6);
    switch ($field_deb) {
        case "deflt_":
            global ${$field};
            ${$field} = $field_values[$i];
            break;
        case "deflt2":
            global ${$field};
            ${$field} = $field_values[$i];
            break;
        case "param_":
            global ${$field};
            ${$field} = $field_values[$i];
            break;
        case "value_":
示例#19
0
function create_user_environment($user_id)
{
    //Copié de /includes/sessions.inc.php
    global $dbh;
    // le lien MySQL
    global $stylesheet;
    /* pour qu'à l'ouverture de la session le user récupère de suite son style */
    global $PMBuserid, $PMBusername, $PMBgrp_num;
    global $checkuser_type_erreur;
    global $PMBusernom;
    global $PMBuserprenom;
    global $PMBuseremail;
    global $PMBdatabase;
    global $database;
    global $deflt_styles;
    if (!$PMBdatabase) {
        $PMBdatabase = $database;
    }
    $user_id += 0;
    $query = "SELECT rights, username, user_lang FROM users WHERE userid={$user_id}";
    $result = pmb_mysql_query($query, $dbh);
    if (!$result) {
        return false;
    }
    $ff = pmb_mysql_fetch_object($result);
    $flag = $ff->rights;
    // mise à disposition des variables de la session
    define('SESSlogin', $ff->username);
    define('SESSname', 'PhpMyBibli');
    define('SESSid', 0);
    define('SESSstart', 0);
    define('SESSlang', $ff->user_lang);
    define('SESSrights', $flag);
    /* param par défaut */
    $requete_param = "SELECT * FROM users WHERE userid={$user_id} LIMIT 1 ";
    $res_param = pmb_mysql_query($requete_param, $dbh);
    $field_values = pmb_mysql_fetch_row($res_param);
    $i = 0;
    while ($i < pmb_mysql_num_fields($res_param)) {
        $field = pmb_mysql_field_name($res_param, $i);
        $field_deb = substr($field, 0, 6);
        switch ($field_deb) {
            case "deflt_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "deflt2":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "param_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "value_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "xmlta_":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            case "deflt3":
                global ${$field};
                ${$field} = $field_values[$i];
                break;
            default:
                break;
        }
        $i++;
    }
    $requete_nom = "SELECT nom, prenom, user_email, userid, username, grp_num FROM users WHERE userid={$user_id} ";
    $res_nom = pmb_mysql_query($requete_nom, $dbh);
    $param_nom = pmb_mysql_fetch_object($res_nom);
    $PMBusernom = $param_nom->nom;
    $PMBuserprenom = $param_nom->prenom;
    $PMBgrp_num = $param_nom->grp_num;
    $PMBuseremail = $param_nom->user_email;
    // pour que l'id user soit dispo partout
    define('SESSuserid', $param_nom->userid);
    $PMBuserid = $param_nom->userid;
    $PMBusername = $param_nom->username;
    /* on va chercher la feuille de style du user */
    $stylesheet = $deflt_styles;
    //Récupération  de l'historique
    $query = "select session from admin_session where userid=" . $PMBuserid;
    $resultat = pmb_mysql_query($query);
    if ($resultat) {
        if (pmb_mysql_num_rows($resultat)) {
            $_SESSION["session_history"] = @unserialize(@pmb_mysql_result($resultat, 0, 0));
        }
    }
    return true;
}