Пример #1
0
function bp_dtheme_ajax_joinleave_group()
{
    global $bp;
    if (groups_is_user_banned($bp->loggedin_user->id, $_POST['gid'])) {
        return false;
    }
    if (!($group = new BP_Groups_Group($_POST['gid'], false, false))) {
        return false;
    }
    if (!groups_is_user_member($bp->loggedin_user->id, $group->id)) {
        if ('public' == $group->status) {
            check_ajax_referer('groups_join_group');
            if (!groups_join_group($group->id)) {
                _e('Error joining group', 'buddypress');
            } else {
                echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>';
            }
        } else {
            if ('private' == $group->status) {
                check_ajax_referer('groups_request_membership');
                if (!groups_send_membership_request($bp->loggedin_user->id, $group->id)) {
                    _e('Error requesting membership', 'buddypress');
                } else {
                    echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'buddypress') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'buddypress') . '</a>';
                }
            }
        }
    } else {
        check_ajax_referer('groups_leave_group');
        if (!groups_leave_group($group->id)) {
            _e('Error leaving group', 'buddypress');
        } else {
            if ('public' == $group->status) {
                echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'buddypress') . '</a>';
            } else {
                if ('private' == $group->status) {
                    echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'buddypress') . '</a>';
                }
            }
        }
    }
}
Пример #2
0
/**
 * Join or leave a group when clicking the "join/leave" button via a POST request.
 *
 * @return string HTML
 * @since BuddyPress (1.2)
 */
function bp_dtheme_ajax_joinleave_group()
{
    // Bail if not a POST action
    if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
        return;
    }
    if (groups_is_user_banned(bp_loggedin_user_id(), $_POST['gid'])) {
        return;
    }
    if (!($group = groups_get_group(array('group_id' => $_POST['gid'])))) {
        return;
    }
    if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) {
        if ('public' == $group->status) {
            check_ajax_referer('groups_join_group');
            if (!groups_join_group($group->id)) {
                _e('Error joining group', 'logicalboneshug');
            } else {
                echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'logicalboneshug') . '</a>';
            }
        } elseif ('private' == $group->status) {
            check_ajax_referer('groups_request_membership');
            if (!groups_send_membership_request(bp_loggedin_user_id(), $group->id)) {
                _e('Error requesting membership', 'logicalboneshug');
            } else {
                echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'logicalboneshug') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'logicalboneshug') . '</a>';
            }
        }
    } else {
        check_ajax_referer('groups_leave_group');
        if (!groups_leave_group($group->id)) {
            _e('Error leaving group', 'logicalboneshug');
        } elseif ('public' == $group->status) {
            echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'logicalboneshug') . '</a>';
        } elseif ('private' == $group->status) {
            echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'logicalboneshug') . '</a>';
        }
    }
    exit;
}
Пример #3
0
/**
 * Join or leave a group when clicking the "join/leave" button via a POST request.
 *
 * @return string HTML
 * @since BuddyPress (1.2)
 */
function bp_legacy_theme_ajax_joinleave_group()
{
    // Bail if not a POST action
    if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
        return;
    }
    // Cast gid as integer
    $group_id = (int) $_POST['gid'];
    if (groups_is_user_banned(bp_loggedin_user_id(), $group_id)) {
        return;
    }
    if (!($group = groups_get_group(array('group_id' => $group_id)))) {
        return;
    }
    if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) {
        if ('public' == $group->status) {
            check_ajax_referer('groups_join_group');
            if (!groups_join_group($group->id)) {
                _e('Error joining group', 'buddypress');
            } else {
                echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>';
            }
        } elseif ('private' == $group->status) {
            // If the user has already been invited, then this is
            // an Accept Invitation button
            if (groups_check_user_has_invite(bp_loggedin_user_id(), $group->id)) {
                check_ajax_referer('groups_accept_invite');
                if (!groups_accept_invite(bp_loggedin_user_id(), $group->id)) {
                    _e('Error requesting membership', 'buddypress');
                } else {
                    echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>';
                }
                // Otherwise, it's a Request Membership button
            } else {
                check_ajax_referer('groups_request_membership');
                if (!groups_send_membership_request(bp_loggedin_user_id(), $group->id)) {
                    _e('Error requesting membership', 'buddypress');
                } else {
                    echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'buddypress') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'buddypress') . '</a>';
                }
            }
        }
    } else {
        check_ajax_referer('groups_leave_group');
        if (!groups_leave_group($group->id)) {
            _e('Error leaving group', 'buddypress');
        } elseif ('public' == $group->status) {
            echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'buddypress') . '</a>';
        } elseif ('private' == $group->status) {
            echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'buddypress') . '</a>';
        }
    }
    exit;
}
 /**
  * @group groups_leave_group
  * @group group_membership
  */
 public function test_groups_leave_group_multiple_admins_allow_leave()
 {
     $old_current_user = get_current_user_id();
     $u1 = $this->factory->user->create();
     $g = $this->factory->group->create(array('creator_id' => $u1));
     $u2 = $this->factory->user->create();
     $this->add_user_to_group($u2, $g);
     $m2 = new BP_Groups_Member($u2, $g);
     $m2->promote('admin');
     $before = groups_get_total_member_count($g);
     $this->set_current_user($u1);
     groups_leave_group($g, $u1);
     $after = groups_get_total_member_count($g);
     $this->assertEquals($before - 1, $after);
     $this->set_current_user($old_current_user);
 }
