国内流行的内容管理系统(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.

204 lines
6.7KB

  1. <?php
  2. /**
  3. * 内容列表
  4. * content_s_list.php、content_i_list.php、content_select_list.php
  5. * 均使用本文件作为实际处理代码,只是使用的模板不同,如有相关变动,只需改本文件及相关模板即可
  6. *
  7. * @version $Id: content_list.php 1 14:31 2010年7月12日Z tianya $
  8. * @package DedeBIZ.Administrator
  9. * @copyright Copyright (c) 2020, DedeBIZ.COM
  10. * @license https://www.dedebiz.com/license
  11. * @link https://www.dedebiz.com
  12. */
  13. require_once(dirname(__FILE__) . '/config.php');
  14. require_once(DEDEINC . '/typelink.class.php');
  15. require_once(DEDEINC . '/datalistcp.class.php');
  16. require_once(DEDEADMIN . '/inc/inc_list_functions.php');
  17. $cid = isset($cid) ? intval($cid) : 0;
  18. $channelid = isset($channelid) ? intval($channelid) : 0;
  19. $mid = isset($mid) ? intval($mid) : 0;
  20. if (!isset($keyword)) $keyword = '';
  21. if (!isset($flag)) $flag = '';
  22. if (!isset($f)) $f = '';
  23. if (!isset($arcrank)) $arcrank = '';
  24. if (!isset($dopost)) $dopost = '';
  25. $arcrank = RemoveXSS($arcrank);
  26. //检查权限许可,总权限
  27. CheckPurview('a_List,a_AccList,a_MyList');
  28. //栏目浏览许可
  29. $userCatalogSql = '';
  30. if (TestPurview('a_List')) {;
  31. } else if (TestPurview('a_AccList')) {
  32. if ($cid == 0 && $cfg_admin_channel == 'array') {
  33. $admin_catalog = join(',', $admin_catalogs);
  34. $userCatalogSql = " arc.typeid IN($admin_catalog) ";
  35. } else {
  36. CheckCatalog($cid, '你无权浏览非指定栏目的内容!');
  37. }
  38. if (TestPurview('a_MyList')) $mid = $cuserLogin->getUserID();
  39. }
  40. $adminid = $cuserLogin->getUserID();
  41. $maintable = '#@__archives';
  42. setcookie('ENV_GOBACK_URL', $dedeNowurl, time() + 3600, '/');
  43. $tl = new TypeLink($cid);
  44. //----------------------------------------
  45. //在不指定排序条件和关键字的情况下直接统计微表
  46. //----------------------------------------
  47. if (empty($totalresult) && empty($keyword) && empty($orderby) && empty($flag)) {
  48. $tinyQuerys = array();
  49. if (!empty($userCatalogSql)) {
  50. $tinyQuerys[] = str_replace('arc.', '', $userCatalogSql);
  51. }
  52. if (!empty($channelid) && empty($cid)) {
  53. $tinyQuerys[] = " channel = '$channelid' ";
  54. } else {
  55. $tinyQuerys[] = " channel>0 ";
  56. }
  57. if (!empty($arcrank)) {
  58. $tinyQuerys[] = " arcrank='$arcrank' ";
  59. } else {
  60. $tinyQuerys[] = " arcrank > -2 ";
  61. }
  62. if (!empty($mid)) {
  63. $tinyQuerys[] = " mid='$mid' ";
  64. }
  65. if (!empty($cid)) {
  66. $tinyQuerys[] = " typeid in(" . GetSonIds($cid) . ") ";
  67. }
  68. if (count($tinyQuerys) > 0) {
  69. $tinyQuery = "WHERE " . join(' AND ', $tinyQuerys);
  70. }
  71. // 缓存处理
  72. $sql = "SELECT COUNT(*) AS dd FROM `#@__arctiny` $tinyQuery ";
  73. $arr = $dsql->GetOne($sql);
  74. $totalresult = $arr['dd'];
  75. }
  76. if ($cid == 0) {
  77. if ($channelid == 0) {
  78. $positionname = '所有栏目&gt;';
  79. } else {
  80. $row = $tl->dsql->GetOne("SELECT id,typename,maintable FROM `#@__channeltype` WHERE id='$channelid'");
  81. $positionname = $row['typename'] . " &gt; ";
  82. $maintable = $row['maintable'];
  83. $channelid = $row['id'];
  84. }
  85. } else {
  86. $positionname = str_replace($cfg_list_symbol, " &gt; ", $tl->GetPositionName()) . " &gt; ";
  87. }
  88. //当选择的是单表模型栏目时,直接跳转到单表模型管理区
  89. if (
  90. empty($channelid)
  91. && isset($tl->TypeInfos['channeltype'])
  92. ) {
  93. $channelid = $tl->TypeInfos['channeltype'];
  94. }
  95. if ($channelid < -1) {
  96. header("location:content_sg_list.php?f=$f&cid=$cid&channelid=$channelid&keyword=$keyword");
  97. exit();
  98. }
  99. // 栏目大于800则需要缓存数据
  100. $optHash = md5($cid . serialize($admin_catalogs) . $channelid);
  101. $optCache = DEDEDATA . "/tplcache/inc_option_$optHash.inc";
  102. $typeCount = 0;
  103. if (file_exists($cache1)) require_once($cache1);
  104. else $cfg_Cs = array();
  105. $typeCount = count($cfg_Cs);
  106. if ($typeCount > 800) {
  107. if (file_exists($optCache)) {
  108. $optionarr = file_get_contents($optCache);
  109. } else {
  110. $optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
  111. file_put_contents($optCache, $optionarr);
  112. }
  113. } else {
  114. $optionarr = $tl->GetOptionArray($cid, $admin_catalogs, $channelid);
  115. }
  116. $whereSql = empty($channelid) ? " WHERE arc.channel > 0 AND arc.arcrank > -2 " : " WHERE arc.channel = '$channelid' AND arc.arcrank > -2 ";
  117. $flagsArr = '';
  118. $dsql->Execute('f', 'SELECT * FROM `#@__arcatt` ORDER BY sortid ASC');
  119. while ($frow = $dsql->GetArray('f')) {
  120. $flagsArr .= ($frow['att'] == $flag ? "<option value='{$frow['att']}' selected>{$frow['attname']}</option>\r\n" : "<option value='{$frow['att']}'>{$frow['attname']}</option>\r\n");
  121. }
  122. if (!empty($userCatalogSql)) {
  123. $whereSql .= " AND " . $userCatalogSql;
  124. }
  125. if (!empty($mid)) {
  126. $whereSql .= " AND arc.mid = '$mid' ";
  127. }
  128. if ($keyword != '') {
  129. $whereSql .= " AND ( CONCAT(arc.title,arc.writer) LIKE '%$keyword%') ";
  130. }
  131. if ($flag != '') {
  132. $whereSql .= " AND FIND_IN_SET('$flag', arc.flag) ";
  133. }
  134. if ($cid != 0) {
  135. $whereSql .= ' AND arc.typeid IN (' . GetSonIds($cid) . ')';
  136. }
  137. if ($arcrank != '') {
  138. $whereSql .= " AND arc.arcrank = '$arcrank' ";
  139. $CheckUserSend = "<button type='button' class='btn btn-secondary btn-sm' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&gurl=content_list.php';\">所有文档</button>";
  140. } else {
  141. $CheckUserSend = "<button type='button' class='btn btn-secondary btn-sm' onClick=\"location='catalog_do.php?cid=" . $cid . "&dopost=listArchives&arcrank=-1&gurl=content_list.php';\">稿件审核</button>";
  142. }
  143. $orderby = empty($orderby) ? 'id' : preg_replace("#[^a-z0-9]#", "", $orderby);
  144. $orderbyField = 'arc.' . $orderby;
  145. $query = "SELECT arc.id,arc.typeid,arc.senddate,arc.flag,arc.ismake,
  146. arc.channel,arc.arcrank,arc.click,arc.title,arc.color,arc.litpic,arc.pubdate,arc.mid
  147. FROM `$maintable` arc
  148. $whereSql
  149. ORDER BY $orderbyField DESC";
  150. if (empty($f) || !preg_match("#form#", $f)) $f = 'form1.arcid1';
  151. //初始化
  152. $dlist = new DataListCP();
  153. $dlist->pageSize = 30;
  154. //GET参数
  155. $dlist->SetParameter('dopost', 'listArchives');
  156. $dlist->SetParameter('keyword', $keyword);
  157. if (!empty($mid)) $dlist->SetParameter('mid', $mid);
  158. $dlist->SetParameter('cid', $cid);
  159. $dlist->SetParameter('flag', $flag);
  160. $dlist->SetParameter('orderby', $orderby);
  161. $dlist->SetParameter('arcrank', $arcrank);
  162. $dlist->SetParameter('channelid', $channelid);
  163. $dlist->SetParameter('f', $f);
  164. //模板
  165. if (empty($s_tmplets)) $s_tmplets = 'templets/content_list.htm';
  166. $dlist->SetTemplate(DEDEADMIN . '/' . $s_tmplets);
  167. //查询
  168. $dlist->SetSource($query);
  169. //显示
  170. $dlist->Display();
  171. // echo $dlist->queryTime;
  172. $dlist->Close();