Example #1
0
 /**
  * Get a list of a user's groups, as well as those groups of which
  * the user is an admin or mod
  *
  * @since 1.2
  */
 protected function set_up_user_groups()
 {
     $groups = BP_Groups_Member::get_group_ids($this->user_id);
     $this->user_groups['groups'] = $groups['groups'];
     $admin_groups = BP_Groups_Member::get_is_admin_of($this->user_id);
     $mod_groups = BP_Groups_Member::get_is_mod_of($this->user_id);
     $this->user_groups['admin_mod_of'] = array_merge(wp_list_pluck($admin_groups['groups'], 'id'), wp_list_pluck($mod_groups['groups'], 'id'));
 }
 public function test_get_is_admin_of_with_filter()
 {
     $g1 = $this->factory->group->create(array('name' => 'RC Cola'));
     $g2 = $this->factory->group->create(array('name' => 'Pepsi'));
     $u = $this->factory->user->create();
     self::add_user_to_group($u, $g1);
     self::add_user_to_group($u, $g2);
     $m1 = new BP_Groups_Member($u, $g1);
     $m1->promote('admin');
     $m2 = new BP_Groups_Member($u, $g2);
     $m2->promote('admin');
     $groups = BP_Groups_Member::get_is_admin_of($u, false, false, 'eps');
     $ids = wp_list_pluck($groups['groups'], 'id');
     $this->assertEquals($ids, array($g2));
 }
/**
 * Checks upload permissions.
 * Adapted from Group Documents plugin.
 */
