Browse Source

升级程序step1、step2

tags/6.2.0
tianya 1 year ago
parent
commit
e190f6f93b
5 changed files with 349 additions and 186 deletions
  1. +51
    -1
      src/admin/api.php
  2. +35
    -61
      src/admin/js/indexbody.js
  3. +257
    -122
      src/admin/templets/index_body.htm
  4. +3
    -2
      src/system/common.inc.php
  5. +3
    -0
      src/system/database/dedesqlite.class.php

+ 51
- 1
src/admin/api.php View File

@@ -4,7 +4,24 @@ define('DEDEADMIN', str_replace("\\", '/', dirname(__FILE__)));
require_once(DEDEADMIN.'/../system/common.inc.php');
require_once(DEDEINC.'/userlogin.class.php');
AjaxHead();
$action = isset($action) && in_array($action, array('is_need_check_code'))? $action : '';
$action = isset($action) && in_array($action, array('is_need_check_code','has_new_version','get_changed_files'))? $action : '';
/**
* 登录鉴权
*
* @return void
*/
function checkLogin()
{
$cuserLogin = new userLogin();
if ($cuserLogin->getUserID() <= 0 || $cuserLogin->getUserType() != 10) {
echo json_encode(array(
"code" => -1,
"msg" => "当前操作需要登录超级管理员账号",
"data" => null,
));
exit;
}
}
if ($action === 'is_need_check_code') {
$cuserLogin = new userLogin();
$isNeed = $cuserLogin->isNeedCheckCode($userid);
@@ -16,5 +33,38 @@ if ($action === 'is_need_check_code') {
),
));
exit;
} else if ($action === 'has_new_version'){
require_once(DEDEINC.'/libraries/dedehttpdown.class.php');
checkLogin();
//是否存在更新版本
$offUrl = DEDEBIZURL."/version?version={$cfg_version_detail}&formurl={$nurl}&phpver={$phpv}&os={$sp_os}&mysqlver={$mysql_ver}{$add_query}&json=1";
$dhd = new DedeHttpDown();
$dhd->OpenUrl($offUrl);
$data = $dhd->GetHtml();
echo $data;
} else if ($action === 'get_changed_files'){
require_once(DEDEINC.'/libraries/dedehttpdown.class.php');
checkLogin();
// 获取本地更改过的文件
$hashUrl = DEDEBIZCDN.'/release/'.$cfg_version_detail.'.json';
$dhd = new DedeHttpDown();
$dhd->OpenUrl($hashUrl);
$data = $dhd->GetJSON();
$changedFiles = array();
foreach ($data as $file) {
$realFile = DEDEROOT. str_replace("\\", '/', $file->filename);
if ( file_exists($realFile) && md5_file($realFile) !== $file->hash) {
$changedFiles[] = $file;
continue;
}
}
echo json_encode(array(
"code" => 0,
"msg" => "",
"data" => array(
"files" => $changedFiles,
),
));
exit;
}
?>

+ 35
- 61
src/admin/js/indexbody.js View File

