'g.*', 'FROM' => 'groups AS g', 'WHERE' => 'g.g_id='.$base_group ); ($hook = get_hook('agr_qr_get_base_group')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); $group = $pun_db->fetch_assoc($result); $mode = 'add'; } else // We are editing a group { ($hook = get_hook('agr_edit_group_form_submitted')) ? eval($hook) : null; $group_id = intval($_GET['edit_group']); if ($group_id < 1) message($lang_common['Bad request']); $query = array( 'SELECT' => 'g.*', 'FROM' => 'groups AS g', 'WHERE' => 'g.g_id='.$group_id ); ($hook = get_hook('agr_qr_get_group')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); if (!$pun_db->num_rows($result)) message($lang_common['Bad request']); $group = $pun_db->fetch_assoc($result); $mode = 'edit'; } // Setup the form $pun_page['part_count'] = $pun_page['fld_count'] = $pun_page['set_count'] = 0; // Setup breadcrumbs $pun_page['crumbs'] = array( array($pun_config['o_board_title'], pun_link($pun_url['index'])), array($lang_admin['Forum administration'], pun_link($pun_url['admin_index'])), array($lang_admin['Groups'], pun_link($pun_url['admin_groups'])), $mode == 'edit' ? $lang_admin['Edit group heading'] : $lang_admin['Add group heading'] ); ($hook = get_hook('agr_add_edit_group_pre_header_load')) ? eval($hook) : null; define('PUN_PAGE_SECTION', 'users'); define('PUN_PAGE', 'admin-groups'); require PUN_ROOT.'header.php'; ?>

{ }

'.$lang_common['Required'].'') ?>


