Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- defined('BASEPATH') or exit('No direct script access allowed');
- class Dump extends CI_Controller
- {
- public function index()
- {
- $this->load->dbutil();
- $tableList=$this->db->query("SELECT t.TABLE_NAME AS tablename FROM INFORMATION_SCHEMA.TABLES AS t WHERE t.TABLE_SCHEMA = 'database_name'")->result_array();
- if ($this->dbutil->database_exists('database_name'))
- {
- if(!empty($tableList)){
- $currentTime = date('Y-m-dH:i:s');
- $foldername = 'backup_'.$currentTime;
- $upload_path = APPPATH.'/cache/'.$foldername;
- if (!is_dir( $upload_path)) {
- mkdir( $upload_path, 0777, TRUE);
- }
- foreach ($tableList as $table) {
- $prefs = array(
- 'tables' => [$table['tablename']],
- 'format' => 'sql',
- 'add_drop' => TRUE,
- 'add_insert' => TRUE,
- 'newline' => "\n"
- );
- $backup = $this->dbutil->backup($prefs);
- $this->load->helper('file');
- write_file($upload_path.'/'.$table['tablename'].'.sql', $backup);
- }
- // Get real path for our folder
- // Initialize archive object
- $zip = new ZipArchive();
- $zip->open($upload_path.'.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
- // Create recursive directory iterator
- /** @var SplFileInfo[] $files */
- $files = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($upload_path),
- RecursiveIteratorIterator::LEAVES_ONLY
- );
- foreach ($files as $name => $file)
- {
- // Skip directories (they would be added automatically)
- if (!$file->isDir())
- {
- // Get real and relative path for current file
- $filePath = $file->getRealPath();
- $relativePath = substr($filePath, strlen($upload_path) + 1);
- // Add current file to archive
- $zip->addFile($filePath, $relativePath);
- }
- }
- // Zip archive will be created only after closing object
- $zip->close();
- $this->deleteDir($upload_path);
- $this->load->helper('download');
- $file_content = file_get_contents($upload_path.'.zip'); // Read the file's contents
- if(file_exists($upload_path.'.zip')){
- unlink($upload_path.'.zip');
- }
- force_download($foldername.'.zip', $file_content);
- }
- }
- }
- public function deleteDir($dirPath) {
- if (! is_dir($dirPath)) {
- throw new InvalidArgumentException("$dirPath must be a directory");
- }
- if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
- $dirPath .= '/';
- }
- $files = glob($dirPath . '*', GLOB_MARK);
- foreach ($files as $file) {
- if (is_dir($file)) {
- self::deleteDir($file);
- } else {
- unlink($file);
- }
- }
- rmdir($dirPath);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement