/** * Set Gallery as enabled/disabled * * @param type $group_id * @param type $enabled * @return boolean */ function mpp_group_set_gallery_state($group_id = false, $enabled = 'yes') { if (!$group_id) { $group_id = bp_get_group_id(groups_get_current_group()); } if (!$group_id) { return false; } //default settings from gloabl $is_enabled = groups_update_groupmeta($group_id, '_mpp_is_enabled', $enabled); return $is_enabled; }
/** * Restrict access to a group regarding its 'member type' * * If a user is not logged in, he is redirected to the login form * If a user ! member type, he is redirected to the groups directory * If a user is a super admin, he can access * * @param bool $user_has_access * @param array &$no_access_args the redirect args * @return bool False if member type doesn't match, true otherwise */ function cfbgr_enqueue_current_user_has_access($user_has_access, &$no_access_args) { // If the user does not already have access bail if (empty($user_has_access)) { return $user_has_access; } // Get the member type of the group $restriction = groups_get_groupmeta(bp_get_current_group_id(), 'cf-buddypress-group-restrictions'); // Don't touch to regular groups and leave Admins access if (empty($restriction) || bp_current_user_can('bp_moderate')) { return $user_has_access; } $current_group = groups_get_current_group(); if (!is_user_logged_in()) { $user_has_access = false; $no_access_args = array('message' => __('You must log in to access the page you requested.', 'buddypress-group-restrictions'), 'root' => bp_get_group_permalink($current_group) . 'home/', 'redirect' => false); return $user_has_access; // Current user does not match the restriction } elseif ($restriction !== bp_get_member_type(bp_loggedin_user_id())) { $user_has_access = false; // Get infos about the member type $member_type_object = bp_get_member_type_object($restriction); $singular_name = ''; if (!empty($member_type_object->labels['singular_name'])) { $singular_name = $member_type_object->labels['singular_name']; } // You need to redirect to a BuddyPress page to have $no_access_args = array('mode' => 3, 'message' => sprintf(__('Sorry the group you tried to enter is only viewable for %s members', 'buddypress-group-restrictions'), esc_html($singular_name)), 'root' => bp_get_groups_directory_permalink(), 'redirect' => false); return $user_has_access; } // By default, leave BuddyPress deal with access return $user_has_access; }
/** * Load Custom tabs on BuddyPress * * @global object $bp global BuddyPress object */ function custom_media_nav_tab() { global $bp; if (!function_exists("bp_core_new_nav_item")) { return; } if (bp_is_blog_page() || !bp_is_group() && !(isset($bp->displayed_user) && isset($bp->displayed_user->id)) || apply_filters('rtmedia_render_bp_nav', false)) { return; } global $rtmedia; if (function_exists("bp_is_group") && !bp_is_group()) { if (isset($bp->displayed_user) && isset($bp->displayed_user->id)) { $profile_counts = $this->actual_counts($bp->displayed_user->id); } $tab_position = apply_filters('rtmedia_media_tab_position', 99); if ($rtmedia->options["buddypress_enableOnProfile"] != 0) { bp_core_new_nav_item(array('name' => RTMEDIA_MEDIA_LABEL . '<span>' . $profile_counts['total']['all'] . '</span>', 'slug' => apply_filters('rtmedia_media_tab_slug', RTMEDIA_MEDIA_SLUG), 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all', 'position' => $tab_position)); } } if (bp_is_group() && $rtmedia->options["buddypress_enableOnGroup"] != 0) { global $bp; $media_enabled = true; //filter for rtMedia PRO for PER GROUP MEDIA enable/disable functionality $media_enabled = apply_filters('rtmedia_media_enabled_for_current_group', $media_enabled); // check if current user can view this group $current_group = groups_get_current_group(); $is_visible_to_current_user = $current_group->is_visible; if ($media_enabled && $is_visible_to_current_user) { $group_counts = $this->actual_counts($bp->groups->current_group->id, "group"); $bp->bp_options_nav[bp_get_current_group_slug()]['media'] = array('name' => RTMEDIA_MEDIA_LABEL . '<span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . RTMEDIA_MEDIA_SLUG, 'slug' => RTMEDIA_MEDIA_SLUG, 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all'); } } }
/** * Gets the item id of the item (eg group, user) associated with the page you're on. * * @package BuddyPress Docs * @since 1.0-beta * * @return str $view The current item type */ function setup_item() { global $bp; if (empty($this->item_type)) { return false; } $id = ''; $name = ''; $slug = ''; switch ($this->item_type) { case 'group': if (bp_is_group()) { $group = groups_get_current_group(); $id = $group->id; $name = $group->name; $slug = $group->slug; } break; case 'user': if (bp_is_user()) { $id = bp_displayed_user_id(); $name = bp_get_displayed_user_fullname(); $slug = bp_get_displayed_user_username(); } break; } // Todo: abstract into groups. Will be a pain $this->item_id = apply_filters('bp_docs_get_item_id', $id); $this->item_name = apply_filters('bp_docs_get_item_name', $name); $this->item_slug = apply_filters('bp_docs_get_item_slug', $slug); // Put some stuff in $bp $bp->bp_docs->current_item = $this->item_id; }
function mp_group_nav() { if (!bp_is_group()) { return; } $component = 'groups'; $component_id = groups_get_current_group()->id; if (mpp_user_can_create_gallery($component, $component_id)) { echo sprintf("<li><a href='%s'>%s</a></li>", mpp_get_gallery_base_url($component, $component_id), __('All Galleries', 'mediapress')); echo sprintf("<li><a href='%s'>%s</a></li>", mpp_get_gallery_create_url($component, $component_id), __('Create Gallery', 'mediapress')); } }
/** * Populate the $groups_template global for use outside the loop * * We build the group navigation outside the groups loop. In order to use BP's * group template functions while building the nav, we must have the template * global populated. In this function, we fill in any missing data, based on * the current group. * * This issue should be fixed more elegantly upstream in BuddyPress, ideally * by making the template functions fall back on the current group when the * loop global is not populated. */ function wff_populate_group_global() { global $groups_template; if (bp_is_group() && isset($groups_template->groups[0]->group_id) && empty($groups_template->groups[0]->name)) { $current_group = groups_get_current_group(); // Fill in all missing properties foreach ($current_group as $cur_key => $cur_value) { if (!isset($groups_template->groups[0]->{$cur_key})) { $groups_template->groups[0]->{$cur_key} = $cur_value; } } } }
/** * Load Custom tabs on BuddyPress * * @global object $bp global BuddyPress object */ function custom_media_nav_tab() { $bp = buddypress(); if (!function_exists('bp_core_new_nav_item')) { return; } if (bp_is_blog_page() || !bp_is_group() && !(isset($bp->displayed_user) && isset($bp->displayed_user->id)) || apply_filters('rtmedia_render_bp_nav', false)) { return; } global $rtmedia; if (function_exists('bp_is_group') && !bp_is_group()) { if (isset($bp->displayed_user) && isset($bp->displayed_user->id)) { $profile_counts = $this->actual_counts($bp->displayed_user->id); } $tab_position = apply_filters('rtmedia_media_tab_position', 99); if (0 !== intval($rtmedia->options['buddypress_enableOnProfile'])) { bp_core_new_nav_item(array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $profile_counts['total']['all'] . '</span>', 'slug' => apply_filters('rtmedia_media_tab_slug', RTMEDIA_MEDIA_SLUG), 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all', 'position' => $tab_position)); } } if (bp_is_group() && 0 !== intval($rtmedia->options['buddypress_enableOnGroup'])) { $media_enabled = true; //filter for rtMedia PRO for PER GROUP MEDIA enable/disable functionality $media_enabled = apply_filters('rtmedia_media_enabled_for_current_group', $media_enabled); // check if current user can view this group $current_group = groups_get_current_group(); /** * remove `$current_group->is_visible` and add `bp_group_is_visible( $current_group )` * reason : In Buddypress 2.7 `is_visible` return false so we can't display `media` tab on group * issue id : http://git.rtcamp.com/rtmedia/rtMedia/issues/119 */ // $is_visible_to_current_user = $current_group->is_visible; $is_visible_to_current_user = bp_group_is_visible($current_group); if ($media_enabled && $is_visible_to_current_user) { $group_counts = $this->actual_counts($bp->groups->current_group->id, 'group'); $slug = apply_filters('rtmedia_group_media_tab_slug', RTMEDIA_MEDIA_SLUG); if (isset($bp->version) && $bp->version > '2.5.3') { /* * As from BuddyPress 2.6, you can't access $bp->bp_options_nav directly. * Use `bp_core_new_subnav_item` to add subnav item. * * Check https://buddypress.trac.wordpress.org/ticket/6534 and https://buddypress.trac.wordpress.org/changeset/10745 * for more details */ bp_core_new_subnav_item(array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . $slug, 'slug' => $slug, 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/'), 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all')); } else { $bp->bp_options_nav[bp_get_current_group_slug()]['media'] = array('name' => RTMEDIA_MEDIA_LABEL . ' <span>' . $group_counts['total']['all'] . '</span>', 'link' => trailingslashit(bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_current_group_slug() . '/') . $slug, 'slug' => $slug, 'user_has_access' => true, 'css_id' => 'rtmedia-media-nav', 'position' => 99, 'screen_function' => array($this, 'media_screen'), 'default_subnav_slug' => 'all'); } } } }
/** * Builds the BuddyDrive Group url * * @param integer $group_id the group id * @uses groups_get_group to get group datas * @uses groups_get_current_group() if no id was given to get current group datas * @uses bp_get_group_permalink() to build the group permalink * @uses buddydrive_get_slug() to get the BuddyDrive slug to end to the group url * @return string $buddydrive_link the link to user's BuddyDrive */ function buddydrive_get_group_buddydrive_url($group_id = 0) { $buddydrive_link = false; if (!empty($group_id)) { $group = groups_get_group(array('group_id' => $group_id)); } else { $group = groups_get_current_group(); } if (!empty($group)) { $group_link = bp_get_group_permalink($group); $buddydrive_link = trailingslashit($group_link . buddydrive_get_slug()); } return $buddydrive_link; }
function the_group() { global $group; $this->in_the_loop = true; $this->group = $this->next_group(); if ($this->single_group) { $this->group = groups_get_current_group(); } else { if ($this->group) { wp_cache_set('groups_group_nouserdata_' . $this->group->id, $this->group, 'bp'); } } if (0 == $this->current_group) { // loop has just started do_action('loop_start'); } }
function groups_record_activity($args = '') { global $bp; if (!bp_is_active('activity')) { return false; } // Set the default for hide_sitewide by checking the status of the group $hide_sitewide = false; if (!empty($args['item_id'])) { if (bp_get_current_group_id() == $args['item_id']) { $group = groups_get_current_group(); } else { $group = groups_get_group(array('group_id' => $args['item_id'])); } if (isset($group->status) && 'public' != $group->status) { $hide_sitewide = true; } } $defaults = array('id' => false, 'user_id' => bp_loggedin_user_id(), 'action' => '', 'content' => '', 'primary_link' => '', 'component' => $bp->groups->id, 'type' => false, 'item_id' => false, 'secondary_item_id' => false, 'recorded_time' => bp_core_current_time(), 'hide_sitewide' => $hide_sitewide); $r = wp_parse_args($args, $defaults); extract($r); return bp_activity_add(array('id' => $id, 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide)); }
public function view_single() { $bp = buddypress(); if (function_exists('bp_is_group') && !bp_is_group()) { return; } //do not catch the request for creating new post if (bp_is_action_variable('create', 0)) { return; } $current_group = groups_get_current_group(); if (bcg_is_disabled($current_group->id)) { return; } //if the group is private/hidden and user is not member, return if (($current_group->status == 'private' || $current_group->status == 'hidden') && (!is_user_logged_in() || !groups_is_user_member(bp_loggedin_user_id(), $current_group->id))) { return; //avoid prioivacy troubles } if (bcg_is_component() && !empty($bp->action_variables[0])) { //should we check for the existence of the post? add_action('bp_template_content', array($this, 'get_single_post_contents')); } }
function bp_get_groups_action_link($action = '', $query_args = '', $nonce = false) { global $bp; // Must be a group if (empty($bp->groups->current_group->id)) { return; } // Append $action to $url if provided if (!empty($action)) { $url = bp_get_group_permalink(groups_get_current_group()) . $action; } else { $url = bp_get_group_permalink(groups_get_current_group()); } // Add a slash at the end of our user url $url = trailingslashit($url); // Add possible query arg if (!empty($query_args) && is_array($query_args)) { $url = add_query_arg($query_args, $url); } // To nonce, or not to nonce... if (true === $nonce) { $url = wp_nonce_url($url); } elseif (is_string($nonce)) { $url = wp_nonce_url($url, $nonce); } // Return the url, if there is one if (!empty($url)) { return $url; } }
/** * Show settings on single group page in front end * */ public function show_settings() { $group_id = bp_get_current_group_id(); if ($this->current_user_can_modify_settings($group_id)) { echo "<div class='group-page-link-box'>"; echo "<h4>" . __('Link to Page', 'link-page-to-groups') . "</h4>"; $this->admin_metabox(groups_get_current_group()); echo "</div>"; echo "<hr />"; } }
function rt_theme_compat_reset_post($args = array()) { global $wp_query, $post; // Switch defaults if post is set global $rtmedia_query; if (isset($wp_query->post)) { if (isset($rtmedia_query->query) && isset($rtmedia_query->query["media_type"]) && $rtmedia_query->query["media_type"] == "album" && isset($rtmedia_query->media_query["album_id"])) { foreach ($rtmedia_query->album as $al) { if ($al->id == $rtmedia_query->media_query["album_id"]) { $wp_query->post = get_post($al->media_id); break; } } } else { if (isset($rtmedia_query->media) && count($rtmedia_query->media) == 1 && $rtmedia_query->media) { $wp_query->post = get_post($rtmedia_query->media[0]->media_id); } } $dummy = wp_parse_args($args, array('ID' => $wp_query->post->ID, 'post_status' => $wp_query->post->post_status, 'post_author' => $wp_query->post->post_author, 'post_parent' => $wp_query->post->post_parent, 'post_type' => 'rtmedia', 'post_date' => $wp_query->post->post_date, 'post_date_gmt' => $wp_query->post->post_date_gmt, 'post_modified' => $wp_query->post->post_modified, 'post_modified_gmt' => $wp_query->post->post_modified_gmt, 'post_content' => $wp_query->post->post_content, 'post_title' => $wp_query->post->post_title, 'post_excerpt' => $wp_query->post->post_excerpt, 'post_content_filtered' => $wp_query->post->post_content_filtered, 'post_mime_type' => $wp_query->post->post_mime_type, 'post_password' => $wp_query->post->post_password, 'post_name' => $wp_query->post->post_name, 'guid' => $wp_query->post->guid, 'menu_order' => $wp_query->post->menu_order, 'pinged' => $wp_query->post->pinged, 'to_ping' => $wp_query->post->to_ping, 'ping_status' => $wp_query->post->ping_status, 'comment_status' => $wp_query->post->comment_status, 'comment_count' => $wp_query->post->comment_count, 'filter' => $wp_query->post->filter, 'is_404' => false, 'is_page' => false, 'is_single' => false, 'is_archive' => false, 'is_tax' => false)); } else { $dummy = wp_parse_args($args, array('ID' => 0, 'post_status' => 'public', 'post_author' => 0, 'post_parent' => 0, 'post_type' => 'bp_member', 'post_date' => 0, 'post_date_gmt' => 0, 'post_modified' => 0, 'post_modified_gmt' => 0, 'post_content' => '', 'post_title' => '', 'post_excerpt' => '', 'post_content_filtered' => '', 'post_mime_type' => '', 'post_password' => '', 'post_name' => '', 'guid' => '', 'menu_order' => 0, 'pinged' => '', 'to_ping' => '', 'ping_status' => '', 'comment_status' => 'closed', 'comment_count' => 0, 'filter' => 'raw', 'is_404' => false, 'is_page' => false, 'is_single' => false, 'is_archive' => false, 'is_tax' => false)); } if (function_exists("bp_is_group")) { if (bp_is_group()) { $dummy['post_type'] = "bp_group"; if ("bp-default" != get_option('stylesheet')) { $dummy['post_title'] = '<a href="' . bp_get_group_permalink(groups_get_current_group()) . '">' . bp_get_current_group_name() . '</a>'; } } else { $dummy['post_type'] = "bp_member"; if ("bp-default" != get_option('stylesheet')) { $dummy['post_title'] = '<a href="' . bp_get_displayed_user_link() . '">' . bp_get_displayed_user_fullname() . '</a>'; } } } else { global $rtmedia_query; $dummy['comment_status'] = 'closed'; if (isset($rtmedia_query->media_query)) { if (isset($rtmedia_query->media_query["media_author"])) { $dummy["post_author"] = $rtmedia_query->media_query["media_author"]; } if (isset($rtmedia_query->media_query["id"])) { //var_dump($rtmedia_query); //echo $rtmedia_query->media_query["id"]; } } } // Bail if dummy post is empty if (empty($dummy)) { return; } // Set the $post global $post = new WP_Post((object) $dummy); // Copy the new post global into the main $wp_query $wp_query->post = $post; $wp_query->posts = array($post); // Prevent comments form from appearing $wp_query->post_count = 1; $wp_query->is_404 = $dummy['is_404']; $wp_query->is_page = $dummy['is_page']; $wp_query->is_single = $dummy['is_single']; $wp_query->is_archive = $dummy['is_archive']; $wp_query->is_tax = $dummy['is_tax']; // Clean up the dummy post unset($dummy); /** * Force the header back to 200 status if not a deliberate 404 * * @see http://bbpress.trac.wordpress.org/ticket/1973 */ if (!$wp_query->is_404()) { status_header(200); } }
/** * Add custom template hierarchy to theme compat for group pages. * * This is to mirror how WordPress has * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}. * * @since 1.8.0 * * @param string $templates The templates from bp_get_theme_compat_templates(). * @return array $templates Array of custom templates to look for. */ public function single_template_hierarchy($templates) { // Setup some variables we're going to reference in our custom templates. $group = groups_get_current_group(); /** * Filters the Groups single pages template hierarchy based on priority. * * @since 1.8.0 * * @param array $value Array of default template files to use. */ $new_templates = apply_filters('bp_template_hierarchy_groups_single_item', array('groups/single/index-id-' . sanitize_file_name(bp_get_current_group_id()) . '.php', 'groups/single/index-slug-' . sanitize_file_name(bp_get_current_group_slug()) . '.php', 'groups/single/index-action-' . sanitize_file_name(bp_current_action()) . '.php', 'groups/single/index-status-' . sanitize_file_name($group->status) . '.php', 'groups/single/index.php')); // Merge new templates with existing stack. // @see bp_get_theme_compat_templates(). $templates = array_merge((array) $new_templates, $templates); return $templates; }
/** * Add group information to directory breadcrumbs. * * @since 1.9.0 * * @param array $crumbs * @return array */ function bp_docs_group_directory_breadcrumb($crumbs) { if (bp_is_group()) { $group_crumbs = array(sprintf('<a href="%s">%s</a>', bp_get_group_permalink(groups_get_current_group()) . bp_docs_get_slug() . '/', sprintf(_x('%s’s Docs', 'group Docs directory breadcrumb', 'bp-docs'), esc_html(bp_get_current_group_name())))); $crumbs = array_merge($group_crumbs, $crumbs); } return $crumbs; }
/** * Returns the activity delete arguments for a rendez-vous removed from a group * * @package Rendez Vous * @subpackage Groups * * @since Rendez Vous (1.1.0) * * @param array $args the activity delete arguments * @uses bp_is_group() to make sure the user is displaying a group * @uses groups_get_current_group() to get the current group object * @uses buddypress() to get BuddyPress instance * @return array the activity delete arguments */ public function group_activity_delete_args($args = array()) { if (!bp_is_group() || empty($args['item_id'])) { return $args; } $group = groups_get_current_group(); $rendez_vous_id = $args['item_id']; $args = array('item_id' => $group->id, 'secondary_item_id' => $rendez_vous_id, 'component' => buddypress()->groups->id); return $args; }
/** * Update an existing group forum post. * * Uses the bundled version of bbPress packaged with BuddyPress. * * @since BuddyPress (1.1.0) * * @param int $post_id The post ID of the existing forum post. * @param string $post_text The text for the forum post. * @param int $topic_id The topic ID of the existing forum topic. * @param mixed $page The page number where the new forum post should reside. Optional. * * @return mixed The forum post ID on success. Boolean false on failure. */ function groups_update_group_forum_post($post_id, $post_text, $topic_id, $page = false) { $bp = buddypress(); /** This filter is documented in bp-groups/bp-groups-forums.php */ $post_text = apply_filters('group_forum_post_text_before_save', $post_text); /** This filter is documented in bp-groups/bp-groups-forums.php */ $topic_id = apply_filters('group_forum_post_topic_id_before_save', $topic_id); $post = bp_forums_get_post($post_id); $post_id = bp_forums_insert_post(array('post_id' => $post_id, 'post_text' => $post_text, 'post_time' => $post->post_time, 'topic_id' => $topic_id, 'poster_id' => $post->poster_id)); if (empty($post_id)) { return false; } $topic = bp_forums_get_topic_details($topic_id); $activity_action = sprintf(__('%1$s replied to the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink($post->poster_id), '<a href="' . bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic->topic_slug . '">' . esc_attr($topic->topic_title) . '</a>', '<a href="' . bp_get_group_permalink(groups_get_current_group()) . '">' . esc_attr(bp_get_current_group_name()) . '</a>'); $activity_content = bp_create_excerpt($post_text); $primary_link = bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic->topic_slug . '/'; if (!empty($page)) { $primary_link .= "?topic_page=" . $page; } // Get the corresponding activity item if (bp_is_active('activity')) { $id = bp_activity_get_activity_id(array('user_id' => $post->poster_id, 'component' => $bp->groups->id, 'type' => 'new_forum_post', 'item_id' => bp_get_current_group_id(), 'secondary_item_id' => $post_id)); } /** This filter is documented in bp-groups/bp-groups-forums.php */ $action = apply_filters_ref_array('groups_activity_new_forum_post_action', array($activity_action, $post_text, &$topic, &$topic)); /** This filter is documented in bp-groups/bp-groups-forums.php */ $content = apply_filters_ref_array('groups_activity_new_forum_post_content', array($activity_content, $post_text, &$topic, &$topic)); /** This filter is documented in bp-groups/bp-groups-forums.php */ $filtered_primary_link = apply_filters('groups_activity_new_forum_post_primary_link', $primary_link . "#post-" . $post_id); groups_record_activity(array('id' => $id, 'action' => $action, 'content' => $content, 'primary_link' => $filtered_primary_link, 'type' => 'new_forum_post', 'item_id' => (int) bp_get_current_group_id(), 'user_id' => (int) $post->poster_id, 'secondary_item_id' => $post_id, 'recorded_time' => $post->post_time)); /** * Fires after the update of a group forum post. * * @since BuddyPress (1.1.0) * * @param object $post Object holding current post being updated. * @param object $topic Object holding current topic details. Passed by reference. */ do_action_ref_array('groups_update_group_forum_post', array($post, &$topic)); return $post_id; }
/** * BuddyDrive Loop : do we have items for the query asked * * @param array $args the arguments of the query * @global object $buddydrive_template * @uses buddydrive_get_folder_post_type() to get BuddyFolder post type * @uses buddydrive_get_file_post_type() to get BuddyFile post type * @uses bp_displayed_user_id() to default to current displayed user * @uses bp_current_action() to get the current action ( files / friends / admin) * @uses bp_is_active() to check if groups component is active * @uses buddydrive_is_group() are we on a group's BuddyDrive ? * @uses wp_parse_args() to merge defaults and args * @uses BuddyDrive_Item::get() to request the DB * @uses BuddyDrive_Item::have_posts to know if BuddyItems matched the query * @return the result of the query */ function buddydrive_has_items($args = '') { global $buddydrive_template; // This keeps us from firing the query more than once if (empty($buddydrive_template)) { $defaulttype = array(buddydrive_get_folder_post_type(), buddydrive_get_file_post_type()); $user = $group_id = $buddyscope = false; if (bp_displayed_user_id()) { $user = bp_displayed_user_id(); } $buddyscope = bp_current_action(); if ($buddyscope == buddydrive_get_friends_subnav_slug()) { $buddyscope = 'friends'; } if (is_admin()) { $buddyscope = 'admin'; } if (bp_is_active('groups') && buddydrive_is_group()) { $group = groups_get_current_group(); $group_id = $group->id; $buddyscope = 'groups'; } /*** * Set the defaults for the parameters you are accepting via the "buddydrive_has_items()" * function call */ $defaults = array('id' => false, 'name' => false, 'group_id' => $group_id, 'user_id' => $user, 'per_page' => 10, 'paged' => 1, 'type' => $defaulttype, 'buddydrive_scope' => $buddyscope, 'search' => false, 'buddydrive_parent' => 0, 'exclude' => 0, 'orderby' => 'title', 'order' => 'ASC'); $r = bp_parse_args($args, $defaults, 'buddydrive_has_items'); if ('admin' === $r['buddydrive_scope'] && !bp_current_user_can('bp_moderate')) { $r['buddydrive_scope'] = 'files'; } $buddydrive_template = new BuddyDrive_Item(); if (!empty($search)) { $buddydrive_template->get(array('per_page' => $r['per_page'], 'paged' => $r['paged'], 'type' => $r['type'], 'buddydrive_scope' => $r['buddydrive_scope'], 'search' => $r['search'], 'orderby' => $r['orderby'], 'order' => $r['order'])); } else { $buddydrive_template->get(array('id' => $r['id'], 'name' => $r['name'], 'group_id' => $r['group_id'], 'user_id' => $r['user_id'], 'per_page' => $r['per_page'], 'paged' => $r['paged'], 'type' => $r['type'], 'buddydrive_scope' => $r['buddydrive_scope'], 'buddydrive_parent' => $r['buddydrive_parent'], 'exclude' => $r['exclude'], 'orderby' => $r['orderby'], 'order' => $r['order'])); } do_action('buddydrive_has_items_catch_total_count', $buddydrive_template->query->found_posts); } return apply_filters('buddydrive_has_items', $buddydrive_template->have_posts()); }
/** * Hook this extension's group tab into BuddyPress, if necessary * * @since BuddyPress (1.8) */ protected function setup_display_hooks() { // Bail if not a group if (!bp_is_group()) { return; } // Bail if the current user doesn't have access if ('public' !== $this->visibility && !buddypress()->groups->current_group->user_has_access) { return; } if (true === $this->enable_nav_item) { bp_core_new_subnav_item(array('name' => !$this->nav_item_name ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => bp_get_current_group_slug(), 'parent_url' => bp_get_group_permalink(groups_get_current_group()), 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array(&$this, '_display_hook'), 'user_has_access' => $this->enable_nav_item)); // When we are viewing the extension display page, set the title and options title if (bp_is_current_action($this->slug)) { add_action('bp_template_content_header', create_function('', 'echo "' . esc_attr($this->name) . '";')); add_action('bp_template_title', create_function('', 'echo "' . esc_attr($this->name) . '";')); } } // Hook the group home widget if (!bp_current_action() && bp_is_current_action('home')) { add_action($this->display_hook, array(&$this, 'widget_display')); } }
/** * Constructor. * * @param array $args { * An array of optional arguments. * @type int $group_id ID of the group whose members are being * queried. Default: current group ID. * @type int $page Page of results to be queried. Default: 1. * @type int $per_page Number of items to return per page of * results. Default: 20. * @type int $max Optional. Max number of items to return. * @type array $exclude Optional. Array of user IDs to exclude. * @type bool|int True (or 1) to exclude admins and mods from * results. Default: 1. * @type bool|int True (or 1) to exclude banned users from results. * Default: 1. * @type array $group_role Optional. Array of group roles to include. * @type string $search_terms Optional. Search terms to match. * } */ function __construct($args = array()) { // Backward compatibility with old method of passing arguments if (!is_array($args) || func_num_args() > 1) { _deprecated_argument(__METHOD__, '2.0.0', sprintf(__('Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress'), __METHOD__, __FILE__)); $old_args_keys = array(0 => 'group_id', 1 => 'per_page', 2 => 'max', 3 => 'exclude_admins_mods', 4 => 'exclude_banned', 5 => 'exclude', 6 => 'group_role'); $func_args = func_get_args(); $args = bp_core_parse_args_array($old_args_keys, $func_args); } $r = wp_parse_args($args, array('group_id' => bp_get_current_group_id(), 'page' => 1, 'per_page' => 20, 'max' => false, 'exclude' => false, 'exclude_admins_mods' => 1, 'exclude_banned' => 1, 'group_role' => false, 'search_terms' => false, 'type' => 'last_joined')); // @todo No extract($r); $this->pag_page = isset($_REQUEST['mlpage']) ? intval($_REQUEST['mlpage']) : $r['page']; $this->pag_num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : $per_page; /** * Check the current group is the same as the supplied group ID. * It can differ when using {@link bp_group_has_members()} outside the Groups screens. */ $current_group = groups_get_current_group(); if (!$current_group || $current_group && $current_group->id !== bp_get_current_group_id()) { $current_group = groups_get_group(array('group_id' => $r['group_id'])); } // Assemble the base URL for pagination $base_url = trailingslashit(bp_get_group_permalink($current_group) . bp_current_action()); if (bp_action_variable()) { $base_url = trailingslashit($base_url . bp_action_variable()); } $members_args = $r; $members_args['page'] = $this->pag_page; $members_args['per_page'] = $this->pag_num; $this->members = groups_get_group_members($members_args); if (!$max || $max >= (int) $this->members['count']) { $this->total_member_count = (int) $this->members['count']; } else { $this->total_member_count = (int) $max; } $this->members = $this->members['members']; if ($max) { if ($max >= count($this->members)) { $this->member_count = count($this->members); } else { $this->member_count = (int) $max; } } else { $this->member_count = count($this->members); } $this->pag_links = paginate_links(array('base' => add_query_arg(array('mlpage' => '%#%'), $base_url), 'format' => '', 'total' => !empty($this->pag_num) ? ceil($this->total_member_count / $this->pag_num) : $this->total_member_count, 'current' => $this->pag_page, 'prev_text' => '←', 'next_text' => '→', 'mid_size' => 1)); }
function invite_anyone_group_invite_form_action() { $group_url = bp_get_group_permalink(groups_get_current_group()); echo trailingslashit($group_url) . trailingslashit(BP_INVITE_ANYONE_SLUG) . trailingslashit('send'); }
/** * * @param type $group_id * @param type $user_id * * @return boolean */ function can_user_create_album_in_group($group_id = false, $user_id = false) { if ($group_id == false) { $group = groups_get_current_group(); $group_id = $group->id; } $upload_level = groups_get_groupmeta($group_id, "rt_media_group_control_level"); if (empty($upload_level)) { $upload_level = groups_get_groupmeta($group_id, "bp_media_group_control_level"); if (empty($upload_level)) { $upload_level = "all"; } } $user_id = get_current_user_id(); $display_flag = false; if (groups_is_user_member($user_id, $group_id)) { if ($upload_level == "admin") { if (groups_is_user_admin($user_id, $group_id) > 0) { $display_flag = true; } } else { if ($upload_level == "moderators") { if (groups_is_user_mod($user_id, $group_id) || groups_is_user_admin($user_id, $group_id)) { $display_flag = true; } } else { $display_flag = true; } } } $display_flag = apply_filters('can_user_create_album_in_group', $display_flag); return $display_flag; }
/** * Outputs the tabs at the top of the Docs view (All Docs, New Doc, etc) * * At the moment, the group-specific stuff is hard coded in here. * @todo Get the group stuff out */ function bp_docs_tabs($show_create_button = true) { $current_view = ''; ?> <ul id="bp-docs-all-docs"> <li<?php if (bp_docs_is_global_directory()) { ?> class="current"<?php } ?> ><a href="<?php bp_docs_archive_link(); ?> "><?php _e('All Docs', 'bp-docs'); ?> </a></li> <?php if (is_user_logged_in()) { ?> <?php if (function_exists('bp_is_group') && bp_is_group()) { ?> <li<?php if (bp_is_current_action('docs')) { ?> class="current"<?php } ?> ><a href="<?php bp_group_permalink(groups_get_current_group()); bp_docs_slug(); ?> "><?php printf(__("%s's Docs", 'bp-docs'), bp_get_current_group_name()); ?> </a></li> <?php } else { ?> <li><a href="<?php bp_docs_mydocs_started_link(); ?> "><?php _e('Started By Me', 'bp-docs'); ?> </a></li> <li><a href="<?php bp_docs_mydocs_edited_link(); ?> "><?php _e('Edited By Me', 'bp-docs'); ?> </a></li> <?php if (bp_is_active('groups')) { ?> <li<?php if (bp_docs_is_mygroups_docs()) { ?> class="current"<?php } ?> ><a href="<?php bp_docs_mygroups_link(); ?> "><?php _e('My Groups', 'bp-docs'); ?> </a></li> <?php } ?> <?php } ?> <?php } ?> <?php if ($show_create_button) { ?> <?php bp_docs_create_button(); ?> <?php } ?> </ul> <?php }
/** * Returns the slug of the current group * * @package BuddyPress * @since 1.5 * @uses apply_filters() Filter bp_get_current_group_slug to modify this output * * @return str $current_group_slug The slug of the current group, if there is one */ function bp_get_current_group_slug() { $current_group = groups_get_current_group(); $current_group_slug = isset($current_group->slug) ? $current_group->slug : ''; return apply_filters('bp_get_current_group_slug', $current_group_slug, $current_group); }
/** * Add custom template hierarchy to theme compat for group pages. * * This is to mirror how WordPress has * {@link https://codex.wordpress.org/Template_Hierarchy template hierarchy}. * * @since BuddyPress (1.8.0) * * @param string $templates The templates from bp_get_theme_compat_templates(). * @return array $templates Array of custom templates to look for. */ public function single_template_hierarchy($templates) { // Setup some variables we're going to reference in our custom templates $group = groups_get_current_group(); // Setup our templates based on priority $new_templates = apply_filters('bp_template_hierarchy_groups_single_item', array('groups/single/index-id-' . sanitize_file_name(bp_get_current_group_id()) . '.php', 'groups/single/index-slug-' . sanitize_file_name(bp_get_current_group_slug()) . '.php', 'groups/single/index-action-' . sanitize_file_name(bp_current_action()) . '.php', 'groups/single/index-status-' . sanitize_file_name($group->status) . '.php', 'groups/single/index.php')); // Merge new templates with existing stack // @see bp_get_theme_compat_templates() $templates = array_merge((array) $new_templates, $templates); return $templates; }
/** * Get a URL for a group component action. * * @since 1.2.0 * * @param string $action * @param string $query_args * @param bool $nonce * @return string */ function bp_get_groups_action_link($action = '', $query_args = '', $nonce = false) { $current_group = groups_get_current_group(); $url = ''; // Must be a group. if (!empty($current_group->id)) { // Append $action to $url if provided if (!empty($action)) { $url = bp_get_group_permalink($current_group) . $action; } else { $url = bp_get_group_permalink($current_group); } // Add a slash at the end of our user url. $url = trailingslashit($url); // Add possible query args. if (!empty($query_args) && is_array($query_args)) { $url = add_query_arg($query_args, $url); } // To nonce, or not to nonce... if (true === $nonce) { $url = wp_nonce_url($url); } elseif (is_string($nonce)) { $url = wp_nonce_url($url, $nonce); } } /** * Filters a URL for a group component action. * * @since 2.1.0 * * @param string $url URL for a group component action. * @param string $action Action being taken for the group. * @param string $query_args Query arguments being passed. * @param bool $nonce Whether or not to add a nonce. */ return apply_filters('bp_get_groups_action_link', $url, $action, $query_args, $nonce); }
/** * Save method for our extension during edits. * * @param int $group_id The group ID. */ public function edit_screen_save($group_id = null) { if (!isset($_POST['save'])) { return false; } check_admin_referer('groups_edit_save_' . $this->slug); $existing_feeds = (array) groups_get_groupmeta(bp_get_current_group_id(), 'blogfeeds'); $unfiltered_feeds = explode(',', $_POST['blogfeeds']); $blog_feeds = array(); foreach ((array) $unfiltered_feeds as $blog_feed) { if (!empty($blog_feed)) { $blog_feeds[] = esc_url_raw(trim($blog_feed)); } } /* Loop and find any feeds that have been removed, so we can delete activity stream items */ if (!empty($existing_feeds)) { foreach ((array) $existing_feeds as $feed) { if (!in_array($feed, (array) $blog_feeds)) { $removed[] = $feed; } } } if ($removed) { foreach ((array) $removed as $feed) { $existing = bp_activity_get(array('user_id' => false, 'component' => 'groups', 'type' => 'exb', 'item_id' => bp_get_current_group_id(), 'update_meta_cache' => false, 'display_comments' => false, 'meta_query' => array(array('key' => 'exb_feedurl', 'value' => trim($feed))))); // only delete items matching the feed if (!empty($existing['activities'])) { $aids = wp_list_pluck($existing['activities'], 'id'); foreach ($aids as $aid) { bp_activity_delete(array('id' => $aid)); } // old way - delete all feed items matching the group } else { bp_activity_delete(array('item_id' => bp_get_current_group_id(), 'component' => 'groups', 'type' => 'exb')); } } } groups_update_groupmeta(bp_get_current_group_id(), 'fetchtime', $_POST['fetch-time']); groups_update_groupmeta(bp_get_current_group_id(), 'blogfeeds', $blog_feeds); groups_update_groupmeta(bp_get_current_group_id(), 'bp_groupblogs_lastupdate', gmdate("Y-m-d H:i:s")); /* Re-fetch */ bp_groupblogs_fetch_group_feeds(bp_get_current_group_id()); bp_core_add_message(__('External blog feeds updated successfully!', 'bp-groups-externalblogs')); bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . '/admin/' . $this->slug); }
function wds_metadesc() { if (is_admin()) { return false; } global $post, $wp_query; //global $wds_options; $wds_options = get_wds_options(); if (is_singular()) { if (function_exists('groups_get_current_group') && 'groups' == bp_current_component() && ($group = groups_get_current_group())) { // BP group? $optvar = !empty($wds_options['metadesc-bp_groups']) ? $wds_options['metadesc-bp_groups'] : ''; $metadesc = wds_replace_vars($optvar, array('name' => $group->name, 'description' => $group->description)); } else { if (function_exists('bp_current_component') && 'profile' == bp_current_component()) { $optvar = !empty($wds_options['metadesc-bp_profile']) ? $wds_options['metadesc-bp_profile'] : ''; $metadesc = wds_replace_vars($optvar, array('full_name' => bp_get_displayed_user_fullname(), 'username' => bp_get_displayed_user_username())); } else { $metadesc = wds_get_value('metadesc'); if (empty($metadesc)) { $optvar = !empty($wds_options['metadesc-' . $post->post_type]) ? $wds_options['metadesc-' . $post->post_type] : ''; $metadesc = wds_replace_vars($optvar, (array) $post); } } } } else { if (function_exists('is_shop') && is_shop() && function_exists('woocommerce_get_page_id')) { // WooCommerce shop page $post_id = woocommerce_get_page_id('shop'); $metadesc = wds_get_value('metadesc', $post_id); if (empty($metadesc)) { $optvar = !empty($wds_options['metadesc-' . $post->post_type]) ? $wds_options['metadesc-' . $post->post_type] : ''; $metadesc = wds_replace_vars($optvar, (array) $post); } } else { if (is_home() && 'posts' == get_option('show_on_front') && isset($wds_options['metadesc-home'])) { $metadesc = wds_replace_vars($wds_options['metadesc-home'], array()); } else { if (is_home() && 'posts' != get_option('show_on_front')) { $post = get_post(get_option('page_for_posts')); $metadesc = wds_get_value('metadesc'); if (($metadesc == '' || !$metadesc) && isset($wds_options['metadesc-' . $post->post_type])) { $metadesc = wds_replace_vars($wds_options['metadesc-' . $post->post_type], (array) $post); } } else { if (is_category() || is_tag() || is_tax()) { $term = $wp_query->get_queried_object(); $metadesc = wds_get_term_meta($term, $term->taxonomy, 'wds_desc'); if (!$metadesc && isset($wds_options['metadesc-' . $term->taxonomy])) { $metadesc = wds_replace_vars($wds_options['metadesc-' . $term->taxonomy], (array) $term); } } else { if (is_author()) { $author_id = get_query_var('author'); $metadesc = get_the_author_meta('wds_metadesc', $author_id); } else { if (function_exists('groups_get_current_group') && 'groups' == bp_current_component() && ($group = groups_get_current_group())) { // BP group? $optvar = !empty($wds_options['metadesc-bp_groups']) ? $wds_options['metadesc-bp_groups'] : ''; $metadesc = wds_replace_vars($optvar, array('name' => $group->name, 'description' => $group->description)); } else { if (function_exists('bp_current_component') && 'profile' == bp_current_component()) { $optvar = !empty($wds_options['metadesc-bp_profile']) ? $wds_options['metadesc-bp_profile'] : ''; $metadesc = wds_replace_vars($optvar, array('full_name' => bp_get_displayed_user_fullname(), 'username' => bp_get_displayed_user_username())); } } } } } } } } if (!empty($metadesc)) { echo "\t" . '<meta name="description" content="' . esc_attr(strip_tags(stripslashes(apply_filters('wds_metadesc', $metadesc)))) . '" />' . "\n"; } }
/** * Customize the body class, according to the currently displayed BP content. * * Uses the above is_() functions to output a body class for each scenario. * * @since 1.1.0 * * @param array $wp_classes The body classes coming from WP. * @param array|bool $custom_classes Classes that were passed to get_body_class(). * @return array $classes The BP-adjusted body classes. */ function bp_get_the_body_class($wp_classes = array(), $custom_classes = false) { $bp_classes = array(); /* Pages *************************************************************/ if (is_front_page()) { $bp_classes[] = 'home-page'; } if (bp_is_directory()) { $bp_classes[] = 'directory'; } if (bp_is_single_item()) { $bp_classes[] = 'single-item'; } /* Components ********************************************************/ if (!bp_is_blog_page()) { if (bp_is_user_profile()) { $bp_classes[] = 'xprofile'; } if (bp_is_activity_component()) { $bp_classes[] = 'activity'; } if (bp_is_blogs_component()) { $bp_classes[] = 'blogs'; } if (bp_is_messages_component()) { $bp_classes[] = 'messages'; } if (bp_is_friends_component()) { $bp_classes[] = 'friends'; } if (bp_is_groups_component()) { $bp_classes[] = 'groups'; } if (bp_is_settings_component()) { $bp_classes[] = 'settings'; } } /* User **************************************************************/ if (bp_is_user()) { $bp_classes[] = 'bp-user'; // Add current user member types. if ($member_types = bp_get_member_type(bp_displayed_user_id(), false)) { foreach ($member_types as $member_type) { $bp_classes[] = sprintf('member-type-%s', esc_attr($member_type)); } } } if (!bp_is_directory()) { if (bp_is_user_blogs()) { $bp_classes[] = 'my-blogs'; } if (bp_is_user_groups()) { $bp_classes[] = 'my-groups'; } if (bp_is_user_activity()) { $bp_classes[] = 'my-activity'; } } else { if (bp_get_current_member_type()) { $bp_classes[] = 'type'; } } if (bp_is_my_profile()) { $bp_classes[] = 'my-account'; } if (bp_is_user_profile()) { $bp_classes[] = 'my-profile'; } if (bp_is_user_friends()) { $bp_classes[] = 'my-friends'; } if (bp_is_user_messages()) { $bp_classes[] = 'my-messages'; } if (bp_is_user_recent_commments()) { $bp_classes[] = 'recent-comments'; } if (bp_is_user_recent_posts()) { $bp_classes[] = 'recent-posts'; } if (bp_is_user_change_avatar()) { $bp_classes[] = 'change-avatar'; } if (bp_is_user_profile_edit()) { $bp_classes[] = 'profile-edit'; } if (bp_is_user_friends_activity()) { $bp_classes[] = 'friends-activity'; } if (bp_is_user_groups_activity()) { $bp_classes[] = 'groups-activity'; } /* Messages **********************************************************/ if (bp_is_messages_inbox()) { $bp_classes[] = 'inbox'; } if (bp_is_messages_sentbox()) { $bp_classes[] = 'sentbox'; } if (bp_is_messages_compose_screen()) { $bp_classes[] = 'compose'; } if (bp_is_notices()) { $bp_classes[] = 'notices'; } if (bp_is_user_friend_requests()) { $bp_classes[] = 'friend-requests'; } if (bp_is_create_blog()) { $bp_classes[] = 'create-blog'; } /* Groups ************************************************************/ if (bp_is_group()) { $bp_classes[] = 'group-' . groups_get_current_group()->slug; // Add current group types. if ($group_types = bp_groups_get_group_type(bp_get_current_group_id(), false)) { foreach ($group_types as $group_type) { $bp_classes[] = sprintf('group-type-%s', esc_attr($group_type)); } } } if (bp_is_group_leave()) { $bp_classes[] = 'leave-group'; } if (bp_is_group_invites()) { $bp_classes[] = 'group-invites'; } if (bp_is_group_members()) { $bp_classes[] = 'group-members'; } if (bp_is_group_forum_topic()) { $bp_classes[] = 'group-forum-topic'; } if (bp_is_group_forum_topic_edit()) { $bp_classes[] = 'group-forum-topic-edit'; } if (bp_is_group_forum()) { $bp_classes[] = 'group-forum'; } if (bp_is_group_admin_page()) { $bp_classes[] = 'group-admin'; $bp_classes[] = bp_get_group_current_admin_tab(); } if (bp_is_group_create()) { $bp_classes[] = 'group-create'; $bp_classes[] = bp_get_groups_current_create_step(); } if (bp_is_group_home()) { $bp_classes[] = 'group-home'; } if (bp_is_single_activity()) { $bp_classes[] = 'activity-permalink'; } /* Registration ******************************************************/ if (bp_is_register_page()) { $bp_classes[] = 'registration'; } if (bp_is_activation_page()) { $bp_classes[] = 'activation'; } /* Current Component & Action ****************************************/ if (!bp_is_blog_page()) { $bp_classes[] = bp_current_component(); $bp_classes[] = bp_current_action(); } /* Clean up ***********************************************************/ // Add BuddyPress class if we are within a BuddyPress page. if (!bp_is_blog_page()) { $bp_classes[] = 'buddypress'; } // Merge WP classes with BuddyPress classes and remove any duplicates. $classes = array_unique(array_merge((array) $bp_classes, (array) $wp_classes)); /** * Filters the BuddyPress classes to be added to body_class() * * @since 1.1.0 * * @param array $classes Array of body classes to add. * @param array $bp_classes Array of BuddyPress-based classes. * @param array $wp_classes Array of WordPress-based classes. * @param array $custom_classes Array of classes that were passed to get_body_class(). */ return apply_filters('bp_get_the_body_class', $classes, $bp_classes, $wp_classes, $custom_classes); }