" . __( "View people's profiles when you mouse over their Gravatars", 'jetpack' ) . "";
?>
>ID, 64 ); ?>
element of the avatar.
* @param mixed $author User ID, email address, user login, comment object, user object, post object
*
* @return string The
element of the avatar.
*/
function grofiles_get_avatar( $avatar, $author ) {
$is_amp = class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request();
if ( is_numeric( $author ) ) {
grofiles_gravatars_to_append( $author );
} else if ( is_string( $author ) ) {
if ( false !== strpos( $author, '@' ) ) {
grofiles_gravatars_to_append( $author );
} else {
if ( $user = get_user_by( 'slug', $author ) )
grofiles_gravatars_to_append( $user->ID );
}
} else if ( isset( $author->comment_type ) ) {
if ( $is_amp ) {
if ( 1 === preg_match( '/avatar\/([a-zA-Z0-9]+)\?/', $avatar, $email_hash ) ) {
$email_hash = $email_hash[1];
$cache_group = 'gravatar_profiles_';
$cache_key = 'gravatar_profile_' . $email_hash;
$response_body = wp_cache_get( $cache_key, $cache_group );
if ( false === $response_body ) {
$response = wp_remote_get( esc_url_raw( 'https://en.gravatar.com/' . $email_hash . '.json' ) );
if ( is_array( $response ) && ! is_wp_error( $response ) ) {
$response_body = json_decode( $response['body'] );
wp_cache_set( $cache_key, $response_body, $cache_group, 60 * MINUTE_IN_SECONDS );
}
}
$profile = $response_body->entry[0];
$display_name = $profile->displayName; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$location = isset( $profile->currentLocation ) ? $profile->currentLocation : ''; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$description = isset( $profile->aboutMe ) ? $profile->aboutMe : ''; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$avatar = '
' . $avatar . '
' . esc_html( $display_name ) . ( ! empty( $location ) ? ' – ' . esc_html( $location ) : '' ) . ( ! empty( $description ) ? ' – ' . esc_html( $description ) : '' ) . '
';
}
return $avatar;
}
if ( '' != $author->comment_type && 'comment' != $author->comment_type )
return $avatar;
if ( $author->user_id )
grofiles_gravatars_to_append( $author->user_id );
else
grofiles_gravatars_to_append( $author->comment_author_email );
} else if ( isset( $author->user_login ) ) {
grofiles_gravatars_to_append( $author->ID );
} else if ( isset( $author->post_author ) ) {
grofiles_gravatars_to_append( $author->post_author );
}
return $avatar;
}
/**
* Loads Gravatar Hovercard script.
*
* @todo is_singular() only?
*/
function grofiles_attach_cards() {
global $blog_id;
// Is the display of Avatars disabled?
if ( ! get_option( 'show_avatars' ) ) {
return;
}
// Is the display of Gravatar Hovercards disabled?
if ( 'disabled' == Jetpack_Options::get_option_and_ensure_autoload( 'gravatar_disable_hovercards', '0' ) ) {
return;
}
if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
wp_enqueue_style( 'gravatar-hovercard-style', plugins_url( '/gravatar/gravatar-hovercards-amp.css', __FILE__ ), array(), JETPACK__VERSION );
} else {
wp_enqueue_script( 'grofiles-cards', 'https://secure.gravatar.com/js/gprofiles.js', array(), GROFILES__CACHE_BUSTER, true );
wp_enqueue_script( 'wpgroho', plugins_url( 'wpgroho.js', __FILE__ ), array( 'grofiles-cards' ), JETPACK__VERSION, true );
if ( is_user_logged_in() ) {
$cu = wp_get_current_user();
$my_hash = md5( $cu->user_email );
} elseif ( ! empty( $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] ) ) {
$my_hash = md5( $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] );
} else {
$my_hash = '';
}
wp_localize_script( 'wpgroho', 'WPGroHo', compact( 'my_hash' ) );
}
}
function grofiles_attach_cards_forced() {
add_filter( 'pre_option_gravatar_disable_hovercards', 'grofiles_force_gravatar_enable_hovercards' );
grofiles_attach_cards();
}
function grofiles_force_gravatar_enable_hovercards() {
return 'enabled';
}
function grofiles_admin_cards_forced() {
add_action( 'admin_footer', 'grofiles_attach_cards_forced' );
}
function grofiles_admin_cards() {
add_action( 'admin_footer', 'grofiles_attach_cards' );
}
function grofiles_extra_data() {
$authors = grofiles_gravatars_to_append();
if ( ! $authors ) {
wp_dequeue_script( 'grofiles-cards' );
wp_dequeue_script( 'wpgroho' );
} else {
?>
user_email );
}
} elseif ( is_email( $author ) ) {
$hash = md5( $author );
} elseif ( is_a( $author, 'WP_User' ) ) {
$hash = md5( $author->user_email );
}
if ( ! $hash ) {
return;
}
?>
$value ) : ?>
data_callback, ... )
*/
function grofiles_hovercards_data_callbacks() {
/**
* Filter the Gravatar Hovercard PHP callbacks.
*
* @module gravatar-hovercards
*
* @since 1.1.0
*
* @param array $args Array of data callbacks.
*/
return apply_filters( 'grofiles_hovercards_data_callbacks', array() );
}
/**
* Keyed JSON object containing all profile data provided by registered callbacks
*
* @param int|strung $author User ID or email address
*
* @return array( data_key => data, ... )
*/
function grofiles_hovercards_data( $author ) {
$r = array();
foreach ( grofiles_hovercards_data_callbacks() as $key => $callback ) {
if ( !is_callable( $callback ) )
continue;
$data = call_user_func( $callback, $author, $key );
if ( !is_null( $data ) )
$r[$key] = $data;
}
return $r;
}