Example #1
0
 /**
  * 将当天之前的数据归档到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;
 }
Example #2
0
 /**
  * 将所有配置恢复到默认
  * @since 1
  * @return boolean
  */
 public function return_default_all()
 {
     $sql = 'UPDATE `' . $this->table_name . '` SET `config_value` = `config_default`';
     return $this->db->exec($sql);
 }
Example #3
0
/**
 * 还原备份
 * @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;
}