Ejemplo n.º 1
0
 /**
 * Creation d'un fichier temporaire de sauvegarde contenant les instructions SQL
 *
 * @param out_file Fichier cible pour stockage des instructions SQL
 */
 function Sql_buildSqlFile($out_file, $sql = '', $table = '')
 {
     $crlf = Lib_endOfLine();
     $out_handle = fopen($out_file, "w");
     fputs($out_handle, "# Serveur: " . $GLOBALS['serveur_mysql1'] . " BdD: " . $GLOBALS['db1'] . "{$crlf}");
     fputs($out_handle, $crlf);
     fputs($out_handle, "# --------------------------------------------------------{$crlf}");
     fputs($out_handle, "# DumpingData '" . $GLOBALS['prefix'] . "{$table}'{$crlf}");
     fputs($out_handle, "# --------------------------------------------------------{$crlf}");
     fputs($out_handle, $crlf);
     fputs($out_handle, "DELETE from " . $GLOBALS['prefix'] . "{$table};{$crlf}");
     fputs($out_handle, $crlf);
     if ($sql != "") {
         $sql = preg_replace('`;`', ' ', $sql);
     } else {
         $sql = "SELECT * FROM " . $GLOBALS['db1'] . "." . $GLOBALS['prefix'] . $table;
     }
     $result = Sql_query($sql);
     $sql = "";
     if (!$result) {
         echo $MSG[$lang]['ProblemeSql'];
         echo $MSG['fr']['MessageBase'] . mysql_errno() . " : " . mysql_error() . "<BR>";
         return;
     }
     $nb_lines = mysql_num_rows($result);
     //============================================================================
     // Si la table n'a pas de lignes, on continue avec la table suivante
     //============================================================================
     if ($nb_lines == 0) {
         return;
     }
     //============================================================================
     // On construit la liste des champs pour eviter d'avoir des problemes d'INSERT
     //============================================================================
     $fields = "(";
     $list_fields = mysql_list_fields($GLOBALS['db1'], $GLOBALS['prefix'] . $table);
     $columns = mysql_num_fields($list_fields);
     for ($i = 0; $i < $columns; $i++) {
         $fields .= strcmp($fields, "(") == 0 ? mysql_field_name($list_fields, $i) : "," . mysql_field_name($list_fields, $i);
     }
     $fields .= ")";
     $insert_table = "INSERT INTO " . $GLOBALS['prefix'] . "{$table} {$fields} VALUES";
     $insert_table = trim($insert_table);
     $i = 0;
     while ($i < $nb_lines) {
         fputs($out_handle, "{$insert_table} {$crlf}");
         $k = 0;
         //=============================================================
         // $lines_max represente le nombre de lignes maximum par INSERT
         // defini dans le conf.php
         //=============================================================
         while ($k < $GLOBALS['lines_max']) {
             $row = mysql_fetch_row($result);
             $schema_insert = "(";
             @set_time_limit(60);
             $table_list = "(";
             for ($j = 0; $j < mysql_num_fields($result); $j++) {
                 $table_list .= mysql_field_name($result, $j) . ", ";
             }
             $table_list = substr($table_list, 0, -2);
             $table_list .= ")";
             for ($j = 0; $j < mysql_num_fields($result); $j++) {
                 if (!isset($row[$j])) {
                     $schema_insert .= " NULL,";
                 } elseif ($row[$j] != "") {
                     $dummy = "";
                     // JPLt: Avant d'effectuer la boucle sur chaque ligne, on vérifie si les caractères à remplacer existent
                     if (preg_match("/[\\\\'\"\\x00\\x0a\\x0d\\x08\t\\x1a]/", $row[$j])) {
                         $srcstr = $row[$j];
                         for ($xx = 0; $xx < strlen($srcstr); $xx++) {
                             $yy = strlen($dummy);
                             if ($srcstr[$xx] == "\\") {
                                 $dummy .= "\\\\";
                             }
                             if ($srcstr[$xx] == "'") {
                                 $dummy .= "\\'";
                             }
                             if ($srcstr[$xx] == "\"") {
                                 $dummy .= "\\\"";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\0";
                             }
                             if ($srcstr[$xx] == "\n") {
                                 $dummy .= "\\n";
                             }
                             if ($srcstr[$xx] == "\r") {
                                 $dummy .= "\\r";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\b";
                             }
                             if ($srcstr[$xx] == "\t") {
                                 $dummy .= "\\t";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\Z";
                             }
                             if (strlen($dummy) == $yy) {
                                 $dummy .= $srcstr[$xx];
                             }
                         }
                     } else {
                         $dummy = $row[$j];
                     }
                     $schema_insert .= " '" . $dummy . "',";
                 } else {
                     $schema_insert .= " '',";
                 }
             }
             $schema_insert = preg_replace("`,\$`", "", $schema_insert);
             $schema_insert .= ")";
             $schema_insert = trim($schema_insert);
             //============================================================================
             // On ecrit dans le fichier temporaire
             //============================================================================
             if ($k == $GLOBALS['lines_max'] - 1 || $i == $nb_lines - 1) {
                 fputs($out_handle, "{$schema_insert};{$crlf}");
             } else {
                 fputs($out_handle, "{$schema_insert},{$crlf}");
             }
             $k++;
             $i++;
             if ($i == $nb_lines) {
                 break;
             }
         }
     }
     fclose($out_handle);
 }
