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

184 lines
6.8KB

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