aboutsummaryrefslogtreecommitdiffstats
path: root/public/admin/model/tool/backup.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/admin/model/tool/backup.php')
-rw-r--r--public/admin/model/tool/backup.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/public/admin/model/tool/backup.php b/public/admin/model/tool/backup.php
new file mode 100644
index 0000000..d8be774
--- /dev/null
+++ b/public/admin/model/tool/backup.php
@@ -0,0 +1,68 @@
+<?php
+class ModelToolBackup extends Model {
+ public function getTables() {
+ $table_data = array();
+
+ $query = $this->db->query("SHOW TABLES FROM `" . DB_DATABASE . "`");
+
+ foreach ($query->rows as $result) {
+ if (utf8_substr($result['Tables_in_' . DB_DATABASE], 0, strlen(DB_PREFIX)) == DB_PREFIX) {
+ if (isset($result['Tables_in_' . DB_DATABASE])) {
+ $table_data[] = $result['Tables_in_' . DB_DATABASE];
+ }
+ }
+ }
+
+ return $table_data;
+ }
+
+ public function backup($tables) {
+ $output = '';
+
+ foreach ($tables as $table) {
+ if (DB_PREFIX) {
+ if (strpos($table, DB_PREFIX) === false) {
+ $status = false;
+ } else {
+ $status = true;
+ }
+ } else {
+ $status = true;
+ }
+
+ if ($status) {
+ $output .= 'TRUNCATE TABLE `' . $table . '`;' . "\n\n";
+
+ $query = $this->db->query("SELECT * FROM `" . $table . "`");
+
+ foreach ($query->rows as $result) {
+ $fields = '';
+
+ foreach (array_keys($result) as $value) {
+ $fields .= '`' . $value . '`, ';
+ }
+
+ $values = '';
+
+ foreach (array_values($result) as $value) {
+ $value = str_replace(array("\x00", "\x0a", "\x0d", "\x1a"), array('\0', '\n', '\r', '\Z'), $value);
+ $value = str_replace(array("\n", "\r", "\t"), array('\n', '\r', '\t'), $value);
+ $value = str_replace('\\', '\\\\', $value);
+ $value = str_replace('\'', '\\\'', $value);
+ $value = str_replace('\\\n', '\n', $value);
+ $value = str_replace('\\\r', '\r', $value);
+ $value = str_replace('\\\t', '\t', $value);
+
+ $values .= '\'' . $value . '\', ';
+ }
+
+ $output .= 'INSERT INTO `' . $table . '` (' . preg_replace('/, $/', '', $fields) . ') VALUES (' . preg_replace('/, $/', '', $values) . ');' . "\n";
+ }
+
+ $output .= "\n\n";
+ }
+ }
+
+ return $output;
+ }
+} \ No newline at end of file