Ejemplo n.º 2
0
function Sauvegarde_FTP($data_in = array())
{
    Lib_myLog("action: " . $data_in['action']);
    foreach ($GLOBALS['tab_globals'] as $global) {
        global ${$global};
    }
    Lib_myLog("IN: ", $data_in);
    Lib_myLog("FILE: ", __FILE__);
    // Tout d'abord on réunit tous les fichiers de la sauvegarde en un seul fichier
    $datadir = DIR . "data/";
    $xtr_file = $datadir . $data_in['sauvegarde'];
    $basename = basename($xtr_file, ".xtr");
    $crlf = Lib_endOfLine();
    // On récupère la liste des tables sauvegardées
    if (is_file($xtr_file) && file_exists($xtr_file) && ($hd = fopen($xtr_file, "r"))) {
        $auth_tables = unserialize(fread($hd, filesize($xtr_file)));
        fclose($hd);
    }
    /*=============s*/
    Lib_myLog("Creation du fichier sql global");
    $ftp_file = $datadir . $basename . '.sql';
    $ftp_hd = fopen($ftp_file, 'w+');
    /*=============s*/
    Lib_myLog("Ajout du fichier descriptif xtr");
    $hd = fopen($xtr_file, "r");
    $str = "# Fichier: {$data_in['sauvegarde']}{$crlf}";
    $str .= fread($hd, filesize($xtr_file));
    $str .= $crlf;
    fwrite($ftp_hd, $str);
    fclose($hd);
    // Pour chaque table on récupère le fichier et on rajoute au fichier total
    foreach ($auth_tables as $table => $etat) {
        /*=============*/
        Lib_myLog("Ajout du fichier sql de la table {$table} ");
        $sql_file = $datadir . $basename . "_" . $table . ".sql";
        $hd = fopen($sql_file, "r");
        $str = "# Fichier: {$basename_}{$table}.sql{$crlf}";
        $str .= fread($hd, filesize($sql_file));
        fwrite($ftp_hd, $str);
        fclose($hd);
    }
    fclose($ftp_hd);
    // Obligés de nettoyer le buffer de sortie sinon les %%prefix%% sont remplacés!
    ob_end_clean();
    $size = filesize($ftp_file);
    $filename = $basename . ".sql";
    header("Content-Type: application/octet-stream");
    header("Content-Length: {$size}");
    header("Content-Disposition: attachment; filename={$filename}");
    header("Content-Transfer-Encoding: binary");
    $fh = fopen("{$ftp_file}", "r");
    fpassthru($fh);
}
Ejemplo n.º 3
0
 /**
 * Creation d'un fichier temporaire de sauvegarde contenant les instructions SQL
 *
 * @param out_file Fichier cible pour stockage des instructions SQL
 */
 function Sql_buildSqlFile($out_file, $sql = '')
 {
     $crlf = Lib_endOfLine();
     $out_handle = fopen($out_file, "w");
     fputs($out_handle, "# BdD: " . $GLOBALS['db'] . "{$crlf}");
     //===========================================================================
     // auth_tables[] vient du .conf et contient la liste des tables a sauvegarder
     //===========================================================================
     foreach ($GLOBALS['AUTH_TABLES'] as $table) {
         fputs($out_handle, $crlf);
         fputs($out_handle, "# --------------------------------------------------------{$crlf}");
         fputs($out_handle, "# DumpingData '" . $GLOBALS['prefix'] . "{$table}'{$crlf}");
         fputs($out_handle, "# --------------------------------------------------------{$crlf}");
         fputs($out_handle, $crlf);
         fputs($out_handle, "DELETE from " . $GLOBALS['prefix'] . "{$table};{$crlf}");
         fputs($out_handle, $crlf);
         if ($sql != "") {
             $sql = ereg_replace(';', ' ', $sql);
         } else {
             $sql = "SELECT * FROM " . $GLOBALS['db'] . "." . $GLOBALS['prefix'] . $table;
         }
         $result = Sql_query($sql);
         $sql = "";
         if (!$result) {
             echo $MSG[$lang]['ProblemeSql'];
             echo $MSG['fr']['MessageBase'] . Sql_errorCode($result) . " : " . Sql_errorInfo($result) . "<BR>";
             break;
         }
         $first_line = Sql_fetch($result);
         //============================================================================
         // Si la table n'a pas de lignes, on continue avec la table suivante
         //============================================================================
         if (count($first_line) <= 1) {
             continue;
         }
         //============================================================================
         // On construit la liste des champs pour eviter d'avoir des problemes d'INSERT
         //============================================================================
         $fields = "(";
         foreach ($first_line as $index => $val) {
             $fields .= $index . ",";
         }
         $fields .= ")";
         //       $fields = "(";
         //       $list_fields = mysql_list_fields($GLOBALS['db'], $GLOBALS['prefix'].$table);
         //       $columns = mysql_num_fields($list_fields);
         //       for ($i = 0; $i < $columns; $i++)
         //           $fields .= (strcmp($fields,"(") == 0) ? mysql_field_name($list_fields, $i) : ",".mysql_field_name($list_fields, $i);
         //       $fields .= ")";
         $insert_table = "INSERT INTO " . $GLOBALS['prefix'] . "{$table} {$fields} VALUES";
         $insert_table = trim($insert_table);
         while ($row = Sql_fetch($result)) {
             fputs($out_handle, "{$insert_table} {$crlf}");
             $k = 0;
             //=============================================================
             // $lines_max represente le nombre de lignes maximum par INSERT
             // defini dans le conf.php
             //=============================================================
             while ($k < $GLOBALS['lines_max']) {
                 $schema_insert = "(";
                 @set_time_limit(60);
                 $table_list = "(";
                 for ($j = 0; $j < mysql_num_fields($result); $j++) {
                     $table_list .= mysql_field_name($result, $j) . ", ";
                 }
                 $table_list = substr($table_list, 0, -2);
                 $table_list .= ")";
                 for ($j = 0; $j < mysql_num_fields($result); $j++) {
                     if (!isset($row[$j])) {
                         $schema_insert .= " NULL,";
                     } elseif ($row[$j] != "") {
                         $dummy = "";
                         $srcstr = $row[$j];
                         for ($xx = 0; $xx < strlen($srcstr); $xx++) {
                             $yy = strlen($dummy);
                             if ($srcstr[$xx] == "\\") {
                                 $dummy .= "\\\\";
                             }
                             if ($srcstr[$xx] == "'") {
                                 $dummy .= "\\'";
                             }
                             if ($srcstr[$xx] == "\"") {
                                 $dummy .= "\\\"";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\0";
                             }
                             if ($srcstr[$xx] == "\n") {
                                 $dummy .= "\\n";
                             }
                             if ($srcstr[$xx] == "\r") {
                                 $dummy .= "\\r";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\b";
                             }
                             if ($srcstr[$xx] == "\t") {
                                 $dummy .= "\\t";
                             }
                             if ($srcstr[$xx] == "") {
                                 $dummy .= "\\Z";
                             }
                             if (strlen($dummy) == $yy) {
                                 $dummy .= $srcstr[$xx];
                             }
                         }
                         $schema_insert .= " '" . $dummy . "',";
                     } else {
                         $schema_insert .= " '',";
                     }
                 }
                 $schema_insert = ereg_replace(",\$", "", $schema_insert);
                 $schema_insert .= ")";
                 $schema_insert = trim($schema_insert);
                 //============================================================================
                 // On ecrit dans le fichier temporaire
                 //============================================================================
                 if ($k == $GLOBALS['lines_max'] - 1 || $i == $nb_lines - 1) {
                     fputs($out_handle, "{$schema_insert};{$crlf}");
                 } else {
                     fputs($out_handle, "{$schema_insert},{$crlf}");
                 }
                 $k++;
                 $i++;
                 if ($i == $nb_lines) {
                     break;
                 }
             }
         }
     }
     fclose($out_handle);
 }
Ejemplo n.º 4
0
 /**
 * Fonction pour telecharger des donnees texte afin de pouvoir les enregistrer
 * sur le client leger.
 * @param $data Donnees a telecharger
 */
 function Lib_myExtract($data, $filename = '')
 {
     if ($filename == '') {
         $filename = "data.csv";
     }
     header("Content-disposition: filename={$filename}");
     header("Content-type: application/octetstream");
     header("Pragma: no-cache");
     header("Expires: 0");
     $crlf = Lib_endOfLine();
     foreach ($data as $line) {
         print $line;
         if (!preg_match("/" . $crlf . "/", $line)) {
             print $crlf;
         }
     }
 }