40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
|
|
class DownloadDB extends BaseController
|
|
{
|
|
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
|
{
|
|
parent::initController($request, $response, $logger);
|
|
|
|
if (!defined('AUTHENTICATED') || AUTHENTICATED === false) {
|
|
die('NO ACCESS');
|
|
}
|
|
}
|
|
|
|
public function index(): ResponseInterface
|
|
{
|
|
$db = \Config\Database::connect();
|
|
$dbutil = \Config\Database::utils();
|
|
|
|
$filename = "backupDBOIS_" . date('YmdHis');
|
|
|
|
$prefs = [
|
|
'tables' => [], // Array of tables to backup
|
|
'ignore' => [], // List of tables to omit from the backup
|
|
'format' => '', // gzip, zip, txt
|
|
'filename' => null, // File name - NEEDED ONLY WITH ZIP FILES
|
|
'add_drop' => true, // Whether to add DROP TABLE statements to backup file
|
|
'add_insert' => true, // Whether to add INSERT data to backup file
|
|
'newline' => "\n" // Newline character used in backup file
|
|
];
|
|
|
|
$backup = $dbutil->backup($prefs);
|
|
|
|
return $this->response->download($filename . '.sql', $backup);
|
|
}
|
|
}
|