Skip to:
Content

BuddyPress.org

Changeset 9613


Ignore:
Timestamp:
03/11/2015 04:26:05 PM (11 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.