国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

catalog_do.php 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <?php
  2. /**
  3. * 栏目操作
  4. *
  5. * @version $Id: catalog_do.php 1 14:31 2010年7月12日Z tianya $
  6. * @package DedeCMS.Administrator
  7. * @copyright Copyright (c) 2007 - 2018, DesDev, Inc.
  8. * @copyright Copyright (c) 2020, DedeBIZ.COM
  9. * @license https://www.dedebiz.com/license/v6
  10. * @link https://www.dedebiz.com
  11. */
  12. require_once(dirname(__FILE__).'/config.php');
  13. if(empty($dopost))
  14. {
  15. ShowMsg("对不起,请指定栏目参数!","catalog_main.php");
  16. exit();
  17. }
  18. $cid = empty($cid) ? 0 : intval($cid);
  19. $unittype = empty($unittype) ? 0 : intval($unittype);
  20. $channelid = empty($channelid) ? 0 : intval($channelid);
  21. /*--------------------------
  22. //增加文档
  23. function addArchives();
  24. ---------------------------*/
  25. if($dopost=="addArchives")
  26. {
  27. //默认文章调用发布表单
  28. if(empty($cid) && empty($channelid))
  29. {
  30. header("location:article_add.php");
  31. exit();
  32. }
  33. if(!empty($channelid))
  34. {
  35. //根据模型调用发布表单
  36. $row = $dsql->GetOne("SELECT addcon FROM #@__channeltype WHERE id='$channelid'");
  37. }
  38. else
  39. {
  40. //根据栏目调用发布表单
  41. $row = $dsql->GetOne("SELECT ch.addcon FROM `#@__arctype` tp LEFT JOIN `#@__channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$cid' ");
  42. }
  43. $gurl = $row["addcon"];
  44. if($gurl=="")
  45. {
  46. ShowMsg("对不起,你指的栏目可能有误!","catalog_main.php");
  47. exit();
  48. }
  49. //跳转并传递参数
  50. header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
  51. exit();
  52. }
  53. /*--------------------------
  54. //管理文档
  55. function listArchives();
  56. ---------------------------*/
  57. else if($dopost=="listArchives")
  58. {
  59. if(!empty($gurl))
  60. {
  61. if(empty($arcrank))
  62. {
  63. $arcrank = '';
  64. }
  65. $gurl = str_replace('..','',$gurl);
  66. header("location:{$gurl}?arcrank={$arcrank}&cid={$cid}");
  67. exit();
  68. }
  69. if($cid>0)
  70. {
  71. $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'");
  72. $gurl = $row["mancon"];
  73. $channelid = $row["id"];
  74. $typename = $row["typename"];
  75. $channelname = $row["channelname"];
  76. if($gurl=="")
  77. {
  78. ShowMsg("对不起,你指的栏目可能有误!","catalog_main.php");
  79. exit();
  80. }
  81. }
  82. else if($channelid>0)
  83. {
  84. $row = $dsql->GetOne("SELECT typename,id,mancon FROM #@__channeltype WHERE id='$channelid'");
  85. $gurl = $row["mancon"];
  86. $channelid = $row["id"];
  87. $typename = "";
  88. $channelname = $row["typename"];
  89. }
  90. if(empty($gurl)) $gurl = 'content_list.php';
  91. header("location:{$gurl}?channelid={$channelid}&cid={$cid}");
  92. exit();
  93. }
  94. /*--------------------------
  95. //浏览通用模板目录
  96. function viewTempletDir();
  97. ---------------------------*/
  98. else if($dopost=="viewTemplet")
  99. {
  100. header("location:tpl.php?path=/".$cfg_df_style);
  101. exit();
  102. }
  103. /*--------------------------
  104. //留言簿管理
  105. function GoGuestBook();
  106. ---------------------------*/
  107. else if($dopost=="guestbook")
  108. {
  109. ShowMsg("正在跳转到留言本&gt;&gt;", "{$cfg_phpurl}/guestbook.php?gotopagerank=admin");
  110. exit();
  111. }
  112. /*------------------------
  113. 浏览单个页面的栏目
  114. function ViewSgPage()
  115. ------------------------*/
  116. else if($dopost=="viewSgPage")
  117. {
  118. require_once(DEDEINC."/arc.listview.class.php");
  119. $lv = new ListView($cid);
  120. $pageurl = $lv->MakeHtml();
  121. ShowMsg("更新缓冲,请稍后...",$pageurl);
  122. exit();
  123. }
  124. /*------------------------
  125. 更改栏目排列顺序
  126. function upRank()
  127. ------------------------*/
  128. else if($dopost=="upRank")
  129. {
  130. //检查权限许可
  131. CheckPurview('t_Edit,t_AccEdit');
  132. //检查栏目操作许可
  133. CheckCatalog($cid,"你无权更改本栏目!");
  134. $row = $dsql->GetOne("SELECT reid,sortrank FROM #@__arctype WHERE id='$cid'");
  135. $reid = $row['reid'];
  136. $sortrank = $row['sortrank'];
  137. $row = $dsql->GetOne("SELECT sortrank FROM #@__arctype WHERE sortrank<=$sortrank AND reid=$reid ORDER BY sortrank DESC ");
  138. if(is_array($row))
  139. {
  140. $sortrank = $row['sortrank']-1;
  141. $dsql->ExecuteNoneQuery("UPDATE #@__arctype SET sortrank='$sortrank' WHERE id='$cid'");
  142. }
  143. UpDateCatCache();
  144. ShowMsg("操作成功,返回目录...","catalog_main.php");
  145. exit();
  146. }
  147. else if($dopost=="upRankAll")
  148. {
  149. //检查权限许可
  150. CheckPurview('t_Edit');
  151. $row = $dsql->GetOne("SELECT id FROM #@__arctype ORDER BY id DESC");
  152. if(is_array($row))
  153. {
  154. $maxID = $row['id'];
  155. for($i=1;$i<=$maxID;$i++)
  156. {
  157. if(isset(${'sortrank'.$i}))
  158. {
  159. $dsql->ExecuteNoneQuery("UPDATE #@__arctype SET sortrank='".(${'sortrank'.$i})."' WHERE id='{$i}';");
  160. }
  161. }
  162. }
  163. UpDateCatCache();
  164. ShowMsg("操作成功,正在返回...","catalog_main.php");
  165. exit();
  166. }
  167. /*--------------------------
  168. //更新栏目缓存
  169. function UpCatlogCache();
  170. ---------------------------*/
  171. else if($dopost=="upcatcache")
  172. {
  173. UpDateCatCache();
  174. $sql = " TRUNCATE TABLE `#@__arctiny`";
  175. $dsql->ExecuteNoneQuery($sql);
  176. //导入普通模型微数据
  177. $sql = "INSERT INTO `#@__arctiny`(id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid)
  178. SELECT id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid FROM `#@__archives` ";
  179. $dsql->ExecuteNoneQuery($sql);
  180. //导入单表模型微数据
  181. $dsql->SetQuery("SELECT id,addtable FROM `#@__channeltype` WHERE id < -1 ");
  182. $dsql->Execute();
  183. $doarray = array();
  184. while($row = $dsql->GetArray())
  185. {
  186. $tb = str_replace('#@__', $cfg_dbprefix, $row['addtable']);
  187. if(empty($tb) || isset($doarray[$tb]) )
  188. {
  189. continue;
  190. }
  191. else
  192. {
  193. $sql = "INSERT INTO `#@__arctiny`(id, typeid, typeid2, arcrank, channel, senddate, sortrank, mid)
  194. SELECT aid, typeid, 0, arcrank, channel, senddate, 0, mid FROM `$tb` ";
  195. $rs = $dsql->executenonequery($sql);
  196. $doarray[$tb] = 1;
  197. }
  198. }
  199. ShowMsg("操作成功,正在返回...","catalog_main.php");
  200. exit();
  201. }
  202. /*---------------------
  203. 获取JS文件
  204. function GetJs
  205. ----------------------*/
  206. else if($dopost=="GetJs")
  207. {
  208. header("location:makehtml_js.php");
  209. exit();
  210. }
  211. /*-----------
  212. 获得子类的内容
  213. function GetSunListsMenu();
  214. -----------*/
  215. else if($dopost=="GetSunListsMenu")
  216. {
  217. $userChannel = $cuserLogin->getUserChannel();
  218. require_once(DEDEINC."/typeunit.class.menu.php");
  219. AjaxHead();
  220. PutCookie('lastCidMenu',$cid,3600*24,"/");
  221. $tu = new TypeUnit($userChannel);
  222. $tu->LogicListAllSunType($cid," ");
  223. }
  224. /*-----------
  225. 获得子类的内容
  226. function GetSunLists();
  227. -----------*/
  228. else if($dopost=="GetSunLists")
  229. {
  230. require_once(DEDEINC."/typeunit.class.admin.php");
  231. AjaxHead();
  232. PutCookie('lastCid', $cid, 3600*24, "/");
  233. $tu = new TypeUnit();
  234. $tu->dsql = $dsql;
  235. echo " <table width='100%' border='0' cellspacing='0' cellpadding='0'>\r\n";
  236. $tu->LogicListAllSunType($cid, " ");
  237. echo " </table>\r\n";
  238. $tu->Close();
  239. }
  240. /*----------------
  241. 合并栏目
  242. function unitCatalog() { }
  243. -----------------*/
  244. else if($dopost == 'unitCatalog')
  245. {
  246. CheckPurview('t_Move');
  247. require_once(DEDEINC.'/oxwindow.class.php');
  248. require_once(DEDEINC.'/typelink.class.php');
  249. require_once(DEDEINC.'/channelunit.func.php');
  250. if(empty($nextjob))
  251. {
  252. $typeid = isset($typeid) ? intval($typeid) : 0;
  253. $row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctype` WHERE reid='$typeid' ");
  254. $tl = new TypeLink($typeid);
  255. $typename = $tl->TypeInfos['typename'];
  256. $reid = $tl->TypeInfos['reid'];
  257. $channelid = $tl->TypeInfos['channeltype'];
  258. if(!empty($row['dd']))
  259. {
  260. ShowMsg("栏目: $typename($typeid) 有子栏目,不能进行合并操作!", '-1');
  261. exit();
  262. }
  263. $typeOptions = $tl->GetOptionArray(0, 0, $channelid);
  264. $wintitle = '合并栏目';
  265. $wecome_info = "<a href='catalog_main.php'>栏目管理</a> &gt;&gt; 合并栏目";
  266. $win = new OxWindow();
  267. $win->Init('catalog_do.php', 'js/blank.js', 'POST');
  268. $win->AddHidden('dopost', 'unitCatalog');
  269. $win->AddHidden('typeid', $typeid);
  270. $win->AddHidden('channelid', $channelid);
  271. $win->AddHidden('nextjob', 'unitok');
  272. $win->AddTitle("合并目录时不会删除原来的栏目目录,合并后需手动更新目标栏目的文档HTML和列表HTML。");
  273. $win->AddItem('你选择的栏目是:', "<font color='red'>$typename($typeid)</font>");
  274. $win->AddItem('你希望合并到那个栏目?', "<select name='unittype'>\r\n{$typeOptions}\r\n</select>");
  275. $win->AddItem('注意事项:', '栏目不能有下级子栏目,只允许子级到更高级或同级或不同父级的情况。');
  276. $winform = $win->GetWindow('ok');
  277. $win->Display();
  278. exit();
  279. }
  280. else
  281. {
  282. if($typeid==$unittype)
  283. {
  284. ShowMsg("同一栏目无法合并,请后退重试!", '-1');
  285. exit();
  286. }
  287. if(IsParent($unittype, $typeid))
  288. {
  289. ShowMsg('不能从父类合并到子类!', 'catalog_main.php');
  290. exit();
  291. }
  292. $row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
  293. $addtable = (empty($row['addtable']) ? '#@__addonarticle' : $row['addtable'] );
  294. $dsql->ExecuteNoneQuery("UPDATE `#@__arctiny` SET typeid='$unittype' WHERE typeid='$typeid' ");
  295. $dsql->ExecuteNoneQuery("UPDATE `#@__feedback` SET typeid='$unittype' WHERE typeid='$typeid' ");
  296. $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid='$unittype' WHERE typeid='$typeid' ");
  297. $dsql->ExecuteNoneQuery("UPDATE `#@__archives` SET typeid2='$unittype' WHERE typeid2='$typeid' ");
  298. $dsql->ExecuteNoneQuery("UPDATE `#@__addonspec` SET typeid='$unittype' WHERE typeid='$typeid' ");
  299. $dsql->ExecuteNoneQuery("UPDATE `$addtable` SET typeid='$unittype' WHERE typeid='$typeid' ");
  300. $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id='$typeid' ");
  301. UpDateCatCache();
  302. ShowMsg('成功合并指定栏目!', 'catalog_main.php');
  303. exit();
  304. }
  305. }
  306. /*----------------
  307. 移动栏目
  308. function moveCatalog() { }
  309. -----------------*/
  310. else if($dopost == 'moveCatalog')
  311. {
  312. CheckPurview('t_Move');
  313. require_once(DEDEINC.'/oxwindow.class.php');
  314. require_once(DEDEINC.'/typelink.class.php');
  315. require_once(DEDEINC.'/channelunit.func.php');
  316. if(empty($nextjob))
  317. {
  318. $tl = new TypeLink($typeid);
  319. $typename = $tl->TypeInfos['typename'];
  320. $reid = $tl->TypeInfos['reid'];
  321. $channelid = $tl->TypeInfos['channeltype'];
  322. $typeOptions = $tl->GetOptionArray(0,0,$channelid);
  323. $wintitle = "移动栏目";
  324. $wecome_info = "<a href='catalog_main.php'>栏目管理</a> &gt;&gt; 移动栏目";
  325. $win = new OxWindow();
  326. $win->Init('catalog_do.php', 'js/blank.js', 'POST');
  327. $win->AddHidden('dopost', 'moveCatalog');
  328. $win->AddHidden('typeid', $typeid);
  329. $win->AddHidden('channelid', $channelid);
  330. $win->AddHidden('nextjob', 'unitok');
  331. $win->AddTitle("移动目录时不会删除原来已创建的列表,移动后需重新对栏目创建HTML。");
  332. $win->AddItem('你选择的栏目是:',"$typename($typeid)");
  333. $win->AddItem('你希望移动到那个栏目?',"<select name='movetype'>\r\n<option value='0'>移动为顶级栏目</option>\r\n$typeOptions\r\n</select>");
  334. $win->AddItem('注意事项:','不允许从父级移动到子级目录,只允许子级到更高级或同级或不同父级的情况。');
  335. $winform = $win->GetWindow('ok');
  336. $win->Display();
  337. exit();
  338. }
  339. else
  340. {
  341. if($typeid==$movetype)
  342. {
  343. ShowMsg('移对对象和目标位置相同!', 'catalog_main.php');
  344. exit();
  345. }
  346. if(IsParent($movetype, $typeid))
  347. {
  348. ShowMsg('不能从父类移动到子类!', 'catalog_main.php');
  349. exit();
  350. }
  351. $dsql->ExecuteNoneQuery(" UPDATE `#@__arctype` SET reid='$movetype' WHERE id='$typeid' ");
  352. UpDateCatCache();
  353. ShowMsg('成功移动目录!', 'catalog_main.php');
  354. exit();
  355. }
  356. }