OS : Linux
PHP Version : 7.4.33
Software : Apache/2.4.6 (CentOS) PHP/7.4.33 Widgets
*/
add_action( 'widgets_init', 'jetpack_gravatar_profile_widget_init' );
function jetpack_gravatar_profile_widget_init() {
register_widget( 'Jetpack_Gravatar_Profile_Widget' );
}
/**
* Display a widgetized version of your Gravatar Profile
* https://blog.gravatar.com/2010/03/26/gravatar-profiles/
*/
class Jetpack_Gravatar_Profile_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'grofile',
/** This filter is documented in modules/widgets/facebook-likebox.php */
apply_filters( 'jetpack_widget_name', __( 'Gravatar Profile', 'jetpack' ) ),
array(
'classname' => 'widget-grofile grofile',
'description' => __( 'Display a mini version of your Gravatar Profile', 'jetpack' ),
'customize_selective_refresh' => true,
)
);
if ( is_admin() ) {
add_action( 'admin_footer-widgets.php', array( $this, 'admin_script' ) );
}
if ( is_customize_preview() ) {
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
}
}
function widget( $args, $instance ) {
/**
* Fires when an item is displayed on the front end.
*
* Can be used to track stats about the number of displays for a specific item
*
* @module widgets, shortcodes
*
* @since 1.6.0
*
* @param string widget_view Item type (e.g. widget, or embed).
* @param string grofile Item description (e.g. grofile, goodreads).
*/
do_action( 'jetpack_stats_extra', 'widget_view', 'grofile' );
$instance = wp_parse_args(
$instance, array(
'title' => '',
'email' => '',
)
);
/** This filter is documented in core/src/wp-includes/default-widgets.php */
$title = apply_filters( 'widget_title', $instance['title'] );
if ( ! $instance['email'] ) {
if ( current_user_can( 'edit_theme_options' ) ) {
echo $args['before_widget'];
if ( ! empty( $title ) ) {
echo $args['before_title'] . $title . $args['after_title'];
}
echo ' ' . sprintf( __( 'You need to select what to show in this Gravatar Profile widget.', 'jetpack' ), admin_url( 'widgets.php' ) ) . '
display_personal_links( (array) $profile['urls'] );
}
if ( $instance['show_account_links'] ) {
$this->display_accounts( (array) $profile['accounts'] );
}
?>
' . esc_html__( 'Error loading profile', 'jetpack' ) . '
0 ) { $user = get_userdata( $instance['email_user'] ); $instance['email'] = $user->user_email; } $hashed_email = md5( strtolower( trim( $instance['email'] ) ) ); $cache_key = 'grofile-' . $hashed_email; delete_transient( $cache_key ); return $instance; } private function get_profile( $email ) { $hashed_email = md5( strtolower( trim( $email ) ) ); $cache_key = 'grofile-' . $hashed_email; if ( ! $profile = get_transient( $cache_key ) ) { $profile_url = sprintf( 'https://secure.gravatar.com/%s.json', $hashed_email ); $expire = 300; $response = wp_remote_get( esc_url_raw( $profile_url ), array( 'User-Agent' => 'WordPress.com Gravatar Profile Widget' ) ); $response_code = wp_remote_retrieve_response_code( $response ); if ( 200 == $response_code ) { $profile = wp_remote_retrieve_body( $response ); $profile = json_decode( $profile, true ); if ( is_array( $profile ) && ! empty( $profile['entry'] ) && is_array( $profile['entry'] ) ) { $expire = 900; // cache for 15 minutes $profile = $profile['entry'][0]; } else { // Something strange happened. Cache for 5 minutes. $profile = array(); } } else { $expire = 900; // cache for 15 minutes $profile = array(); } set_transient( $cache_key, $profile, $expire ); } return $profile; } private function get_sanitized_service_name( $shortname ) { // Some services have stylized or mixed cap names *cough* WP *cough* switch ( $shortname ) { case 'friendfeed': return 'FriendFeed'; case 'linkedin': return 'LinkedIn'; case 'yahoo': return 'Yahoo!'; case 'youtube': return 'YouTube'; // phpcs:ignore WordPress.WP.CapitalPDangit case 'wordpress': return 'WordPress'; case 'tripit': return 'TripIt'; case 'myspace': return 'MySpace'; case 'foursquare': return 'foursquare'; case 'google': return 'Google+'; default: // Others don't $shortname = ucwords( $shortname ); } return $shortname; } } // END