</div><!-- .forums.single-forum --> <?php } ?> <?php do_action('bp_after_group_forum_content'); ?> <?php if (!bp_is_group_forum_topic_edit() && !bp_is_group_forum_topic()) { ?> <?php if (!bp_group_is_user_banned() && (is_user_logged_in() && 'public' == bp_get_group_status() || bp_group_is_member())) { ?> <form action="" method="post" id="forum-topic-form" class="standard-form"> <div id="new-topic-post"> <?php do_action('bp_before_group_forum_post_new'); ?> <?php if (bp_groups_auto_join() && !bp_group_is_member()) { ?> <p><?php _e('You will auto join this group when you start a new topic.', 'buddypress'); ?>
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)); }
_e('Post Reply', 'buddypress'); ?> " /> </div> <?php do_action('groups_forum_new_reply_after'); ?> <?php wp_nonce_field('bp_forums_new_reply'); ?> </div> <?php } elseif (!bp_group_is_user_banned()) { ?> <div id="message" class="info"> <p><?php _e('This topic is closed, replies are no longer accepted.', 'buddypress'); ?> </p> </div> <?php } ?> <?php }
/** * Temporarily fix the "New Topic" button when using bbPress with BP. * * @todo Remove this when bbPress addresses this. */ function cbox_fix_bbp_new_topic_button() { // if groups isn't active, stop now! if (!bp_is_active('groups')) { return; } // if bbPress 2 isn't enabled, stop now! if (!function_exists('bbpress')) { return; } // remove the 'New Topic' button // this is done because the 'bp_get_group_new_topic_button' filter doesn't // work properly remove_action('bp_group_header_actions', 'bp_group_new_topic_button'); // version of bp_is_group_forum() that works with bbPress 2 $is_group_forum = bp_is_single_item() && bp_is_groups_component() && bp_is_current_action('forum'); // If these conditions are met, this button should not be displayed if (!is_user_logged_in() || !$is_group_forum || bp_is_group_forum_topic() || bp_group_is_user_banned()) { return false; } // create function to output new topic button $new_button = create_function('', "\n\t\t// do not show in sidebar\n\t\tif ( did_action( 'open_sidebar' ) )\n\t\t\treturn;\n\n\t\t// render the button\n\t\tbp_button( array(\n\t\t\t'id' => 'new_topic',\n\t\t\t'component' => 'groups',\n\t\t\t'must_be_logged_in' => true,\n\t\t\t'block_self' => true,\n\t\t\t'wrapper_class' => 'group-button',\n\t\t\t'link_href' => '#new-post', // anchor modified\n\t\t\t'link_class' => 'group-button', // removed a link_class here\n\t\t\t'link_id' => 'new-topic-button',\n\t\t\t'link_text' => __( 'New Topic', 'buddypress' ),\n\t\t\t'link_title' => __( 'New Topic', 'buddypress' ),\n\t\t) );\n\t"); // add our customized 'New Topic' button add_action('bp_group_header_actions', $new_button); }
?> </select> </li> </ul> <div class="clear"></div> </div> <div class="forums single-forum" role="main"> <?php gconnect_locate_template(array('forums/forums-loop.php'), true); ?> </div><!-- .forums.single-forum --> <?php } do_action('bp_after_group_forum_content'); if (!bp_is_group_forum_topic_edit() && !bp_is_group_forum_topic() && !bp_group_is_user_banned() && (is_user_logged_in() && 'public' == bp_get_group_status() || bp_group_is_member())) { ?> <form action="" method="post" id="forum-topic-form" class="standard-form"> <div id="new-topic-post"> <?php do_action('bp_before_group_forum_post_new'); ?> <?php if (bp_groups_auto_join() && !bp_group_is_member()) { ?> <p><?php _e('You will auto join this group when you start a new topic.', 'buddypress'); ?>
/** * @group bp_group_is_user_banned */ public function test_bp_group_is_user_banned_not_in_groups_loop() { $now = time(); $u1 = $this->factory->user->create(array('last_activity' => date('Y-m-d H:i:s', $now - 100))); $u2 = $this->factory->user->create(array('last_activity' => date('Y-m-d H:i:s', $now - 100))); $g1 = $this->factory->group->create(array('creator_id' => $u1)); $g2 = $this->factory->group->create(array('creator_id' => $u2)); $this->add_user_to_group($u1, $g2, array('date_modified' => date('Y-m-d H:i:s', $now - 50))); $this->add_user_to_group($u2, $g2, array('date_modified' => date('Y-m-d H:i:s', $now - 500))); $this->add_user_to_group($u1, $g2, array('date_modified' => date('Y-m-d H:i:s', $now - 50))); // Ban user 1 from group 2 // Fool the admin check $old_user = get_current_user_id(); $this->set_current_user($u2); buddypress()->is_item_admin = true; groups_ban_member($u1, $g2); // Do group ban checks $group1 = new BP_Groups_Group($g1); $group2 = new BP_Groups_Group($g2); $found = array(); $found[] = bp_group_is_user_banned($group1, $u1); $found[] = bp_group_is_user_banned($group2, $u1); // Assert $expected = array(false, true); $this->assertEquals($expected, $found); // Clean up $this->set_current_user($old_user); }