/**
* Return the permalink for the current topic in the loop.
*
* @since 1.0.0
*
* @return string Permalink for the current topic.
*/
function bp_get_the_topic_permalink()
{
global $forum_template;
// The topic is in a loop where its parent object is loaded.
if (bp_get_the_topic_object_slug()) {
$permalink = trailingslashit(bp_get_groups_directory_permalink() . bp_get_the_topic_object_slug() . '/forum');
// We are viewing a single group topic, so use the current item.
} elseif (bp_is_group_forum_topic()) {
$permalink = trailingslashit(bp_get_groups_directory_permalink() . bp_current_item() . '/forum');
// We are unsure what the context is, so fallback to forum root slug.
} elseif (bp_is_single_item()) {
$permalink = trailingslashit(bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/' . bp_current_item());
// This is some kind of error situation, so use forum root.
} else {
$permalink = trailingslashit(bp_get_root_domain() . '/' . bp_get_forums_root_slug());
}
/**
* Filters the permalink for the current topic in the loop.
*
* @since 1.0.0
*
* @param string $value Permalink for the current topic in the loop.
*/
return apply_filters('bp_get_the_topic_permalink', trailingslashit($permalink . 'topic/' . $forum_template->topic->topic_slug));
}
/**
* 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);
}
/**
* @since 1.0.3
* it is not used any more because qwe are linking to threaded view
* Remove notification for group forum posts/new topic
*/
function ac_notifier_remove_notification_for_topic()
{
global $bp;
//is group & group forum active ?
if (!(bp_is_active("groups") && bp_is_active("forums"))) {
return;
}
//if either group or forum is not actuive do not do anything
//check if we are on single topic screen, right?
if (bp_is_group_forum_topic() && is_user_logged_in()) {
$topic_id = bp_forums_get_topic_id_from_slug($bp->action_variables[1]);
//get id from slug
$topic = get_topic($topic_id);
$group_id = $bp->groups->current_group->id;
//find activity id for this topic
$activity_id = bp_activity_get_activity_id(array('user_id' => $topic->poster_id, 'component' => $bp->groups->id, 'type' => "new_forum_topic", "item_id" => $group_id, 'secondary_item_id' => $topic_id));
//remove notification for new topic comments: easy
if (!empty($activity_id)) {
bp_core_delete_notifications_by_item_id($bp->loggedin_user->id, $activity_id, $bp->ac_notifier->id, 'new_activity_comment_' . $activity_id);
}
$posts = ac_notifier_get_forum_post_ids($topic_id);
if (!empty($posts)) {
//find all activities for the post
$activities = ac_notifier_get_activity_ids(array("item_id" => $group_id, "secondary_ids" => $posts, "component" => $bp->groups->id, "type" => "new_forum_post"));
//pass the array
foreach ((array) $activities as $ac_id) {
bp_core_delete_notifications_by_item_id($bp->loggedin_user->id, $ac_id, $bp->ac_notifier->id, 'new_activity_comment_' . $ac_id);
}
}
}
}
/**
* Similar to the post_class() function, but for BP. This is NOT used by core Suffusion, but is useful for child themes using BP.
* This might be defined by the Suffusion BuddyPress Pack for BP users of Suffusion, but is included conditionally here so
* that the theme and the plugin can be used independently of each other and so that one version of Suffusion can work with an older
* version of the BP pack.
*
* @since 3.6.7
* @param bool $custom
* @param bool $echo
* @return bool|string
*/
function suffusion_bp_content_class($custom = false, $echo = true)
{
if (!function_exists('bp_is_group')) {
return false;
}
$css = array();
$css[] = 'post';
if (function_exists('bp_is_profile_component') && bp_is_profile_component()) {
$css[] = 'profile-component';
}
if (function_exists('bp_is_activity_component') && bp_is_activity_component()) {
$css[] = 'activity-component';
}
if (function_exists('bp_is_blogs_component') && bp_is_blogs_component()) {
$css[] = 'blogs-component';
}
if (function_exists('bp_is_messages_component') && bp_is_messages_component()) {
$css[] = 'messages-component';
}
if (function_exists('bp_is_friends_component') && bp_is_friends_component()) {
$css[] = 'friends-component';
}
if (function_exists('bp_is_groups_component') && bp_is_groups_component()) {
$css[] = 'groups-component';
}
if (function_exists('bp_is_settings_component') && bp_is_settings_component()) {
$css[] = 'settings-component';
}
if (function_exists('bp_is_member') && bp_is_member()) {
$css[] = 'member';
}
if (function_exists('bp_is_user_activity') && bp_is_user_activity()) {
$css[] = 'user-activity';
}
if (function_exists('bp_is_user_friends_activity') && bp_is_user_friends_activity()) {
$css[] = 'user-friends-activity';
}
if (function_exists('bp_is_activity_permalink') && bp_is_activity_permalink()) {
$css[] = 'activity-permalink';
}
if (function_exists('bp_is_user_profile') && bp_is_user_profile()) {
$css[] = 'user-profile';
}
if (function_exists('bp_is_profile_edit') && bp_is_profile_edit()) {
$css[] = 'profile-edit';
}
if (function_exists('bp_is_change_avatar') && bp_is_change_avatar()) {
$css[] = 'change-avatar';
}
if (function_exists('bp_is_user_groups') && bp_is_user_groups()) {
$css[] = 'user-groups';
}
if (function_exists('bp_is_group') && bp_is_group()) {
$css[] = 'group';
}
if (function_exists('bp_is_group_home') && bp_is_group_home()) {
$css[] = 'group-home';
}
if (function_exists('bp_is_group_create') && bp_is_group_create()) {
$css[] = 'group-create';
}
if (function_exists('bp_is_group_admin_page') && bp_is_group_admin_page()) {
$css[] = 'group-admin-page';
}
if (function_exists('bp_is_group_forum') && bp_is_group_forum()) {
$css[] = 'group-forum';
}
if (function_exists('bp_is_group_activity') && bp_is_group_activity()) {
$css[] = 'group-activity';
}
if (function_exists('bp_is_group_forum_topic') && bp_is_group_forum_topic()) {
$css[] = 'group-forum-topic';
}
if (function_exists('bp_is_group_forum_topic_edit') && bp_is_group_forum_topic_edit()) {
$css[] = 'group-forum-topic-edit';
}
if (function_exists('bp_is_group_members') && bp_is_group_members()) {
$css[] = 'group-members';
}
if (function_exists('bp_is_group_invites') && bp_is_group_invites()) {
$css[] = 'group-invites';
}
if (function_exists('bp_is_group_membership_request') && bp_is_group_membership_request()) {
$css[] = 'group-membership-request';
}
if (function_exists('bp_is_group_leave') && bp_is_group_leave()) {
$css[] = 'group-leave';
}
if (function_exists('bp_is_group_single') && bp_is_group_single()) {
//.........这里部分代码省略.........
/**
* Add the topic title to the <title> if viewing a single group forum topic
*
* @since bbPress (r5161)
*
* @param string $new_title The title to filter
* @param string $old_title (Not used)
* @param string $sep The separator to use
* @return string The possibly modified title
*/
function bbp_filter_modify_page_title($new_title = '', $old_title = '', $sep = '')
{
// Only filter if group forums are active
if (bbp_is_group_forums_active()) {
// Only filter for single group forum topics
if (bp_is_group_forum_topic() || bp_is_group_forum_topic_edit()) {
// Get the topic
$topic = get_posts(array('name' => bp_action_variable(1), 'post_status' => 'publish', 'post_type' => bbp_get_topic_post_type(), 'numberposts' => 1));
// Add the topic title to the <title>
$new_title .= bbp_get_topic_title($topic[0]->ID) . ' ' . $sep . ' ';
}
}
// Return the title
return $new_title;
}
请发表评论