· 7 years ago · Jan 26, 2019, 07:48 PM
1<?php
2
3 include_once("../../GameEngine/config.php");
4
5 include_once("../../GameEngine/Database.php");
6
7
8
9 if (!isset($_SESSION)) {
10
11 session_start();
12
13 }
14
15 if($_SESSION['access'] != ADMIN) die("<h1><font color="red">Access Denied: You are not Admin!</font></h1>");
16
17 set_time_limit(0);
18
19 // TODO: truncate ALL tables (in a single query, not like this),
20
21 // then perform install steps (createDbStructure() && populateWorldData())
22
23 // .. no need for updates and inserts here, as that would keep autoincrements high
24
25 // and one nice day, after 100th reset, there will be no more integers to go for
26
27 // and the whole game would be screwed :P
28
29 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."a2b");
30
31 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."abdata");
32
33 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."activate");
34
35 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."active");
36
37 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."admin_log");
38
39 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."alidata");
40
41 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."ali_invite");
42
43 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."ali_log");
44
45 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."ali_permission");
46
47 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."allimedal");
48
49 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."artefacts");
50
51 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."attacks");
52
53 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."banlist");
54
55 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."bdata");
56
57 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."build_log");
58
59 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."chat");
60
61 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."config");
62
63 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."deleting");
64
65 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."demolition");
66
67 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."diplomacy");
68
69 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."enforcement");
70
71 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."farmlist");
72
73 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."fdata");
74
75 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."forum_cat");
76
77 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."forum_edit");
78
79 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."forum_post");
80
81 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."forum_survey");
82
83 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."forum_topic");
84
85 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."general");
86
87 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."gold_fin_log");
88
89 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."hero");
90
91 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."illegal_log");
92
93 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."links");
94
95 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."login_log");
96
97 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."market");
98
99 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."market_log");
100
101 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."mdata");
102
103 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."medal");
104
105 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."movement");
106
107 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."ndata");
108
109 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."odata");
110
111 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."online");
112
113 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."password");
114
115 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."prisoners");
116
117 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."raidlist");
118
119 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."research");
120
121 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."route");
122
123 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."send");
124
125 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."tdata");
126
127 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."tech_log");
128
129 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."training");
130
131 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."units");
132
133 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."wdata");
134
135 mysqli_query($GLOBALS["link"], "DROP TABLE ".s8_."ww_attacks");
136
137
138header("Location: ../admin.php?p=resetdone");
139
140?>
141
142<?php
143class GestionDB{
144 private $datos = array(
145 "host" => "localhost",
146 "user" => "username",
147 "pass" => "password"
148 );
149 private $dbe = ["information_schema","mysql","performance_schema","phpmyadmin"];
150 private $dbs;
151 private static $_mysqli;
152 private static $instancia;
153 private function __construct(){
154 try{
155 self::$_mysqli = new mysqli($this->datos['host'],$this->datos['user'], $this->datos['pass']);
156
157 if (self::$_mysqli->connect_error) {
158 throw new Exception('Connect Error ' . self::$_mysqli->connect_errno . ': ' . self::$_mysqli->connect_error, self::$_mysqli->connect_errno);
159 }
160 }catch(MysqliEXception $e){}
161 }
162 public static function getDB(){
163 if (!isset(self::$instancia)) {
164 $miclase = __CLASS__;
165 self::$instancia = new $miclase;
166 }
167 return self::$instancia;
168 }
169 public function CS($sql){
170 $consulta = self::$_mysqli->query($sql);
171
172 if (!$consulta)
173 die(self::$_mysqli->error);
174 return true;
175 }
176 public function CM($sql){
177 $consulta = self::$_mysqli->multi_query($sql);
178 if(!$consulta)
179 die(self::$_mysqli->error);
180 return true;
181 }
182 public function CR($sql){
183 $consulta = self::$_mysqli->prepare($sql);
184 if (!$consulta)
185 die(self::$_mysqli->error);
186 if ($consulta->execute())
187 return $consulta->get_result();
188 else
189 die(self::$_mysqli->error);
190 $consulta->close();
191 }
192 public function Restore($sqlfilename){
193 self::CD($sqlfilename);
194 // si todo va bien leemos el archivo
195 $sql = file_get_contents($sqlfilename);
196 return self::CM($sql);
197 }
198 public function CD($file){
199 // validamos que exista el archivo
200
201 if (!file_exists($file)) {
202 die("no existe la ruta o el archivo");
203 }
204 // validamos que sea legible
205 if (!is_readable($file)) {
206 die("no se puede leer la ruta o el archivo!");
207 }
208 return true;
209 }
210 public function DropDB(){
211 foreach ($this->dbs as $db) {
212 self::CS('DROP DATABASE '.$db.";");
213 }
214 return true;
215 }
216 public function Backup($sqlfilename=false,$dbs = '*'){
217
218 $return="";
219 if($sqlfilename == false){
220 $sqlfilename = "dumpsql-".date('ymd').".sql";
221 }
222 //all tables
223 if($dbs == '*'){
224 $dbs = array();
225 $result = self::CR('SHOW DATABASES');
226 while($row = $result->fetch_row()){
227 if(!in_array($row[0], $this->dbe))
228 $dbs[] = $row[0];
229 }
230 }
231 else{
232 $dbs = is_array($dbs) ? $dbs : explode(',',$dbs);
233 }
234 $this->dbs=$dbs;
235 foreach($dbs as $db){
236 $tables = array();
237 $result = self::CR('SHOW CREATE DATABASE '.$db);
238 $row = $result->fetch_row();
239 $return.= "CREATE DATABASE IF NOT EXISTS ". $db.";n";
240 $return.= "USE ". $db.";n";
241 $result = self::CR('SHOW TABLES IN '.$db);
242 while($row = $result->fetch_row()){
243 $tables[]= $row[0];
244 }
245 foreach($tables as $table){
246 $result = self::CR('SELECT * FROM '. $db. '.'.$table);
247 $num_fields = $result->field_count;
248
249 $return.= 'DROP TABLE IF EXISTS '.$db.'.'.$table.';';
250 $qr=self::CR('SHOW CREATE TABLE '.$db.'.'.$table);
251 $row2 = $qr->fetch_row();
252 $return.= "nn".$row2[1].";nn";
253
254 for ($i = 0; $i < $num_fields; $i++) {
255 while($row = $result->fetch_row()){
256 $return.= 'INSERT INTO '.$db.'.'.$table.' VALUES(';
257 for($j=0; $j < $num_fields; $j++) {
258 $row[$j] = addslashes($row[$j]);
259 $row[$j] = preg_replace("#n#","\n",$row[$j]);
260 if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
261 if ($j < ($num_fields-1)) { $return.= ','; }
262 }
263 $return.= ");n";
264 }
265 }
266 $return.="nnn";
267 }
268 }
269 //save file
270 $handle = fopen($sqlfilename,'w+');
271 fwrite($handle,$return);
272 fclose($handle);
273 return true;
274 }
275 public function __destruct(){
276 self::$_mysqli->close();
277 }
278 }
279$conn = GestionDB::getDB();
280if($conn->Backup()){
281 echo "backup creado!<br>";
282}
283if($conn->DropDB()){
284 echo "databases eliminadas!<br>";
285}
286if( $conn->Restore("dumpsql-190126.sql")){
287 echo "databases recreadas!<br>";
288}
289?>