/** * 将当天之前的数据归档到logs文件夹 * @since 2 * @param string $log_dir 日志保存目录路径 * @return boolean */ public function files($log_dir) { $re = false; $sql = 'SELECT `id`,`log_date`,`log_ip`,`log_message` FROM `' . $this->table_name . '` ORDER BY `log_date` ASC LIMIT ?,30'; $sth = $this->db->prepare($sql); $limit_page = 0; //遍历数据表,将记录按照时间顺序保存到文件 do { $sth->bindParam(1, $limit_page, PDO::PARAM_INT); $sth->execute(); $res = $sth->fetchAll(PDO::FETCH_ASSOC); if (is_array($res) && count($res) > 0) { foreach ($res as $k => $v) { $date_ym = substr($v['log_date'], 0, 4) . substr($v['log_date'], 5, 2); $date_d = substr($v['log_date'], 8, 2); $log_file_dir = $log_dir . DS . $date_ym; if (core_file::new_dir($log_file_dir) == false) { return $re; } $log_file = $log_file_dir . DS . $date_d . '.log'; $log_message = $v['log_date'] . "\t" . $v['log_ip'] . "\t" . $v['log_message'] . "\r\n"; if (core_file::edit_file($log_file, $log_message, true) == false) { return $re; } } } $limit_page++; } while (is_array($res) && count($res) > 0); //清空日志数据表 $sql_trash = 'TRUNCATE TABLE `' . $this->table_name . '`'; if ($this->db->exec($sql_trash) == true) { $re = true; } return $re; }
/** * 将所有配置恢复到默认 * @since 1 * @return boolean */ public function return_default_all() { $sql = 'UPDATE `' . $this->table_name . '` SET `config_value` = `config_default`'; return $this->db->exec($sql); }
/** * 还原备份 * @since 2 * @param coredb $db * @param string $backup_file 备份的文件路径 * @return boolean */ function plugbackup_return(&$db, $backup_file, $return_dir, $content_dir) { $return = false; //清空return目录所有文件夹 $dir_list = corefile::list_dir($return_dir, '*', GLOB_ONLYDIR); if ($dir_list) { foreach ($dir_list as $v) { $v_src = basename($v); $return = corefile::delete_dir($v); if ($return == false) { return $return; } } } else { $return = true; } //解压备份文件到return目录 if ($return == true) { $return = corefile::extract_zip($backup_file, $return_dir); } //获取临时文件夹路径 $ls_dir = ''; if ($return == true) { $dir_list = corefile::list_dir($return_dir, '*', GLOB_ONLYDIR); if ($dir_list) { $ls_dir = $dir_list[0]; } } //检查数据是否正确 if ($return == true) { $v_dirs = array($ls_dir . DS . 'content', $ls_dir . DS . 'sql', $ls_dir . DS . 'content' . DS . 'files', $ls_dir . DS . 'content' . DS . 'logs'); foreach ($v_dirs as $v) { if (corefile::is_dir($v) == false) { $return = false; break; } } foreach ($db->tables as $v) { if (corefile::is_dir($v_dirs[1] . DS . $v) == false) { $return = false; break; } } } //删除现有数据 if ($return == true) { if (corefile::delete_dir($content_dir . DS . 'files') == true && corefile::delete_dir($content_dir . DS . 'logs') == true) { $return = true; } else { $return = false; } } //拷贝备份数据 if ($return == true) { if (corefile::copy_dir($ls_dir . DS . 'content' . DS . 'files', $content_dir . DS . 'files') == true && corefile::copy_dir($ls_dir . DS . 'content' . DS . 'logs', $content_dir . DS . 'logs') == true) { $return = true; } else { $return = false; } } //清空所有表 if ($return == true) { $sql = 'TRUNCATE '; foreach ($db->tables as $v) { if ($db->exec($sql . $v) === false) { $return = false; break; } } } //根据文件次序执行sql if ($return == true) { foreach ($db->tables as $v) { $v_table_dir = $ls_dir . DS . 'sql' . DS . $v; $dir_list = corefile::list_dir($v_table_dir, '*.sql'); if ($dir_list) { foreach ($dir_list as $v_i) { $i_content = corefile::read_file($v_i); if ($db->exec($i_content) === false) { $return = false; break; } $i_content = null; } } } } //删除临时文件夹 if ($return == true) { $return = corefile::delete_dir($ls_dir); } return $return; }