GetOne("SELECT addcon FROM `#@__channeltype` WHERE id='$channelid'");
} else {
//根据栏目调用发布表单
$row = $dsql->GetOne("SELECT ch.addcon FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$cid' ");
}
$gurl = $row["addcon"];
if ($gurl == "") {
ShowMsg("操作失败,正在返回", "catalog_main.php");
exit();
}
//跳转并传递参数
header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
exit();
}
//管理文档
else if ($dopost == "listArchives") {
if (!empty($gurl)) {
if (empty($arcrank)) {
$arcrank = '';
}
$gurl = str_replace('..', '', $gurl);
header("location:{$gurl}?arcrank={$arcrank}&cid={$cid}");
exit();
}
if ($cid > 0) {
$row = $dsql->GetOne("SELECT `#@__arctype`.typename,`#@__channeltype`.typename AS channelname,`#@__channeltype`.id,`#@__channeltype`.mancon FROM `#@__arctype` LEFT JOIN `#@__channeltype` on `#@__channeltype`.id=`#@__arctype`.channeltype WHERE `#@__arctype`.id='$cid'");
$gurl = $row["mancon"];
$channelid = $row["id"];
$typename = $row["typename"];
$channelname = $row["channelname"];
if ($gurl == "") {
ShowMsg("操作失败,正在返回", "catalog_main.php");
exit();
}
} else if ($channelid > 0) {
$row = $dsql->GetOne("SELECT typename,id,mancon FROM `#@__channeltype` WHERE id='$channelid'");
$gurl = $row["mancon"];
$channelid = $row["id"];
$typename = "";
$channelname = $row["typename"];
}
if (empty($gurl)) $gurl = 'content_list.php';
header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
exit();
}
//浏览通用模板目录
else if ($dopost == "viewTemplet") {
header("location:tpl.php?path=/".$cfg_df_style);
exit();
}
//浏览单个页面的栏目
else if ($dopost == "viewSgPage") {
require_once(DEDEINC."/archive/listview.class.php");
$lv = new ListView($cid);
$pageurl = $lv->MakeHtml();
ShowMsg("更新缓冲,请稍后", $pageurl);
exit();
}
//修改栏目排列顺序
else if ($dopost == "upRank") {
//检查权限许可
CheckPurview('t_Edit,t_AccEdit');
//检查栏目操作许可
CheckCatalog($cid, "您无权修改本栏目");
$row = $dsql->GetOne("SELECT reid,sortrank FROM `#@__arctype` WHERE id='$cid'");
$reid = $row['reid'];
$sortrank = $row['sortrank'];
$row = $dsql->GetOne("SELECT sortrank FROM `#@__arctype` WHERE sortrank<=$sortrank AND reid=$reid ORDER BY sortrank DESC ");
if (is_array($row)) {
$sortrank = $row['sortrank'] - 1;
$dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET sortrank='$sortrank' WHERE id='$cid'");
}
UpDateCatCache();
ShowMsg("操作成功,返回目录", "catalog_main.php");
exit();
}
//检查权限许可
else if ($dopost == "upRankAll") {
CheckPurview('t_Edit');
$row = $dsql->GetOne("SELECT id FROM `#@__arctype` ORDER BY id DESC");
if (is_array($row)) {
$maxID = $row['id'];
for ($i = 1; $i <= $maxID; $i++) {
if (isset(${'sortrank'.$i})) {
$dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET sortrank='".(${'sortrank'.$i})."' WHERE id='{$i}';");
}
}
}
UpDateCatCache();
ShowMsg("操作成功,正在返回", "catalog_main.php");
exit();
}
//更新栏目缓存
else if ($dopost == "upcatcache") {
UpDateCatCache();
$sql = " TRUNCATE TABLE `#@__arctiny`";
$dsql->ExecuteNoneQuery($sql);
//导入普通模型微数据
$sql = "INSERT INTO `#@__arctiny` (id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid) SELECT id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid FROM `#@__archives` ";
$dsql->ExecuteNoneQuery($sql);
//导入自定义模型微数据
$dsql->SetQuery("SELECT id,addtable FROM `#@__channeltype` WHERE id < -1 ");
$dsql->Execute();
$doarray = array();
while ($row = $dsql->GetArray()) {
$tb = str_replace('#@__', $cfg_dbprefix, $row['addtable']);
if (empty($tb) || isset($doarray[$tb])) {
continue;
} else {
$sql = "INSERT INTO `#@__arctiny` (id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid) SELECT aid, typeid, 0, arcrank, channel, senddate, 0, mid FROM `$tb` ";
$rs = $dsql->executenonequery($sql);
$doarray[$tb] = 1;
}
}
ShowMsg("操作成功,正在返回", "catalog_main.php");
exit();
}
//获得子类的文档
else if ($dopost == "GetSunListsMenu") {
$userChannel = $cuserLogin->getUserChannel();
require_once(DEDEINC."/typelink/typeunit.class.menu.php");
AjaxHead();
PutCookie('lastCidMenu', $cid, 3600 * 24, "/");
$tu = new TypeUnit($userChannel);
$tu->LogicListAllSunType($cid, " ");
} else if ($dopost == "GetSunLists") {
require_once(DEDEINC."/typelink/typeunit.class.admin.php");
AjaxHead();
PutCookie('lastCid', $cid, 3600 * 24, "/");
$tu = new TypeUnit();
$tu->dsql = $dsql;
echo "
\r\n";
$tu->LogicListAllSunType($cid, " ");
echo "
\r\n";
$tu->Close();
}
//合并栏目
else if ($dopost == 'unitCatalog') {
CheckPurview('t_Move');
require_once(DEDEINC.'/libraries/oxwindow.class.php');
require_once(DEDEINC.'/typelink/typelink.class.php');
require_once(DEDEINC.'/channelunit.func.php');
if (empty($nextjob)) {
$typeid = isset($typeid) ? intval($typeid) : 0;
$row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctype` WHERE reid='$typeid' ");
$tl = new TypeLink($typeid);
$typename = $tl->TypeInfos['typename'];
$reid = $tl->TypeInfos['reid'];
$channelid = $tl->TypeInfos['channeltype'];
if (!empty($row['dd'])) {
ShowMsg("栏目:$typename($typeid) 有子栏目,不能进行合并操作", '-1');
exit();
}
$typeOptions = $tl->GetOptionArray(0, 0, $channelid);
$wintitle = '合并栏目';
$wecome_info = "栏目管理 > 合并栏目";
$win = new OxWindow();
$win->Init('catalog_do.php', 'js/blank.js', 'POST');
$win->AddHidden('dopost', 'unitCatalog');
$win->AddHidden('typeid', $typeid);
$win->AddHidden('channelid', $channelid);
$win->AddHidden('nextjob', 'unitok');
$win->AddTitle("合并目录时不会删除原来的栏目目录,合并后需手动更新目标栏目的文档网页和列表网页,栏目不能有下级子栏目,只允许子级到更高级或同级或不同父级的情况");
$win->AddItem('您选择的栏目是:', "$typename($typeid)");
$win->AddItem('您希望合并到那个栏目', "");
$winform = $win->GetWindow('ok');
$win->Display();
exit();
} else {
if ($typeid == $unittype) {
ShowMsg("同一栏目无法合并,请重新合并", '-1');
exit();
}
if (IsParent($unittype, $typeid)) {
ShowMsg('不能从父类合并到子类', 'catalog_main.php');
exit();
}
$row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
$addtable = (empty($row['addtable']) ? '#@__addonarticle' : $row['addtable']);
$dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET typeid='$unittype' WHERE typeid='$typeid' ");
$dsql->ExecuteNoneQuery("UPDATE `#@__feedback` SET typeid='$unittype' WHERE typeid='$typeid' ");
$dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid='$unittype' WHERE typeid='$typeid' ");
$dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid2='$unittype' WHERE typeid2='$typeid' ");
$dsql->ExecuteNoneQuery("UPDATE `#@__addonspec` SET typeid='$unittype' WHERE typeid='$typeid' ");
$dsql->ExecuteNoneQuery("UPDATE `$addtable` SET typeid='$unittype' WHERE typeid='$typeid' ");
$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id='$typeid' ");
UpDateCatCache();
ShowMsg('成功合并指定栏目', 'catalog_main.php');
exit();
}
}
//移动栏目
else if ($dopost == 'moveCatalog') {
CheckPurview('t_Move');
require_once(DEDEINC.'/libraries/oxwindow.class.php');
require_once(DEDEINC.'/typelink/typelink.class.php');
require_once(DEDEINC.'/channelunit.func.php');
if (empty($nextjob)) {
$tl = new TypeLink($typeid);
$typename = $tl->TypeInfos['typename'];
$reid = $tl->TypeInfos['reid'];
$channelid = $tl->TypeInfos['channeltype'];
$typeOptions = $tl->GetOptionArray(0, 0, $channelid);
$wintitle = "移动栏目";
$wecome_info = "栏目管理 > 移动栏目";
$win = new OxWindow();
$win->Init('catalog_do.php', 'js/blank.js', 'POST');
$win->AddHidden('dopost', 'moveCatalog');
$win->AddHidden('typeid', $typeid);
$win->AddHidden('channelid', $channelid);
$win->AddHidden('nextjob', 'unitok');
$win->AddTitle("移动目录时不会删除原来已创建的列表,移动后需重新对栏目创建网页,不允许从父级移动到子级目录,只允许子级到更高级或同级或不同父级的情况");
$win->AddItem('您选择的栏目是:', "$typename($typeid)");
$win->AddItem('您希望移动到那个栏目', "");
$winform = $win->GetWindow('ok');
$win->Display();
exit();
} else {
if ($typeid == $movetype) {
ShowMsg('移对对象和目标位置相同', 'catalog_main.php');
exit();
}
if (IsParent($movetype, $typeid)) {
ShowMsg('不能从父类移动到子类', 'catalog_main.php');
exit();
}
$topid = GetTopid($movetype);
$dsql->ExecuteNoneQuery("UPDATE `#@__arctype` SET reid='$movetype',topid='$topid' WHERE id='$typeid' ");
UpDateCatCache();
ShowMsg('成功移动目录', 'catalog_main.php');
exit();
}
}
//查看跨站调用秘钥
else if ($dopost == 'viewAPI') {
require_once(DEDEINC.'/typelink/typelink.class.php');
$typeid = isset($typeid) ? intval($typeid) : 0;
$tl = new TypeLink($typeid);
$phpCode = 'TypeInfos['apikey'].'\';
$sign = md5($typeid.$timestamp.$apikey.\'1\'.$row);
$durl = "'.$cfg_basehost.'/apps/list.php?tid={$typeid}&mod=1×tamp={$timestamp}&PageNo=1&PageSize={$row}&sign={$sign}";
$data = json_decode(file_get_contents($durl),true);
if ($data[\'code\'] === 0) {
var_dump($data);
}
?>';
$gocode = 'package main
import (
"crypto/md5"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"strconv"
"time"
)
func main() {
typeid := '.$typeid.'
row := 10
timestamp := strconv.FormatInt(time.Now().Unix(), 10)
apikey := "'.$tl->TypeInfos['apikey'].'"
sign := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d%s%s%d%d", typeid, timestamp, apikey, 1, row))))
durl := fmt.Sprintf("'.$cfg_basehost.'/apps/list.php?tid=%d&mod=1×tamp=%s&PageNo=1&PageSize=%d&sign=%s", typeid, timestamp, row, sign)
resp, err := http.Get(durl)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
var data map[string]interface{}
if err := json.Unmarshal(body, &data); err != nil {
fmt.Println(err)
return
}
if data["code"].(float64) == 0 {
fmt.Printf("%+v", data)
}
}';
$pythoncode = 'import hashlib
import json
import time
import urllib.request
typeid = '.$typeid.'
row = 10
timestamp = int(time.time())
apikey = \''.$tl->TypeInfos['apikey'].'\'
sign = hashlib.md5((str(typeid) + str(timestamp) + apikey + \'1\' + str(row)).encode()).hexdigest()
durl = f"'.$cfg_basehost.'/apps/list.php?tid={typeid}&mod=1×tamp={timestamp}&PageNo=1&PageSize={row}&sign={sign}"
with urllib.request.urlopen(durl) as url:
data = json.loads(url.read().decode())
if data[\'code\'] == 0:
print(data)
';
$jscode = 'const crypto = require(\'crypto\');
const http = require(\'http\');
const typeid = '.$typeid.';
const row = 10;
const timestamp = Math.floor(Date.now() / 1000);
const apikey = \''.$tl->TypeInfos['apikey'].'\';
const sign = crypto.createHash(\'md5\').update(typeid.toString() + timestamp.toString() + apikey + \'1\' + row.toString()).digest(\'hex\');
const durl = `'.$cfg_basehost.'/apps/list.php?tid=${typeid}&mod=1×tamp=${timestamp}&PageNo=1&PageSize=${row}&sign=${sign}`
http.get(durl, (res) => {
let data = \'\';
res.on(\'data\', (chunk) => {
data += chunk;
});
res.on(\'end\', () => {
console.log(data);
const result = JSON.parse(data);
if (result.code === 0) {
console.log(result);
}
});
}).on(\'error\', (err) => {
console.log(err);
});';
$tagcode = '
{dede:jsonq url="'.$cfg_basehost.'" row="10" typeid='.$typeid.' apikey="'.$tl->TypeInfos['apikey'].'"}
- [field:title/]
{/dede:jsonq}
';
echo json_encode(array(
"code"=>0,
"data"=>array(
"phpcode"=>htmlspecialchars($phpCode),
"gocode"=>htmlspecialchars($gocode),
"pythoncode"=>htmlspecialchars($pythoncode),
"jscode"=>htmlspecialchars($jscode),
"tagcode"=>htmlspecialchars($tagcode),
)
));
}
?>