Making WordPress.org

Changeset 9221


Ignore:
Timestamp:
10/22/2019 04:41:16 AM (4 years ago)
Author:
dd32
Message:

Slack: Allow the /here command to respect the users Slack avatar and display_name. Especially useful where real names are set in Slack and their WordPress.org username isn't obviously the same.

See #4747.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/common/includes/slack/announce/lib.php

    r9217 r9221  
    6363    $channel = $data['channel_name'];
    6464    $user = false;
     65    $slack_profiledata = false;
    6566
    6667    // Find the user_login for the Slack user_id
    6768    if ( isset( $data['user_id'] ) ) {
    68         $user = $wpdb->get_var( $wpdb->prepare(
    69             "SELECT user_login
     69        $db_row = $wpdb->get_row( $wpdb->prepare(
     70            "SELECT user_login, profiledata
    7071            FROM slack_users
    7172                JOIN {$wpdb->users} ON slack_users.user_id = {$wpdb->users}.id
     
    7374            $data['user_id']
    7475        ) );
     76
     77        $user = $db_row->user_login ?? false;
     78        $slack_profiledata = json_decode( ($db_row->profiledata ?? '{}'), true );
    7579    }
     80
    7681    // Default back to the historical 'user_name' Slack field.
    7782    if ( ! $user ) {
     
    97102    }
    98103
     104    // Use their Slack Display name, falling back to their WordPress.org login if that's not available.
     105    $display_name = $user;
     106    if ( ! empty( $slack_profiledata['display_name'] ) ) {
     107        $display_name = $slack_profiledata['display_name'];
     108    }
     109
     110    $avatar = false;
     111    // Respect the avatar set in Slack, and prefer it over their Gravatar.
     112    if ( ! empty( $slack_profiledata['image_192'] ) ) {
     113        $avatar = $slack_profiledata['image_192'];
     114    }
     115    $get_avatar = __NAMESPACE__ . '\\' . 'get_avatar';
     116    if ( ! $avatar && function_exists( $get_avatar ) ) {
     117        $avatar = call_user_func( $get_avatar, $data['user_name'], $data['user_id'], $data['team_id'] );
     118    }
     119
    99120    $text = sprintf( "<!%s> %s", $command, $data['text'] );
    100121
    101122    $send = new Send( \Dotorg\Slack\Send\WEBHOOK );
    102     $send->set_username( $user );
     123    $send->set_username( $display_name );
    103124    $send->set_text( $text );
    104 
    105     $get_avatar = __NAMESPACE__ . '\\' . 'get_avatar';
    106     if ( function_exists( $get_avatar ) ) {
    107         $send->set_icon( call_user_func( $get_avatar, $data['user_name'], $data['user_id'], $data['team_id'] ) );
     125    if ( $avatar ) {
     126        $send->set_icon( $avatar );
    108127    }
    109128
Note: See TracChangeset for help on using the changeset viewer.