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

105 lines
4.9KB

  1. <?php
  2. /**
  3. * 栏目选项函数
  4. *
  5. * @version $Id: inc_catalog_options.php 1 10:32 2010年7月21日Z tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2021, DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. /**
  12. * 获取选项列表
  13. *
  14. * @access public
  15. * @param string $selid 选择ID
  16. * @param string $userCatalog 用户类目
  17. * @param string $channeltype 频道类型
  18. * @return string
  19. */
  20. function GetOptionList($selid = 0, $userCatalog = 0, $channeltype = 0)
  21. {
  22. global $OptionArrayList, $channels, $dsql, $cfg_admin_channel, $admin_catalogs;
  23. $dsql->SetQuery("SELECT id,typename FROM `#@__channeltype` ");
  24. $dsql->Execute('dd');
  25. $channels = array();
  26. while ($row = $dsql->GetObject('dd')) $channels[$row->id] = $row->typename;
  27. $OptionArrayList = '';
  28. //当前选中的栏目
  29. if ($selid > 0) {
  30. $row = $dsql->GetOne("SELECT id,typename,ispart,channeltype FROM `#@__arctype` WHERE id='$selid'");
  31. if ($row['ispart'] == 1) $OptionArrayList .= "<option value='" . $row['id'] . "' class='option1' selected='selected'>" . $row['typename'] . "(封面频道)</option>\r\n";
  32. else $OptionArrayList .= "<option value='" . $row['id'] . "' selected='selected'>" . $row['typename'] . "</option>\r\n";
  33. }
  34. //是否限定用户管理的栏目
  35. if ($cfg_admin_channel == 'array') {
  36. if (count($admin_catalogs) == 0) {
  37. $query = "SELECT id,typename,ispart,channeltype FROM `#@__arctype` WHERE 1=2 ";
  38. } else {
  39. $admin_catalog = join(',', $admin_catalogs);
  40. $dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id IN($admin_catalog) GROUP BY reid ");
  41. $dsql->Execute('qq');
  42. $topidstr = '';
  43. while ($row = $dsql->GetObject('qq')) {
  44. if ($row->reid == 0) continue;
  45. $topidstr .= ($topidstr == '' ? $row->reid : ',' . $row->reid);
  46. }
  47. $admin_catalog .= ',' . $topidstr;
  48. $admin_catalogs = explode(',', $admin_catalog);
  49. $admin_catalogs = array_unique($admin_catalogs);
  50. $admin_catalog = join(',', $admin_catalogs);
  51. $admin_catalog = preg_replace("#,$#", '', $admin_catalog);
  52. $query = "SELECT id,typename,ispart,channeltype FROM `#@__arctype` WHERE id IN($admin_catalog) AND reid=0 AND ispart<>2 ";
  53. }
  54. } else {
  55. $query = "SELECT id,typename,ispart,channeltype FROM `#@__arctype` WHERE ispart<>2 AND reid=0 ORDER BY sortrank ASC ";
  56. }
  57. $dsql->SetQuery($query);
  58. $dsql->Execute('cc');
  59. while ($row = $dsql->GetObject('cc')) {
  60. $sonCats = '';
  61. LogicGetOptionArray($row->id, '─', $channeltype, $dsql, $sonCats);
  62. if ($sonCats != '') {
  63. if ($row->ispart == 1) $OptionArrayList .= "<option value='" . $row->id . "' class='option1'>" . $row->typename . "(封面频道)</option>\r\n";
  64. else if ($row->ispart == 2) $OptionArrayList .= '';
  65. else if (empty($channeltype) && $row->ispart != 0) $OptionArrayList .= "<option value='" . $row->id . "' class='option2'>" . $row->typename . "(" . $channels[$row->channeltype] . ")</option>\r\n";
  66. else $OptionArrayList .= "<option value='" . $row->id . "' class='option3'>" . $row->typename . "</option>\r\n";
  67. $OptionArrayList .= $sonCats;
  68. } else {
  69. if ($row->ispart == 0 && (!empty($channeltype) && $row->channeltype == $channeltype)) {
  70. $OptionArrayList .= "<option value='" . $row->id . "' class='option3'>" . $row->typename . "</option>\r\n";
  71. } else if ($row->ispart == 0 && empty($channeltype)) {
  72. // 专题
  73. $OptionArrayList .= "<option value='" . $row->id . "' class='option3'>" . $row->typename . "</option>\r\n";
  74. }
  75. }
  76. }
  77. return $OptionArrayList;
  78. }
  79. function LogicGetOptionArray($id, $step, $channeltype, &$dsql, &$sonCats)
  80. {
  81. global $OptionArrayList, $channels, $cfg_admin_channel, $admin_catalogs;
  82. $dsql->SetQuery("Select id,typename,ispart,channeltype From `#@__arctype` where reid='" . $id . "' And ispart<>2 order by sortrank asc");
  83. $dsql->Execute($id);
  84. while ($row = $dsql->GetObject($id)) {
  85. if ($cfg_admin_channel != 'all' && !in_array($row->id, $admin_catalogs)) {
  86. continue;
  87. }
  88. if ($row->channeltype == $channeltype && $row->ispart == 1) {
  89. $sonCats .= "<option value='" . $row->id . "' class='option1'>$step" . $row->typename . "</option>\r\n";
  90. } else if (($row->channeltype == $channeltype && $row->ispart == 0) || empty($channeltype)) {
  91. $sonCats .= "<option value='" . $row->id . "' class='option3'>$step" . $row->typename . "</option>\r\n";
  92. }
  93. LogicGetOptionArray($row->id, $step . '─', $channeltype, $dsql, $sonCats);
  94. }
  95. }