Esempio n. 1
0
 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();
Esempio n. 3
0
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
}