Skip to:
Content

BuddyPress.org

Changeset 13396


Ignore:
Timestamp:
01/07/2023 12:42:51 AM (4 years 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.