@@ -265,5 +265,15 @@ else if ($dopost == 'moveCatalog') { | |||
ShowMsg('成功移动目录', 'catalog_main.php'); | |||
exit(); | |||
} | |||
} //查看API | |||
else if ($dopost == 'viewAPI') { | |||
require_once(DEDEINC.'/typelink/typelink.class.php'); | |||
$typeid = isset($typeid) ? intval($typeid) : 0; | |||
$tl = new TypeLink($typeid); | |||
$timestamp = time(); | |||
$sign = sha1($typeid.$timestamp.$tl->TypeInfos['apikey'].'1'.'10'); | |||
$u = "tid={$typeid}&mod=1×tamp={$timestamp}&PageNo=1&PageSize=10&sign={$sign}"; | |||
header('HTTP/1.1 301 Moved Permanently'); | |||
header("Location:../apps/list.php?{$u}"); | |||
} | |||
?> |
@@ -34,6 +34,7 @@ class ListView | |||
var $IsReplace; | |||
var $remoteDir; | |||
var $mod; | |||
var $_parms = array('tid','TotalResult','PageNo','PageSize','mod','timestamp','sign'); | |||
/** | |||
* php5构造函数 | |||
* | |||
@@ -74,13 +75,41 @@ class ListView | |||
//添加联动单筛选 | |||
if (isset($_REQUEST['tid'])) { | |||
foreach($_GET as $key => $value) { | |||
if ($key!="tid" && $key!="TotalResult" && $key!="PageNo" && $key!="PageSize" && $key!="mod") { | |||
if (!in_array($key,$this->_parms)) { | |||
$this->Fields[string_filter($key)] = string_filter(urldecode($value)); | |||
} | |||
} | |||
} | |||
//设置一些全局参数的值 | |||
foreach ($GLOBALS['PubFields'] as $k => $v) $this->Fields[$k] = $v; | |||
//API相关逻辑处理 | |||
if ($this->mod == 1 && empty($this->Fields['apikey'])) { | |||
echo json_encode(array( | |||
"code" => -1, | |||
"msg" => "api key is empty", | |||
)); | |||
exit; | |||
} | |||
if($this->mod == 1){ | |||
if (empty($GLOBALS['sign'])) { | |||
echo json_encode(array( | |||
"code" => -1, | |||
"msg" => "sign is empty", | |||
)); | |||
exit; | |||
} | |||
//验签算法 sha1(typeid+timestamp+apikey+PageNo+PageSize) | |||
$sign = sha1($this->TypeID.$GLOBALS['timestamp'].$this->Fields['apikey'].$GLOBALS['PageNo'].$GLOBALS['PageSize']); | |||
if ($sign !== $GLOBALS['sign']) { | |||
echo json_encode(array( | |||
"code" => -1, | |||
"msg" => "sign check failed", | |||
)); | |||
exit; | |||
} | |||
} | |||
$this->Fields['rsslink'] = $GLOBALS['cfg_cmsurl']."/static/rss/".$this->TypeID.".xml"; | |||
//设置环境变量 | |||
SetSysEnv($this->TypeID, $this->Fields['typename'], 0, '', 'list'); | |||
@@ -151,7 +180,7 @@ class ListView | |||
} | |||
if (isset($_REQUEST['tid'])) { | |||
foreach ($_GET as $key => $value) { | |||
$filtersql .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo" && $key!="PageSize" && $key!="mod") ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
$filtersql .= (!in_array($key,$this->_parms)) ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
} | |||
} | |||
} else { | |||
@@ -428,7 +457,7 @@ class ListView | |||
if (isset($_REQUEST['tid'])) { | |||
foreach($_GET as $key => $value) | |||
{ | |||
$filtersql .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo" && $key!="PageSize" && $key !="mod") ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
$filtersql .= (!in_array($key,$this->_parms)) ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
} | |||
} | |||
} else { | |||
@@ -837,7 +866,7 @@ class ListView | |||
if (isset($_REQUEST['tid'])) { | |||
foreach($_GET as $key => $value) | |||
{ | |||
$filtersql .= ($key!="tid" && $key!="TotalResult" && $key!="PageNo" && $key!="PageSize" && $key!="mod") ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
$filtersql .= (!in_array($key,$this->_parms)) ? " AND $addtable.".string_filter($key)." = '".string_filter(urldecode($value))."'" : ''; | |||
} | |||
} | |||
} else { | |||
@@ -12,14 +12,25 @@ require_once(DEDEINC . "/libraries/jsonq/Jsonq.php"); | |||
helper('cache'); | |||
function lib_jsonq(&$ctag, &$refObj) | |||
{ | |||
$attlist = "url|,path|,cachetime|3600"; | |||
$attlist = "url|,path|,typeid|,row|,apikey|,cachetime|3600"; | |||
FillAttsDefault($ctag->CAttribute->Items, $attlist); | |||
extract($ctag->CAttribute->Items, EXTR_SKIP); | |||
$Innertext = trim($ctag->GetInnerText()); | |||
if ($url == '' || $Innertext == '') return ''; | |||
if (!empty($typeid)) { | |||
$typeid = intval($typeid); | |||
} | |||
if ($typeid > 0) { | |||
$timestamp = time(); | |||
$sign = sha1($typeid.$timestamp.$apikey.'1'.'10'); | |||
$u = "tid={$typeid}&mod=1×tamp={$timestamp}&PageNo=1&PageSize={$row}&sign={$sign}"; | |||
$url = $url."/apps/list.php?{$u}"; | |||
$path = "$.lists"; | |||
} | |||
$key = md5($url); | |||
try { | |||
if ($path=='') { | |||
//选择器获取某个特定值 | |||
$jsonq = new Jsonq($url); | |||
$revalue = GetCache("tagjsonq2", $key); | |||
if (!empty($revalue)) { | |||
@@ -90,7 +90,7 @@ class TypeUnit | |||
$admin_catalogs = explode(',', $admin_catalog); | |||
$admin_catalogs = array_unique($admin_catalogs); | |||
} | |||
$this->dsql->SetQuery("SELECT id,typedir,typename,ispart,sortrank,ishidden FROM `#@__arctype` WHERE reid=0 ORDER BY sortrank"); | |||
$this->dsql->SetQuery("SELECT id,typedir,typename,ispart,sortrank,ishidden,apienabled FROM `#@__arctype` WHERE reid=0 ORDER BY sortrank"); | |||
$this->dsql->Execute(0); | |||
$i = 0; | |||
while ($row = $this->dsql->GetObject(0)) { | |||
@@ -114,6 +114,8 @@ class TypeUnit | |||
echo "<td class='admin-td'><table width='98%' cellspacing='0' cellpadding='0'><tr><td width='50%'><i id='img".$id."' onClick=\"LoadSuns('suns".$id."',$id);\" class='fa fa-plus-square'></i><input type='checkbox' name='tids[]' value='{$id}' class='mr-3 ml-3'><span class='btn btn-success btn-xs'>列表</span>{$nss}<a href='catalog_do.php?cid=".$id."&dopost=listArchives' class='mr-3 ml-3'>".$typeName."</a>[id:".$id."](文档数:".$this->GetTotalArc($id).")"; | |||
echo "</td>"; | |||
echo "<td align='right'><a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank' title='预览' class='btn btn-light btn-sm'><i class='fa fa-eye'></i></a>"; | |||
$apidisabled = $row->apienabled == 1? '' : ' disabled'; | |||
echo "<a href='catalog_do.php?dopost=viewAPI&typeid={$id}' target='_blank' title='接口' class='btn btn-light btn-sm{$apidisabled}'><i class='fa fa-bolt'></i></a>"; | |||
echo "<a href='catalog_do.php?cid={$id}&dopost=listArchives' title='文档' class='btn btn-light btn-sm'><i class='fa fa-file-text'></i></a>"; | |||
echo "<a href='catalog_add.php?id={$id}' title='添加' class='btn btn-light btn-sm'><i class='fa fa-plus-circle'></i></a>"; | |||
echo "<a href='catalog_edit.php?id={$id}' title='修改' class='btn btn-light btn-sm'><i class='fa fa-pencil-square'></i></a>"; | |||
@@ -197,6 +199,8 @@ class TypeUnit | |||
echo "$step<i id='img".$id."' onClick=\"LoadSuns('suns".$id."',$id);\" class='fa fa-plus-square'></i><input type='checkbox' name='tids[]' value='{$id}' class='mr-3 ml-3'><span class='btn btn-success btn-xs'>列表</span>{$nss}<a href='catalog_do.php?cid=".$id."&dopost=listArchives' class='mr-3 ml-3'>".$typeName."</a>[id:".$id."](文档数:".$this->GetTotalArc($id).")"; | |||
echo "</td>"; | |||
echo "<td align='right'><a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank' title='预览' class='btn btn-light btn-sm'><i class='fa fa-eye'></i></a>"; | |||
$apidisabled = $row->apienabled == 1? '' : ' disabled'; | |||
echo "<a href='catalog_do.php?dopost=viewAPI&typeid={$id}' target='_blank' title='接口' class='btn btn-light btn-sm{$apidisabled}'><i class='fa fa-bolt'></i></a>"; | |||
echo "<a href='catalog_do.php?cid={$id}&dopost=listArchives' title='文档' class='btn btn-light btn-sm'><i class='fa fa-file-text'></i></a>"; | |||
echo "<a href='catalog_add.php?id={$id}' title='添加' class='btn btn-light btn-sm'><i class='fa fa-plus-circle'></i></a>"; | |||
echo "<a href='catalog_edit.php?id={$id}' title='修改' class='btn btn-light btn-sm'><i class='fa fa-pencil-square'></i></a>"; | |||