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);