Beispiel #1
0
 public function is_user_owner($user_id = 0)
 {
     if (!$user_id) {
         $user_id = $GLOBALS['user_ID'];
     }
     if (self::owner_type_user == $this->owner_type) {
         return $user_id == $this->owner_id;
     }
     if (self::owner_type_group == $this->owner_type) {
         if (is_null($this->_user_owners)) {
             $admins = groups_get_group_admins($this->owner_id);
             $this->_user_owners = array();
             foreach ($admins as $admin) {
                 $this->_user_owners[$admin->user_id] = true;
             }
         }
         return $this->_user_owners[$user_id];
     }
     return false;
 }
function bp_get_group_join_button($group = false)
{
    global $groups_template;
    if (empty($group)) {
        $group =& $groups_template->group;
    }
    if (!is_user_logged_in() || bp_group_is_user_banned($group)) {
        return false;
    }
    // Group creation was not completed or status is unknown
    if (!$group->status) {
        return false;
    }
    // Already a member
    if (isset($group->is_member) && $group->is_member) {
        // Stop sole admins from abandoning their group
        $group_admins = groups_get_group_admins($group->id);
        if (1 == count($group_admins) && $group_admins[0]->user_id == bp_loggedin_user_id()) {
            return false;
        }
        $button = array('id' => 'leave_group', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group'), 'link_text' => __('Leave Group', 'buddypress'), 'link_title' => __('Leave Group', 'buddypress'), 'link_class' => 'group-button leave-group');
        // Not a member
    } else {
        // Show different buttons based on group status
        switch ($group->status) {
            case 'hidden':
                return false;
                break;
            case 'public':
                $button = array('id' => 'join_group', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group'), 'link_text' => __('Join Group', 'buddypress'), 'link_title' => __('Join Group', 'buddypress'), 'link_class' => 'group-button join-group');
                break;
            case 'private':
                // Member has outstanding invitation -
                // show an "Accept Invitation" button
                if ($group->is_invited) {
                    $button = array('id' => 'accept_invite', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => add_query_arg('redirect_to', bp_get_group_permalink($group), bp_get_group_accept_invite_link($group)), 'link_text' => __('Accept Invitation', 'buddypress'), 'link_title' => __('Accept Invitation', 'buddypress'), 'link_class' => 'group-button accept-invite');
                    // Member has requested membership but request is pending -
                    // show a "Request Sent" button
                } elseif ($group->is_pending) {
                    $button = array('id' => 'membership_requested', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button pending ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => bp_get_group_permalink($group), 'link_text' => __('Request Sent', 'buddypress'), 'link_title' => __('Request Sent', 'buddypress'), 'link_class' => 'group-button pending membership-requested');
                    // Member has not requested membership yet -
                    // show a "Request Membership" button
                } else {
                    $button = array('id' => 'request_membership', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_request_membership'), 'link_text' => __('Request Membership', 'buddypress'), 'link_title' => __('Request Membership', 'buddypress'), 'link_class' => 'group-button request-membership');
                }
                break;
        }
    }
    // Filter and return the HTML button
    return bp_get_button(apply_filters('bp_get_group_join_button', $button));
}
/**
 * Return button to join a group.
 *
 * @since 1.0.0
 *
 * @param object|bool $group Single group object.
 * @return mixed
 */
function bp_get_group_join_button($group = false)
{
    global $groups_template;
    // Set group to current loop group if none passed.
    if (empty($group)) {
        $group =& $groups_template->group;
    }
    // Don't show button if not logged in or previously banned.
    if (!is_user_logged_in() || bp_group_is_user_banned($group)) {
        return false;
    }
    // Group creation was not completed or status is unknown.
    if (empty($group->status)) {
        return false;
    }
    // Already a member.
    if (!empty($group->is_member)) {
        // Stop sole admins from abandoning their group.
        $group_admins = groups_get_group_admins($group->id);
        if (1 == count($group_admins) && bp_loggedin_user_id() === (int) $group_admins[0]->user_id) {
            return false;
        }
        // Setup button attributes.
        $button = array('id' => 'leave_group', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group'), 'link_text' => __('Leave Group', 'buddypress'), 'link_title' => __('Leave Group', 'buddypress'), 'link_class' => 'group-button leave-group');
        // Not a member.
    } else {
        // Show different buttons based on group status.
        switch ($group->status) {
            case 'hidden':
                return false;
            case 'public':
                $button = array('id' => 'join_group', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group'), 'link_text' => __('Join Group', 'buddypress'), 'link_title' => __('Join Group', 'buddypress'), 'link_class' => 'group-button join-group');
                break;
            case 'private':
                // Member has outstanding invitation -
                // show an "Accept Invitation" button.
                if ($group->is_invited) {
                    $button = array('id' => 'accept_invite', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => add_query_arg('redirect_to', bp_get_group_permalink($group), bp_get_group_accept_invite_link($group)), 'link_text' => __('Accept Invitation', 'buddypress'), 'link_title' => __('Accept Invitation', 'buddypress'), 'link_class' => 'group-button accept-invite');
                    // Member has requested membership but request is pending -
                    // show a "Request Sent" button.
                } elseif ($group->is_pending) {
                    $button = array('id' => 'membership_requested', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button pending ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => bp_get_group_permalink($group), 'link_text' => __('Request Sent', 'buddypress'), 'link_title' => __('Request Sent', 'buddypress'), 'link_class' => 'group-button pending membership-requested');
                    // Member has not requested membership yet -
                    // show a "Request Membership" button.
                } else {
                    $button = array('id' => 'request_membership', 'component' => 'groups', 'must_be_logged_in' => true, 'block_self' => false, 'wrapper_class' => 'group-button ' . $group->status, 'wrapper_id' => 'groupbutton-' . $group->id, 'link_href' => wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_request_membership'), 'link_text' => __('Request Membership', 'buddypress'), 'link_title' => __('Request Membership', 'buddypress'), 'link_class' => 'group-button request-membership');
                }
                break;
        }
    }
    /**
     * Filters the HTML button for joining a group.
     *
     * @since 1.2.6
     * @since 2.4.0 Added $group parameter to filter args.
     *
     * @param string $button HTML button for joining a group.
     * @param object $group BuddyPress group object
     */
    return bp_get_button(apply_filters('bp_get_group_join_button', $button, $group));
}
Beispiel #4
0
 /**
  * @group groups_get_group_admins
  */
 public function test_groups_get_group_admins_cache_on_member_save()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     $g = $this->factory->group->create(array('creator_id' => $u1));
     // prime cache
     groups_get_group_admins($g);
     // promote user 2 to an admin via BP_Groups_Member::save()
     self::add_user_to_group($u2, $g, array('is_admin' => 1));
     // assert that cache is invalidated
     $this->assertEmpty(wp_cache_get($g, 'bp_group_admins'));
     // assert new cached value
     $this->assertEquals(2, count(groups_get_group_admins($g)));
 }
/**
 * This function handles actions related to member management on the group admin.
 */
function groups_screen_group_admin_manage_members()
{
    if ('manage-members' != bp_get_group_current_admin_tab()) {
        return false;
    }
    if (!bp_is_item_admin()) {
        return false;
    }
    $bp = buddypress();
    if (bp_action_variable(1) && bp_action_variable(2) && bp_action_variable(3)) {
        if (bp_is_action_variable('promote', 1) && (bp_is_action_variable('mod', 2) || bp_is_action_variable('admin', 2)) && is_numeric(bp_action_variable(3))) {
            $user_id = bp_action_variable(3);
            $status = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_promote_member')) {
                return false;
            }
            // Promote a user.
            if (!groups_promote_member($user_id, $bp->groups->current_group->id, $status)) {
                bp_core_add_message(__('There was an error when promoting that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User promoted successfully', 'buddypress'));
            }
            /**
             * Fires before the redirect after a group member has been promoted.
             *
             * @since 1.0.0
             *
             * @param int $user_id ID of the user being promoted.
             * @param int $id      ID of the group user is promoted within.
             */
            do_action('groups_promoted_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
    }
    if (bp_action_variable(1) && bp_action_variable(2)) {
        if (bp_is_action_variable('demote', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_demote_member')) {
                return false;
            }
            // Stop sole admins from abandoning their group.
            $group_admins = groups_get_group_admins($bp->groups->current_group->id);
            if (1 == count($group_admins) && $group_admins[0]->user_id == $user_id) {
                bp_core_add_message(__('This group must have at least one admin', 'buddypress'), 'error');
            } elseif (!groups_demote_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when demoting that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User demoted successfully', 'buddypress'));
            }
            /**
             * Fires before the redirect after a group member has been demoted.
             *
             * @since 1.0.0
             *
             * @param int $user_id ID of the user being demoted.
             * @param int $id      ID of the group user is demoted within.
             */
            do_action('groups_demoted_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('ban', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_ban_member')) {
                return false;
            }
            // Ban a user.
            if (!groups_ban_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when banning that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User banned successfully', 'buddypress'));
            }
            /**
             * Fires before the redirect after a group member has been banned.
             *
             * @since 1.0.0
             *
             * @param int $user_id ID of the user being banned.
             * @param int $id      ID of the group user is banned from.
             */
            do_action('groups_banned_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('unban', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_unban_member')) {
                return false;
            }
            // Remove a ban for user.
            if (!groups_unban_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when unbanning that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User ban removed successfully', 'buddypress'));
            }
            /**
             * Fires before the redirect after a group member has been unbanned.
             *
             * @since 1.0.0
             *
             * @param int $user_id ID of the user being unbanned.
             * @param int $id      ID of the group user is unbanned from.
             */
            do_action('groups_unbanned_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('remove', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_remove_member')) {
                return false;
            }
            // Remove a user.
            if (!groups_remove_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error removing that user from the group. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User removed successfully', 'buddypress'));
            }
            /**
             * Fires before the redirect after a group member has been removed.
             *
             * @since 1.2.6
             *
             * @param int $user_id ID of the user being removed.
             * @param int $id      ID of the group the user is removed from.
             */
            do_action('groups_removed_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
    }
    /**
     * Fires before the loading of a group's manage members template.
     *
     * @since 1.0.0
     *
     * @param int $id ID of the group whose manage members page is being displayed.
     */
    do_action('groups_screen_group_admin_manage_members', $bp->groups->current_group->id);
    /**
     * Filters the template to load for a group's manage members page.
     *
     * @since 1.0.0
     *
     * @param string $value Path to a group's manage members template.
     */
    bp_core_load_template(apply_filters('groups_template_group_admin_manage_members', 'groups/single/home'));
}
/**
 * This function handles actions related to member management on the group admin.
 */
function groups_screen_group_admin_manage_members()
{
    if ('manage-members' != bp_get_group_current_admin_tab()) {
        return false;
    }
    if (!bp_is_item_admin()) {
        return false;
    }
    $bp = buddypress();
    if (bp_action_variable(1) && bp_action_variable(2) && bp_action_variable(3)) {
        if (bp_is_action_variable('promote', 1) && (bp_is_action_variable('mod', 2) || bp_is_action_variable('admin', 2)) && is_numeric(bp_action_variable(3))) {
            $user_id = bp_action_variable(3);
            $status = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_promote_member')) {
                return false;
            }
            // Promote a user.
            if (!groups_promote_member($user_id, $bp->groups->current_group->id, $status)) {
                bp_core_add_message(__('There was an error when promoting that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User promoted successfully', 'buddypress'));
            }
            do_action('groups_promoted_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
    }
    if (bp_action_variable(1) && bp_action_variable(2)) {
        if (bp_is_action_variable('demote', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_demote_member')) {
                return false;
            }
            // Stop sole admins from abandoning their group
            $group_admins = groups_get_group_admins($bp->groups->current_group->id);
            if (1 == count($group_admins) && $group_admins[0]->user_id == $user_id) {
                bp_core_add_message(__('This group must have at least one admin', 'buddypress'), 'error');
            } elseif (!groups_demote_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when demoting that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User demoted successfully', 'buddypress'));
            }
            do_action('groups_demoted_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('ban', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_ban_member')) {
                return false;
            }
            // Ban a user.
            if (!groups_ban_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when banning that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User banned successfully', 'buddypress'));
            }
            do_action('groups_banned_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('unban', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_unban_member')) {
                return false;
            }
            // Remove a ban for user.
            if (!groups_unban_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error when unbanning that user. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User ban removed successfully', 'buddypress'));
            }
            do_action('groups_unbanned_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
        if (bp_is_action_variable('remove', 1) && is_numeric(bp_action_variable(2))) {
            $user_id = bp_action_variable(2);
            // Check the nonce first.
            if (!check_admin_referer('groups_remove_member')) {
                return false;
            }
            // Remove a user.
            if (!groups_remove_member($user_id, $bp->groups->current_group->id)) {
                bp_core_add_message(__('There was an error removing that user from the group. Please try again.', 'buddypress'), 'error');
            } else {
                bp_core_add_message(__('User removed successfully', 'buddypress'));
            }
            do_action('groups_removed_member', $user_id, $bp->groups->current_group->id);
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
    }
    do_action('groups_screen_group_admin_manage_members', $bp->groups->current_group->id);
    bp_core_load_template(apply_filters('groups_template_group_admin_manage_members', 'groups/single/home'));
}
 /**
  * get_teachers( $group_id )
  *
  * Returns an array with group teachers user_id
  * @param Int $group_id, the group ID to check for
  * @return Mixed, an array of user_id's
  */
 function get_teachers($group_id)
 {
     $teachers = array();
     $group_admins = groups_get_group_admins($group_id);
     foreach ($group_admins as $admin) {
         if (self::is_teacher($admin->user_id)) {
             $teachers[] = $admin->user_id;
         }
     }
     return $teachers;
 }
Beispiel #8
0
/**
 * Catch and process "Leave Group" button clicks.
 *
 * When a group member clicks on the "Leave Group" button from a group's page,
 * this function is run.
 *
 * Note: When leaving a group from the group directory, AJAX is used and
 * another function handles this. See {@link bp_legacy_theme_ajax_joinleave_group()}.
 *
 * @since BuddyPress (1.2.4)
 */
function groups_action_leave_group()
{
    if (!bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action('leave-group')) {
        return false;
    }
    // Nonce check
    if (!check_admin_referer('groups_leave_group')) {
        return false;
    }
    // User wants to leave any group
    if (groups_is_user_member(bp_loggedin_user_id(), bp_get_current_group_id())) {
        $bp = buddypress();
        // Stop sole admins from abandoning their group
        $group_admins = groups_get_group_admins(bp_get_current_group_id());
        if (1 == count($group_admins) && $group_admins[0]->user_id == bp_loggedin_user_id()) {
            bp_core_add_message(__('This group must have at least one admin', 'buddypress'), 'error');
        } elseif (!groups_leave_group($bp->groups->current_group->id)) {
            bp_core_add_message(__('There was an error leaving the group.', 'buddypress'), 'error');
        } else {
            bp_core_add_message(__('You successfully left the group.', 'buddypress'));
        }
        $redirect = bp_get_group_permalink(groups_get_current_group());
        if ('hidden' == $bp->groups->current_group->status) {
            $redirect = trailingslashit(bp_loggedin_user_domain() . bp_get_groups_slug());
        }
        bp_core_redirect($redirect);
    }
    bp_core_load_template(apply_filters('groups_template_group_home', 'groups/single/home'));
}
Beispiel #9
0
 /**
  * get_teachers( $group_id )
  *
  * Returns an array with group teachers user_id
  * @param Int $group_id, the group ID to check for
  * @return Mixed, an array of user_id's
  */
 function get_teachers($group_id)
 {
     $teachers = array();
     $group_admins = groups_get_group_admins($group_id);
     $group_members = groups_get_group_members($group_id);
     $group_members = array_merge($group_admins, $group_members['members']);
     foreach ($group_members as $member) {
         if (self::can_teach($member->user_id)) {
             $teachers[] = $member->user_id;
         }
     }
     return $teachers;
 }
Beispiel #10
0
function groups_send_membership_request( $requesting_user_id, $group_id ) {
	global $bp;

	/* Prevent duplicate requests */
	if ( groups_check_for_membership_request( $requesting_user_id, $group_id ) )
		return false;

	/* Check if the user is already a member or is banned */
	if ( groups_is_user_member( $requesting_user_id, $group_id ) || groups_is_user_banned( $requesting_user_id, $group_id ) )
		return false;

	$requesting_user = new BP_Groups_Member;
	$requesting_user->group_id = $group_id;
	$requesting_user->user_id = $requesting_user_id;
	$requesting_user->inviter_id = 0;
	$requesting_user->is_admin = 0;
	$requesting_user->user_title = '';
	$requesting_user->date_modified = gmdate( "Y-m-d H:i:s" );
	$requesting_user->is_confirmed = 0;
	$requesting_user->comments = $_POST['group-request-membership-comments'];

	if ( $requesting_user->save() ) {
		$admins = groups_get_group_admins( $group_id );

		require_once ( BP_PLUGIN_DIR . '/bp-groups/bp-groups-notifications.php' );

		for ( $i = 0; $i < count( $admins ); $i++ ) {
			// Saved okay, now send the email notification
			groups_notification_new_membership_request( $requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id );
		}

		do_action( 'groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id );

		return true;
	}

	return false;
}
	function bp_get_group_join_button( $group = false ) {
		global $bp, $groups_template;

		if ( !$group )
			$group =& $groups_template->group;

		// If they're not logged in or are banned from the group, no join button.
		if ( !is_user_logged_in() || $group->is_banned )
			return false;

		// Group creation was not completed or status is unknown
		if ( !$group->status )
			return false;

		// Already a member
		if ( $group->is_member ) {

			// Stop sole admins from abandoning their group
			if ( $bp->is_item_admin && count( groups_get_group_admins( $group->id ) ) < 2 )
				return false;

			$button = array(
				'id'                => 'leave_group',
				'component'         => 'groups',
				'must_be_logged_in' => true,
				'block_self'        => false,
				'wrapper_class'     => 'group-button ' . $group->status,
				'wrapper_id'        => 'groupbutton-' . $group->id,
				'link_class'        => 'leave-group',
				'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ),
				'link_text'         => __( 'Leave Group', 'buddypress' ),
				'link_title'        => __( 'Leave Group', 'buddypress' )
			);

		// Not a member
		} else {

			// Show different buttons based on group status
			switch ( $group->status ) {
				case 'hidden' :
					return false;
					break;

				case 'public':
					$button = array(
						'id'                => 'join_group',
						'component'         => 'groups',
						'must_be_logged_in' => true,
						'block_self'        => false,
						'wrapper_class'     => 'group-button ' . $group->status,
						'wrapper_id'        => 'groupbutton-' . $group->id,
						'link_class'        => 'join-group',
						'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ),
						'link_text'         => __( 'Join Group', 'buddypress' ),
						'link_title'        => __( 'Join Group', 'buddypress' )
					);
					break;

				case 'private' :

					// Member has not requested membership yet
					if ( !bp_group_has_requested_membership( $group ) ) {
						$button = array(
							'id'                => 'request_membership',
							'component'         => 'groups',
							'must_be_logged_in' => true,
							'block_self'        => false,
							'wrapper_class'     => 'group-button ' . $group->status,
							'wrapper_id'        => 'groupbutton-' . $group->id,
							'link_class'        => 'request-membership',
							'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
							'link_text'         => __( 'Request Membership', 'buddypress' ),
							'link_title'        => __( 'Request Membership', 'buddypress' ),
						);

					// Member has requested membership already
					} else {
						$button = array(
							'id'                => 'membership_requested',
							'component'         => 'groups',
							'must_be_logged_in' => true,
							'block_self'        => false,
							'wrapper_class'     => 'group-button pending ' . $group->status,
							'wrapper_id'        => 'groupbutton-' . $group->id,
							'link_class'        => 'membership-requested',
							'link_href'         => bp_get_group_permalink( $group ),
							'link_text'         => __( 'Request Sent', 'buddypress' ),
							'link_title'        => __( 'Request Sent', 'buddypress' ),
						);
					}

					break;
			}
		}

		// Filter and return the HTML button
		return bp_get_button( apply_filters( 'bp_get_group_join_button', $button ) );
	}
Beispiel #12
0
function groups_send_membership_request($requesting_user_id, $group_id)
{
    global $bp;
    /* Check the nonce first. */
    if (!check_admin_referer('groups_request_membership')) {
        return false;
    }
    $requesting_user = new BP_Groups_Member();
    $requesting_user->group_id = $group_id;
    $requesting_user->user_id = $requesting_user_id;
    $requesting_user->inviter_id = 0;
    $requesting_user->is_admin = 0;
    $requesting_user->user_title = '';
    $requesting_user->date_modified = time();
    $requesting_user->is_confirmed = 0;
    $requesting_user->comments = $_POST['group-request-membership-comments'];
    if ($requesting_user->save()) {
        $admins = groups_get_group_admins($group_id);
        require_once BP_PLUGIN_DIR . '/bp-groups/bp-groups-notifications.php';
        for ($i = 0; $i < count($admins); $i++) {
            // Saved okay, now send the email notification
            groups_notification_new_membership_request($requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id);
        }
        do_action('groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id);
        return true;
    }
    return false;
}
/**
 * Send welcome email to new group members
 *
 * @uses apply_filters() Filter 'ass_welcome_email' to change the content/subject of the email
 */
function ass_send_welcome_email($group_id, $user_id)
{
    $user = bp_core_get_core_userdata($user_id);
    $welcome_email = groups_get_groupmeta($group_id, 'ass_welcome_email');
    $welcome_email = apply_filters('ass_welcome_email', $welcome_email, $group_id);
    // for multilingual filtering
    $welcome_email_enabled = isset($welcome_email['enabled']) ? $welcome_email['enabled'] : 'no';
    if ('no' == $welcome_email_enabled) {
        return;
    }
    $subject = ass_clean_subject($welcome_email['subject'], false);
    $message = ass_clean_content($welcome_email['content']);
    if (!$user->user_email || 'yes' != $welcome_email_enabled || empty($message)) {
        return;
    }
    if (get_option('ass-global-unsubscribe-link') == 'yes') {
        $global_link = bp_core_get_user_domain($user_id) . '?bpass-action=unsubscribe&access_key=' . md5("{$user_id}unsubscribe" . wp_salt());
        $message .= "\n\n---------------------\n";
        $message .= sprintf(__('To disable emails from all your groups at once click: %s', 'bp-ass'), $global_link);
    }
    $group_admin_ids = groups_get_group_admins($group_id);
    $group_admin = bp_core_get_core_userdata($group_admin_ids[0]->user_id);
    $headers = array("From: \"{$group_admin->display_name}\" <{$group_admin->user_email}>");
    wp_mail($user->user_email, $subject, $message, $headers);
}
function bp_group_admin_memberlist($admin_list = false, $group = false)
{
    global $groups_template;
    if (!$group) {
        $group =& $groups_template->group;
    }
    $admins = groups_get_group_admins($group->id);
    ?>
	<?php 
    if ($admins) {
        ?>
		<ul id="admins-list" class="item-list<?php 
        if ($admin_list) {
            ?>
 single-line<?php 
        }
        ?>
">
		<?php 
        foreach ($admins as $admin) {
            ?>
			<?php 
            if ($admin_list) {
                ?>
			<li>
				<?php 
                echo bp_core_get_avatar($admin->user_id, 1, 30, 30);
                ?>
				<h5><?php 
                echo bp_core_get_userlink($admin->user_id);
                ?>
</h5>
			</li>
			<?php 
            } else {
                ?>
			<li>
				<?php 
                echo bp_core_get_avatar($admin->user_id, 1);
                ?>
				<h5><?php 
                echo bp_core_get_userlink($admin->user_id);
                ?>
</h5>
				<span class="activity"><?php 
                echo bp_core_get_last_activity(strtotime($admin->date_modified), __('joined %s ago', 'buddypress'));
                ?>
</span>
				
				<?php 
                if (function_exists('friends_install')) {
                    ?>
					<div class="action">
						<?php 
                    bp_add_friend_button($admin->user_id);
                    ?>
					</div>
				<?php 
                }
                ?>
			</li>		
			<?php 
            }
            ?>
		<?php 
        }
        ?>
		</ul>
	<?php 
    } else {
        ?>
		<div id="message" class="info">
			<p><?php 
        _e('This group has no administrators', 'buddypress');
        ?>
</p>
		</div>
	<?php 
    }
}
/**
 * Create a group membership request.
 *
 * @param int $requesting_user_id ID of the user requesting membership.
 * @param int $group_id           ID of the group.
 *
 * @return bool True on success, false on failure.
 */
function groups_send_membership_request($requesting_user_id, $group_id)
{
    // Prevent duplicate requests
    if (groups_check_for_membership_request($requesting_user_id, $group_id)) {
        return false;
    }
    // Check if the user is already a member or is banned
    if (groups_is_user_member($requesting_user_id, $group_id) || groups_is_user_banned($requesting_user_id, $group_id)) {
        return false;
    }
    // Check if the user is already invited - if so, simply accept invite
    if (groups_check_user_has_invite($requesting_user_id, $group_id)) {
        groups_accept_invite($requesting_user_id, $group_id);
        return true;
    }
    $requesting_user = new BP_Groups_Member();
    $requesting_user->group_id = $group_id;
    $requesting_user->user_id = $requesting_user_id;
    $requesting_user->inviter_id = 0;
    $requesting_user->is_admin = 0;
    $requesting_user->user_title = '';
    $requesting_user->date_modified = bp_core_current_time();
    $requesting_user->is_confirmed = 0;
    $requesting_user->comments = isset($_POST['group-request-membership-comments']) ? $_POST['group-request-membership-comments'] : '';
    if ($requesting_user->save()) {
        $admins = groups_get_group_admins($group_id);
        // Saved okay, now send the email notification
        for ($i = 0, $count = count($admins); $i < $count; ++$i) {
            groups_notification_new_membership_request($requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id);
        }
        /**
         * Fires after the creation of a new membership request.
         *
         * @since 1.0.0
         *
         * @param int   $requesting_user_id  ID of the user requesting membership.
         * @param array $admins              Array of group admins.
         * @param int   $group_id            ID of the group being requested to.
         * @param int   $requesting_user->id ID of the user requesting membership.
         */
        do_action('groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id);
        return true;
    }
    return false;
}
function groups_send_membership_request($requesting_user_id, $group_id)
{
    // Prevent duplicate requests
    if (groups_check_for_membership_request($requesting_user_id, $group_id)) {
        return false;
    }
    // Check if the user is already a member or is banned
    if (groups_is_user_member($requesting_user_id, $group_id) || groups_is_user_banned($requesting_user_id, $group_id)) {
        return false;
    }
    $requesting_user = new BP_Groups_Member();
    $requesting_user->group_id = $group_id;
    $requesting_user->user_id = $requesting_user_id;
    $requesting_user->inviter_id = 0;
    $requesting_user->is_admin = 0;
    $requesting_user->user_title = '';
    $requesting_user->date_modified = bp_core_current_time();
    $requesting_user->is_confirmed = 0;
    $requesting_user->comments = isset($_POST['group-request-membership-comments']) ? $_POST['group-request-membership-comments'] : '';
    if ($requesting_user->save()) {
        $admins = groups_get_group_admins($group_id);
        // Saved okay, now send the email notification
        for ($i = 0, $count = count($admins); $i < $count; ++$i) {
            groups_notification_new_membership_request($requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id);
        }
        do_action('groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id);
        return true;
    }
    return false;
}
 /**
  * Delete all group membership information for the specified user
  *
  * @global object $bp BuddyPress global settings
  * @global wpdb $wpdb WordPress database object
  * @param int $user_id
  * @since 1.0
  * @uses BP_Groups_Member
  */
 function delete_all_for_user($user_id)
 {
     global $bp, $wpdb;
     // Get all the group ids for the current user's groups and update counts
     $group_ids = BP_Groups_Member::get_group_ids($user_id);
     foreach ($group_ids['groups'] as $group_id) {
         groups_update_groupmeta($group_id, 'total_member_count', groups_get_total_member_count($group_id) - 1);
         // If current user is the creator of a group and is the sole admin, delete that group to avoid counts going out-of-sync
         if (groups_is_user_admin($user_id, $group_id) && count(groups_get_group_admins($group_id)) < 2 && groups_is_user_creator($user_id, $group_id)) {
             groups_delete_group($group_id);
         }
     }
     return $wpdb->query($wpdb->prepare("DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id));
 }
function wangguard_spam_all_data($user_id)
{
    global $wpdb, $bp;
    $wpdb->query($wpdb->prepare("DELETE FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id));
    friends_remove_data($user_id);
    $group_ids = BP_Groups_Member::get_group_ids($user_id);
    foreach ($group_ids['groups'] as $group_id) {
        groups_update_groupmeta($group_id, 'total_member_count', groups_get_total_member_count($group_id) - 1);
        // If current user is the creator of a group and is the sole admin, delete that group to avoid counts going out-of-sync
        if (groups_is_user_admin($user_id, $group_id) && count(groups_get_group_admins($group_id)) < 2 && groups_is_user_creator($user_id, $group_id)) {
            groups_delete_group($group_id);
        }
    }
    return $wpdb->query($wpdb->prepare("DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id));
    BP_Groups_Member::delete_all_for_user($user_id);
}