/** * db backup into file $files_dir . "/db_backup" * @return boolean */ function dump_database() { global $files_dir; $dir = $files_dir . "/db_backup"; if (!file_exists($dir)) { mkdir($dir, 0700, true); } if (!is_writable($dir)) { addErrorMessage(t('permission.denied.write.dir', "<i>{$dir}</i>")); } else { if (!file_exists($dir . "/.htaccess")) { $handle = fopen($dir . "/.htaccess", 'w+'); fwrite($handle, "Deny from all"); fclose($handle); } $tables = array(); $res = db_query('SHOW TABLES'); foreach ($res as $row) { $table = ""; foreach ($row as $key => $val) { $table = $val; break; } if (isCTDBTable($table)) { $tables[] = $table; } } $return = ""; $dt = new DateTime(); $filename = $dir . '/db-backup-' . $dt->format('YmdHi') . '-' . md5(implode(',', $tables)) . '.sql'; $handle = fopen($filename, 'w+'); foreach ($tables as $table) { $return .= 'DROP TABLE IF EXISTS ' . $table . ';'; $row2 = db_query('SHOW CREATE TABLE ' . $table)->fetch(); $row2 = (array) $row2; $return .= "\n" . $row2["Create Table"] . ";\n\n"; $result = db_query('SELECT * FROM ' . $table); foreach ($result as $content) { $return .= 'INSERT INTO ' . $table . ' VALUES('; $arr = array(); foreach ($content as $key => $val) { if (!isset($val)) { $val = "NULL"; } else { $val = '"' . addslashes($val) . '"'; } $arr[] = $val; } $return .= implode(",", $arr) . ");\n"; } $return .= "\n\n\n"; fwrite($handle, $return); $return = ""; } // save file fclose($handle); $zip = new ZipArchive(); if ($zip->open($dir . '/db-backup-' . $dt->format('YmdHi') . '.zip', ZIPARCHIVE::OVERWRITE) !== true) { return false; } $zip->addFile($filename); $zip->close(); unlink($filename); // delete files older then 30 days if ($handle = opendir($dir)) { $now = new DateTime(); while (false !== ($file = readdir($handle))) { if (preg_match('/\\.sql|zip$/i', $file)) { $date = DateTime::createFromFormat('YmdHi', substr($file, 10, strpos($file, ".") - 10)); if ($date != null) { $interval = $date->diff($now); if ($interval->format('%a') > 30) { unlink($dir . "/" . $file); } } } } } } }
public function getImportTables($params) { $this->checkPerm("edit masterdata"); $db = db_query('show tables'); $arr = array(); foreach ($db as $table) { foreach ($table as $row) { if (!isCTDBTable($row)) { $arr[$row] = array("id" => $row, "bezeichnung" => $row); } } } return $arr; }