国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

362 lines
13KB

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