Skip to:
Content

BuddyPress.org

Changeset 8042


Ignore:
Timestamp:
03/05/2014 03:04:57 AM (12 years ago)
Author:
boonebgorges
Message:

Add 'include_blog_ids' param to bp_has_blogs() stack

The key 'include_blog_ids' was chosen because of the somewhat odd schema of
the blogs table: the primary key in that table is not the blog, but is for the
user-blog relationship. 'include_blog_ids' underscores that results will be
limited by the 'blog_id' table.

Location:
trunk/bp-blogs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-blogs/bp-blogs-classes.php

    r8020 r8042  
    117117     * @param bool $update_meta_cache Whether to pre-fetch metadata for
    118118     *        blogs. Default: true.
     119     * @param array $include_blog_ids Array of blog IDs to include.
    119120     * @return array Multidimensional results array, structured as follows:
    120121     *           'blogs' - Array of located blog objects
    121122     *           'total' - A count of the total blogs matching the filter params
    122123     */
    123     public static function get( $type, $limit = false, $page = false, $user_id = 0, $search_terms = false, $update_meta_cache = true ) {
     124    public static function get( $type, $limit = false, $page = false, $user_id = 0, $search_terms = false, $update_meta_cache = true, $include_blog_ids = false ) {
    124125        global $bp, $wpdb;
    125126
     
    148149        }
    149150
     151        $include_sql = '';
     152        $include_blog_ids = array_filter( wp_parse_id_list( $include_blog_ids ) );
     153        if ( ! empty( $include_blog_ids ) ) {
     154            $blog_ids_sql = implode( ',', $include_blog_ids );
     155            $include_sql  = " AND b.blog_id IN ({$blog_ids_sql})";
     156        }
     157
    150158        if ( !empty( $search_terms ) ) {
    151159            $filter = esc_sql( like_escape( $search_terms ) );
    152             $paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' AND bm2.meta_value LIKE '%%$filter%%' {$user_sql} GROUP BY b.blog_id {$order_sql} {$pag_sql}" );
    153             $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2 WHERE b.blog_id = wb.blog_id AND bm.blog_id = b.blog_id AND bm2.blog_id = b.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'name' AND bm2.meta_key = 'description' AND ( bm.meta_value LIKE '%%$filter%%' || bm2.meta_value LIKE '%%$filter%%' ) {$user_sql}" );
     160            $paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' AND bm2.meta_value LIKE '%%$filter%%' {$user_sql} {$include_sql} GROUP BY b.blog_id {$order_sql} {$pag_sql}" );
     161            $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2 WHERE b.blog_id = wb.blog_id AND bm.blog_id = b.blog_id AND bm2.blog_id = b.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'name' AND bm2.meta_key = 'description' AND ( bm.meta_value LIKE '%%$filter%%' || bm2.meta_value LIKE '%%$filter%%' ) {$user_sql} {$include_sql}" );
    154162        } else {
    155             $paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' GROUP BY b.blog_id {$order_sql} {$pag_sql}" );
    156             $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb WHERE b.blog_id = wb.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql}" );
     163            $paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' {$include_sql} GROUP BY b.blog_id {$order_sql} {$pag_sql}" );
     164            $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb WHERE b.blog_id = wb.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$include_sql} {$hidden_sql}" );
    157165        }
    158166
  • trunk/bp-blogs/bp-blogs-functions.php

    r7919 r8042  
    3535 *     @type string $type Default: 'active'.
    3636 *     @type int|bool $user_id Default: false.
     37 *     @type array $include_blog_ids Default: false.
    3738 *     @type string|bool $search_terms Default: false.
    3839 *     @type int $per_page Default: 20.
     
    4748        'type'              => 'active', // active, alphabetical, newest, or random
    4849        'user_id'           => false,    // Pass a user_id to limit to only blogs that this user has privilages higher than subscriber on
     50        'include_blog_ids'  => false,
    4951        'search_terms'      => false,    // Limit to blogs that match these search terms
    5052        'per_page'          => 20,       // The number of results to return per page
     
    5658    extract( $params, EXTR_SKIP );
    5759
    58     return apply_filters( 'bp_blogs_get_blogs', BP_Blogs_Blog::get( $type, $per_page, $page, $user_id, $search_terms, $update_meta_cache ), $params );
     60    return apply_filters( 'bp_blogs_get_blogs', BP_Blogs_Blog::get( $type, $per_page, $page, $user_id, $search_terms, $update_meta_cache, $include_blog_ids ), $params );
    5961}
    6062
  • trunk/bp-blogs/bp-blogs-template.php

    r7965 r8042  
    172172     * @param bool $update_meta_cache Whether to pre-fetch metadata for
    173173     *        queried blogs.
    174      */
    175     function __construct( $type, $page, $per_page, $max, $user_id, $search_terms, $page_arg = 'bpage', $update_meta_cache = true ) {
     174     * @param array $include_blog_ids Array of blog IDs to include.
     175     */
     176    function __construct( $type, $page, $per_page, $max, $user_id, $search_terms, $page_arg = 'bpage', $update_meta_cache = true, $include_blog_ids = false ) {
    176177
    177178        $this->pag_page = isset( $_REQUEST[$page_arg] ) ? intval( $_REQUEST[$page_arg] ) : $page;
     
    188189                'search_terms'      => $search_terms,
    189190                'update_meta_cache' => $update_meta_cache,
     191                'include_blog_ids'  => $include_blog_ids,
    190192            ) );
    191193        }
     
    336338 *           Default: false (unlimited).
    337339 *     @type string $type The order in which results should be fetched.
    338          'active', 'alphabetical', 'newest', or 'random'.
     340 *       'active', 'alphabetical', 'newest', or 'random'.
     341 *     @type array $include_blog_ids Array of blog IDs to limit results to.
    339342 *     @type string $sort 'ASC' or 'DESC'. Default: 'DESC'.
    340343 *     @type string $search_terms Limit results by a search term. Default: null.
     
    370373
    371374        'user_id'           => $user_id,       // Pass a user_id to limit to only blogs this user has higher than subscriber access to
     375        'include_blog_ids'  => false,
    372376        'search_terms'      => $search_terms,  // Pass search terms to filter on the blog title or description.
    373377        'update_meta_cache' => true,
     
    390394    }
    391395
    392     $blogs_template = new BP_Blogs_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $page_arg, $update_meta_cache );
     396    $blogs_template = new BP_Blogs_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $page_arg, $update_meta_cache, $include_blog_ids );
    393397    return apply_filters( 'bp_has_blogs', $blogs_template->has_blogs(), $blogs_template );
    394398}
Note: See TracChangeset for help on using the changeset viewer.