@@ -29,7 +29,7 @@ function DedeCopyToClipboard(text) {
textarea.select();
document.execCommand('copy', true);
document.body.removeChild(textarea);
}
}
}
$(function () {
$.get("index_testenv.php", function (data) {
@@ -46,7 +46,7 @@ $(function () {
function copyFn() {
var val = document.getElementById('text');
window.getSelection().selectAllChildren(val);
document.execCommand ("Copy");
document.execCommand("Copy");
alert("环境配置信息已复制");
}
//Dedebiz info
@@ -106,40 +106,6 @@ function LoadServer() {
<td>如果您已购买商业版授权,可以在我们的授权中心查询到相信关授权信息,如果查询结果与实际授权不符,则说明您可能购买了非法商业授权,请及时与我们取得联系。</td>
</tr>
</table>

<table class="table table-borderless w-100">
<tr>
<td>您的后台已是最新软件版本</td>
</tr>
</table>
<table class="table table-borderless w-100">
<tr>
<td colspan="2">本更新提供了重要的安全性更新,建议所有用户升级,软件更新将覆盖以下文件,请做好备份。<a href="" class="btn btn-success btn-sm">下一步</a></td>
</tr>
<tr>
<td width="90">文件1:</td>
<td>.../system/database/1.php</td>
</tr>
<tr>
<td>文件2:</td>
<td>.../system/database/2.php</td>
</tr>
<tr>
<td>文件3:</td>
<td>.../system/database/3.php</td>
</tr>
</table>
<table class="table table-borderless w-100">
<tr>
<td>更新诊断出数据结构有问题,可能无法正常使用后台,是否尝试修复数据?</td>
</tr>
<tr>
<td>
<a href="" class="btn btn-success btn-sm">修复</a>
<a href="" class="btn btn-secondary btn-sm">取消</a>
</td>
</tr>
</table>
`);
}
});
@@ -161,25 +127,29 @@ Date.prototype.Format = function (fmt) { //author: meizz
}
function LoadStat() {
$.get("index_body.php?dopost=get_statistics", function (data) {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
var tpv = parseInt(rsp.result.pv);
var tuv = parseInt(rsp.result.uv);
var tip = parseInt(rsp.result.ip);
var tvv = parseInt(rsp.result.vv);
$("#today_pv").html(tpv);
$("#today_uv").html(tuv);
$("#today_ip").html(tip);
$("#today_vv").html(tvv);
$.get("index_body.php?dopost=get_statistics&sdate=-1", function (data) {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
$("#total_pv").html(parseInt(rsp.result.pv) + tpv);
$("#total_uv").html(parseInt(rsp.result.uv) + tuv);
$("#total_ip").html(parseInt(rsp.result.ip) + tip);
$("#total_vv").html(parseInt(rsp.result.vv) + tvv);
}
});
try {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
var tpv = parseInt(rsp.result.pv);
var tuv = parseInt(rsp.result.uv);
var tip = parseInt(rsp.result.ip);
var tvv = parseInt(rsp.result.vv);
$("#today_pv").html(tpv);
$("#today_uv").html(tuv);
$("#today_ip").html(tip);
$("#today_vv").html(tvv);
$.get("index_body.php?dopost=get_statistics&sdate=-1", function (data) {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
$("#total_pv").html(parseInt(rsp.result.pv) + tpv);
$("#total_uv").html(parseInt(rsp.result.uv) + tuv);
$("#total_ip").html(parseInt(rsp.result.ip) + tip);
$("#total_vv").html(parseInt(rsp.result.vv) + tvv);
}
});
}
} catch (error) {
console.log(error)
}
});
var d = new Date();
@@ -187,12 +157,16 @@ function LoadStat() {
var s = d.Format("yyyy-MM-dd");
s = s.replaceAll("-", "");
$.get("index_body.php?dopost=get_statistics&sdate=" + s, function (data) {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
$("#yestoday_pv").html(rsp.result.pv);
$("#yestoday_uv").html(rsp.result.uv);
$("#yestoday_ip").html(rsp.result.ip);
$("#yestoday_vv").html(rsp.result.vv);
try {
let rsp = JSON.parse(data);
if (rsp.code == 200) {
$("#yestoday_pv").html(rsp.result.pv);
$("#yestoday_uv").html(rsp.result.uv);
$("#yestoday_ip").html(rsp.result.ip);
$("#yestoday_vv").html(rsp.result.vv);
}
} catch (error) {
console.log(error)
}
});
}


+ 257
- 122
src/admin/templets/index_body.htm View File

@@ -1,137 +1,272 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<title>系统主页</title>
<base target="_self">
<link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css">
<link rel="stylesheet" href="../static/web/css/bootstrap.min.css">
<link rel="stylesheet" href="../static/web/css/admin.css">
<script>const cfg_biz_dedebizUrl = '<?php echo $cfg_biz_dedebizUrl;?>';const cfg_webname = '<?php echo $cfg_webname;?>';</script>
<script src="../static/web/js/jquery.min.js"></script>
<script src="../static/web/js/bootstrap.bundle.min.js"></script>
<script src="../static/web/js/webajax.js"></script>
<script src="../static/web/js/chart.min.js"></script>
<script src="js/indexbody.js"></script>
<script src="js/main.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div id="body-tips" class="col-md-12"></div>
<div class="col-md-12 my-3">
<div class="card">
<div class="card-header">
<a href="#statChart" title="查看流量统计图"><i class="fa fa-bar-chart"></i> 流量统计表</a>
</div>
<div class="card-body">
<table class="table">
<tbody>
<tr class="title">
<td width="20%" class="border-top-0"></td>
<td width="20%" class="border-top-0">浏览次数(PV)</td>
<td width="20%" class="border-top-0">独立访客(UV)</td>
<td width="20%" class="border-top-0">独立地址(IP)</td>
<td width="20%" class="border-top-0">访问次数(VV)</td>
</tr>
<tr class="bg-white">
<td class="today">今日</td>
<td class="today" id="today_pv">0</td>
<td class="today" id="today_uv">0</td>
<td class="today" id="today_ip">0</td>
<td class="today" id="today_vv">0</td>
</tr>
<tr class="bg-white">
<td>昨日</td>
<td id="yestoday_pv">0</td>
<td id="yestoday_uv">0</td>
<td id="yestoday_ip">0</td>
<td id="yestoday_vv">0</td>
</tr>
<tr class="bg-white">
<td>历史累计</td>
<td id="total_pv">0</td>
<td id="total_uv">0</td>
<td id="total_ip">0</td>
<td id="total_vv">0</td>
</tr>
</tbody>
</table>
</div>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<title>系统主页</title>
<base target="_self">
<link rel="stylesheet" href="../static/web/font/css/font-awesome.min.css">
<link rel="stylesheet" href="../static/web/css/bootstrap.min.css">
<link rel="stylesheet" href="../static/web/css/admin.css">
<script>const cfg_biz_dedebizUrl = '<?php echo $cfg_biz_dedebizUrl;?>'; const cfg_webname = '<?php echo $cfg_webname;?>';</script>
<script src="../static/web/js/jquery.min.js"></script>
<script src="../static/web/js/bootstrap.bundle.min.js"></script>
<script src="../static/web/js/webajax.js"></script>
<script src="../static/web/js/chart.min.js"></script>
<script src="js/indexbody.js"></script>
<script src="js/main.js"></script>
<style>
#btnUpdate,
#latestVersion {
display: none;
}
#btnUpdate {
cursor: pointer;
}
#_fileList{
height: 200px;
overflow-y: scroll;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div id="body-tips" class="col-md-12"></div>
<div class="col-md-12 my-3">
<div class="card">
<div class="card-header">
<a href="#statChart" title="查看流量统计图"><i class="fa fa-bar-chart"></i> 流量统计表</a>
</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header"><a href="javascript:copyFn()"><i class="fa fa-gear"></i> 系统信息</a>
<span id="text">软件:<?php echo $cfg_version_detail;?>|操作系统:<?php echo PHP_OS;?>|Web服务器:<?php echo $_SERVER['SERVER_SOFTWARE'];?>|PHP:<?php echo @phpversion();?>|数据库:<?php echo $dsql->GetVersion();?></span>
</div>
<div class="card-body">
<table class="table table-borderless">
<tr>
<td>
<div class="web-info">
<p>操作系统</p>
<span><?php echo PHP_OS;?></span>
</div>
</td>
<td>
<div class="web-info">
<p>Web服务器</p>
<span><?php echo $_SERVER['SERVER_SOFTWARE'];?></span>
</div>
</td>
<td>
<div class="web-info">
<p>服务器IP</p>
<span><?php echo gethostbyname($_SERVER['SERVER_NAME']);?></span>
</div>
</td>
<td>
<div class="web-info">
<p>PHP版本</p>
<span><?php echo @phpversion();?></span>
</div>
</td>
<td>
<div class="web-info">
<p>数据库版本</p>
<span><?php echo $dsql->GetVersion();?></span>
</div>
</td>
<div class="card-body">
<table class="table">
<tbody>
<tr class="title">
<td width="20%" class="border-top-0"></td>
<td width="20%" class="border-top-0">浏览次数(PV)</td>
<td width="20%" class="border-top-0">独立访客(UV)</td>
<td width="20%" class="border-top-0">独立地址(IP)</td>
<td width="20%" class="border-top-0">访问次数(VV)</td>
</tr>
<tr class="bg-white">
<td class="today">今日</td>
<td class="today" id="today_pv">0</td>
<td class="today" id="today_uv">0</td>
<td class="today" id="today_ip">0</td>
<td class="today" id="today_vv">0</td>
</tr>
<tr class="bg-white">
<td>昨日</td>
<td id="yestoday_pv">0</td>
<td id="yestoday_uv">0</td>
<td id="yestoday_ip">0</td>
<td id="yestoday_vv">0</td>
</tr>
</table>
</div>
<tr class="bg-white">
<td>历史累计</td>
<td id="total_pv">0</td>
<td id="total_uv">0</td>
<td id="total_ip">0</td>
<td id="total_vv">0</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<span><i class="fa fa-database"></i> 版本授权</span>
<a href="" class="float-right">软件更新<span class="admin-updates"></span></a>
</div>
<div class="card-body" id="system-info">正在加载</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header"><a href="javascript:copyFn()"><i class="fa fa-gear"></i> 系统信息</a>
<span id="text">软件:
<?php echo $cfg_version_detail;?>|操作系统:
<?php echo PHP_OS;?>|Web服务器:
<?php echo $_SERVER['SERVER_SOFTWARE'];?>|PHP:
<?php echo @phpversion();?>|数据库:
<?php echo $dsql->GetVersion();?>
</span>
</div>
<div class="card-body">
<table class="table table-borderless">
<tr>
<td>
<div class="web-info">
<p>操作系统</p>
<span>
<?php echo PHP_OS;?>
</span>
</div>
</td>
<td>
<div class="web-info">
<p>Web服务器</p>
<span>
<?php echo $_SERVER['SERVER_SOFTWARE'];?>
</span>
</div>
</td>
<td>
<div class="web-info">
<p>服务器IP</p>
<span>
<?php echo gethostbyname($_SERVER['SERVER_NAME']);?>
</span>
</div>
</td>
<td>
<div class="web-info">
<p>PHP版本</p>
<span>
<?php echo @phpversion();?>
</span>
</div>
</td>
<td>
<div class="web-info">
<p>数据库版本</p>
<span>
<?php echo $dsql->GetVersion();?>
</span>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<a name="statChart"><i class="fa fa-line-chart"></i> 流量统计图</a>
</div>
<div class="card-body">
<canvas id="statChart"></canvas>
</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<span><i class="fa fa-database"></i> 版本授权</span>
<a class="float-right" id="btnUpdate">软件更新<span class="admin-updates"></span></a>
<span id="latestVersion" class="float-right">已是最新软件版本</span>
</div>
<div class="card-body" id="system-info">正在加载</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<span><i class="fa fa-file-word-o"></i> 最新文档</span>
</div>
<div class="card-body" id="system-word">正在加载</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<a name="statChart"><i class="fa fa-line-chart"></i> 流量统计图</a>
</div>
<div class="card-body">
<canvas id="statChart"></canvas>
</div>
</div>
</div>
<div class="col-md-6 my-3">
<div class="card">
<div class="card-header">
<span><i class="fa fa-file-word-o"></i> 最新文档</span>
</div>
<div class="card-body" id="system-word">正在加载</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="mdlUpdate" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">软件更新</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<table id="stepArea1" class="table table-borderless w-100 stepArea">
<tr>
<td>
<div class="text-center text-success">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
<p id="step1Msg">正在比对系统更改的文件……</p>
</td>
</tr>
</table>
<table id="stepArea2" class="table table-borderless w-100 stepArea">
<tr>
<td colspan="2">本更新提供了重要的安全性更新,建议所有用户升级,软件更新将覆盖以下文件,请做好备份。</td>
</tr>
<tr>
<td colspan="2">
<div id="_fileList">...</div>
</td>
</tr>
</table>
<table id="stepArea3" class="table table-borderless w-100 stepArea">
<tr>
<td>更新诊断出数据结构有问题,可能无法正常使用后台,是否尝试修复数据?</td>
</tr>
</table>
</div>
<div class="modal-footer">
<div id="btnStep1" class="btnStep">
</div>
<div id="btnStep2" class="btnStep">
<button id="btnCancel" type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-outline-success">备份</button>
<button type="button" class="btn btn-success">下一步</button>
</div>
</div>
</div>
</div>
</body>
</div>
<script>
$(document).ready(function () {
var currentStep = 1; //步骤
//显示步骤区域
function showStepArea(step) {
$(".stepArea").hide();
$(".btnStep").hide();
$("#stepArea"+step).show();
$("#btnStep"+step).show();
}
$.get("api.php?action=has_new_version", function (data) {
let rs = JSON.parse(data);
if (rs.code === 0) {
if (rs.result.HasNew === true) {
$("#btnUpdate").show();
$("#latestVersion").hide();
} else {
$("#btnUpdate").hide();
$("#latestVersion").show();
}
}
console.log(rs);
})
$("#btnCancel").click(function () {
currentStep = 1;
$("#_fileList").html(``);
})
$("#btnUpdate").click(function () {
$('#mdlUpdate').modal('show');
showStepArea(currentStep);
currentStep++;
$.get("api.php?action=get_changed_files", function (data) {
let rs = JSON.parse(data);
if (rs.code === 0) {
let fstr = '<ul class="list-group list-group-flush">';
let i = 1;
rs.data.files.forEach(file => {
console.log(file);
fstr += `<li class='list-group-item'>第${i}个文件:..\\${file['filename']}</li>`;
i++;
});
fstr += '</ul>';
$("#_fileList").html(fstr);
showStepArea(currentStep);
}
})
})
})
</script>
</body>
</html>

+ 3
- 2
src/system/common.inc.php View File

@@ -37,7 +37,8 @@ define('DEDEDATA', substr(DEDEINC, 0, -6).'data');
define('DEDESTATIC', DEDEROOT.'/static');
define('DEDEMEMBER', DEDEROOT.'/user');
define('DEDETEMPLATE', DEDEROOT.'/theme');
define('DEDEBIZURL', "https://www.dedebiz.com");//DedeBiz商业支持
define('DEDEBIZURL', "http://127.0.0.1:8898");//DedeBiz商业支持
define('DEDEBIZCDN', "https://cdn.dedebiz.com");//DedeBizCDN镜像
define('DEDEVER', 6);//当前系统大版本
define('DEDEPUB', '
-----BEGIN PUBLIC KEY-----
@@ -186,7 +187,7 @@ $cfg_soft_dir = $cfg_medias_dir.'/soft';
$cfg_other_medias = $cfg_medias_dir.'/media';
//软件摘要信息,请不要删除,否则系统无法正确接收系统漏洞或升级信息
$cfg_version = 'V6';
$cfg_version_detail = '6.2.0'; //详细版本号
$cfg_version_detail = '6.0.0'; //详细版本号
$cfg_soft_lang = 'utf-8';
$cfg_soft_public = 'base';
$cfg_softname = '得得系统';


+ 3
- 0
src/system/database/dedesqlite.class.php View File

@@ -182,6 +182,9 @@ class DedeSqlite
if ($this->safeCheck) CheckSql($this->queryString, 'update');
$t1 = ExecTime();
$rs = $this->linkID->exec($this->queryString);
if ($rs === false) {
var_dump_cli("Error in fetch ".$this->linkID->lastErrorMsg().",SQL:{$this->queryString}");
}
//查询性能测试
if ($this->recordLog) {
$queryTime = ExecTime() - $t1;


Loading…
Cancel
Save