| @@ -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(); | |||
| @@ -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; | |||
| @@ -71,7 +71,7 @@ $randcode = mt_rand(10000, 99999); | |||
| $safecode = substr(md5($cfg_cookie_encode.$randcode), 0, 24); | |||
| $typeOptions = ''; | |||
| //递归获取分类 | |||
| function getTypeOptions($id=0,$sep="└") | |||
| function getTypeOptions($id=0,$sep="└─") | |||
| { | |||
| global $dsql,$typeOptions; | |||
| $dsql->SetQuery("SELECT id,typename,ispart FROM `#@__arctype` WHERE reid={$id} AND (ispart=0 OR ispart=1 OR ispart=2) ORDER BY sortrank"); | |||
| @@ -111,7 +111,7 @@ if ($dopost == 'saveedit') { | |||
| $randcode = mt_rand(10000, 99999); | |||
| $safecode = substr(md5($cfg_cookie_encode.$randcode), 0, 24); | |||
| //递归获取分类 | |||
| function getTypeOptions($id=0,$sep="└") | |||
| function getTypeOptions($id=0,$sep="└─") | |||
| { | |||
| global $dsql,$typeOptions,$typeids; | |||
| $dsql->SetQuery("SELECT id,typename,ispart FROM `#@__arctype` WHERE reid={$id} AND (ispart=0 OR ispart=1 OR ispart=2) ORDER BY sortrank"); | |||
| @@ -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 = ''; | |||
| @@ -46,7 +46,7 @@ | |||
| </form> | |||
| </li> | |||
| </ul> | |||
| <div class="d-none d-lg-block"> | |||
| <div class="navbar-admin d-none d-xl-block"> | |||
| <ul class="nav"> | |||
| <li class="nav-item"><a class="nav-link" href="javascript:document.getElementById('main').contentWindow.location.reload(true);"><i class="fa fa-refresh" title="刷新页面"></i></a></li> | |||
| <li class="nav-item"><a class="nav-link user" href="sys_admin_user_edit.php?id=<?php echo $cuserLogin->getUserID();?>&dopost=edit" target="main"><img src="<?php echo $cuserLogin->getUserFace();?>"><?php echo $cuserLogin->getUserName();?></a></li> | |||
| @@ -67,6 +67,7 @@ | |||
| <label><input type="radio" name="vartype" value="number"> 数字</label> | |||
| <label><input type="radio" name="vartype" value="bool"> 布尔(Y/N)</label> | |||
| <label><input type="radio" name="vartype" value="bstring"> 多行文本</label> | |||
| <label><input type="radio" name="vartype" value="img"> 图片</label> | |||
| </td> | |||
| <td>变量所属</td> | |||
| <td colspan="4"> | |||
| @@ -139,6 +140,13 @@ | |||
| echo "<textarea name='edit___{$row['varname']}' id='edit___{$row['varname']}' class='admin-textarea-xl'>".dede_htmlspecialchars($row['value'])."</textarea>"; | |||
| } else if ($row['type']=='number') { | |||
| echo "<input type='text' name='edit___{$row['varname']}' id='edit___{$row['varname']}' value='{$row['value']}' class='w-65'>"; | |||
| } else if ($row['type']=='img') { | |||
| echo "<input type='text' name='edit___{$row['varname']}' id='edit___{$row['varname']}' value='{$row['value']}' class='w-50'> <input type='button' name='set9' class='btn btn-success btn-sm' onclick="."SelectImage('form1.edit___{$row['varname']}','','idd_{$row['varname']}');"." value='选择'>"; | |||
| if ($row['value']) { | |||
| echo " <img src=".$row['value']." id='idd_{$row['varname']}' class='thumbnail-md ml-3'>"; | |||
| } else { | |||
| echo " <img src='/static/web/img/thumbnail.jpg' id='idd_{$row['varname']}' class='thumbnail-md ml-3'>"; | |||
| } | |||
| } else { | |||
| $addstr=''; | |||
| if ($row['varname']=='cfg_cookie_encode') { | |||
| @@ -1,5 +0,0 @@ | |||
| <?php | |||
| //混淆串 | |||
| #www.dedebiz.com | |||
| #dedebiz.com | |||
| ?> | |||
| @@ -201,10 +201,8 @@ textarea { | |||
| vertical-align:middle | |||
| } | |||
| .admin-head .logo .version { | |||
| padding:0 0.15rem; | |||
| font-size:12px; | |||
| color:var(--white); | |||
| vertical-align:top | |||
| color:var(--white) | |||
| } | |||
| .admin-head .nav-item { | |||
| position:relative | |||
| @@ -718,7 +716,7 @@ span.page-link { | |||
| color:var(--white); | |||
| background:var(--green) | |||
| } | |||
| input,select,textarea,button,.colordlg,.pubdlg,.quickselitem .topcat,.mysource,.mywriter,#edsta,.cke_chrome,.cke_inner,.card,.form-control,.btn,.alert,.rounded { | |||
| input,select,textarea,.colordlg,.pubdlg,.quickselitem .topcat,.mysource,.mywriter,#edsta,.cke_chrome,.cke_inner,.card,.form-control,.btn,.alert,.rounded { | |||
| border-radius:var(--b-radius)!important | |||
| } | |||
| .cke_top { | |||
| @@ -748,7 +746,7 @@ input,select,textarea,button,.colordlg,.pubdlg,.quickselitem .topcat,.mysource,. | |||
| border-radius:var(--b-radius-sm)!important | |||
| } | |||
| .btn+.btn { | |||
| margin-left:0.5rem | |||
| margin-left:0.5rem!important | |||
| } | |||
| .shadow-sm { | |||
| box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.015)!important | |||
| @@ -767,17 +765,22 @@ input,select,textarea,button,.colordlg,.pubdlg,.quickselitem .topcat,.mysource,. | |||
| td { | |||
| white-space:nowrap | |||
| } | |||
| .install-box,.tips-box,.w-65,.w-35,.admin-textarea-sm,.admin-input-lg,.admin-input-md,.admin-input-sm { | |||
| width:100% | |||
| .install-box,.tips-box,.w-65,.w-35 { | |||
| width:100%!important | |||
| } | |||
| .admin-textarea-sm,.admin-input-lg,.admin-input-md,.admin-input-sm { | |||
| width:auto!important; | |||
| min-width:35% | |||
| } | |||
| .admin-head .navbar-nav { | |||
| margin-left:auto | |||
| } | |||
| body.menu-hide .admin-aside { | |||
| display:block | |||
| display:block; | |||
| width:100% | |||
| } | |||
| body.menu-hide .admin-content { | |||
| left:220px | |||
| left:100% | |||
| } | |||
| body.menu-show .admin-aside { | |||
| display:none | |||
| @@ -69,6 +69,9 @@ input[type=radio],input[type=checkbox],input[type=radio]:focus,input[type=checkb | |||
| .body-bg { | |||
| background:var(--bg) | |||
| } | |||
| .logo img { | |||
| height:36px | |||
| } | |||
| #carouselDede .carousel-caption h2 { | |||
| color:var(--white) | |||
| } | |||
| @@ -299,9 +302,6 @@ input[type=radio],input[type=checkbox],input[type=radio]:focus,input[type=checkb | |||
| font-weight:300; | |||
| color:var(--gray) | |||
| } | |||
| .logo img { | |||
| height:36px | |||
| } | |||
| .pannel-main-container { | |||
| padding:1.5rem; | |||
| background:var(--white) | |||
| @@ -607,6 +607,91 @@ 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 | |||
| curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //支持https连接 | |||
| curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //支持https连接 | |||
| //执行请求 | |||
| $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' => !empty($curlError) ? $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' => isset($result['code'])? $result['code'] : -3, | |||
| 'message' => isset($result['message'])? $result['message'] : 'Unknown error', | |||
| 'data' => null, | |||
| ); | |||
| } | |||
| //返回成功结果 | |||
| return array( | |||
| 'code' => 0, | |||
| 'message' => 'Success', | |||
| 'data' => isset($result['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'); | |||
| @@ -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() | |||
| @@ -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); | |||
| @@ -91,6 +91,8 @@ function lib_channel(&$ctag, &$refObj) | |||
| $row['typelink'] = GetOneTypeUrlA($row); | |||
| $linkOkstr = str_replace("~rel~", $row['rel'], $linkOkstr); | |||
| $linkOkstr = str_replace("~id~", $row['id'], $linkOkstr); | |||
| $linkOkstr = str_replace("~bigpic~", $row['bigpic'], $linkOkstr); | |||
| $linkOkstr = str_replace("~litimg~", $row['litimg'], $linkOkstr); | |||
| $linkOkstr = str_replace("~typelink~", $row['typelink'], $linkOkstr); | |||
| $linkOkstr = str_replace("~typename~", $row['typename'], $linkOkstr); | |||
| $likeType .= $linkOkstr; | |||