OSDN Git Service

Small update to iSQL-Dumper.
[idb/iDB.git.git] / inc / admin / sqldumper / sqlite.php
1 <?php
2 /*
3     This program is free software; you can redistribute it and/or modify
4     it under the terms of the Revised BSD License.
5
6     This program is distributed in the hope that it will be useful,
7     but WITHOUT ANY WARRANTY; without even the implied warranty of
8     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9     Revised BSD License for more details.
10
11     Copyright 2004-2010 iDB Support - http://idb.berlios.de/
12     Copyright 2004-2010 Game Maker 2k - http://gamemaker2k.org/
13
14     $FileInfo: sqlite.php - Last Update: 05/28/2010 SVN 504 - Author: cooldude2k $
15 */
16 $File3Name = basename($_SERVER['SCRIPT_NAME']);
17 if ($File3Name=="sqlite.php"||$File3Name=="/sqlite.php") {
18         require('index.php');
19         exit(); }
20
21 if($_SESSION['UserGroup']==$Settings['GuestGroup']||$GroupInfo['HasAdminCP']=="no") {
22 redirect("location",$basedir.url_maker($exfile['index'],$Settings['file_ext'],"act=view",$Settings['qstr'],$Settings['qsep'],$prexqstr['index'],$exqstr['index'],false));
23 ob_clean(); header("Content-Type: text/plain; charset=".$Settings['charset']);
24 gzip_page($Settings['use_gzip'],$GZipEncode['Type']); session_write_close(); die(); }
25 if($Settings['sqltype']!="sqlite") {
26 redirect("location",$basedir.url_maker($exfile['index'],$Settings['file_ext'],"act=view",$Settings['qstr'],$Settings['qsep'],$prexqstr['index'],$exqstr['index'],false));
27 ob_clean(); header("Content-Type: text/plain; charset=".$Settings['charset']);
28 gzip_page($Settings['use_gzip'],$GZipEncode['Type']); session_write_close(); die(); }
29 if(!isset($_GET['outtype'])) { $_GET['outtype'] = "UTF-8"; }
30 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
31 header("Cache-Control: private",false); 
32 header("Content-Description: File Transfer");
33 if(!isset($_GET['comlevel'])) {
34         $_GET['comlevel'] = -1; }
35 if(!is_numeric($_GET['comlevel'])) {
36         $_GET['comlevel'] = -1; }
37 if($_GET['comlevel']>9||$_GET['comlevel']<-1) {
38         $_GET['comlevel'] = -1; }
39 if(!isset($_GET['compress'])) {
40         $_GET['compress'] = "none"; }
41 if($_GET['compress']=="gzip") {
42         $_GET['compress'] = "gzencode"; }
43 if($_GET['compress']=="bzip"||
44         $_GET['compress']=="bzip2") {
45         $_GET['compress'] = "bzcompress"; }
46 if($_GET['compress']!="none"&&
47         $_GET['compress']!="gzencode"&&
48         $_GET['compress']!="gzcompress"&&
49         $_GET['compress']!="gzdeflate"&&
50         $_GET['compress']!="bzcompress") {
51         $_GET['compress'] = "none"; }
52 if(!extension_loaded("zlib")) {
53 if($_GET['compress']=="gzencode"&&
54         $_GET['compress']=="gzcompress"&&
55         $_GET['compress']=="gzdeflate") {
56         $_GET['compress'] = "none"; } }
57 if(!extension_loaded("bz2")) {
58 if($_GET['compress']=="bzcompress") {
59         $_GET['compress'] = "none"; } }
60 if($_GET['compress']=="bzcompress") {
61 if($_GET['comlevel']>9||$_GET['comlevel']<0) {
62         $_GET['comlevel'] = 4; } }
63 $fname = null;
64 if(isset($Settings['sqldb'])&&$Settings['sqldb']!="") {
65 $fname = str_replace("_","", $Settings['sqldb'])."_"; }
66 if($_GET['compress']=="none") {
67 $fname .= str_replace("_","", $Settings['sqltable']).".sql"; }
68 if($_GET['compress']=="gzencode") {
69 $fname .= str_replace("_","", $Settings['sqltable']).".sql.gz"; }
70 if($_GET['compress']=="gzcompress") {
71 $fname .= str_replace("_","", $Settings['sqltable']).".sql.gz"; }
72 if($_GET['compress']=="gzdeflate") {
73 $fname .= str_replace("_","", $Settings['sqltable']).".sql.gz"; }
74 if($_GET['compress']=="bzcompress") {
75 $fname .= str_replace("_","", $Settings['sqltable']).".sql.bz2"; }
76 header("Content-Disposition: attachment; filename=".$fname);
77 header("Content-Type: application/octet-stream");
78 header("Content-Transfer-Encoding: binary");
79 $SQLDumper = "SQL Dumper";
80 function GetAllRows($table) { $rene_j = 0; $trowout = null;
81 global $SQLStat;
82 $tresult = sql_query("SELECT * FROM \"".$table."\"",$SQLStat);
83 while ($trow = sql_fetch_assoc($tresult)) {
84 $trowout[$rene_j] = $trow;
85 ++$rene_j; }
86 sql_free_result($tresult);
87 return $trowout; }
88 $TablePreFix = $Settings['sqltable'];
89 function add_prefix($tarray) {
90 global $TablePreFix;
91 return $TablePreFix.$tarray; }
92 $TableChCk = array("categories", "catpermissions", "events", "forums", "groups", "members", "messenger", "permissions", "posts", "restrictedwords", "sessions", "smileys", "themes", "topics", "wordfilter");
93 $TableChCk = array_map("add_prefix",$TableChCk);
94 if(!isset($_GET['outtype'])||$_GET['outtype']=="UTF-8") {
95 header("Content-Type: text/plain; charset=UTF-8"); }
96 if($_GET['outtype']=="latin1") {
97 header("Content-Type: text/plain; charset=ISO-8859-15"); }
98 if($_GET['outtype']=="latin15") {
99 header("Content-Type: text/plain; charset=ISO-8859-15"); }
100 $sli = 0; $slnum = count($TableChCk);
101 while ($sli < $slnum) {
102 /*
103 $FullTable[$sli] = "CREATE TABLE \"".$TableChCk[$sli]."\" (\n";
104 */
105 $tabsta = sql_query("SELECT * FROM sqlite_master WHERE type=\"table\" and tbl_name=\"".$TableChCk[$sli]."\";",$SQLStat);
106 $tabstats = sql_fetch_array($tabsta);
107 $FullTable[$sli] = $tabstats['sql'].";\n";
108 /*
109 $zli = 0;
110 $tabsta = sql_query("PRAGMA table_info(\"".$TableChCk[$sli]."\");",$SQLStat);
111 while ($tabstats = sql_fetch_array($tabsta)) {
112 var_dump($tabstats);
113 if($zli>0) { $FullTable[$sli] .= ",\n"; }
114 $SQLDefault = null; $PrimeKey = " ";
115 if($tabstats['dflt_value']!==null) {
116 $SQLDefault = " default '".$tabstats['dflt_value']."'"; }
117 if($tabstats['dflt_value']===null) {
118 $SQLDefault = ""; }
119 if($tabstats['pk']=="1") {
120 $PrimeKey = " PRIMARY KEY "; }
121 $FullTable[$sli] .= "  \"".$tabstats['name']."\" ".$tabstats['type'].$PrimeKey."NOT NULL".$SQLDefault;
122 ++$zli; }
123 $FullTable[$sli] .= "\n);\n";
124 */
125 ++$sli; }
126 $TableNames = $TableChCk;
127 $num = count($TableNames); $renee_s = 0;
128 $sqldump = "-- ".$OrgName." ".$SQLDumper."\n";
129 $sqldump .= "-- version ".$VerInfo['iDB_Ver_SVN']."\n";
130 $sqldump .= "-- ".$iDBHome."support/\n";
131 $sqldump .= "--\n";
132 $sqldump .= "-- Generation Time: ".GMTimeGet('F d, Y \a\t h:i A',$_SESSION['UserTimeZone'],0,$_SESSION['UserDST'])."\n";
133 $sqldump .= "-- SQLite Server version: ".sql_server_info($SQLStat)."\n";
134 $sqldump .= "-- PHP Version: ".phpversion()."\n\n";
135 $sqldump .= "--\n";
136 $sqldump .= "-- Database: \"".$Settings['sqldb']."\"\n";
137 $sqldump .= "--\n\n";
138 $sqldump .= "-- --------------------------------------------------------\n\n";
139 while ($renee_s < $num) { $tnum = $num - 1;
140 $trow = GetAllRows($TableNames[$renee_s]);
141 $numz = count($trow); $kazuki_p = 0;
142 $sqldump .= "--\n";
143 $sqldump .= "-- Table structure for table \"".$TableNames[$renee_s]."\"\n";
144 $sqldump .= "--\n\n";
145 $sqldump .= $FullTable[$renee_s]."\n";
146 while ($kazuki_p < $numz) { $tnumz = $numz - 1;
147 $srow = null; $srowvalue = null;
148 $trownew = $trow[$kazuki_p];
149 $trowname = array_keys($trownew);
150 $nums = count($trownew); $il = 0;
151 while ($il < $nums) { $tnums = $nums - 1;
152 $trowrname = sql_escape_string($trowname[$il],$SQLStat);
153 $trowrvalue = sql_escape_string($trownew[$trowrname],$SQLStat);
154 if($_GET['outtype']=="UTF-8"&&$Settings['charset']!="UTF-8") {
155 $trowrvalue = utf8_encode($trowrvalue); }
156 $trowrvalue = str_replace( array("\n", "\r"), array('\n', '\r'), $trowrvalue);
157 if($il===0) { $srow = "INSERT INTO \"".$TableNames[$renee_s]."\" ("; }
158 if($il<$tnums&&$il!=$tnums) { $srow .= "\"".$trowrname."\", "; }
159 if($il==$tnums) { $srow .= "\"".$trowrname."\") VALUES"; }
160 if($il===0) { $srowvalue = "("; }
161 if(!is_numeric($trowrvalue)) { $trowrvalue = "'".$trowrvalue."'"; }
162 if($il<$tnums) { $srowvalue .= $trowrvalue.", "; }
163 if($il==$tnums) { $srowvalue .= $trowrvalue;
164 if($kazuki_p<$tnumz) { $srowvalue .= ");"; }
165 if($kazuki_p==$tnumz) { $srowvalue .= ");"; } }
166 ++$il; }
167 if($kazuki_p===0) {
168 $sqldump .= "--\n";
169 $sqldump .= "-- Dumping data for table \"".$TableNames[$renee_s]."\"\n";
170 $sqldump .= "--\n\n"; }
171 $sqldump .= $srow."\n";
172 $sqldump .= $srowvalue."\n";
173 if($kazuki_p==$tnumz&&$renee_s<$tnum) {
174 $sqldump .= "\n-- --------------------------------------------------------\n"; }
175 ++$kazuki_p; }
176 if($numz===0) {
177 $sqldump .= "--\n";
178 $sqldump .= "-- Dumping data for table \"".$TableNames[$renee_s]."\"\n";
179 $sqldump .= "--\n\n";
180 $sqldump .= "\n-- --------------------------------------------------------\n"; }
181 $sqldump .= "\n";
182 ++$renee_s; }
183 if($_GET['compress']=="none") { echo $sqldump; }
184 if($_GET['compress']=="gzencode") { echo gzencode($sqldump,$_GET['comlevel']); }
185 if($_GET['compress']=="gzcompress") { echo gzcompress($sqldump,$_GET['comlevel']); }
186 if($_GET['compress']=="gzdeflate") { echo gzdeflate($sqldump,$_GET['comlevel']); }
187 if($_GET['compress']=="bzcompress") { echo bzcompress($sqldump,$_GET['comlevel']); }
188 fix_amp($Settings['use_gzip'],$GZipEncode['Type']);
189 ?>