public static function add_user_groups($user_id, $omit_group_ids = array()) { $group_types = pp_get_group_types(array('editable' => true)); //foreach( apply_filters( 'pp_membership_editable_group_types', array( 'pp_group' ) ) as $agent_type ) { foreach (pp_get_group_types(array('editable' => true)) as $agent_type) { if ('pp_group' == $agent_type && in_array('pp_net_group', $group_types)) { continue; } if (empty($_POST[$agent_type])) { continue; } //if ( ! pp_has_group_cap( 'pp_manage_members', 0, $agent_type ) ) // continue; global $pp_current_user; $status = isset($_POST['pp_membership_status']) ? pp_sanitize_key($_POST['pp_membership_status']) : 'active'; if ($user_id == $pp_current_user->ID) { $stored_groups = (array) $pp_current_user->groups[$agent_type]; } else { $user = pp_get_user($user_id, '', array('skip_role_merge' => 1)); $stored_groups = isset($user->groups[$agent_type]) ? (array) $user->groups[$agent_type] : array(); } // by retrieving filtered groups here, user will only modify membership for groups they can administer $is_administrator = pp_is_user_administrator(); $posted_groups = isset($_POST[$agent_type]) ? $_POST[$agent_type] : array(); if ($omit_group_ids) { $posted_groups = array_diff($posted_groups, $omit_group_ids); } foreach ($posted_groups as $group_id) { if (isset($stored_groups[$group_id])) { continue; } if (pp_has_group_cap('pp_manage_members', $group_id, $agent_type)) { $args = compact('agent_type', 'status'); $args = apply_filters('pp_add_group_args', $args, $group_id); pp_add_group_user((int) $group_id, $user_id, $args); } } } }
?> " /> </form> <?php if (current_user_can('pp_assign_roles') && pp_bulk_roles_enabled()) { PP_GroupsUI::_draw_group_permissions($agent_id, $agent_type, $url, $wp_http_referer, compact('agent')); } if ('user' == $agent_type) { ?> <div> <?php if ($agent_id) { $roles = array(); $user = pp_get_user($agent_id); $user->retrieve_extra_groups(); $post_types = pp_get_enabled_post_types(array(), 'object'); $taxonomies = pp_get_enabled_taxonomies(array(), 'object'); foreach (array_keys($user->groups) as $agent_type) { foreach (array_keys($user->groups[$agent_type]) as $_agent_id) { $args = compact($post_types, $taxonomies); $args['query_agent_ids'] = array_keys($user->groups[$agent_type]); $roles = array_merge($roles, ppc_get_roles($agent_type, $_agent_id, $args)); } } require_once dirname(__FILE__) . '/profile_ui_pp.php'; PP_ProfileUI::display_ui_user_groups(false, array('initial_hide' => true, 'selected_only' => true, 'force_display' => true, 'edit_membership_link' => true, 'hide_checkboxes' => true, 'user_id' => $agent_id)); $role_group_caption = sprintf(__('Supplemental Roles %1$s(from primary role or %2$sgroup membership%3$s)%4$s', 'pp'), '<small>', "<a class='pp-show-groups' href='#'>", '</a>', '</small>'); PP_GroupsUI::_current_roles_ui($roles, array('read_only' => true, 'class' => 'pp-group-roles', 'caption' => $role_group_caption)); $exceptions = array();
function _pp_act_set_current_user() { global $current_user, $pp_current_user; if (ppc_interrupt_init()) { return; } $pp_current_user = pp_get_user($current_user->ID); static $done; if (!empty($done)) { global $cap_interceptor; if (isset($cap_interceptor)) { $cap_interceptor->memcache = array(); } } $done = true; if (defined('INIT_ACTION_DONE_PP')) { pp_init_with_user(); } else { add_action('init', 'pp_init_with_user', 70); } // _pp_on_init() and 3rd party filters related to type / taxonomy / cap definitions must execute first }