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 * http://blog.gravatar.com/2010/03/26/gravatar-profiles/ */ class Jetpack_Gravatar_Profile_Widget extends WP_Widget { function __construct() { parent::__construct( 'grofile', apply_filters( 'jetpack_widget_name', __( 'Gravatar Profile', 'jetpack' ) ), array( 'classname' => 'widget-grofile grofile', 'description' => __( 'Display a mini version of your Gravatar Profile', 'jetpack' ) ) ); if ( is_admin() ) { add_action( 'admin_footer-widgets.php', array( $this, 'admin_script' ) ); } } function widget( $args, $instance ) { $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' ) ) . '
'; echo $args['after_widget']; } return; } echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; $profile = $this->get_profile( $instance['email'] ); if( ! empty( $profile ) ) { $profile = wp_parse_args( $profile, array( 'thumbnailUrl' => '', 'profileUrl' => '', 'displayName' => '', 'aboutMe' => '', 'urls' => array(), 'accounts' => array(), ) ); $gravatar_url = add_query_arg( 's', 200, $profile['thumbnailUrl'] ); // the default grav returned by grofiles is super small wp_enqueue_style( 'gravatar-profile-widget', plugins_url( 'gravatar-profile.css', __FILE__ ), array(), '20120711' ); wp_enqueue_style( 'gravatar-card-services', is_ssl() ? 'https://secure.gravatar.com/css/services.css' : 'http://s.gravatar.com/css/services.css', array(), defined( 'GROFILES__CACHE_BUSTER' ) ? GROFILES__CACHE_BUSTER : gmdate( 'YW' ) ); ?>
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 = esc_url_raw( sprintf( '%s.gravatar.com/%s.php', ( is_ssl() ? 'https://secure' : 'http://www' ), $hashed_email ), array( 'http', 'https' ) ); $expire = 300; $response = wp_remote_get( $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 = unserialize( $profile ); if ( is_array( $profile ) && ! empty( $profile['entry'] ) && is_array( $profile['entry'] ) ) { $expire = 900; // cache for 15 minutes $profile = $profile['entry'][0]; } else { // Something strange happend. 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'; 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