typeunit.class.selector.php
5.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<?php if(!defined('DEDEINC')) exit('Request Error!');
/**
* 栏目单元,选择框
*
* @version $Id: typeunit.class.selector.php 1 15:21 2010年7月5日Z tianya $
* @package DedeCMS.Libraries
* @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
* @license http://help.dedecms.com/usersguide/license.html
* @link http://www.dedecms.com
*/
require_once(DEDEDATA."/cache/inc_catalog_base.inc");
/**
* 栏目单元,选择框
*
* @package TypeUnitSelector
* @subpackage DedeCMS.Libraries
* @link http://www.dedecms.com
*/
class TypeUnitSelector
{
var $dsql;
//php5构造函数
function __construct()
{
global $cfg_Cs;
$this->dsql = $GLOBALS['dsql'];
}
function TypeUnitSelector()
{
$this->__construct();
}
//清理类
function Close() { }
/**
* 列出某一频道下的所有栏目
*
* @access public
* @param string $channel 频道ID
* @return void
*/
function ListAllType($channel=0)
{
global $cfg_admin_channel, $admin_catalogs, $targetid, $oldvalue;
$oldvalues = array();
if(!empty($oldvalue)) $oldvalues = explode(',', $oldvalue);
//检测用户有权限的顶级栏目
if($cfg_admin_channel=='array')
{
$admin_catalog = join(',', $admin_catalogs);
$this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id IN($admin_catalog) GROUP BY reid ");
$this->dsql->Execute();
$topidstr = '';
while($row = $this->dsql->GetObject())
{
if($row->reid==0) continue;
$topidstr .= ($topidstr=='' ? $row->reid : ','.$row->reid);
}
$admin_catalog .= ','.$topidstr;
$admin_catalogs = explode(',', $admin_catalog);
$admin_catalogs = array_unique($admin_catalogs);
}
$this->dsql->SetQuery("SELECT id,typedir,typename,ispart,channeltype FROM `#@__arctype` WHERE reid=0 ORDER BY sortrank");
$this->dsql->Execute(0);
$lastid = GetCookie('lastCidMenu');
while($row=$this->dsql->GetObject(0))
{
if( $cfg_admin_channel=='array' && !in_array($row->id, $admin_catalogs) )
{
continue;
}
$typeDir = $row->typedir;
$typeName = $row->typename;
$ispart = $row->ispart;
$id = $row->id;
$channeltype = $row->channeltype;
$ischeck = in_array($id, $oldvalues) ? ' checked' : '';
$chackRadio = "<input type='radio' name='seltypeid' value='{$id}' $ischeck />";
if($targetid=='typeid2') $chackRadio = "<input type='checkbox' name='seltypeid' id='seltypeid{$id}' value='{$id}' $ischeck />";
if((!empty($channel) && $channeltype !=$channel) || $ispart!=0)
{
$chackRadio = '';
}
$soncat = '';
$this->LogicListAllSunType($id, $channel, $soncat);
if($chackRadio=='' && $soncat=='') continue;
echo "<div class='quickselItem'>\r\n";
echo " <div class='topcat'>{$chackRadio}{$typeName}</div>\r\n";
if($soncat!='') echo " <div class='soncat'>{$soncat}</div>\r\n";
echo "</div>\r\n";
}
}
/**
* 获得子类目的递归调用
*
* @access public
* @param int $id 栏目ID
* @param int $channel 频道ID
* @param int $soncat 子级分类
* @return string
*/
function LogicListAllSunType($id, $channel=0, &$soncat)
{
global $cfg_admin_channel, $admin_catalogs, $targetid, $oldvalue;
$fid = $id;
$oldvalues = array();
if(!empty($oldvalue)) $oldvalues = explode(',', $oldvalue);
$this->dsql->SetQuery("SELECT id,reid,typedir,typename,ispart,channeltype FROM `#@__arctype` WHERE reid='".$id."' ORDER BY sortrank");
$this->dsql->Execute($fid);
while($row=$this->dsql->GetObject($fid))
{
if($cfg_admin_channel=='array' && !in_array($row->id, $admin_catalogs) )
{
continue;
}
$typeDir = $row->typedir;
$typeName = $row->typename;
$reid = $row->reid;
$id = $row->id;
$ispart = $row->ispart;
$channeltype = $row->channeltype;
$ischeck = in_array($id, $oldvalues) ? ' checked' : '';
$chackRadio = "<input type='radio' name='seltypeid' value='{$row->id}' $ischeck />";
if($targetid=='typeid2') $chackRadio = "<input type='checkbox' name='seltypeid' id='seltypeid{$id}' value='{$id}' $ischeck />";
if($ispart!=0)
{
$chackRadio = '';
}
if($channeltype!=$channel && !empty($channel))
{
continue;
}
if($chackRadio !='' )
{
$soncat .= " <div class='item'>".$chackRadio.$typeName."</div>\r\n";
$this->LogicListAllSunType($id, $channel, $soncat);
}
else
{
$soncat .= " <br style='clear:both' /><div class='item'><b>".$typeName.":</b></div>\r\n";
$this->LogicListAllSunType($id, $channel, $soncat);
$soncat .= " <br style='clear:both' />";
}
}
}
}//End Class