Пример #5
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'));
}
function bp_group_management_admin_edit()
{
    ?>
	<div class="wrap">
<?php 
    $id = (int) $_GET['id'];
    $group = new BP_Groups_Group($id, true);
    $member_action = isset($_GET['member_action']) ? $_GET['member_action'] : false;
    $member_id = isset($_GET['member_id']) ? $_GET['member_id'] : false;
    switch ($member_action) {
        case "kick":
            if (!check_admin_referer('bp-group-management-action_kick')) {
                return false;
            }
            if (!bp_group_management_ban_member($member_id, $id)) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>';
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Member kicked and banned', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            do_action('groups_banned_member', $member_id, $id);
            break;
        case "unkick":
            if (!check_admin_referer('bp-group-management-action_unkick')) {
                return false;
            }
            if (!bp_group_management_unban_member($member_id, $id)) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Member unbanned', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            do_action('groups_banned_member', $member_id, $id);
            break;
        case "demote":
            if (!check_admin_referer('bp-group-management-action_demote')) {
                return false;
            }
            if (!groups_demote_member($member_id, $id)) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Member demoted', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            do_action('groups_demoted_member', $member_id, $id);
            break;
        case "mod":
            if (!check_admin_referer('bp-group-management-action_mod')) {
                return false;
            }
            if (!bp_group_management_promote_member($member_id, $id, 'mod')) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Member promoted to moderator', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            do_action('groups_promoted_member', $member_id, $id);
            break;
        case "admin":
            if (!check_admin_referer('bp-group-management-action_admin')) {
                return false;
            }
            if (!bp_group_management_promote_member($member_id, $id, 'admin')) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Member promoted to admin', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            break;
        case "add":
            if (!check_admin_referer('bp-group-management-action_add')) {
                return false;
            }
            if (!bp_group_management_join_group($id, $member_id)) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('User added to group', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            break;
        case "remove":
            if (!check_admin_referer('bp-group-management-action_remove')) {
                return false;
            }
            if (!groups_leave_group($id, $_GET['member_id'])) {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('Sorry, there was an error.', 'bp-group-management');
                ?>
</p></div>
			<?php 
            } else {
                ?>
				<div id="message" class="updated fade"><p><?php 
                _e('User removed from group', 'bp-group-management');
                ?>
</p></div>
			<?php 
            }
            break;
        default:
            do_action('bp_gm_member_action', $group, $id, $member_action, $member_id);
            break;
    }
    ?>


	    <h2><?php 
    _e('Group Management', 'bp-group-management');
    ?>
 : <?php 
    echo bp_get_group_name($group);
    ?>
</h2>

	    <a href="admin.php?page=bp-group-management">&larr; <?php 
    _e('Group index', 'bp-group-management');
    ?>
</a>

		<div class="bp-gm-group-actions">
	    <h3><?php 
    _e('Group actions', 'bp-group-management');
    ?>
</h3>

	    <?php 
    bp_group_management_group_action_buttons($id, $group);
    ?>

	    </div>


		<div class="bp-gm-group-members">

		<?php 
    if (bp_group_has_members('group_id=' . $id . '&exclude_admins_mods=0&exclude_banned=0')) {
        ?>
	    <h3><?php 
        _e('Manage current and banned group members', 'bp-group-management');
        ?>
</h3>

			<?php 
        if (bp_group_member_needs_pagination()) {
            ?>

				<div class="pagination no-ajax">

					<div id="member-count" class="pag-count">
						<?php 
            bp_group_member_pagination_count();
            ?>
					</div>

					<div id="member-admin-pagination" class="pagination-links">
						<?php 
            bp_group_member_admin_pagination();
            ?>
					</div>

				</div>

			<?php 
        }
        ?>

			<ul id="members-list" class="item-list single-line">
				<?php 
        while (bp_group_members()) {
            bp_group_the_member();
            ?>

					<?php 
            if (bp_get_group_member_is_banned()) {
                ?>

						<li class="banned-user">
							<?php 
                bp_group_member_avatar_mini();
                ?>
							<?php 
                $unkicklink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=unkick";
                $unkicklink = function_exists('wp_nonce_url') ? wp_nonce_url($unkicklink, 'bp-group-management-action_unkick') : $unkicklink;
                ?>
							<?php 
                bp_group_member_link();
                ?>
 <?php 
                _e('(banned)', 'bp-group-management');
                ?>
 <span class="small"> - <a href="<?php 
                echo $unkicklink;
                ?>
" class="confirm" title="<?php 
                _e('Remove Ban', 'bp-group-management');
                ?>
"><?php 
                _e('Remove Ban', 'bp-group-management');
                ?>
</a>

					<?php 
            } else {
                ?>

						<li>
							<?php 
                bp_group_member_avatar_mini();
                ?>

							<?php 
                $kicklink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=kick";
                $kicklink = function_exists('wp_nonce_url') ? wp_nonce_url($kicklink, 'bp-group-management-action_kick') : $kicklink;
                $removelink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=remove";
                $removelink = function_exists('wp_nonce_url') ? wp_nonce_url($removelink, 'bp-group-management-action_remove') : $removelink;
                $modlink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=mod";
                $modlink = function_exists('wp_nonce_url') ? wp_nonce_url($modlink, 'bp-group-management-action_mod') : $modlink;
                $demotelink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=demote";
                $demotelink = function_exists('wp_nonce_url') ? wp_nonce_url($demotelink, 'bp-group-management-action_demote') : $demotelink;
                $adminlink = "admin.php?page=bp-group-management&amp;action=edit&amp;id=" . $id . "&amp;member_id=" . bp_get_group_member_id() . "&amp;member_action=admin";
                $adminlink = function_exists('wp_nonce_url') ? wp_nonce_url($adminlink, 'bp-group-management-action_admin') : $adminlink;
                ?>
							<strong><?php 
                bp_group_member_link();
                ?>
</strong>
							<span class="small"> -
								<a href="<?php 
                echo $removelink;
                ?>
" title="<?php 
                _e('Remove Member', 'bp-group-management');
                ?>
"><?php 
                _e('Remove', 'bp-group-management');
                ?>
</a> |
								<a href="<?php 
                echo $kicklink;
                ?>
" class="confirm" title="<?php 
                _e('Kick and ban this member', 'bp-group-management');
                ?>
"><?php 
                _e('Kick &amp; Ban', 'bp-group-management');
                ?>
</a> |
								<?php 
                if (groups_is_user_admin(bp_get_group_member_id(), $id)) {
                    ?>
									<a href="<?php 
                    echo $demotelink;
                    ?>
" class="confirm" title="<?php 
                    _e('Demote to Member', 'bp-group-management');
                    ?>
"><?php 
                    _e('Demote to Member', 'bp-group-management');
                    ?>
</a>
								<?php 
                } elseif (groups_is_user_mod(bp_get_group_member_id(), $id)) {
                    ?>
									<a href="<?php 
                    echo $demotelink;
                    ?>
" class="confirm" title="<?php 
                    _e('Demote to Member', 'bp-group-management');
                    ?>
"><?php 
                    _e('Demote to Member', 'bp-group-management');
                    ?>
</a> | <a href="<?php 
                    echo $adminlink;
                    ?>
" class="confirm" title="<?php 
                    _e('Promote to Admin', 'bp-group-management');
                    ?>
"><?php 
                    _e('Promote to Admin', 'bp-group-management');
                    ?>
</a></span>
								<?php 
                } else {
                    ?>
									<a href="<?php 
                    echo $modlink;
                    ?>
" class="confirm" title="<?php 
                    _e('Promote to Moderator', 'bp-group-management');
                    ?>
"><?php 
                    _e('Promote to Moderator', 'bp-group-management');
                    ?>
</a> | <a href="<?php 
                    echo $adminlink;
                    ?>
" class="confirm" title="<?php 
                    _e('Promote to Admin', 'bp-group-management');
                    ?>
"><?php 
                    _e('Promote to Admin', 'bp-group-management');
                    ?>
</a></span>
								<?php 
                }
                ?>

					<?php 
            }
            ?>

							<?php 
            do_action('bp_group_manage_members_admin_item');
            ?>
						</li>

				<?php 
        }
        ?>
			</ul>

		<?php 
    }
    ?>

		</div>

		<?php 
    bp_group_management_add_member_list($id);
    ?>

		<?php 
    do_action('bp_gm_more_group_actions');
    ?>

	</div>
<?php 
}
Пример #7
0
function groups_action_leave_group() {
	global $bp;

	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->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->groups->current_group->id ) ) {
		if ( !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' ) );
		}
		bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) );
	}

	bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) );
}
Пример #8
0
function groups_screen_group_leave()
{
    global $bp;
    global $group_obj;
    if ($bp->is_single_item) {
        if (isset($bp->action_variables) && 'yes' == $bp->action_variables[0]) {
            // Check if the user is the group admin first.
            if (groups_is_group_admin($bp->loggedin_user->id, $group_obj->id)) {
                bp_core_add_message(__('As the only group administrator, you cannot leave this group.', 'buddypress'), 'error');
                bp_core_redirect(bp_get_group_permalink($group_obj));
            }
            // remove the user from the group.
            if (!groups_leave_group($group_obj->id)) {
                bp_core_add_message(__('There was an error leaving the group. Please try again.', 'buddypress'), 'error');
                bp_core_redirect(bp_get_group_permalink($group_obj));
            } else {
                bp_core_add_message(__('You left the group successfully.', 'buddypress'));
                bp_core_redirect($bp->loggedin_user->domain . $bp->groups->slug);
            }
        } else {
            if (isset($bp->action_variables) && 'no' == $bp->action_variables[0]) {
                bp_core_redirect(bp_get_group_permalink($group_obj));
            } else {
                do_action('groups_screen_group_leave', $group_obj->id);
                // Show leave group page
                bp_core_load_template(apply_filters('groups_template_group_leave', 'groups/leave-group-confirm'));
            }
        }
    }
}
Пример #9
0
 /**
  * @group remove_from_group
  */
 public function test_wp_idea_stream_groups_member_leave_public_group()
 {
     $bp = buddypress();
     // Set current group
     $bp->groups->current_group = groups_get_group(array('group_id' => $this->group_id, 'populate_extras' => true));
     $u = $this->factory->user->create();
     groups_join_group($this->group_id, $u);
     $idea1 = $this->factory->idea->create(array('author' => $u, 'metas' => array('group_id' => $this->group_id)));
     $idea2 = $this->factory->idea->create(array('author' => $u, 'metas' => array('group_id' => $this->group_id)));
     $this->set_current_user($u);
     groups_leave_group($this->group_id, $u);
     // Check metas
     $this->assertEmpty(wp_idea_stream_ideas_get_meta($idea1, 'group_id'));
     $this->assertEmpty(wp_idea_stream_ideas_get_meta($idea2, 'group_id'));
     $ideas = wp_idea_stream_ideas_get_ideas(array('include' => array($idea1, $idea2)));
     $public_ideas = wp_filter_object_list($ideas['ideas'], array('post_status' => 'publish'), 'and', 'ID');
     $this->assertEqualSets(array($idea1, $idea2), $public_ideas, 'When a member leaves the group, ideas should always be public');
 }
 /**
  * @group cache
  */
 public function test_cache_should_be_invalidated_on_group_leave()
 {
     // Populate cache.
     $g1 = bp_get_user_groups(self::$user);
     groups_leave_group(self::$groups[1], self::$user);
     $expected = array(self::$groups[0]);
     $found = bp_get_user_groups(self::$user);
     $this->assertEqualSets($expected, array_keys($found));
 }
