Skip to:
Content

BuddyPress.org

Changeset 13396


Ignore:
Timestamp:
01/07/2023 12:42:51 AM (11 months ago)
Author:
espellcaste
Message:

Activity: adding test to confirm BP_Activity_Activity::get returns the proper data when using the meta_query argument.

See #8556

Location:
trunk
Files:
2 edited

Legend:

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

    r13372 r13396  
    10501050     * @since 1.8.0
    10511051     *
     1052     * @global wpdb $wpdb WordPress database object.
     1053     *
    10521054     * @param array $meta_query An array of meta_query filters. See the
    10531055     *                          documentation for WP_Meta_Query for details.
     
    10571059        global $wpdb;
    10581060
     1061        // Default array keys & empty values.
    10591062        $sql_array = array(
    10601063            'join'  => '',
     
    10621065        );
    10631066
    1064         if ( ! empty( $meta_query ) ) {
    1065             $activity_meta_query = new WP_Meta_Query( $meta_query );
    1066 
    1067             // WP_Meta_Query expects the table name at
    1068             // $wpdb->activitymeta.
    1069             $wpdb->activitymeta = buddypress()->activity->table_name_meta;
    1070 
    1071             $meta_sql = $activity_meta_query->get_sql( 'activity', 'a', 'id' );
    1072 
    1073             // Strip the leading AND - BP handles it in get().
    1074             $sql_array['where'] = preg_replace( '/^\sAND/', '', $meta_sql['where'] );
    1075             $sql_array['join']  = $meta_sql['join'];
    1076         }
     1067        // Bail if no meta query.
     1068        if ( empty( $meta_query ) ) {
     1069            return $sql_array;
     1070        }
     1071
     1072        $bp                  = buddypress();
     1073        $activity_meta_query = new WP_Meta_Query( $meta_query );
     1074
     1075        // WP_Meta_Query expects the table name at $wpdb->activitymeta.
     1076        $wpdb->activitymeta = $bp->activity->table_name_meta;
     1077
     1078        $meta_sql = $activity_meta_query->get_sql( 'activity', 'a', 'id' );
     1079
     1080        // Strip the leading AND - BP handles it in get().
     1081        $sql_array['where'] = preg_replace( '/^\sAND/', '', $meta_sql['where'] );
     1082        $sql_array['join']  = $meta_sql['join'];
    10771083
    10781084        return $sql_array;
  • trunk/tests/phpunit/testcases/activity/class.BP_Activity_Activity.php

    r13337 r13396  
    9595        $a1 = self::factory()->activity->create();
    9696        $a2 = self::factory()->activity->create();
     97
    9798        bp_activity_update_meta( $a1, 'foo', 'bar' );
    9899
    99         $activity = BP_Activity_Activity::get( array(
    100             'meta_query' => array(
    101                 array(
    102                     'key' => 'foo',
    103                     'value' => 'bar',
    104                 ),
    105             ),
    106         ) );
    107         $ids = wp_list_pluck( $activity['activities'], 'id' );
    108         $this->assertEquals( $ids, array( $a1 ) );
     100        $activity = BP_Activity_Activity::get(
     101            [
     102                'meta_query' => [
     103                    [
     104                        'key'     => 'foo',
     105                        'compare' => 'EXISTS',
     106                    ],
     107                ],
     108            ]
     109        );
     110
     111        $this->assertEquals( [ $a1 ], wp_list_pluck( $activity['activities'], 'id' ) );
     112
     113        $activity = BP_Activity_Activity::get(
     114            [
     115                'meta_query' => [
     116                    [
     117                        'key'     => 'foo',
     118                        'compare' => 'NOT EXISTS',
     119                    ],
     120                ],
     121            ]
     122        );
     123
     124        $this->assertEquals( [ $a2 ], wp_list_pluck( $activity['activities'], 'id' ) );
    109125    }
    110126
Note: See TracChangeset for help on using the changeset viewer.