BP_Notifications_Notification::get_meta_query_sql( array $meta_query = array() )

Get the SQL for the ‘meta_query’ param in BP_Notifications_Notification::get().

Description

We use WP_Meta_Query to do the heavy lifting of parsing the meta_query array and creating the necessary SQL clauses. However, since BP_Notifications_Notification::get() builds its SQL differently than WP_Query, we have to alter the return value (stripping the leading AND keyword from the ‘where’ clause).

Parameters

$meta_query

(Optional) An array of meta_query filters. See the documentation for WP_Meta_Query for details.

Default value: array()

Return

(array) $sql_array 'join' and 'where' clauses.

Source

File: bp-notifications/classes/class-bp-notifications-notification.php

788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
public static function get_meta_query_sql( $meta_query = array() ) {
 
    // Default array keys & empty values.
    $sql_array = array(
        'join'  => '',
        'where' => '',
    );
 
    // Bail if no meta query.
    if ( empty( $meta_query ) ) {
        return $sql_array;
    }
 
    // WP_Meta_Query expects the table name at $wpdb->notificationmeta.
    $GLOBALS['wpdb']->notificationmeta = buddypress()->notifications->table_name_meta;
 
    $n_meta_query = new WP_Meta_Query( $meta_query );
    $meta_sql     = $n_meta_query->get_sql( 'notification', 'n', 'id' );
 
    // Strip the leading AND - it's handled in get().
    $sql_array['where'] = preg_replace( '/^\sAND/', '', $meta_sql['where'] );
    $sql_array['join']  = $meta_sql['join'];
 
    return $sql_array;
}

Changelog

Changelog
Version Description
BuddyPress 2.3.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.