Making WordPress.org

Changeset 12980


Ignore:
Timestamp:
11/27/2023 12:27:16 AM (3 years ago)
Author:
dufresnesteven
Message:

Remembers: Update handler to return name and sort by date of passing.

See: https://meta.trac.wordpress.org/ticket/7175

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/mu-plugins/pub/wporg-memorial-profiles.php

    r12974 r12980  
    1212        global $wpdb;
    1313
    14         $results = $wpdb->get_results( 'SELECT user_id FROM bpmain_bp_xprofile_data WHERE field_id = "476" AND value = "Yes"', ARRAY_A );
     14        $date_of_passing_field_id = 483;
     15        $memorial_name_field_id   = 484;
    1516
    16         $user_ids = wp_list_pluck( $results, 'user_id' );
     17        $query = $wpdb->prepare(
     18                '
     19                SELECT field_id, value, user_id
     20                FROM `bpmain_bp_xprofile_data`
     21                WHERE field_id IN ( %d, %d )
     22                AND user_id IN (
     23                        SELECT user_id
     24                        FROM bpmain_bp_xprofile_data
     25                        WHERE field_id = 476 AND value = "Yes"
     26                )
     27                ORDER BY user_id
     28                ',
     29                $date_of_passing_field_id,
     30                $memorial_name_field_id
     31        );
    1732
    18         // Grabs user display_name and user_nicename for profile link.
    19         return get_users(
     33        // Execute the prepared statement
     34        $profile_data = $wpdb->get_results( $query, ARRAY_A );
     35
     36        $user_ids = wp_list_pluck( $profile_data, 'user_id' );
     37
     38        // Grabs user display_name, user_nicename, ID for profile link.
     39        $users = get_users(
    2040                array(
    2141                        'blog_id' => 0,
    2242                        'include' => $user_ids,
    2343                        'fields'  => array(
    24                                 'display_name',
     44                                'ID',
    2545                                'user_nicename',
    2646                        ),
    2747                )
    2848        );
     49
     50        // Add meta each user in the result
     51        foreach ( $users as &$user ) {
     52                foreach ( $profile_data as $profile ) {
     53                        if ( $profile['user_id'] === $user->ID ) {
     54
     55                                if ( $date_of_passing_field_id === (int) $profile['field_id'] ) {
     56                                        $user->date_passing = $profile['value'];
     57                                }
     58
     59                                if ( $memorial_name_field_id === (int) $profile['field_id'] ) {
     60                                        $user->display_name = $profile['value'];
     61                                }
     62                        }
     63                }
     64        }
     65
     66        // Sort based on date of passing
     67        usort(
     68                $users,
     69                function ( $a, $b ) {
     70                        $timestampA = strtotime( $a->date_passing );
     71                        $timestampB = strtotime( $b->date_passing );
     72
     73                        if ( $timestampA === $timestampB ) {
     74                                return 0;
     75                        }
     76
     77                        // Use the less than operator for ascending order, or greater than for descending order
     78                        return ( $timestampA < $timestampB ) ? -1 : 1;
     79                }
     80        );
     81
     82        return $users;
    2983}
Note: See TracChangeset for help on using the changeset viewer.