Skip to:
Content

BuddyPress.org

Changeset 9613


Ignore:
Timestamp:
03/11/2015 04:26:05 PM (10 years ago)
Author:
johnjamesjacoby
Message:

Notifications: incorporate meta query logic into get_total_count() method. See #6257.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-notifications/classes/class-bp-notifications-notification.php

    r9574 r9613  
    570570
    571571        return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->core->table_name_notifications} WHERE id = %d AND user_id = %d", $notification_id, $user_id ) );
     572    }
     573
     574    /**
     575     * Parse notifications query arguments
     576     *
     577     * @since BuddyPress 2.3.0
     578     *
     579     * @param  mixed $args
     580     * @return array
     581     */
     582    public static function parse_args( $args = '' ) {
     583        return wp_parse_args( $args, array(
     584            'id'                => false,
     585            'user_id'           => false,
     586            'item_id'           => false,
     587            'secondary_item_id' => false,
     588            'component_name'    => bp_notifications_get_registered_components(),
     589            'component_action'  => false,
     590            'is_new'            => true,
     591            'search_terms'      => '',
     592            'order_by'          => false,
     593            'sort_order'        => false,
     594            'page'              => false,
     595            'per_page'          => false,
     596            'meta_query'        => false,
     597            'date_query'        => false,
     598            'update_meta_cache' => true
     599        ) );
    572600    }
    573601
     
    613641
    614642        // Parse the arguments
    615         $r = wp_parse_args( $args, array(
    616             'id'                => false,
    617             'user_id'           => false,
    618             'item_id'           => false,
    619             'secondary_item_id' => false,
    620             'component_name'    => bp_notifications_get_registered_components(),
    621             'component_action'  => false,
    622             'is_new'            => true,
    623             'search_terms'      => '',
    624             'order_by'          => false,
    625             'sort_order'        => false,
    626             'page'              => false,
    627             'per_page'          => false,
    628             'meta_query'        => false,
    629             'date_query'        => false,
    630             'update_meta_cache' => true,
    631             'count_total'       => false,
    632         ) );
     643        $r = self::parse_args( $args );
    633644
    634645        // Get BuddyPress
     
    669680        $pag_sql    = self::get_paged_sql( array(
    670681            'page'     => $r['page'],
    671             'per_page' => $r['per_page'],
     682            'per_page' => $r['per_page']
    672683        ) );
    673684
     
    692703        global $wpdb;
    693704
    694         /**
    695          * Default component_name to active_components
    696          *
    697          * @see http://buddypress.trac.wordpress.org/ticket/5300
    698          */
    699         $args = wp_parse_args( $args, array(
    700             'component_name' => bp_notifications_get_registered_components()
    701         ) );
     705        // Parse the arguments
     706        $r = self::parse_args( $args );
    702707
    703708        // Load BuddyPress
    704709        $bp = buddypress();
    705710
    706         // Build the query
     711        // METADATA
     712        $meta_query_sql = self::get_meta_query_sql( $r['meta_query'] );
     713
     714        // SELECT
    707715        $select_sql = "SELECT COUNT(*)";
    708         $from_sql   = "FROM {$bp->notifications->table_name}";
    709         $where_sql  = self::get_where_sql( $args );
    710         $sql        = "{$select_sql} {$from_sql} {$where_sql}";
     716
     717        // FROM
     718        $from_sql   = "FROM {$bp->notifications->table_name} n ";
     719
     720        // JOIN
     721        $join_sql   = $meta_query_sql['join'];
     722
     723        // WHERE
     724        $where_sql  = self::get_where_sql( array(
     725            'id'                => $r['id'],
     726            'user_id'           => $r['user_id'],
     727            'item_id'           => $r['item_id'],
     728            'secondary_item_id' => $r['secondary_item_id'],
     729            'component_name'    => $r['component_name'],
     730            'component_action'  => $r['component_action'],
     731            'is_new'            => $r['is_new'],
     732            'search_terms'      => $r['search_terms'],
     733            'date_query'        => $r['date_query']
     734        ), $select_sql, $from_sql, $join_sql, $meta_query_sql );
     735
     736        // Concatenate query parts
     737        $sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql}";
    711738
    712739        // Return the queried results
Note: See TracChangeset for help on using the changeset viewer.