初始版本

This commit is contained in:
2026-04-19 01:39:41 +08:00
commit 2b4d3e9880
1272 changed files with 389959 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Backup extends CI_Controller {
public function __construct(){
parent::__construct();
$this->common_model->checkpurview();
$this->load->helper(array('directory','download'));
$this->backup_path = $this->config->item('backup_path');
$this->filename = str_no().'.sql';
}
//备份
public function index(){
$this->load->dbutil();
$query = $this->db->query('SHOW TABLE STATUS');
$prefs = array(
'tables' => array_column($query->result_array(),'Name'),
'ignore' => array(),
'format' => 'txt',
'filename' => $this->filename,
'add_drop' => TRUE,
'add_insert' => TRUE,
'newline' => "\n"
);
$info = &$this->dbutil->backup($prefs);
$path = $this->backup_path.$this->filename;
$this->create_folders($this->backup_path);//add my michen 20170818
if (write_file($path, $info)) {
$this->common_model->logs('备份与恢复,备份文件名:'.$this->filename);
$data['createTime'] = date('Y-m-d H:i:s');
$data['username'] = $this->filename;
$data['filename'] = $this->filename;
$data['dbid'] = 0;
$data['fid'] = $this->filename;
$data['size'] = filesize($path);
str_alert(200,'success',$data);
}
str_alert(-1,'文件写入失败');
}
//备份列表
public function queryBackupFile(){
$v = array();
$list = get_dir_file_info($this->backup_path);
$data['status'] = 200;
$data['msg'] = 'success';
$i = 0;
count($list)<1 && str_alert(250,'暂无查询结果');
foreach ($list as $arr=>$row) {
$v[$i]['fid'] = $row['name'];
$v[$i]['createTime'] = date("Y-m-d H:i:s", $row['date']);
$v[$i]['username'] = $row['date'];
$v[$i]['filename'] = $row['name'];
$v[$i]['dbid'] = 0;
$v[$i]['size'] = $row['size'];
$i++;
}
$data['data']['items'] = $v;
$data['totalsize'] = 1;
die(json_encode($data));
}
//删除
public function deleteBackupFile(){
$data['id'] = str_enhtml($this->input->get_post('id',TRUE));
if (@unlink($this->backup_path.$data['id'])) {
$this->common_model->logs('备份与恢复,删除文件名:'.$data['id']);
str_alert(200,'删除成功',$data);
} else {
str_alert(-1,'删除失败');
}
}
//还原
public function recover(){
$id = str_enhtml($this->input->get_post('id',TRUE));
$data = read_file($this->backup_path.$id);
if ($data) {
$this->db->trans_begin();
$list = explode(";\n",$data);
foreach ($list as $sql) {
//add by michen 20170723 for 修复恢复 begin
if(strrpos($sql, '#',0)!=false)
$msql = substr($sql, strrpos($sql, '#',0)+1);
else
$msql=$sql;
$msql = trim($msql);
if(!empty($msql))//只要empty没有isempty且只能检测变量不能检测函数
//add by michen 20170723 for 修复恢复 end
$this->db->query($msql);
}
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
str_alert(-1,'恢复失败');
} else {
$this->db->trans_commit();
$this->common_model->logs('备份与恢复,恢复文件名:'.$id);
str_alert(200,'恢复成功');
}
}
str_alert(-1,'恢复失败');
}
//下载
public function download() {
$fid = str_enhtml($this->input->get_post('fid',TRUE));
$data = read_file($this->backup_path.$fid);
if ($data) {
$this->common_model->logs('备份与恢复,下载文件名:'.$fid);
force_download($fid, $data);
} else {
str_alert(-1,'下载失败');
}
}
function create_folders($dir) {
return is_dir($dir) or ($this->create_folders(dirname($dir)) and mkdir($dir, 0777));
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */