Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 640 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
ucp_groups | |
0.00% |
0 / 638 |
|
0.00% |
0 / 1 |
28056 | |
0.00% |
0 / 1 |
main | |
0.00% |
0 / 638 |
|
0.00% |
0 / 1 |
28056 |
1 | <?php |
2 | /** |
3 | * |
4 | * This file is part of the phpBB Forum Software package. |
5 | * |
6 | * @copyright (c) phpBB Limited <https://www.phpbb.com> |
7 | * @license GNU General Public License, version 2 (GPL-2.0) |
8 | * |
9 | * For full copyright and license information, please see |
10 | * the docs/CREDITS.txt file. |
11 | * |
12 | */ |
13 | |
14 | /** |
15 | * @ignore |
16 | */ |
17 | if (!defined('IN_PHPBB')) |
18 | { |
19 | exit; |
20 | } |
21 | |
22 | /** |
23 | * ucp_groups |
24 | */ |
25 | class ucp_groups |
26 | { |
27 | var $u_action; |
28 | |
29 | function main($id, $mode) |
30 | { |
31 | global $config, $phpbb_root_path, $phpEx, $phpbb_admin_path; |
32 | global $db, $user, $auth, $cache, $template; |
33 | global $request, $phpbb_container, $phpbb_log; |
34 | |
35 | /** @var \phpbb\language\language $language Language object */ |
36 | $language = $phpbb_container->get('language'); |
37 | |
38 | $user->add_lang('groups'); |
39 | |
40 | $return_page = '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '">', '</a>'); |
41 | |
42 | $mark_ary = $request->variable('mark', array(0)); |
43 | $submit = $request->variable('submit', false, false, \phpbb\request\request_interface::POST); |
44 | |
45 | /** @var \phpbb\group\helper $group_helper */ |
46 | $group_helper = $phpbb_container->get('group_helper'); |
47 | |
48 | switch ($mode) |
49 | { |
50 | case 'membership': |
51 | |
52 | $this->page_title = 'UCP_USERGROUPS_MEMBER'; |
53 | |
54 | if ($submit || isset($_POST['change_default'])) |
55 | { |
56 | $action = (isset($_POST['change_default'])) ? 'change_default' : $request->variable('action', ''); |
57 | $group_id = ($action == 'change_default') ? $request->variable('default', 0) : $request->variable('selected', 0); |
58 | |
59 | if (!$group_id) |
60 | { |
61 | trigger_error('NO_GROUP_SELECTED'); |
62 | } |
63 | |
64 | $sql = 'SELECT group_id, group_name, group_type |
65 | FROM ' . GROUPS_TABLE . " |
66 | WHERE group_id IN ($group_id, {$user->data['group_id']})"; |
67 | $result = $db->sql_query($sql); |
68 | |
69 | $group_row = array(); |
70 | while ($row = $db->sql_fetchrow($result)) |
71 | { |
72 | $row['group_name'] = $group_helper->get_name($row['group_name']); |
73 | $group_row[$row['group_id']] = $row; |
74 | } |
75 | $db->sql_freeresult($result); |
76 | |
77 | if (!count($group_row)) |
78 | { |
79 | trigger_error('GROUP_NOT_EXIST'); |
80 | } |
81 | |
82 | switch ($action) |
83 | { |
84 | case 'change_default': |
85 | // User already having this group set as default? |
86 | if ($group_id == $user->data['group_id']) |
87 | { |
88 | trigger_error($user->lang['ALREADY_DEFAULT_GROUP'] . $return_page); |
89 | } |
90 | |
91 | if (!$auth->acl_get('u_chggrp')) |
92 | { |
93 | send_status_line(403, 'Forbidden'); |
94 | trigger_error($user->lang['NOT_AUTHORISED'] . $return_page); |
95 | } |
96 | |
97 | // User needs to be member of the group in order to make it default |
98 | if (!group_memberships($group_id, $user->data['user_id'], true)) |
99 | { |
100 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
101 | } |
102 | |
103 | if (confirm_box(true)) |
104 | { |
105 | group_user_attributes('default', $group_id, $user->data['user_id']); |
106 | |
107 | $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_CHANGE', false, array( |
108 | 'reportee_id' => $user->data['user_id'], |
109 | sprintf($user->lang['USER_GROUP_CHANGE'], $group_row[$user->data['group_id']]['group_name'], $group_row[$group_id]['group_name']) |
110 | )); |
111 | |
112 | meta_refresh(3, $this->u_action); |
113 | trigger_error($user->lang['CHANGED_DEFAULT_GROUP'] . $return_page); |
114 | } |
115 | else |
116 | { |
117 | $s_hidden_fields = array( |
118 | 'default' => $group_id, |
119 | 'change_default'=> true |
120 | ); |
121 | |
122 | confirm_box(false, sprintf($user->lang['GROUP_CHANGE_DEFAULT'], $group_row[$group_id]['group_name']), build_hidden_fields($s_hidden_fields)); |
123 | } |
124 | |
125 | break; |
126 | |
127 | case 'resign': |
128 | |
129 | // User tries to resign from default group but is not allowed to change it? |
130 | if ($group_id == $user->data['group_id'] && !$auth->acl_get('u_chggrp')) |
131 | { |
132 | trigger_error($user->lang['NOT_RESIGN_FROM_DEFAULT_GROUP'] . $return_page); |
133 | } |
134 | |
135 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
136 | { |
137 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
138 | } |
139 | $row = current($row); |
140 | |
141 | $sql = 'SELECT group_type |
142 | FROM ' . GROUPS_TABLE . ' |
143 | WHERE group_id = ' . $group_id; |
144 | $result = $db->sql_query($sql); |
145 | $group_type = (int) $db->sql_fetchfield('group_type'); |
146 | $db->sql_freeresult($result); |
147 | |
148 | if ($group_type != GROUP_OPEN && $group_type != GROUP_FREE) |
149 | { |
150 | trigger_error($user->lang['CANNOT_RESIGN_GROUP'] . $return_page); |
151 | } |
152 | |
153 | if (confirm_box(true)) |
154 | { |
155 | group_user_del($group_id, $user->data['user_id']); |
156 | |
157 | $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_RESIGN', false, array( |
158 | 'reportee_id' => $user->data['user_id'], |
159 | $group_row[$group_id]['group_name'] |
160 | )); |
161 | |
162 | meta_refresh(3, $this->u_action); |
163 | trigger_error($user->lang[($row['user_pending']) ? 'GROUP_RESIGNED_PENDING' : 'GROUP_RESIGNED_MEMBERSHIP'] . $return_page); |
164 | } |
165 | else |
166 | { |
167 | $s_hidden_fields = array( |
168 | 'selected' => $group_id, |
169 | 'action' => 'resign', |
170 | 'submit' => true |
171 | ); |
172 | |
173 | confirm_box(false, ($row['user_pending']) ? 'GROUP_RESIGN_PENDING' : 'GROUP_RESIGN_MEMBERSHIP', build_hidden_fields($s_hidden_fields)); |
174 | } |
175 | |
176 | break; |
177 | |
178 | case 'join': |
179 | |
180 | $sql = 'SELECT ug.*, u.username, u.username_clean, u.user_email |
181 | FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u |
182 | WHERE ug.user_id = u.user_id |
183 | AND ug.group_id = ' . $group_id . ' |
184 | AND ug.user_id = ' . $user->data['user_id']; |
185 | $result = $db->sql_query($sql); |
186 | $row = $db->sql_fetchrow($result); |
187 | $db->sql_freeresult($result); |
188 | |
189 | if ($row) |
190 | { |
191 | if ($row['user_pending']) |
192 | { |
193 | trigger_error($user->lang['ALREADY_IN_GROUP_PENDING'] . $return_page); |
194 | } |
195 | |
196 | trigger_error($user->lang['ALREADY_IN_GROUP'] . $return_page); |
197 | } |
198 | |
199 | // Check permission to join (open group or request) |
200 | if ($group_row[$group_id]['group_type'] != GROUP_OPEN && $group_row[$group_id]['group_type'] != GROUP_FREE) |
201 | { |
202 | trigger_error($user->lang['CANNOT_JOIN_GROUP'] . $return_page); |
203 | } |
204 | |
205 | if (confirm_box(true)) |
206 | { |
207 | if ($group_row[$group_id]['group_type'] == GROUP_FREE) |
208 | { |
209 | group_user_add($group_id, $user->data['user_id']); |
210 | } |
211 | else |
212 | { |
213 | group_user_add($group_id, $user->data['user_id'], false, false, false, 0, 1); |
214 | } |
215 | |
216 | $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_JOIN' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? '' : '_PENDING'), false, array( |
217 | 'reportee_id' => $user->data['user_id'], |
218 | $group_row[$group_id]['group_name'] |
219 | )); |
220 | |
221 | meta_refresh(3, $this->u_action); |
222 | trigger_error($user->lang[($group_row[$group_id]['group_type'] == GROUP_FREE) ? 'GROUP_JOINED' : 'GROUP_JOINED_PENDING'] . $return_page); |
223 | } |
224 | else |
225 | { |
226 | $s_hidden_fields = array( |
227 | 'selected' => $group_id, |
228 | 'action' => 'join', |
229 | 'submit' => true |
230 | ); |
231 | |
232 | confirm_box(false, ($group_row[$group_id]['group_type'] == GROUP_FREE) ? 'GROUP_JOIN' : 'GROUP_JOIN_PENDING', build_hidden_fields($s_hidden_fields)); |
233 | } |
234 | |
235 | break; |
236 | |
237 | case 'demote': |
238 | |
239 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
240 | { |
241 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
242 | } |
243 | $row = current($row); |
244 | |
245 | if (!$row['group_leader']) |
246 | { |
247 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
248 | } |
249 | |
250 | if (confirm_box(true)) |
251 | { |
252 | group_user_attributes('demote', $group_id, $user->data['user_id']); |
253 | |
254 | $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GROUP_DEMOTE', false, array( |
255 | 'reportee_id' => $user->data['user_id'], |
256 | $group_row[$group_id]['group_name'] |
257 | )); |
258 | |
259 | meta_refresh(3, $this->u_action); |
260 | trigger_error($user->lang['USER_GROUP_DEMOTED'] . $return_page); |
261 | } |
262 | else |
263 | { |
264 | $s_hidden_fields = array( |
265 | 'selected' => $group_id, |
266 | 'action' => 'demote', |
267 | 'submit' => true |
268 | ); |
269 | |
270 | confirm_box(false, 'USER_GROUP_DEMOTE', build_hidden_fields($s_hidden_fields)); |
271 | } |
272 | |
273 | break; |
274 | } |
275 | } |
276 | |
277 | $sql = 'SELECT g.*, ug.group_leader, ug.user_pending |
278 | FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug |
279 | WHERE ug.user_id = ' . $user->data['user_id'] . ' |
280 | AND g.group_id = ug.group_id |
281 | ORDER BY g.group_type DESC, g.group_name'; |
282 | $result = $db->sql_query($sql); |
283 | |
284 | $group_id_ary = array(); |
285 | $leader_count = $member_count = $pending_count = 0; |
286 | while ($row = $db->sql_fetchrow($result)) |
287 | { |
288 | $block = ($row['group_leader']) ? 'leader' : (($row['user_pending']) ? 'pending' : 'member'); |
289 | |
290 | switch ($row['group_type']) |
291 | { |
292 | case GROUP_OPEN: |
293 | $group_status = 'OPEN'; |
294 | break; |
295 | |
296 | case GROUP_CLOSED: |
297 | $group_status = 'CLOSED'; |
298 | break; |
299 | |
300 | case GROUP_HIDDEN: |
301 | $group_status = 'HIDDEN'; |
302 | break; |
303 | |
304 | case GROUP_SPECIAL: |
305 | $group_status = 'SPECIAL'; |
306 | break; |
307 | |
308 | case GROUP_FREE: |
309 | $group_status = 'FREE'; |
310 | break; |
311 | } |
312 | |
313 | $template->assign_block_vars($block, array( |
314 | 'GROUP_ID' => $row['group_id'], |
315 | 'GROUP_NAME' => $group_helper->get_name($row['group_name']), |
316 | 'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield'], $row['group_desc_options']) : $user->lang['GROUP_IS_SPECIAL'], |
317 | 'GROUP_SPECIAL' => ($row['group_type'] <> GROUP_SPECIAL) ? false : true, |
318 | 'GROUP_STATUS' => $user->lang['GROUP_IS_' . $group_status], |
319 | 'GROUP_COLOUR' => $row['group_colour'], |
320 | |
321 | 'U_VIEW_GROUP' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']), |
322 | |
323 | 'S_GROUP_DEFAULT' => ($row['group_id'] == $user->data['group_id']) ? true : false, |
324 | 'S_ROW_COUNT' => ${$block . '_count'}++) |
325 | ); |
326 | |
327 | $group_id_ary[] = (int) $row['group_id']; |
328 | } |
329 | $db->sql_freeresult($result); |
330 | |
331 | // Hide hidden groups unless user is an admin with group privileges |
332 | $sql_and = ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? '<> ' . GROUP_SPECIAL : 'NOT IN (' . GROUP_SPECIAL . ', ' . GROUP_HIDDEN . ')'; |
333 | |
334 | $sql = 'SELECT group_id, group_name, group_colour, group_desc, group_desc_uid, group_desc_bitfield, group_desc_options, group_type, group_founder_manage |
335 | FROM ' . GROUPS_TABLE . ' |
336 | WHERE ' . ((count($group_id_ary)) ? $db->sql_in_set('group_id', $group_id_ary, true) . ' AND ' : '') . " |
337 | group_type $sql_and |
338 | ORDER BY group_type DESC, group_name"; |
339 | $result = $db->sql_query($sql); |
340 | |
341 | $nonmember_count = 0; |
342 | while ($row = $db->sql_fetchrow($result)) |
343 | { |
344 | switch ($row['group_type']) |
345 | { |
346 | case GROUP_OPEN: |
347 | $group_status = 'OPEN'; |
348 | break; |
349 | |
350 | case GROUP_CLOSED: |
351 | $group_status = 'CLOSED'; |
352 | break; |
353 | |
354 | case GROUP_HIDDEN: |
355 | $group_status = 'HIDDEN'; |
356 | break; |
357 | |
358 | case GROUP_SPECIAL: |
359 | $group_status = 'SPECIAL'; |
360 | break; |
361 | |
362 | case GROUP_FREE: |
363 | $group_status = 'FREE'; |
364 | break; |
365 | } |
366 | |
367 | $template->assign_block_vars('nonmember', array( |
368 | 'GROUP_ID' => $row['group_id'], |
369 | 'GROUP_NAME' => $group_helper->get_name($row['group_name']), |
370 | 'GROUP_DESC' => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield'], $row['group_desc_options']) : $user->lang['GROUP_IS_SPECIAL'], |
371 | 'GROUP_SPECIAL' => ($row['group_type'] <> GROUP_SPECIAL) ? false : true, |
372 | 'GROUP_CLOSED' => ($row['group_type'] <> GROUP_CLOSED || $auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? false : true, |
373 | 'GROUP_STATUS' => $user->lang['GROUP_IS_' . $group_status], |
374 | 'S_CAN_JOIN' => ($row['group_type'] == GROUP_OPEN || $row['group_type'] == GROUP_FREE) ? true : false, |
375 | 'GROUP_COLOUR' => $row['group_colour'], |
376 | |
377 | 'U_VIEW_GROUP' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']), |
378 | |
379 | 'S_ROW_COUNT' => $nonmember_count++) |
380 | ); |
381 | } |
382 | $db->sql_freeresult($result); |
383 | |
384 | $template->assign_vars(array( |
385 | 'S_CHANGE_DEFAULT' => ($auth->acl_get('u_chggrp')) ? true : false, |
386 | 'S_LEADER_COUNT' => $leader_count, |
387 | 'S_MEMBER_COUNT' => $member_count, |
388 | 'S_PENDING_COUNT' => $pending_count, |
389 | 'S_NONMEMBER_COUNT' => $nonmember_count, |
390 | |
391 | 'S_UCP_ACTION' => $this->u_action) |
392 | ); |
393 | |
394 | break; |
395 | |
396 | case 'manage': |
397 | |
398 | $this->page_title = 'UCP_USERGROUPS_MANAGE'; |
399 | $action = (isset($_POST['addusers'])) ? 'addusers' : $request->variable('action', ''); |
400 | $group_id = $request->variable('g', 0); |
401 | |
402 | if (!function_exists('phpbb_get_user_rank')) |
403 | { |
404 | include($phpbb_root_path . 'includes/functions_display.' . $phpEx); |
405 | } |
406 | |
407 | add_form_key('ucp_groups'); |
408 | |
409 | if ($group_id) |
410 | { |
411 | $sql = 'SELECT g.*, t.teampage_position AS group_teampage |
412 | FROM ' . GROUPS_TABLE . ' g |
413 | LEFT JOIN ' . TEAMPAGE_TABLE . ' t |
414 | ON (t.group_id = g.group_id) |
415 | WHERE g.group_id = ' . $group_id; |
416 | $result = $db->sql_query($sql); |
417 | $group_row = $db->sql_fetchrow($result); |
418 | $db->sql_freeresult($result); |
419 | |
420 | if (!$group_row) |
421 | { |
422 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
423 | } |
424 | |
425 | // Check if the user is allowed to manage this group if set to founder only. |
426 | if ($user->data['user_type'] != USER_FOUNDER && $group_row['group_founder_manage']) |
427 | { |
428 | trigger_error($user->lang['NOT_ALLOWED_MANAGE_GROUP'] . $return_page, E_USER_WARNING); |
429 | } |
430 | |
431 | $group_name = $group_row['group_name']; |
432 | $group_type = $group_row['group_type']; |
433 | |
434 | /** @var \phpbb\avatar\helper $avatar_helper */ |
435 | $avatar_helper = $phpbb_container->get('avatar.helper'); |
436 | |
437 | $group_avatar = $avatar_helper->get_group_avatar($group_row, 'GROUP_AVATAR', true); |
438 | $template->assign_vars($avatar_helper->get_template_vars($group_avatar)); |
439 | |
440 | $template->assign_vars(array( |
441 | 'GROUP_NAME' => $group_helper->get_name($group_name), |
442 | 'GROUP_INTERNAL_NAME' => $group_name, |
443 | 'GROUP_COLOUR' => (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '', |
444 | 'GROUP_DESC_DISP' => generate_text_for_display($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield'], $group_row['group_desc_options']), |
445 | 'GROUP_TYPE' => $group_row['group_type'], |
446 | )); |
447 | } |
448 | |
449 | switch ($action) |
450 | { |
451 | case 'edit': |
452 | |
453 | if (!$group_id) |
454 | { |
455 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
456 | } |
457 | |
458 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
459 | { |
460 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
461 | } |
462 | $row = current($row); |
463 | |
464 | if (!$row['group_leader']) |
465 | { |
466 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
467 | } |
468 | |
469 | $user->add_lang(array('acp/groups', 'acp/common')); |
470 | |
471 | $update = (isset($_POST['update'])) ? true : false; |
472 | |
473 | $error = array(); |
474 | |
475 | // Setup avatar data for later |
476 | $avatars_enabled = false; |
477 | $avatar_drivers = null; |
478 | $avatar_data = null; |
479 | $avatar_error = array(); |
480 | |
481 | /** @var \phpbb\avatar\manager $phpbb_avatar_manager */ |
482 | $phpbb_avatar_manager = $phpbb_container->get('avatar.manager'); |
483 | |
484 | if ($config['allow_avatar']) |
485 | { |
486 | $avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers(); |
487 | |
488 | // This is normalised data, without the group_ prefix |
489 | $avatar_data = \phpbb\avatar\manager::clean_row($group_row, 'group'); |
490 | } |
491 | |
492 | // Handle deletion of avatars |
493 | if ($request->is_set_post('avatar_delete')) |
494 | { |
495 | if (confirm_box(true)) |
496 | { |
497 | $avatar_data['id'] = substr($avatar_data['id'], 1); |
498 | $phpbb_avatar_manager->handle_avatar_delete($db, $user, $avatar_data, GROUPS_TABLE, 'group_'); |
499 | $cache->destroy('sql', GROUPS_TABLE); |
500 | |
501 | $message = $action === 'edit' ? 'GROUP_UPDATED' : 'GROUP_CREATED'; |
502 | trigger_error($user->lang[$message] . $return_page); |
503 | } |
504 | else |
505 | { |
506 | confirm_box(false, $user->lang('CONFIRM_AVATAR_DELETE'), build_hidden_fields(array( |
507 | 'avatar_delete' => true, |
508 | 'i' => $id, |
509 | 'mode' => $mode, |
510 | 'g' => $group_id, |
511 | 'action' => $action, |
512 | ))); |
513 | } |
514 | } |
515 | |
516 | // Did we submit? |
517 | if ($update) |
518 | { |
519 | $group_name = $request->variable('group_name', '', true); |
520 | $group_desc = $request->variable('group_desc', '', true); |
521 | $group_type = $request->variable('group_type', GROUP_FREE); |
522 | |
523 | $allow_desc_bbcode = $request->variable('desc_parse_bbcode', false); |
524 | $allow_desc_urls = $request->variable('desc_parse_urls', false); |
525 | $allow_desc_smilies = $request->variable('desc_parse_smilies', false); |
526 | |
527 | $submit_ary = array( |
528 | 'colour' => $request->variable('group_colour', ''), |
529 | 'rank' => $request->variable('group_rank', 0), |
530 | 'receive_pm' => isset($_REQUEST['group_receive_pm']) ? 1 : 0, |
531 | 'message_limit' => $request->variable('group_message_limit', 0), |
532 | 'max_recipients'=> $request->variable('group_max_recipients', 0), |
533 | 'legend' => $group_row['group_legend'], |
534 | 'teampage' => $group_row['group_teampage'], |
535 | ); |
536 | |
537 | if (!check_form_key('ucp_groups')) |
538 | { |
539 | $error[] = $user->lang['FORM_INVALID']; |
540 | } |
541 | |
542 | if (!count($error) && $config['allow_avatar']) |
543 | { |
544 | // Handle avatar |
545 | $driver_name = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', '')); |
546 | |
547 | if (in_array($driver_name, $avatar_drivers) && !$request->is_set_post('avatar_delete')) |
548 | { |
549 | $driver = $phpbb_avatar_manager->get_driver($driver_name); |
550 | $result = $driver->process_form($request, $template, $user, $avatar_data, $avatar_error); |
551 | |
552 | if ($result && empty($avatar_error)) |
553 | { |
554 | $result['avatar_type'] = $driver_name; |
555 | |
556 | $submit_ary = array_merge($submit_ary, $result); |
557 | } |
558 | } |
559 | |
560 | // Merge any avatars errors into the primary error array |
561 | $error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error)); |
562 | } |
563 | |
564 | // Validate submitted colour value |
565 | if ($colour_error = validate_data($submit_ary, array('colour' => array('hex_colour', true)))) |
566 | { |
567 | // Replace "error" string with its real, localised form |
568 | $error = array_merge($error, $colour_error); |
569 | } |
570 | |
571 | if (!count($error)) |
572 | { |
573 | // Only set the rank, colour, etc. if it's changed or if we're adding a new |
574 | // group. This prevents existing group members being updated if no changes |
575 | // were made. |
576 | // However there are some attributes that need to be set everytime, |
577 | // otherwise the group gets removed from the feature. |
578 | $set_attributes = array('legend', 'teampage'); |
579 | |
580 | $group_attributes = array(); |
581 | $test_variables = array( |
582 | 'rank' => 'int', |
583 | 'colour' => 'string', |
584 | 'avatar' => 'string', |
585 | 'avatar_type' => 'string', |
586 | 'avatar_width' => 'int', |
587 | 'avatar_height' => 'int', |
588 | 'receive_pm' => 'int', |
589 | 'legend' => 'int', |
590 | 'teampage' => 'int', |
591 | 'message_limit' => 'int', |
592 | 'max_recipients'=> 'int', |
593 | ); |
594 | |
595 | foreach ($test_variables as $test => $type) |
596 | { |
597 | if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || isset($group_attributes['group_avatar']) && strpos($test, 'avatar') === 0 || in_array($test, $set_attributes))) |
598 | { |
599 | settype($submit_ary[$test], $type); |
600 | $group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test]; |
601 | } |
602 | } |
603 | |
604 | if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies))) |
605 | { |
606 | $cache->destroy('sql', GROUPS_TABLE); |
607 | $cache->destroy('sql', TEAMPAGE_TABLE); |
608 | |
609 | $message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED'; |
610 | trigger_error($user->lang[$message] . $return_page); |
611 | } |
612 | } |
613 | |
614 | if (count($error)) |
615 | { |
616 | $error = array_map(array(&$user, 'lang'), $error); |
617 | $group_rank = $submit_ary['rank']; |
618 | |
619 | $group_desc_data = array( |
620 | 'text' => $group_desc, |
621 | 'allow_bbcode' => $allow_desc_bbcode, |
622 | 'allow_smilies' => $allow_desc_smilies, |
623 | 'allow_urls' => $allow_desc_urls |
624 | ); |
625 | } |
626 | } |
627 | else if (!$group_id) |
628 | { |
629 | $group_desc_data = array( |
630 | 'text' => '', |
631 | 'allow_bbcode' => true, |
632 | 'allow_smilies' => true, |
633 | 'allow_urls' => true |
634 | ); |
635 | $group_rank = 0; |
636 | $group_type = GROUP_OPEN; |
637 | } |
638 | else |
639 | { |
640 | $group_desc_data = generate_text_for_edit($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_options']); |
641 | $group_rank = $group_row['group_rank']; |
642 | } |
643 | |
644 | $sql = 'SELECT * |
645 | FROM ' . RANKS_TABLE . ' |
646 | WHERE rank_special = 1 |
647 | ORDER BY rank_title'; |
648 | $result = $db->sql_query($sql); |
649 | |
650 | $rank_options = '<option value="0"' . ((!$group_rank) ? ' selected="selected"' : '') . '>' . $user->lang['USER_DEFAULT'] . '</option>'; |
651 | while ($row = $db->sql_fetchrow($result)) |
652 | { |
653 | $selected = ($group_rank && $row['rank_id'] == $group_rank) ? ' selected="selected"' : ''; |
654 | $rank_options .= '<option value="' . $row['rank_id'] . '"' . $selected . '>' . $row['rank_title'] . '</option>'; |
655 | } |
656 | $db->sql_freeresult($result); |
657 | |
658 | $type_free = ($group_type == GROUP_FREE) ? ' checked="checked"' : ''; |
659 | $type_open = ($group_type == GROUP_OPEN) ? ' checked="checked"' : ''; |
660 | $type_closed = ($group_type == GROUP_CLOSED) ? ' checked="checked"' : ''; |
661 | $type_hidden = ($group_type == GROUP_HIDDEN) ? ' checked="checked"' : ''; |
662 | |
663 | // Load up stuff for avatars |
664 | if ($config['allow_avatar']) |
665 | { |
666 | $avatars_enabled = false; |
667 | $selected_driver = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', $avatar_data['avatar_type'])); |
668 | |
669 | // Assign min and max values before generating avatar driver html |
670 | $template->assign_vars(array( |
671 | 'AVATAR_MIN_WIDTH' => $config['avatar_min_width'], |
672 | 'AVATAR_MAX_WIDTH' => $config['avatar_max_width'], |
673 | 'AVATAR_MIN_HEIGHT' => $config['avatar_min_height'], |
674 | 'AVATAR_MAX_HEIGHT' => $config['avatar_max_height'], |
675 | )); |
676 | |
677 | foreach ($avatar_drivers as $current_driver) |
678 | { |
679 | $driver = $phpbb_avatar_manager->get_driver($current_driver); |
680 | |
681 | $avatars_enabled = true; |
682 | $template->set_filenames(array( |
683 | 'avatar' => $driver->get_template_name(), |
684 | )); |
685 | |
686 | if ($driver->prepare_form($request, $template, $user, $avatar_data, $avatar_error)) |
687 | { |
688 | $driver_name = $phpbb_avatar_manager->prepare_driver_name($current_driver); |
689 | $driver_upper = strtoupper($driver_name); |
690 | $template->assign_block_vars('avatar_drivers', array( |
691 | 'L_TITLE' => $user->lang($driver_upper . '_TITLE'), |
692 | 'L_EXPLAIN' => $user->lang($driver_upper . '_EXPLAIN'), |
693 | |
694 | 'DRIVER' => $driver_name, |
695 | 'SELECTED' => $current_driver == $selected_driver, |
696 | 'OUTPUT' => $template->assign_display('avatar'), |
697 | )); |
698 | } |
699 | } |
700 | } |
701 | |
702 | if (isset($phpbb_avatar_manager) && !$update) |
703 | { |
704 | // Merge any avatars errors into the primary error array |
705 | $error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error)); |
706 | } |
707 | |
708 | $template->assign_vars(array( |
709 | 'S_EDIT' => true, |
710 | 'S_INCLUDE_SWATCH' => true, |
711 | 'S_FORM_ENCTYPE' => ' enctype="multipart/form-data"', |
712 | 'S_ERROR' => (count($error)) ? true : false, |
713 | 'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL) ? true : false, |
714 | 'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled), |
715 | 'S_GROUP_MANAGE' => true, |
716 | |
717 | 'ERROR_MSG' => (count($error)) ? implode('<br />', $error) : '', |
718 | 'GROUP_RECEIVE_PM' => (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ? ' checked="checked"' : '', |
719 | 'GROUP_MESSAGE_LIMIT' => (isset($group_row['group_message_limit'])) ? $group_row['group_message_limit'] : 0, |
720 | 'GROUP_MAX_RECIPIENTS' => (isset($group_row['group_max_recipients'])) ? $group_row['group_max_recipients'] : 0, |
721 | |
722 | 'GROUP_DESC' => $group_desc_data['text'], |
723 | 'S_DESC_BBCODE_CHECKED' => $group_desc_data['allow_bbcode'], |
724 | 'S_DESC_URLS_CHECKED' => $group_desc_data['allow_urls'], |
725 | 'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'], |
726 | |
727 | 'S_RANK_OPTIONS' => $rank_options, |
728 | |
729 | 'GROUP_TYPE_FREE' => GROUP_FREE, |
730 | 'GROUP_TYPE_OPEN' => GROUP_OPEN, |
731 | 'GROUP_TYPE_CLOSED' => GROUP_CLOSED, |
732 | 'GROUP_TYPE_HIDDEN' => GROUP_HIDDEN, |
733 | 'GROUP_TYPE_SPECIAL' => GROUP_SPECIAL, |
734 | |
735 | 'GROUP_FREE' => $type_free, |
736 | 'GROUP_OPEN' => $type_open, |
737 | 'GROUP_CLOSED' => $type_closed, |
738 | 'GROUP_HIDDEN' => $type_hidden, |
739 | |
740 | 'S_UCP_ACTION' => $this->u_action . "&action=$action&g=$group_id", |
741 | 'L_AVATAR_EXPLAIN' => phpbb_avatar_explanation_string(), |
742 | )); |
743 | |
744 | break; |
745 | |
746 | case 'list': |
747 | |
748 | if (!$group_id) |
749 | { |
750 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
751 | } |
752 | |
753 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
754 | { |
755 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
756 | } |
757 | $row = current($row); |
758 | |
759 | if (!$row['group_leader']) |
760 | { |
761 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
762 | } |
763 | |
764 | $user->add_lang(array('acp/groups', 'acp/common')); |
765 | $start = $request->variable('start', 0); |
766 | |
767 | // Grab the leaders - always, on every page... |
768 | $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending |
769 | FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug |
770 | WHERE ug.group_id = $group_id |
771 | AND u.user_id = ug.user_id |
772 | AND ug.group_leader = 1 |
773 | ORDER BY ug.user_pending DESC, u.username_clean"; |
774 | $result = $db->sql_query($sql); |
775 | |
776 | while ($row = $db->sql_fetchrow($result)) |
777 | { |
778 | $template->assign_block_vars('leader', array( |
779 | 'USERNAME' => $row['username'], |
780 | 'USERNAME_COLOUR' => $row['user_colour'], |
781 | 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']), |
782 | 'U_USER_VIEW' => get_username_string('profile', $row['user_id'], $row['username']), |
783 | 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, |
784 | 'JOINED' => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ', |
785 | 'USER_POSTS' => $row['user_posts'], |
786 | 'USER_ID' => $row['user_id']) |
787 | ); |
788 | } |
789 | $db->sql_freeresult($result); |
790 | |
791 | // Total number of group members (non-leaders) |
792 | $sql = 'SELECT COUNT(user_id) AS total_members |
793 | FROM ' . USER_GROUP_TABLE . " |
794 | WHERE group_id = $group_id |
795 | AND group_leader = 0"; |
796 | $result = $db->sql_query($sql); |
797 | $total_members = (int) $db->sql_fetchfield('total_members'); |
798 | $db->sql_freeresult($result); |
799 | |
800 | // Grab the members |
801 | $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending |
802 | FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug |
803 | WHERE ug.group_id = $group_id |
804 | AND u.user_id = ug.user_id |
805 | AND ug.group_leader = 0 |
806 | ORDER BY ug.user_pending DESC, u.username_clean"; |
807 | $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); |
808 | |
809 | $pending = false; |
810 | $approved = false; |
811 | |
812 | while ($row = $db->sql_fetchrow($result)) |
813 | { |
814 | if ($row['user_pending'] && !$pending) |
815 | { |
816 | $template->assign_block_vars('member', array( |
817 | 'S_PENDING' => true) |
818 | ); |
819 | $template->assign_var('S_PENDING_SET', true); |
820 | |
821 | $pending = true; |
822 | } |
823 | else if (!$row['user_pending'] && !$approved) |
824 | { |
825 | $template->assign_block_vars('member', array( |
826 | 'S_APPROVED' => true) |
827 | ); |
828 | $template->assign_var('S_APPROVED_SET', true); |
829 | |
830 | $approved = true; |
831 | } |
832 | |
833 | $template->assign_block_vars('member', array( |
834 | 'USERNAME' => $row['username'], |
835 | 'USERNAME_COLOUR' => $row['user_colour'], |
836 | 'USERNAME_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']), |
837 | 'U_USER_VIEW' => get_username_string('profile', $row['user_id'], $row['username']), |
838 | 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, |
839 | 'JOINED' => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ', |
840 | 'USER_POSTS' => $row['user_posts'], |
841 | 'USER_ID' => $row['user_id']) |
842 | ); |
843 | } |
844 | $db->sql_freeresult($result); |
845 | |
846 | $s_action_options = ''; |
847 | $options = array('default' => 'DEFAULT', 'approve' => 'APPROVE', 'deleteusers' => 'DELETE'); |
848 | |
849 | foreach ($options as $option => $lang) |
850 | { |
851 | $s_action_options .= '<option value="' . $option . '">' . $user->lang['GROUP_' . $lang] . '</option>'; |
852 | } |
853 | |
854 | /* @var $pagination \phpbb\pagination */ |
855 | $pagination = $phpbb_container->get('pagination'); |
856 | $base_url = $this->u_action . "&action=$action&g=$group_id"; |
857 | $start = $pagination->validate_start($start, $config['topics_per_page'], $total_members); |
858 | $pagination->generate_template_pagination($base_url, 'pagination', 'start', $total_members, $config['topics_per_page'], $start); |
859 | |
860 | $template->assign_vars(array( |
861 | 'S_LIST' => true, |
862 | 'S_ACTION_OPTIONS' => $s_action_options, |
863 | |
864 | 'U_ACTION' => $this->u_action . "&g=$group_id", |
865 | 'S_UCP_ACTION' => $this->u_action . "&g=$group_id", |
866 | 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=usernames'), |
867 | )); |
868 | |
869 | break; |
870 | |
871 | case 'approve': |
872 | |
873 | if (!$group_id) |
874 | { |
875 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
876 | } |
877 | |
878 | if (!check_form_key('ucp_groups')) |
879 | { |
880 | trigger_error($user->lang('FORM_INVALID') . $return_page); |
881 | } |
882 | |
883 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
884 | { |
885 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
886 | } |
887 | $row = current($row); |
888 | |
889 | if (!$row['group_leader']) |
890 | { |
891 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
892 | } |
893 | |
894 | $user->add_lang('acp/groups'); |
895 | |
896 | // Approve, demote or promote |
897 | group_user_attributes('approve', $group_id, $mark_ary, false, false); |
898 | |
899 | trigger_error($user->lang['USERS_APPROVED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>')); |
900 | |
901 | break; |
902 | |
903 | case 'default': |
904 | |
905 | if (!$group_id) |
906 | { |
907 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
908 | } |
909 | |
910 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
911 | { |
912 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
913 | } |
914 | $row = current($row); |
915 | |
916 | if (!$row['group_leader']) |
917 | { |
918 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
919 | } |
920 | |
921 | $group_row['group_name'] = $group_helper->get_name($group_row['group_name']); |
922 | |
923 | if (confirm_box(true)) |
924 | { |
925 | if (!count($mark_ary)) |
926 | { |
927 | $start = 0; |
928 | |
929 | do |
930 | { |
931 | $sql = 'SELECT user_id |
932 | FROM ' . USER_GROUP_TABLE . " |
933 | WHERE group_id = $group_id |
934 | ORDER BY user_id"; |
935 | $result = $db->sql_query_limit($sql, 200, $start); |
936 | |
937 | $mark_ary = array(); |
938 | if ($row = $db->sql_fetchrow($result)) |
939 | { |
940 | do |
941 | { |
942 | $mark_ary[] = $row['user_id']; |
943 | } |
944 | while ($row = $db->sql_fetchrow($result)); |
945 | |
946 | group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row); |
947 | |
948 | $start = (count($mark_ary) < 200) ? 0 : $start + 200; |
949 | } |
950 | else |
951 | { |
952 | $start = 0; |
953 | } |
954 | $db->sql_freeresult($result); |
955 | } |
956 | while ($start); |
957 | } |
958 | else |
959 | { |
960 | group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row); |
961 | } |
962 | |
963 | $user->add_lang('acp/groups'); |
964 | |
965 | trigger_error($user->lang['GROUP_DEFS_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>')); |
966 | } |
967 | else |
968 | { |
969 | $user->add_lang('acp/common'); |
970 | |
971 | confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( |
972 | 'mark' => $mark_ary, |
973 | 'g' => $group_id, |
974 | 'i' => $id, |
975 | 'mode' => $mode, |
976 | 'action' => $action)) |
977 | ); |
978 | } |
979 | |
980 | // redirect to last screen |
981 | redirect($this->u_action . '&action=list&g=' . $group_id); |
982 | |
983 | break; |
984 | |
985 | case 'deleteusers': |
986 | |
987 | $user->add_lang(array('acp/groups', 'acp/common')); |
988 | |
989 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
990 | { |
991 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
992 | } |
993 | $row = current($row); |
994 | |
995 | if (!$row['group_leader']) |
996 | { |
997 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
998 | } |
999 | |
1000 | $group_row['group_name'] = $group_helper->get_name($group_row['group_name']); |
1001 | |
1002 | if (confirm_box(true)) |
1003 | { |
1004 | if (!$group_id) |
1005 | { |
1006 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
1007 | } |
1008 | |
1009 | $error = group_user_del($group_id, $mark_ary, false, $group_row['group_name']); |
1010 | |
1011 | if ($error) |
1012 | { |
1013 | trigger_error($user->lang[$error] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>')); |
1014 | } |
1015 | |
1016 | trigger_error($user->lang['GROUP_USERS_REMOVE'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>')); |
1017 | } |
1018 | else |
1019 | { |
1020 | confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( |
1021 | 'mark' => $mark_ary, |
1022 | 'g' => $group_id, |
1023 | 'i' => $id, |
1024 | 'mode' => $mode, |
1025 | 'action' => $action)) |
1026 | ); |
1027 | } |
1028 | |
1029 | // redirect to last screen |
1030 | redirect($this->u_action . '&action=list&g=' . $group_id); |
1031 | |
1032 | break; |
1033 | |
1034 | case 'addusers': |
1035 | |
1036 | $user->add_lang(array('acp/groups', 'acp/common')); |
1037 | |
1038 | $names = $request->variable('usernames', '', true); |
1039 | |
1040 | if (!$group_id) |
1041 | { |
1042 | trigger_error($user->lang['NO_GROUP'] . $return_page); |
1043 | } |
1044 | |
1045 | if (!$names) |
1046 | { |
1047 | trigger_error($user->lang['NO_USERS'] . $return_page); |
1048 | } |
1049 | |
1050 | if (!($row = group_memberships($group_id, $user->data['user_id']))) |
1051 | { |
1052 | trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); |
1053 | } |
1054 | $row = current($row); |
1055 | |
1056 | if (!$row['group_leader']) |
1057 | { |
1058 | trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); |
1059 | } |
1060 | |
1061 | $name_ary = array_unique(explode("\n", $names)); |
1062 | $group_name = $group_helper->get_name($group_row['group_name']); |
1063 | |
1064 | $default = $request->variable('default', 0); |
1065 | |
1066 | if (confirm_box(true)) |
1067 | { |
1068 | $return_manage_page = '<br /><br />' . $language->lang('RETURN_PAGE', '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>'); |
1069 | |
1070 | // Add user/s to group |
1071 | if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, 0, 0, $group_row)) |
1072 | { |
1073 | $display_message = $language->lang($error); |
1074 | |
1075 | if ($error == 'GROUP_USERS_INVALID') |
1076 | { |
1077 | // Find which users don't exist |
1078 | $actual_name_ary = $name_ary; |
1079 | $actual_user_id_ary = []; |
1080 | user_get_id_name($actual_user_id_ary, $actual_name_ary, false, true); |
1081 | |
1082 | $display_message = $language->lang('GROUP_USERS_INVALID', implode($language->lang('COMMA_SEPARATOR'), array_udiff($name_ary, $actual_name_ary, 'strcasecmp'))); |
1083 | } |
1084 | |
1085 | trigger_error($display_message . $return_manage_page); |
1086 | } |
1087 | |
1088 | trigger_error($language->lang('GROUP_USERS_ADDED') . $return_manage_page); |
1089 | } |
1090 | else |
1091 | { |
1092 | $s_hidden_fields = array( |
1093 | 'default' => $default, |
1094 | 'usernames' => $names, |
1095 | 'g' => $group_id, |
1096 | 'i' => $id, |
1097 | 'mode' => $mode, |
1098 | 'action' => $action |
1099 | ); |
1100 | |
1101 | confirm_box(false, $user->lang('GROUP_CONFIRM_ADD_USERS', count($name_ary), implode($user->lang['COMMA_SEPARATOR'], $name_ary)), build_hidden_fields($s_hidden_fields)); |
1102 | } |
1103 | |
1104 | trigger_error($user->lang['NO_USERS_ADDED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&action=list&g=' . $group_id . '">', '</a>')); |
1105 | |
1106 | break; |
1107 | |
1108 | default: |
1109 | $user->add_lang('acp/common'); |
1110 | |
1111 | $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_desc, g.group_desc_uid, g.group_desc_bitfield, g.group_desc_options, g.group_type, ug.group_leader |
1112 | FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug |
1113 | WHERE ug.user_id = ' . $user->data['user_id'] . ' |
1114 | AND g.group_id = ug.group_id |
1115 | AND ug.group_leader = 1 |
1116 | ORDER BY g.group_type DESC, g.group_name'; |
1117 | $result = $db->sql_query($sql); |
1118 | |
1119 | while ($value = $db->sql_fetchrow($result)) |
1120 | { |
1121 | $template->assign_block_vars('leader', array( |
1122 | 'GROUP_NAME' => $group_helper->get_name($value['group_name']), |
1123 | 'GROUP_DESC' => generate_text_for_display($value['group_desc'], $value['group_desc_uid'], $value['group_desc_bitfield'], $value['group_desc_options']), |
1124 | 'GROUP_TYPE' => $value['group_type'], |
1125 | 'GROUP_ID' => $value['group_id'], |
1126 | 'GROUP_COLOUR' => $value['group_colour'], |
1127 | |
1128 | 'U_LIST' => $this->u_action . "&action=list&g={$value['group_id']}", |
1129 | 'U_EDIT' => $this->u_action . "&action=edit&g={$value['group_id']}") |
1130 | ); |
1131 | } |
1132 | $db->sql_freeresult($result); |
1133 | |
1134 | break; |
1135 | } |
1136 | |
1137 | break; |
1138 | } |
1139 | |
1140 | $this->tpl_name = 'ucp_groups_' . $mode; |
1141 | } |
1142 | } |