escape($user_title).'\'' : 'NULL'; ($hook = get_hook('agr_add_edit_end_validation')) ? eval($hook) : null; if ($_POST['mode'] == 'add') { ($hook = get_hook('agr_add_group_form_submitted2')) ? eval($hook) : null; $query = array( 'SELECT' => '1', 'FROM' => 'groups AS g', 'WHERE' => 'g_title=\''.$pun_db->escape($title).'\'' ); ($hook = get_hook('agr_qr_check_group_title_collision')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); if ($pun_db->num_rows($result)) message(sprintf($lang_admin['Already a group message'], pun_htmlencode($title))); // Insert the new group $query = array( 'INSERT' => 'g_title, g_user_title, g_moderator, g_mod_edit_users, g_mod_rename_users, g_mod_change_passwords, g_mod_ban_users, g_read_board, g_view_users, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_send_email, g_edit_subjects_interval, g_post_flood, g_search_flood, g_email_flood', 'INTO' => 'groups', 'VALUES' => '\''.$pun_db->escape($title).'\', '.$user_title.', '.$moderator.', '.$mod_edit_users.', '.$mod_rename_users.', '.$mod_change_passwords.', '.$mod_ban_users.', '.$read_board.', '.$view_users.', '.$post_replies.', '.$post_topics.', '.$edit_posts.', '.$delete_posts.', '.$delete_topics.', '.$set_title.', '.$search.', '.$search_users.', '.$send_email.', '.$edit_subjects_interval.', '.$post_flood.', '.$search_flood.', '.$email_flood ); ($hook = get_hook('agr_qy_add_group')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); $new_group_id = $pun_db->insert_id(); // Now lets copy the forum specific permissions from the group which this group is based on $query = array( 'SELECT' => 'fp.forum_id, fp.read_forum, fp.post_replies, fp.post_topics', 'FROM' => 'forum_perms AS fp', 'WHERE' => 'group_id='.intval($_POST['base_group']) ); ($hook = get_hook('agr_qr_get_group_forum_perms')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); while ($cur_forum_perm = $pun_db->fetch_assoc($result)) { $query = array( 'INSERT' => 'group_id, forum_id, read_forum, post_replies, post_topics', 'INTO' => 'forum_perms', 'VALUES' => $new_group_id.', '.$cur_forum_perm['forum_id'].', '.$cur_forum_perm['read_forum'].', '.$cur_forum_perm['post_replies'].', '.$cur_forum_perm['post_topics'] ); ($hook = get_hook('agr_qy_add_group_forum_perms')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); } } else { $group_id = intval($_POST['group_id']); ($hook = get_hook('agr_edit_group_form_submitted2')) ? eval($hook) : null; // Make sure admins and guests don't get moderator privileges if ($group_id == PUN_ADMIN || $group_id == PUN_GUEST) $moderator = '0'; // Make sure the default group isn't assigned moderator privileges if ($moderator == '1' && $pun_config['o_default_user_group'] == $group_id) message($lang_admin['Moderator default group']); $query = array( 'SELECT' => '1', 'FROM' => 'groups AS g', 'WHERE' => 'g_title=\''.$pun_db->escape($title).'\' AND g_id!='.$group_id ); ($hook = get_hook('agr_qr_check_group_title_collision2')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); if ($pun_db->num_rows($result)) message(sprintf($lang_admin['Already a group message'], pun_htmlencode($title))); // Save changes $query = array( 'UPDATE' => 'groups', 'SET' => 'g_title=\''.$pun_db->escape($title).'\', g_user_title='.$user_title.', g_moderator='.$moderator.', g_mod_edit_users='.$mod_edit_users.', g_mod_rename_users='.$mod_rename_users.', g_mod_change_passwords='.$mod_change_passwords.', g_mod_ban_users='.$mod_ban_users.', g_read_board='.$read_board.', g_view_users='.$view_users.', g_post_replies='.$post_replies.', g_post_topics='.$post_topics.', g_edit_posts='.$edit_posts.', g_delete_posts='.$delete_posts.', g_delete_topics='.$delete_topics.', g_set_title='.$set_title.', g_search='.$search.', g_search_users='.$search_users.', g_send_email='.$send_email.', g_edit_subjects_interval='.$edit_subjects_interval.', g_post_flood='.$post_flood.', g_search_flood='.$search_flood.', g_email_flood='.$email_flood, 'WHERE' => 'g_id='.$group_id ); ($hook = get_hook('agr_qy_update_group')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); // If the group doesn't have moderator privileges (it might have had before), remove its users from the moderator list in all forums if (!$moderator) clean_forum_moderators(); } // Regenerate the quickjump cache require_once PUN_ROOT.'include/cache.php'; generate_quickjump_cache(); redirect(pun_link($pun_url['admin_groups']), (($_POST['mode'] == 'edit') ? $lang_admin['Group edited'] : $lang_admin['Group added']).' '.$lang_admin['Redirect']); } // Set default group else if (isset($_POST['set_default_group'])) { $group_id = intval($_POST['default_group']); ($hook = get_hook('agr_set_default_group_form_submitted')) ? eval($hook) : null; // Make sure it's not the admin or guest groups if ($group_id == PUN_ADMIN || $group_id == PUN_GUEST) message($lang_common['Bad request']); // Make sure it's not a moderator group $query = array( 'SELECT' => 'g.g_id', 'FROM' => 'groups AS g', 'WHERE' => 'g.g_id='.$group_id.' AND g.g_moderator=0', 'LIMIT' => '1' ); ($hook = get_hook('agr_qr_get_group_moderation_status')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); if (!$pun_db->num_rows($result)) message($lang_common['Bad request']); $query = array( 'UPDATE' => 'config', 'SET' => 'conf_value='.$group_id, 'WHERE' => 'conf_name=\'o_default_user_group\'' ); ($hook = get_hook('agr_qy_set_default_group')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); // Regenerate the config cache require_once PUN_ROOT.'include/cache.php'; generate_config_cache(); redirect(pun_link($pun_url['admin_groups']), $lang_admin['Default group set'].' '.$lang_admin['Redirect']); } // Remove a group else if (isset($_GET['del_group'])) { $group_id = intval($_GET['del_group']); if ($group_id < 4) message($lang_common['Bad request']); // User pressed the cancel button if (isset($_POST['del_group_cancel'])) redirect(pun_link($pun_url['admin_groups']), $lang_admin['Cancel redirect']); // Make sure we don't remove the default group if ($group_id == $pun_config['o_default_user_group']) message($lang_admin['Cannot remove default group']); ($hook = get_hook('agr_del_group_selected')) ? eval($hook) : null; // Check if this group has any members $query = array( 'SELECT' => 'g.g_title, COUNT(u.id)', 'FROM' => 'groups AS g', 'JOINS' => array( array( 'INNER JOIN' => 'users AS u', 'ON' => 'g.g_id=u.group_id' ) ), 'WHERE' => 'g.g_id='.$group_id, 'GROUP BY' => 'g.g_id, g.g_title' ); ($hook = get_hook('agr_qr_get_group_member_count')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); // If the group doesn't have any members or if we've already selected a group to move the members to if (!$pun_db->num_rows($result) || isset($_POST['del_group'])) { ($hook = get_hook('agr_del_group_form_submitted')) ? eval($hook) : null; if (isset($_POST['del_group'])) // Move users { $query = array( 'UPDATE' => 'users', 'SET' => 'group_id='.intval($_POST['move_to_group']), 'WHERE' => 'group_id='.$group_id ); ($hook = get_hook('agr_qy_move_users')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); } // Delete the group and any forum specific permissions $query = array( 'DELETE' => 'groups', 'WHERE' => 'g_id='.$group_id ); ($hook = get_hook('agr_qy_delete_group')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); $query = array( 'DELETE' => 'forum_perms', 'WHERE' => 'group_id='.$group_id ); ($hook = get_hook('agr_qy_delete_group_forum_perms')) ? eval($hook) : null; $pun_db->query_build($query) or error(__FILE__, __LINE__); clean_forum_moderators(); // Regenerate the quickjump cache require_once PUN_ROOT.'include/cache.php'; generate_quickjump_cache(); redirect(pun_link($pun_url['admin_groups']), $lang_admin['Group removed'].' '.$lang_admin['Redirect']); } list($group_title, $num_members) = $pun_db->fetch_row($result); // Setup the form $pun_page['part_count'] = $pun_page['fld_count'] = $pun_page['set_count'] = 0; // Setup breadcrumbs $pun_page['crumbs'] = array( array($pun_config['o_board_title'], pun_link($pun_url['index'])), array($lang_admin['Forum administration'], pun_link($pun_url['admin_index'])), array($lang_admin['Groups'], pun_link($pun_url['admin_groups'])), $lang_admin['Remove group'] ); ($hook = get_hook('agr_del_group_pre_header_load')) ? eval($hook) : null; define('PUN_PAGE_SECTION', 'users'); define('PUN_PAGE', 'admin-groups'); require PUN_ROOT.'header.php'; ?>

{ }

{ }

'g.g_id, g.g_title', 'FROM' => 'groups AS g', 'ORDER BY' => 'g.g_title' ); ($hook = get_hook('agr_qr_get_groups4')) ? eval($hook) : null; $result = $pun_db->query_build($query) or error(__FILE__, __LINE__); $pun_page['item_num'] = 0; while ($cur_group = $pun_db->fetch_assoc($result)) { ?>