diff options
author | Jesús <heckyel@hyperbola.info> | 2019-08-18 21:14:58 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2019-08-18 21:14:58 -0500 |
commit | 2eed7b082f83630301e51f57ca8394de228a8605 (patch) | |
tree | 1d19962d22d30f99317d9276e4bae7744fc93fc2 /public/admin/model/tool/backup.php | |
download | librecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.lz librecart-2eed7b082f83630301e51f57ca8394de228a8605.tar.xz librecart-2eed7b082f83630301e51f57ca8394de228a8605.zip |
first commit
Diffstat (limited to 'public/admin/model/tool/backup.php')
-rw-r--r-- | public/admin/model/tool/backup.php | 68 |
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 |