<?php /* ---------------------------------------------------------------------- MyOOS [Dumper] http://www.oos-shop.de/ Copyright (c) 2016 by the MyOOS Development Team. ---------------------------------------------------------------------- Based on: MySqlDumper http://www.mysqldumper.de Copyright (C)2004-2011 Daniel Schlichtholz (admin@mysqldumper.de) ---------------------------------------------------------------------- Released under the GNU General Public License ---------------------------------------------------------------------- */ function CheckCSVOptions() { global $sql; if (!isset($sql['export']['trenn'])) $sql['export']['trenn']=";"; if (!isset($sql['export']['enc'])) $sql['export']['enc']="\""; if (!isset($sql['export']['esc'])) $sql['export']['esc']="\\"; if (!isset($sql['export']['ztrenn'])) $sql['export']['ztrenn']="\\r\\n"; if (!isset($sql['export']['null'])) $sql['export']['null']="NULL"; if (!isset($sql['export']['namefirstline'])) $sql['export']['namefirstline']=0; if (!isset($sql['export']['format'])) $sql['export']['format']=0; if (!isset($sql['export']['sendfile'])) $sql['export']['sendfile']=0; if (!isset($sql['export']['tables'])) $sql['export']['tables']=Array(); if (!isset($sql['export']['compressed'])) $sql['export']['compressed']=0; if (!isset($sql['export']['htmlstructure'])) $sql['export']['htmlstructure']=0; if (!isset($sql['export']['xmlstructure'])) $sql['export']['xmlstructure']=0; if (!isset($sql['import']['trenn'])) $sql['import']['trenn']=";"; if (!isset($sql['import']['enc'])) $sql['import']['enc']="\""; if (!isset($sql['import']['esc'])) $sql['import']['esc']="\\"; if (!isset($sql['import']['ztrenn'])) $sql['import']['ztrenn']="\\r\\n"; if (!isset($sql['import']['null'])) $sql['import']['null']="NULL"; if (!isset($sql['import']['namefirstline'])) $sql['import']['namefirstline']=0; if (!isset($sql['import']['format'])) $sql['import']['format']=0; } function ExportCSV() { global $sql,$config; $t=""; $time_start=time(); if (!isset($config['dbconnection'])) MSD_mysql_connect(); for ($table=0; $table < count($sql['export']['tables']); $table++) { $sqlt="SHOW Fields FROM `" . $sql['export']['db'] . "`.`" . $sql['export']['tables'][$table] . "`;"; $res=MSD_query($sqlt); if ($res) { $numfields=mysqli_num_rows($res); if ($sql['export']['namefirstline'] == 1) { for ($feld=0; $feld < $numfields; $feld++) { $row=mysqli_fetch_row($res); if ($sql['export']['enc'] != "") $t.=$sql['export']['enc'] . $row[0] . $sql['export']['enc'] . ( ( $feld + 1 < $numfields ) ? $sql['export']['trenn'] : '' ); else $t.=$row[0] . ( ( $feld + 1 < $numfields ) ? $sql['export']['trenn'] : '' ); } $t.=$sql['export']['endline']; $sql['export']['lines']++; } } $sqlt="SELECT * FROM `" . $sql['export']['db'] . "`.`" . $sql['export']['tables'][$table] . "`;"; $res=MSD_query($sqlt); if ($res) { $numrows=mysqli_num_rows($res); for ($data=0; $data < $numrows; $data++) { $row=mysqli_fetch_row($res); for ($feld=0; $feld < $numfields; $feld++) { if (!isset($row[$feld]) || is_null($row[$feld])) { $t.=$sql['export']['null']; } elseif ($row[$feld] == '0' || $row[$feld] != '') { if ($sql['export']['enc'] != "") $t.=$sql['export']['enc'] . str_replace($sql['export']['enc'],$sql['export']['esc'] . $sql['export']['enc'],$row[$feld]) . $sql['export']['enc']; else $t.=$row[$feld]; } else { $t.=''; } $t.=( $feld + 1 < $numfields ) ? $sql['export']['trenn'] : ''; } $t.=$sql['export']['endline']; $sql['export']['lines']++; if (strlen($t) > $config['memory_limit']) { CSVOutput($t); $t=""; } $time_now=time(); if ($time_start >= $time_now + 30) { $time_start=$time_now; header('X-MSDPing: Pong'); } } } } CSVOutput($t,1); } function CSVOutput($str, $last=0) { global $sql,$config; if ($sql['export']['sendfile'] == 0) { //Display echo $str; } else { if ($sql['export']['header_sent'] == "") { if ($sql['export']['compressed'] == 1 & !function_exists('gzencode')) $sql['export']['compressed']=0; if ($sql['export']['format'] < 4) { $file=$sql['export']['db'] . ( ( $sql['export']['compressed'] == 1 ) ? ".csv.gz" : ".csv" ); } elseif ($sql['export']['format'] == 4) { $file=$sql['export']['db'] . ( ( $sql['export']['compressed'] == 1 ) ? ".xml.gz" : ".xml" ); } elseif ($sql['export']['format'] == 5) { $file=$sql['export']['db'] . ( ( $sql['export']['compressed'] == 1 ) ? ".html.gz" : ".html" ); } $mime=( $sql['export']['compressed'] == 0 ) ? "x-type/subtype" : "application/x-gzip"; header('Content-Disposition: attachment; filename="' . $file . '"'); header('Pragma: no-cache'); header('Content-Type: ' . $mime); header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); $sql['export']['header_sent']=1; } if ($sql['export']['compressed'] == 1) echo gzencode($str); else echo $str; } } function DoImport() { global $sql,$lang; $r='<span class="swarnung">'; $zeilen=count($sql['import']['csv']) - $sql['import']['namefirstline']; $sql['import']['first_zeile']=explode($sql['import']['trenn'],$sql['import']['csv'][0]); $importfelder=count($sql['import']['first_zeile']); if ($sql['import']['tablecreate'] == 0) { $res=MSD_query("show fields FROM " . $sql['import']['table']); $tabellenfelder=mysqli_num_rows($res); if ($importfelder != $tabellenfelder) { $r.='<br>' . sprintf($lang['L_CSV_FIELDCOUNT_NOMATCH'],$tabellenfelder,$importfelder); } else { $ok=1; } } else { $ok=ImportCreateTable(); if ($ok == 0) { $r.='<br>' . sprintf($lang['L_CSV_ERRORCREATETABLE'],$sql['import']['table']); } } if ($ok == 1) { $insert=""; if ($sql['import']['emptydb'] == 1 && $sql['import']['tablecreate'] == 0) { MSD_DoSQL("TRUNCATE " . $sql['import']['table'] . ";"); } $sql['import']['lines_imported']=0; $enc=( $sql['import']['enc'] == "" ) ? "'" : ""; $zc=""; for ($i=$sql['import']['namefirstline']; $i < $zeilen + $sql['import']['namefirstline']; $i++) { //Importieren $insert="INSERT INTO " . $sql['import']['table'] . " VALUES("; if ($sql['import']['createindex'] == 1) $insert.="'', "; $zc.=trim(rtrim($sql['import']['csv'][$i])); //echo "Zeile $i: $zc<br>"; if ($zc != "") { // && substr($zc,-1)==$enc) { $zeile=explode($sql['import']['trenn'],$zc); for ($j=0; $j < $importfelder; $j++) { $a=( $zeile[$j] == "" && $enc == "" ) ? "''" : $zeile[$j]; $insert.=$enc . $a . $enc . ( ( $j == $importfelder - 1 ) ? ");\n" : "," ); } MSD_DoSQL($insert); $sql['import']['lines_imported']++; $zc=""; } } $r.=sprintf($lang['L_CSV_FIELDSLINES'],$importfelder,$sql['import']['lines_imported']); } $r.='</span>'; return $r; } function ImportCreateTable() { global $sql,$lang,$db,$config; $tbl=Array(); $sql = "SHOW TABLES FROM $db"; $tabellen=MSD_query($sql); // while ($row = mysqli_fetch_row($num_tables)) while ($row = mysqli_fetch_row($tabellen)) { $tbl[]=strtolower($row[0]); } $i=0; $sql['import']['table']=$sql['import']['table'] . $i; while (in_array($sql['import']['table'],$tbl)) { $sql['import']['table']=substr($sql['import']['table'],0,strlen($sql['import']['table']) - 1) . ++$i; } $create="CREATE TABLE `" . $sql['import']['table'] . "` (" . ( ( $sql['import']['createindex'] == 1 ) ? '`import_id` int(11) unsigned NOT NULL auto_increment, ' : '' ); if ($sql['import']['namefirstline']) { for ($i=0; $i < count($sql['import']['first_zeile']); $i++) { $create.='`' . $sql['import']['first_zeile'][$i] . '` VARCHAR(250) NOT NULL, '; } } else { for ($i=0; $i < count($sql['import']['first_zeile']); $i++) { $create.='`FIELD_' . $i . '` VARCHAR(250) NOT NULL, '; } } if ($sql['import']['createindex'] == 1) $create.='PRIMARY KEY (`import_id`) '; else $create=substr($create,0,strlen($create) - 2); $create.=') ' . ( ( MSD_NEW_VERSION ) ? 'ENGINE' : 'TYPE' ) . "=MyISAM COMMENT='imported at " . date("l dS of F Y H:i:s A") . "'"; $res=mysqli_query($config['dbconnection'], $create) || die(SQLError($create,mysqli_error($config['dbconnection']))); return 1; } function ExportXML() { global $sql,$config; $tab="\t"; $level=0; $t='<?xml version="1.0" encoding="UTF-8" ?>' . "\n" . '<database name="' . $sql['export']['db'] . '">' . "\n"; $level++; $time_start=time(); if (!isset($config['dbconnection'])) MSD_mysql_connect(); for ($table=0; $table < count($sql['export']['tables']); $table++) { $t.=str_repeat($tab,$level++) . '<table name="' . $sql['export']['tables'][$table] . '">' . "\n"; $sqlt="SHOW Fields FROM `" . $sql['export']['db'] . "`.`" . $sql['export']['tables'][$table] . "`;"; $res=MSD_query($sqlt); if ($res) { $numfields=mysqli_num_rows($res); if ($sql['export']['xmlstructure'] == 1) { $t.=str_repeat($tab,$level++) . '<structure>' . "\n"; for ($feld=0; $feld < $numfields; $feld++) { $row=mysqli_fetch_array($res); $t.=str_repeat($tab,$level++) . '<field no="' . $feld . '">' . "\n"; $t.=str_repeat($tab,$level) . '<name>' . $row['Field'] . '</name>' . "\n"; $t.=str_repeat($tab,$level) . '<type>' . $row['Type'] . '</type>' . "\n"; $t.=str_repeat($tab,$level) . '<null>' . $row['Null'] . '</null>' . "\n"; $t.=str_repeat($tab,$level) . '<key>' . $row['Key'] . '</key>' . "\n"; $t.=str_repeat($tab,$level) . '<default>' . $row['Default'] . '</default>' . "\n"; $t.=str_repeat($tab,$level) . '<extra>' . $row['Extra'] . '</extra>' . "\n"; $t.=str_repeat($tab,--$level) . '</field>' . "\n"; } $t.=str_repeat($tab,--$level) . '</structure>' . "\n"; } } $t.=str_repeat($tab,$level++) . '<data>' . "\n"; $sqlt="SELECT * FROM `" . $sql['export']['db'] . "`.`" . $sql['export']['tables'][$table] . "`;"; $res=MSD_query($sqlt); if ($res) { $numrows=mysqli_num_rows($res); for ($data=0; $data < $numrows; $data++) { $t.=str_repeat($tab,$level) . "<row>\n"; $level++; $row=mysqli_fetch_row($res); for ($feld=0; $feld < $numfields; $feld++) { $t.=str_repeat($tab,$level) . '<field no="' . $feld . '">' . $row[$feld] . '</field>' . "\n"; } $t.=str_repeat($tab,--$level) . "</row>\n"; $sql['export']['lines']++; if (strlen($t) > $config['memory_limit']) { CSVOutput($t); $t=""; } $time_now=time(); if ($time_start >= $time_now + 30) { $time_start=$time_now; header('X-MSDPing: Pong'); } } } $t.=str_repeat($tab,--$level) . '</data>' . "\n"; $t.=str_repeat($tab,--$level) . '</table>' . "\n"; } $t.=str_repeat($tab,--$level) . '</database>' . "\n"; CSVOutput($t,1); } function ExportHTML() { global $sql,$config,$lang; $header='<html><head><title>MSD Export</title></head>'; $footer="\n\n</body>\n</html>"; $content=""; $content.='<h1>' . $lang['L_DB'] . ' ' . $sql['export']['db'] . '</h1>'; $time_start=time(); if (!isset($config['dbconnection'])) MSD_mysql_connect(); for ($table=0; $table < count($sql['export']['tables']); $table++) { $content.='<h2>Tabelle ' . $sql['export']['tables'][$table] . '</h2>' . "\n"; $fsql="show fields from `" . $sql['export']['tables'][$table] . "`"; $dsql="select * from `" . $sql['export']['tables'][$table] . "`"; //Struktur $res=MSD_query($fsql); if ($res) { $field=$fieldname=$fieldtyp=Array(); $structure="<table class=\"Table\">\n"; $numfields=mysqli_num_rows($res); for ($feld=0; $feld < $numfields; $feld++) { $row=mysqli_fetch_row($res); $field[$feld]=$row[0]; if ($feld == 0) { $structure.="<tr class=\"Header\">\n"; for ($i=0; $i < count($row); $i++) { $str=mysqli_fetch_field($res,$i); $fieldname[$i]=$str->name; $fieldtyp[$i]=$str->type; $structure.="<th>" . $str->name . "</th>\n"; } $structure.="</tr>\n<tr>\n"; } for ($i=0; $i < count($row); $i++) { $structure.="<td class=\"Object\">" . ( ( $row[$i] != "" ) ? $row[$i] : " " ) . "</td>\n"; } $structure.="</tr>\n"; } $structure.="</table>\n"; } if ($sql['export']['htmlstructure'] == 1) $content.="<h3>Struktur</h3>\n" . $structure; //Daten $res=MSD_query($dsql); if ($res) { $anz=mysqli_num_rows($res); $content.="<h3>Daten ($anz Datensätze)</h3>\n"; $content.="<table class=\"Table\">\n"; for ($feld=0; $feld < count($field); $feld++) { if ($feld == 0) { $content.="<tr class=\"Header\">\n"; for ($i=0; $i < count($field); $i++) { $content.="<th>" . $field[$i] . "</th>\n"; } $content.="</tr>\n"; } } for ($d=0; $d < $anz; $d++) { $row=mysqli_fetch_row($res); $content.="<tr>\n"; for ($i=0; $i < count($row); $i++) { $content.='<td class="Object">' . ( ( $row[$i] != "" ) ? $row[$i] : " " ) . "</td>\n"; } $content.="</tr>\n"; } } $content.="</table>"; } CSVOutput($header . $content . $footer); }