Пример #11
0
 /**
  * @group total_member_count
  * @group groups_leave_group
  */
 public function test_total_member_count_groups_leave_group()
 {
     $u1 = $this->factory->user->create();
     $g1 = $this->factory->group->create(array('creator_id' => $u1));
     groups_join_group($g1, $u1);
     groups_leave_group($g1, $u1);
     $this->assertEquals(1, groups_get_groupmeta($g1, 'total_member_count'));
 }
Пример #12
0
 function settings_screen_save($group_id = NULL)
 {
     global $bp;
     // Make sure we have the group ID
     $group_id = $_POST['group_id'];
     if (!$group_id) {
         $group_id = $bp->groups->current_group->id;
     }
     // Set error redirect based on save method
     $redirect_url = $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $this->slug;
     // Email cannot be empty
     if (empty($_POST['editable-guild-leader'])) {
         bp_core_add_message('You must enter a valid email address.', 'error');
         bp_core_redirect($redirect_url);
         exit;
     }
     // Make sure the nonce checks
     check_admin_referer('groups_create_save_' . $this->slug);
     // Get the leader by email
     $leader_email = sanitize_email($_POST['editable-guild-leader']);
     $leader = get_user_by('email', $leader_email);
     // If we don't recognize the email, bail out
     if (empty($leader)) {
         bp_core_add_message('This email address is not recognized.', 'error');
         bp_core_redirect($redirect_url);
         exit;
     }
     // Otherwise, set the group leader, and remove the creator
     $leader_id = $leader->ID;
     if ($leader_id != get_current_user_id()) {
         groups_accept_invite($leader_id, $group_id);
         $member = new BP_Groups_Member($leader_id, $group_id);
         $member->promote('admin');
         groups_leave_group($group_id, $creator_id);
     }
 }