diff --git a/src/admin/archives_do.php b/src/admin/archives_do.php
index c20860ad..8fdb41f7 100644
--- a/src/admin/archives_do.php
+++ b/src/admin/archives_do.php
@@ -227,7 +227,11 @@ else if ($dopost == "checkArchives") {
while ($row = $dsql->GetArray('ckall')) {
$aid = $row['id'];
$maintable = (trim($row['maintable']) == '' ? '#@__archives' : trim($row['maintable']));
- $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET arcrank='0' WHERE id='$aid' ");
+ $indexedsql = "";
+ if (TableHasField("#@__arctiny", "indexed")) {
+ $indexedsql = ", `indexed`=2 ";
+ }
+ $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET arcrank='0'{$indexedsql} WHERE id='$aid' ");
if ($row['issystem'] == -1) {
$dsql->ExecuteNoneQuery("UPDATE `".trim($row['addtable'])."` SET arcrank='0' WHERE aid='$aid' ");
} else {
@@ -235,6 +239,7 @@ else if ($dopost == "checkArchives") {
}
$dsql->ExecuteNoneQuery("UPDATE `#@__taglist` SET arcrank='0' WHERE aid='$aid' ");
$pageurl = MakeArt($aid, false);
+ DedeSearchDo("add", array("id" => $aid));
}
ShowMsg("成功审核指定文档", $ENV_GOBACK_URL);
exit();
@@ -319,6 +324,7 @@ else if ($dopost == "checkArchives") {
//更新网页
foreach ($okids as $aid) {
$arc = new Archives($aid);
+ DedeSearchDo("update", array("id" => $aid));
$arc->MakeHtml();
}
ShowMsg("成功移动".$j."个文档", $ENV_GOBACK_URL);
@@ -340,6 +346,7 @@ else if ($dopost == 'return') {
foreach ($qstrs as $aid) {
$dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET arcrank='-1',ismake='0' WHERE id='$aid'");
$dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET `arcrank` = '-1' WHERE id = '$aid';");
+ DedeSearchDo("add", array("id" => $aid));
}
ShowMsg("成功还原指定文档", "recycling.php");
exit();
diff --git a/src/admin/inc/inc_batchup.php b/src/admin/inc/inc_batchup.php
index 2d8d8932..3ab12731 100644
--- a/src/admin/inc/inc_batchup.php
+++ b/src/admin/inc/inc_batchup.php
@@ -97,6 +97,9 @@ function DelArc($aid, $type = 'ON', $onlyfile = FALSE, $recycle = 0)
$intime = time();
$insql = "INSERT INTO `#@__search_sync` (`aid`, `add_at`) VALUES ({$aid}, $intime)";
$dsql->ExecuteNoneQuery($insql);
+ if (DEDEBIZSEARCH) {
+ DedeSearchDo("delete",array('id'=>$aid));
+ }
}
if (empty($arcRow['money'])) $arcRow['money'] = 0;
if (empty($arcRow['ismake'])) $arcRow['ismake'] = 1;
diff --git a/src/admin/sys_safetest.php b/src/admin/sys_safetest.php
index ff7bef75..1158ead6 100644
--- a/src/admin/sys_safetest.php
+++ b/src/admin/sys_safetest.php
@@ -19,7 +19,7 @@ $del = new DedeHttpDown();
$del->OpenUrl($fileHashURL);
$filelist = $del->GetJSON();
$offFiles = array();
-foreach ($filelist as $key => $ff) {
+foreach ((array)$filelist as $key => $ff) {
$offFiles[$ff->filename] = $ff->hash;
}
$alter = '';
diff --git a/src/admin/templets/sys_info.htm b/src/admin/templets/sys_info.htm
index 21cc6422..ea4a451f 100644
--- a/src/admin/templets/sys_info.htm
+++ b/src/admin/templets/sys_info.htm
@@ -55,10 +55,10 @@
变量说明 |
|
- 变量值 |
- |
变量名称 |
|
+ 变量值 |
+ |
变量类型 |
@@ -67,6 +67,7 @@
+
变量所属 |
@@ -139,6 +140,13 @@
echo "";
} else if ($row['type']=='number') {
echo "";
+ } else if ($row['type']=='img') {
+ echo " ";
+ if ($row['value']) {
+ echo " ";
+ } else {
+ echo " ";
+ }
} else {
$addstr='';
if ($row['varname']=='cfg_cookie_encode') {
diff --git a/src/system/common.func.php b/src/system/common.func.php
index f5d32c8e..10d190fb 100755
--- a/src/system/common.func.php
+++ b/src/system/common.func.php
@@ -607,6 +607,99 @@ function GetMimeTypeOrExtension($str, $t = 0) {
return "dedebiz";
}
}
+// 用于实际请求接口并返回处理结果
+function DedeSearchDo($action, $parms=array()) {
+ if ($action === 'update') {
+ DedeSearchDo('delete', $parms);
+ return DedeSearchDo('add', $parms);
+ }
+ // 生成完整请求 URL
+ $url = DedeSearchAPIURL($action, $parms);
+
+ // 初始化 cURL
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url); // 设置请求 URL
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回结果而不是直接输出
+ curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间(秒)
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); // 设置连接超时(秒)
+ curl_setopt($ch, CURLOPT_USERAGENT, 'DedeSearchAPI/1.0'); // 设置 User-Agent
+
+ // 执行请求
+ $response = curl_exec($ch);
+
+ // 获取 HTTP 状态码和错误信息
+ $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ $curlError = curl_error($ch);
+
+ // 关闭 cURL 资源
+ curl_close($ch);
+
+ // 处理 HTTP 错误
+ if ($response === false || $httpCode !== 200) {
+ return array(
+ 'code' => -1,
+ 'message' => $curlError ?: "HTTP Error: $httpCode",
+ 'data' => null,
+ );
+ }
+
+ // 解析返回的 JSON 数据
+ $result = json_decode($response, true);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ return array(
+ 'code' => -2,
+ 'message' => 'Invalid JSON response',
+ 'data' => null,
+ );
+ }
+
+ // 检查返回的业务逻辑中的 code
+ if (!isset($result['code']) || $result['code'] !== 0) {
+ return array(
+ 'code' => $result['code'] ?? -3,
+ 'message' => $result['message'] ?? 'Unknown error',
+ 'data' => null,
+ );
+ }
+
+ // 返回成功结果
+ return array(
+ 'code' => 0,
+ 'message' => 'Success',
+ 'data' => $result['data'] ?? null,
+ );
+}
+// 获取接口地址
+function DedeSearchAPIURL($action, $parms=array())
+{
+ $baseUrl = DEDEBIZSEARCHHOST."/api/$action"; // 替换为实际的 API 地址
+
+ // 添加公共参数
+ $timestamp = time(); // 当前时间戳
+ $parms['timestamp'] = $timestamp;
+ $parms['pageSize'] = isset($parms['pageSize'])? $parms['pageSize']:10;
+ $parms['page'] = isset($parms['page'])? $parms['page']:1;
+ $parms['q'] = isset($parms['q'])? $parms['q']:"";
+ if ($action == "delete" || $action == "add") {
+ $parms['pageSize'] = 0;
+ $parms['page'] = 0;
+ $parms['q'] = isset($parms['id'])? $parms['id']:"";
+ }
+
+ // 生成签名字符串
+ $signBaseString = "key=" . DEDEBIZSEARCHKEY . "&q=".$parms['q']. "&pageSize=".$parms['pageSize']. "&page=".$parms['page']. "×tamp=".$parms['timestamp'];
+ $parms['sign'] = md5($signBaseString); // 使用 MD5 生成签名
+ if ($action == "delete" || $action == "add") {
+ unset($parms['q']);
+ unset($parms['pageSize']);
+ unset($parms['page']);
+ }
+ // 拼接完整 URL
+ $finalQueryString = http_build_query($parms);
+ $finalUrl = $baseUrl . '?' . $finalQueryString;
+
+ return $finalUrl;
+}
//自定义函数接口
if (file_exists(DEDEINC.'/extend.func.php')) {
require_once(DEDEINC.'/extend.func.php');
diff --git a/src/system/common.inc.php b/src/system/common.inc.php
index 153c4848..e8eebe07 100755
--- a/src/system/common.inc.php
+++ b/src/system/common.inc.php
@@ -51,6 +51,9 @@ PwIDAQAB
-----END PUBLIC KEY-----
');//DedeBIZ系统公钥
define('DEDECDNURL', 'https://cdn.dedebiz.com');//默认静态资源地址
+define('DEDEBIZSEARCH', FALSE);//是否启用DedeBIZ全文检索服务
+define('DEDEBIZSEARCHHOST', 'http://127.0.0.1:8818');//搜索服务地址
+define('DEDEBIZSEARCHKEY', '设置DedeSearch密钥');//用于进行加密验签
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
if (!function_exists('session_register')) {
function session_register()
diff --git a/src/system/helpers/archive.helper.php b/src/system/helpers/archive.helper.php
index 7b0acef5..744b643f 100755
--- a/src/system/helpers/archive.helper.php
+++ b/src/system/helpers/archive.helper.php
@@ -169,12 +169,23 @@ if (!function_exists('UpIndexKey')) {
global $dsql, $typeid2;
if (empty($typeid2)) $typeid2 = 0;
$indexedsql = '';
- //商业全文检索组件索引
- if (TableHasField("#@__arctiny", "indexed")) {
- $indexedsql = ",`indexed`=2 ";
+ if ($arcrank == -1) {
+ //如果内容被改为待审核状态,删除索引
+ if ($dsql->IsTable('#@__search_sync')) {
+ $intime = time();
+ $insql = "INSERT INTO `#@__search_sync` (`aid`, `add_at`) VALUES ({$id}, $intime)";
+ $dsql->ExecuteNoneQuery($insql);
+ DedeSearchDo("delete", array("id" => $id));
+ }
+ } else {
+ //商业全文检索组件索引,更新索引信息
+ if (TableHasField("#@__arctiny", "indexed")) {
+ $indexedsql = ",`indexed`=2 ";
+ }
+ $query = "UPDATE `#@__arctiny` SET `arcrank`='$arcrank', `typeid`='$typeid', `typeid2`='$typeid2', `sortrank`='$sortrank'{$indexedsql} WHERE id = '$id' ";
+ DedeSearchDo("add", array("id" => $id));
+ $dsql->ExecuteNoneQuery($query);
}
- $query = "UPDATE `#@__arctiny` SET `arcrank`='$arcrank', `typeid`='$typeid', `typeid2`='$typeid2', `sortrank`='$sortrank'{$indexedsql} WHERE id = '$id' ";
- $dsql->ExecuteNoneQuery($query);
//处理修改后的tag
if ($tags != '') {
$oldtags = GetTagsArray($id);
|