r63: Updated initial copyright year from 2003 to 2002
[bugdar.git] / admin / usergroup.php
1 <?php
2 /*=====================================================================*\
3 || ################################################################### ||
4 || # Renapsus [#]version[#]
5 || # --------------------------------------------------------------- # ||
6 || # All parts of this file are ©2002-[#]year[#] Iris Studios, Inc. No # ||
7 || # part of this file may be reproduced in any way: part or whole. # ||
8 || # --------------------------------------------------------------- # ||
9 || # ©2002 - [#]year[#] Iris Studios, Inc. | http://www.iris-studios.com # ||
10 || ################################################################### ||
11 \*=====================================================================*/
12
13 require_once('./global.php');
14 require_once('./includes/functions_datastore.php');
15
16 if (!can_perform('canadmingroups'))
17 {
18 admin_login();
19 }
20
21 // ###################################################################
22
23 if (empty($_REQUEST['do']))
24 {
25 $_REQUEST['do'] = 'modify';
26 }
27
28 // ###################################################################
29
30 if ($_REQUEST['do'] == 'kill')
31 {
32 sanitize(array('usergroupid' => INT));
33
34 if ($vars['usergroupid'] < 7)
35 {
36 $admin->error(phrase('cant_delete_default_usergroup'));
37 }
38
39 $DB_sql->query("DELETE FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = $vars[usergroupid]");
40 $DB_sql->query("UPDATE " . TABLE_PREFIX . "user SET usergroupid = 2 WHERE usergroupid = $vars[usergroupid]");
41
42 build_usergroups();
43 build_assignedto();
44
45 $admin->redirect('usergroup.php?do=modify');
46 }
47
48 // ###################################################################
49
50 if ($_REQUEST['do'] == 'delete')
51 {
52 sanitize(array('usergroupid' => INT));
53
54 if ($vars['usergroupid'] < 7)
55 {
56 $admin->error(phrase('cant_delete_default_usergroup'));
57 }
58
59 $admin->page_confirm(phrase('confirm_delete_usergroup'), 'usergroup.php?do=kill&amp;usergroupid=' . $vars['usergroupid']);
60 }
61
62 // ###################################################################
63
64 if ($_REQUEST['do'] == 'add' OR $_REQUEST['do'] == 'edit')
65 {
66 $add = iff($_REQUEST['do'] == 'add', true, false);
67 $edit = iff($_REQUEST['do'] == 'edit', true, false);
68
69 sanitize(array('usergroupid' => INT));
70
71 $admin->page_start(iff($add, phrase('new_usergroup'), phrase('edit_usergroup')));
72
73 $admin->form_start('usergroup.php', iff($add, 'insert', 'update'));
74
75 if ($edit)
76 {
77 $usergroup = $DB_sql->query_first("SELECT * FROM " . TABLE_PREFIX . "usergroup WHERE usergroupid = $vars[usergroupid]");
78 if (!is_array($usergroup))
79 {
80 $admin->error('-1');
81 }
82
83 $admin->form_hidden_field('usergroupid', $usergroup['usergroupid']);
84 }
85 else
86 {
87 $usergroup['permissions'] = 319;
88 }
89
90 // Details
91 $admin->table_start();
92 $admin->table_head(phrase('usergroup_details'));
93 $admin->row_input(phrase('usergroup_title'), 'title', htmlspecialcharslike($usergroup['title']));
94 $admin->row_input(phrase('usergroup_display_title'), 'displaytitle', htmlspecialcharslike($usergroup['displaytitle']));
95 $admin->row_input(phrase('usergroup_open_markup'), 'opentag', htmlspecialcharslike($usergroup['opentag']));
96 $admin->row_input(phrase('usergroup_close_markup'), 'closetag', htmlspecialcharslike($usergroup['closetag']));
97 $admin->table_end();
98
99 // Permission
100 $admin->table_start();
101
102 // define permissions as groups
103 $permissions = array(
104 'general' => array(
105 'canviewbugs',
106 'cansearch',
107 'cansubscribe',
108 'canbeassignedto'),
109 'posting' => array(
110 'canvote',
111 'cansubmitbugs',
112 'canpostcomments',
113 'cangetattach',
114 'canputattach'),
115 'moderation' => array(
116 'caneditown',
117 'caneditothers',
118 'caneditinfo',
119 'canassign',
120 'canchangestatus'),
121 'admin' => array(
122 'canadminpanel',
123 'canadminbugs',
124 'canadminfields',
125 'canadminusers',
126 'canadmingroups',
127 'canadmintools')
128 );
129
130 $admin->table_head(phrase('usergroup_permission_settings'));
131
132 foreach ($permissions AS $group => $settings)
133 {
134 $admin->row_span(phrase("permissions_group_$group"), 'thead', 'center');
135 foreach ($settings AS $setting)
136 {
137 $admin->row_yesno(phrase("permissions_$setting"), "perm[$setting]", ($usergroup['permissions'] & $_PERMISSION["$setting"]));
138 }
139 }
140
141 $admin->table_end();
142
143 // Submit
144 $admin->table_start();
145 $admin->row_submit();
146 $admin->table_end();
147
148 $admin->form_end();
149
150 $admin->page_end();
151 }
152
153 // ###################################################################
154
155 if ($_POST['do'] == 'insert')
156 {
157 sanitize(array('title' => STR, 'displaytitle' => STR, 'opentag' => STR, 'closetag' => STR));
158
159 foreach ($_POST['perm'] AS $permtitle => $binaryswitch)
160 {
161 $permissionvalue += $_PERMISSION["$permtitle"] * $binaryswitch;
162 }
163
164 $DB_sql->query("
165 INSERT INTO " . TABLE_PREFIX . "usergroup
166 (title, displaytitle, opentag, closetag, permissions)
167 VALUES
168 ('" . addslasheslike($vars['title']) . "',
169 '" . addslasheslike($vars['displaytitle']) . "',
170 '" . addslasheslike($vars['opentag']) . "',
171 '" . addslasheslike($vars['closetag']) . "',
172 $permissionvalue
173 )"
174 );
175
176 build_usergroups();
177
178 $admin->redirect('usergroup.php?do=modify');
179 }
180
181 // ###################################################################
182
183 if ($_POST['do'] == 'update')
184 {
185 sanitize(array('usergroupid' => INT, 'title' => STR, 'displaytitle' => STR, 'opentag' => STR, 'closetag' => STR));
186
187 foreach ($_POST['perm'] AS $permtitle => $binaryswitch)
188 {
189 $permissionvalue += $_PERMISSION["$permtitle"] * $binaryswitch;
190 }
191
192 $DB_sql->query("
193 UPDATE " . TABLE_PREFIX . "usergroup
194 SET title = '" . addslasheslike($vars['title']) . "',
195 displaytitle = '" . addslasheslike($vars['displaytitle']) . "',
196 opentag = '" . addslasheslike(unhtmlspecialchars($vars['opentag'])) . "',
197 closetag = '" . addslasheslike(unhtmlspecialchars($vars['closetag'])) . "',
198 permissions = $permissionvalue
199 WHERE usergroupid = $vars[usergroupid]"
200 );
201
202 build_usergroups();
203 build_assignedto();
204
205 $admin->redirect('usergroup.php?do=modify');
206 }
207
208 // ###################################################################
209
210 if ($_REQUEST['do'] == 'modify')
211 {
212 $admin->page_start(phrase('usergroup_manager'));
213
214 $admin->form_start('usergroup.php', 'null');
215 $admin->table_start();
216 $admin->table_head(phrase('usergroup_manager'), 3);
217
218 $groups = $DB_sql->query("SELECT * FROM " . TABLE_PREFIX . "usergroup ORDER BY usergroupid ASC");
219 while ($group = $DB_sql->fetch_array($groups))
220 {
221 $usergroups["$group[usergroupid]"] = $group;
222 }
223 $DB_sql->free_result($groups);
224
225 $groups = $DB_sql->query("
226 SELECT COUNT(user.userid) AS total, user.usergroupid
227 FROM " . TABLE_PREFIX . "user AS user
228 LEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup USING (usergroupid)
229 GROUP BY usergroup.usergroupid
230 ORDER BY usergroup.usergroupid"
231 );
232 while ($group = $DB_sql->fetch_array($groups))
233 {
234 $usergroups["$group[usergroupid]"]['total'] = $group['total'];
235 }
236
237 $admin->table_column_head(array(phrase('usergroup'), phrase('number_of_users'), phrase('action')));
238 foreach ($usergroups AS $group)
239 {
240 $admin->row_multi_item(array("<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">$group[title]</a>" => 'l', iff(!$group['total'], '-', $group['total']) => 'c', "<a href=\"usergroup.php?do=edit&amp;usergroupid=$group[usergroupid]\">" . phrase('edit_wraplink') . "</a>" . iff($group['usergroupid'] > 6, "<a href=\"usergroup.php?do=delete&amp;usergroupid=$group[usergroupid]\">" . phrase('delete_wraplink') . "</a>") => 'c'));
241 }
242
243 $admin->row_span('<input type="button" name="addug" value=" ' . phrase('add_new_usergroup') . ' " onclick="window.location = \'usergroup.php?do=add\';" />', 'tfoot', 'center', 3);
244 $admin->table_end();
245 $admin->form_end();
246
247 $admin->page_end();
248 }
249
250 /*=====================================================================*\
251 || ###################################################################
252 || # $HeadURL$
253 || # $Id$
254 || ###################################################################
255 \*=====================================================================*/
256 ?>