MetaTables(); $export=""; $export .="#------------------------------------------"."\n"; $export .="# LimeSurvey Database Dump of `$databasename`"."\n"; if ($allowexportalldb==0) { $export .="# Only prefixed tables with: ". $dbprefix ."\n"; } $export .="# Date of Dump: ". date("d-M-Y") ."\n"; $export .="#------------------------------------------"."\n\n\n"; foreach($tables as $table) { if ($allowexportalldb==0) { if ($dbprefix==substr($table, 0, strlen($dbprefix))) { $export .= defdump($table); $export .= datadump($table); } } else { $export .= defdump($table); $export .= datadump($table); } } $file_name = "LimeSurvey_{$databasename}_dump_".date_shift(date("Y-m-d H:i:s"), "Y-m-d", $timeadjust).".sql"; Header("Content-type: application/octet-stream"); Header("Content-Disposition: attachment; filename=$file_name"); Header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); echo $export; exit; } else { $dumpdboutput= "
\n" ."\n" ."\t\n" ."\t" ."
".$clang->gT("Export database")."
".$clang->gT("The database export is only available for MySQL databases. For other database types please use the according backup mechanism to create a database dump.")."

"; return; } function defdump($tablename) { global $connect; $def = ""; $def .="#------------------------------------------"."\n"; $def .="# Table definition for $tablename"."\n"; $def .="#------------------------------------------"."\n"; $def .= "DROP TABLE IF EXISTS $tablename;"."\n"."\n"; $def .= "CREATE TABLE $tablename ("."\n"; $result = db_execute_assoc("SHOW COLUMNS FROM $tablename") or die("Table $tablename not existing in database"); while($row = $result->FetchRow()) { $def .= " `$row[Field]` $row[Type]"; if (!is_null($row["Default"])) $def .= " DEFAULT '$row[Default]'"; if ($row["Null"] != "YES") $def .= " NOT NULL"; if ($row["Extra"] != "") $def .= " $row[Extra]"; $def .= ",\n"; } $def = preg_replace("#,\n$#","", $def); $result = db_execute_assoc("SHOW KEYS FROM $tablename"); while($row = $result->FetchRow()) { $kname=$row["Key_name"]; if(($kname != "PRIMARY") && ($row["Non_unique"] == 0)) $kname="UNIQUE|$kname"; if(!isset($index[$kname])) $index[$kname] = array(); $index[$kname][] = $row["Column_name"]; } while(list($x, $columns) = @each($index)) { $def .= ",\n"; if($x == "PRIMARY") $def .= " PRIMARY KEY (" . implode($columns, ", ") . ")"; else if (substr($x,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")"; else $def .= " KEY $x (" . implode($columns, ", ") . ")"; } $def .= "\n);\n\n\n"; return (stripslashes($def)); } function datadump ($table) { global $connect; $result = "#------------------------------------------"."\n"; $result .="# Table data for $table"."\n"; $result .="#------------------------------------------"."\n"; $query = db_execute_num("select * from $table"); $num_fields = $query->FieldCount(); $numrow = $query->RecordCount(); while($row=$query->FetchRow()){ @set_time_limit(5); $result .= "INSERT INTO ".$table." VALUES("; for($j=0; $j<$num_fields; $j++) { if (isset($row[$j]) && !is_null($row[$j])) { $row[$j] = addslashes($row[$j]); $row[$j] = preg_replace("#\n#","\\n",$row[$j]); $result .= "\"$row[$j]\""; } else { $result .= "NULL"; } if ($j<($num_fields-1)) $result .= ","; } $result .= ");\n"; } // while return $result . "\n\n\n"; } ?>