function bpfb_documents_allowed($group = false)
{
    if (!$group) {
        return false;
    }
    $user = wp_get_current_user();
    $moderator_of = BP_Groups_Member::get_is_admin_of($user->ID) + BP_Groups_Member::get_is_mod_of($user->ID);
    $moderator_of = is_array($moderator_of) && isset($moderator_of['groups']) ? $moderator_of['groups'] : false;
    $is_mod = false;
    foreach ($moderator_of as $gm) {
        if ($gm->id == $group->id) {
            $is_mod = true;
            break;
        }
    }
    switch (get_option('bp_group_documents_upload_permission')) {
        case 'mods_decide':
            switch (groups_get_groupmeta($group->id, 'group_documents_upload_permission')) {
                case 'mods_only':
                    if ($is_mod) {
                        return true;
                    }
                    break;
                case 'members':
                default:
                    if (bp_group_is_member($group)) {
                        return true;
                    }
                    break;
            }
            break;
        case 'mods_only':
            if ($is_mod) {
                return true;
            }
            break;
        case 'members':
        default:
            if (bp_group_is_member($group)) {
                return true;
            }
            break;
    }
    return false;
}
Example #4
0
function groups_get_user_is_admin_of($user_id = false, $pag_num = false, $pag_page = false, $filter = false)
{
    global $bp;
    if (!$user_id) {
        $user_id = $bp->displayed_user->id;
    }
    return BP_Groups_Member::get_is_admin_of($user_id, $pag_num, $pag_page, $filter);
}
 /**
  * Generate HTML for a single row on the users.php admin panel.
  */
 function single_row($row_data, $style = '', $numposts)
 {
     global $wpdb, $wp_roles;
     $url = admin_url('admin.php?page=wangguard_users&order=' . (isset($_REQUEST['order']) ? $_REQUEST['order'] : '') . '&orderby=' . (isset($_REQUEST['orderby']) ? $_REQUEST['orderby'] : ''));
     //USER
     $row_data->filter = 'display';
     $email = $row_data->user_email;
     $checkbox = '';
     $actions = false;
     if (defined('BP_VERSION')) {
         add_thickbox();
         $user_editobj_link = esc_url(add_query_arg('wp_http_referer', urlencode(stripslashes($_SERVER['REQUEST_URI'])), "user-edit.php?user_id=" . $row_data->ID));
         $editobj_link = esc_url(bp_core_get_user_domain($row_data->ID));
         // Set up the hover actions for this user
         $actions['edituser'] = "******" . __('Edit user', 'wangguard') . "</a>";
         $actions['bpprofile'] = "<a href='{$editobj_link}?TB_iframe=true&width=900&height=550' class='thickbox'>" . __('BP Profile', 'wangguard') . "</a>";
         $report = "<strong><a target=\"_blank\" href=\"{$editobj_link}\">{$row_data->user_login}</a></strong><br />";
     } else {
         $editobj_link = esc_url(add_query_arg('wp_http_referer', urlencode(stripslashes($_SERVER['REQUEST_URI'])), "user-edit.php?user_id=" . $row_data->ID));
         $report = "<strong><a target=\"_blank\" href=\"{$editobj_link}\">{$row_data->user_login}</a></strong><br />";
     }
     // Set up the checkbox ( because the user is editable, otherwise its empty )
     $checkbox = "<input type='checkbox' name='users[]' id='user_{$row_data->ID}' value='{$row_data->ID}' />";
     $avatar = get_avatar($row_data->ID, 32);
     $role = reset($row_data->roles);
     if (!empty($role)) {
         $role = $wp_roles->role_names[$role];
     }
     $userid = $row_data->ID;
     $statushtml = wangguard_user_custom_columns("", "wangguardstatus", $userid);
     $rowID = "user-" . $userid;
     $trstyle = "class='{$style} " . (@$row_data->spam || @$row_data->user_status ? "site-spammed" : '') . "'";
     $r = "<tr id='{$rowID}'{$trstyle}>";
     list($columns, $hidden) = $this->get_column_info();
     foreach ($columns as $column_name => $column_display_name) {
         $class = "class=\"{$column_name} column-{$column_name}\" {$style}";
         $attributes = $class;
         switch ($column_name) {
             case 'cb':
                 $r .= "<th scope='row' class='check-column'>{$checkbox}</th>";
                 break;
             case 'info':
                 add_thickbox();
                 if (!is_multisite()) {
                     $url = esc_url(admin_url(add_query_arg(array('page' => 'wangguard_users_info'), 'admin.php')));
                 } else {
                     $url = esc_url(network_admin_url(add_query_arg(array('page' => 'wangguard_users_info'), 'admin.php')));
                 }
                 $arrayUrl = array('userID' => $row_data->ID, 'userIP' => $row_data->user_ip, '?TB_iframe' => 'true', 'width' => '900', 'height' => '550');
                 $final_user_info_url = esc_url(add_query_arg($arrayUrl, $url));
                 $r .= "<td  width='25'><a class='thickbox' title='" . __('Info about', 'wangguard') . "  {$row_data->first_name} {$row_data->last_name}' href='" . $final_user_info_url . "'><img class='alignnone size-full wp-image-2055' alt='Info about {$row_data->first_name} {$row_data->last_name}' src='" . plugins_url('img/info-wgg.png', __FILE__) . "' width='15' height='15' /> " . __('User Info', 'wangguard') . "</a>";
                 break;
             case 'username':
                 $r .= "<td {$attributes}>{$avatar} {$report} <span style='font-size:11px'>{$role}" . ($actions ? $this->row_actions($actions) : "") . "</span></td>";
                 break;
             case 'name':
                 $r .= "<td {$attributes}>{$row_data->first_name} {$row_data->last_name}</td>";
                 break;
             case 'email':
                 $r .= "<td {$attributes}><a href='mailto:{$email}' title='" . esc_attr(sprintf(__('E-mail: %s'), $email)) . "'>{$email}</a></td>";
                 break;
             case 'user_registered':
                 $r .= "<td {$attributes}><span style='font-size:11px'>" . date(get_option('date_format'), strtotime($row_data->user_registered)) . " " . date(get_option('time_format'), strtotime($row_data->user_registered)) . "</span></td>";
                 break;
             case 'from_ip':
                 $r .= "<td {$attributes}>";
                 $r .= "<div class='wangguard-user-ip' data='{$row_data->user_ip}'><span class='wangguard-user-ip-bb'>";
                 $r .= $row_data->user_ip;
                 $r .= '</span>';
                 if ($row_data->user_ip_is_proxy) {
                     $r .= " <span class='wangguard_proxy'>" . __('proxy', 'wangguard') . "</span>";
                 }
                 $r .= "</div>";
                 if (!empty($row_data->user_reported_proxy_ip)) {
                     $r .= "<div class='wangguard-user-ip' data='{$row_data->user_reported_proxy_ip}'><span class='wangguard-user-ip-bb'>";
                     $r .= $row_data->user_reported_proxy_ip;
                     $r .= '</span>';
                     $r .= " <span class='wangguard_proxy'>" . __('reported proxy', 'wangguard') . "</span>";
                     $r .= "</div>";
                 }
                 $r .= "</td>";
                 break;
             case 'posts':
                 $attributes = 'class="posts column-posts num"' . $style;
                 $r .= "<td {$attributes}>";
                 if ($numposts > 0) {
                     $r .= "<a target='_blank' href='edit.php?author={$row_data->ID}' title='" . esc_attr__('View posts by this author') . "' class='edit'>";
                     $r .= $numposts;
                     $r .= '</a>';
                 } else {
                     $r .= 0;
                 }
                 $r .= "</td>";
                 break;
             case 'blogs':
                 add_thickbox();
                 $r .= "<td {$attributes}>";
                 if (function_exists("get_blogs_of_user")) {
                     $blogs = @get_blogs_of_user($row_data->ID, true);
                     if (is_array($blogs)) {
                         foreach ((array) $blogs as $key => $details) {
                             $r .= '- <a href="' . $details->siteurl . '?TB_iframe=true&width=900&height=550" class="thickbox" title="' . htmlentities($details->siteurl, 0, 'UTF-8') . '">' . $details->blogname . '</a><br/>';
                         }
                     }
                 }
                 $r .= "</td>";
                 break;
             case 'groups':
                 add_thickbox();
                 $r .= "<td {$attributes}>";
                 if (defined('BP_VERSION') && class_exists('BP_Groups_member')) {
                     global $bp;
                     $bpgrpupsslug = $bp->groups->root_slug;
                     $groups = BP_Groups_Member::get_is_admin_of($row_data->ID);
                     foreach ($groups as $group) {
                         if (is_array($group)) {
                             foreach ($group as $detail) {
                                 $groupdomain = $bp->root_domain;
                                 $bpgroupsslug = $bp->groups->root_slug;
                                 $groupslug = $detail->slug;
                                 $groupname = $detail->name;
                                 $r .= '- <a href="' . $groupdomain . '/' . $bpgroupsslug . '/' . $groupslug . '/?TB_iframe=true&width=900&height=550" class="thickbox" title="' . htmlentities($groupdomain . '/' . $bpgrpupsslug . '/' . $groupslug, 0, 'UTF-8') . '">' . $groupname . '</a><br/>';
                             }
                         } else {
                             continue;
                         }
                     }
                 }
                 $r .= "</td>";
                 break;
             case 'wgstatus':
                 $r .= "<td {$attributes}>" . $statushtml . "</td>";
                 break;
         }
     }
     $r .= '</tr>';
     return $r;
 }
function bfox_bp_plans_user_owner_options($user_id = 0)
{
    if (!$user_id) {
        $user_id = $GLOBALS['user_ID'];
    }
    $results = BP_Groups_Member::get_is_admin_of($user_id);
    $options = array();
    foreach ((array) $results['groups'] as $group) {
        $id = BfoxOwnedObject::owner_type_group . '-' . $group->id;
        $options[$id] = stripslashes($group->name);
    }
    return $options;
}