Beispiel #1
0
    $lang = $lang_sel;
    // if there is a user session we also change the language in PMB database for this user
    if ($_SESSION["user_code"]) {
        $query = "UPDATE empr SET empr_lang='{$lang}' WHERE empr_login='******'user_code'] . "' limit 1";
        $req = pmb_mysql_query($query, $dbh);
        $_SESSION["lang"] = $lang;
    }
} else {
    // there is a user session so we use his params
    if (isset($_SESSION["lang"])) {
        $lang = $_SESSION["lang"];
    } else {
        // no changement,no session, we use the cookie to set the lang
        // cookies must be enabled to remember the lang...this must be changed ?
        if ($_COOKIE['PhpMyBibli-LANG']) {
            $rqtveriflang = "select 1 from parametres where type_param='opac' and sstype_param='show_languages' and valeur_param like '%" . pmb_mysql_real_escape_string(stripslashes($_COOKIE['PhpMyBibli-LANG'])) . "%'";
            $reqveriflang = pmb_mysql_query($rqtveriflang, $dbh);
            if (!pmb_mysql_num_rows($reqveriflang)) {
                $lang = $opac_default_lang;
            } else {
                $lang = $_COOKIE['PhpMyBibli-LANG'];
            }
        }
        if (!$lang) {
            if ($opac_default_lang) {
                $lang = $opac_default_lang;
            } else {
                $lang = "fr_FR";
            }
        }
    }
Beispiel #2
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);
    }
}