Add upstream
This commit is contained in:
		
							
								
								
									
										163
									
								
								wp-content/plugins/jetpack/modules/shortcodes/gravatar.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								wp-content/plugins/jetpack/modules/shortcodes/gravatar.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,163 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Gravatar shortcode for avatar and profile. | ||||
|  * | ||||
|  * Usage: | ||||
|  * | ||||
|  * [gravatar email="user@example.org" size="48"] | ||||
|  * [gravatar_profile who="user@example.org"] | ||||
|  * | ||||
|  * @package Jetpack | ||||
|  */ | ||||
|  | ||||
| add_shortcode( 'gravatar', 'jetpack_gravatar_shortcode' ); | ||||
| add_shortcode( 'gravatar_profile', 'jetpack_gravatar_profile_shortcode' ); | ||||
|  | ||||
| /** | ||||
|  * Get gravatar using the email provided at the specified size. | ||||
|  * | ||||
|  * @since 4.5.0 | ||||
|  * | ||||
|  * @param array $atts Shortcode attributes. | ||||
|  * | ||||
|  * @return bool|string | ||||
|  */ | ||||
| function jetpack_gravatar_shortcode( $atts ) { | ||||
| 	$atts = shortcode_atts( | ||||
| 		array( | ||||
| 			'email' => '', | ||||
| 			'size'  => 96, | ||||
| 		), | ||||
| 		$atts | ||||
| 	); | ||||
|  | ||||
| 	if ( empty( $atts['email'] ) || ! is_email( $atts['email'] ) ) { | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	$atts['size'] = intval( $atts['size'] ); | ||||
| 	if ( 0 > $atts['size'] ) { | ||||
| 		$atts['size'] = 96; | ||||
| 	} | ||||
|  | ||||
| 	return get_avatar( $atts['email'], $atts['size'] ); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Display Gravatar profile | ||||
|  * | ||||
|  * @since 4.5.0 | ||||
|  * | ||||
|  * @param array $atts Shortcode attributes. | ||||
|  * | ||||
|  * @uses shortcode_atts() | ||||
|  * @uses get_user_by() | ||||
|  * @uses is_email() | ||||
|  * @uses sanitize_email() | ||||
|  * @uses sanitize_user() | ||||
|  * @uses set_url_scheme() | ||||
|  * @uses wpcom_get_avatar_url() | ||||
|  * @uses get_user_attribute() | ||||
|  * @uses esc_url() | ||||
|  * @uses esc_html() | ||||
|  * @uses _e() | ||||
|  * | ||||
|  * @return string | ||||
|  */ | ||||
| function jetpack_gravatar_profile_shortcode( $atts ) { | ||||
| 	// Give each use of the shortcode a unique ID. | ||||
| 	static $instance = 0; | ||||
|  | ||||
| 	// Process passed attributes. | ||||
| 	$atts = shortcode_atts( | ||||
| 		array( | ||||
| 			'who' => null, | ||||
| 		), | ||||
| 		$atts, | ||||
| 		'jetpack_gravatar_profile' | ||||
| 	); | ||||
|  | ||||
| 	// Can specify username, user ID, or email address. | ||||
| 	if ( is_numeric( $atts['who'] ) ) { | ||||
| 		$user = get_user_by( 'id', (int) $atts['who'] ); | ||||
| 	} elseif ( is_email( $atts['who'] ) ) { | ||||
| 		$user = get_user_by( 'email', sanitize_email( $atts['who'] ) ); | ||||
| 	} elseif ( is_string( $atts['who'] ) ) { | ||||
| 		$user = get_user_by( 'login', sanitize_user( $atts['who'] ) ); | ||||
| 	} else { | ||||
| 		$user = false; | ||||
| 	} | ||||
|  | ||||
| 	// Bail if we don't have a user. | ||||
| 	if ( false === $user ) { | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	// Render the shortcode. | ||||
| 	$gravatar_url = set_url_scheme( 'http://gravatar.com/' . $user->user_login ); | ||||
|  | ||||
| 	if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { | ||||
| 		$avatar_url    = wpcom_get_avatar_url( $user->ID, 96 ); | ||||
| 		$avatar_url    = $avatar_url[0]; | ||||
| 		$user_location = get_user_attribute( $user->ID, 'location' ); | ||||
| 	} else { | ||||
| 		$avatar_url    = get_avatar_url( $user->user_email, array( 'size' => 96 ) ); | ||||
| 		$user_location = get_user_meta( $user->ID, 'location', true ); | ||||
| 	} | ||||
|  | ||||
| 	ob_start(); | ||||
|  | ||||
| 	?> | ||||
| 	<script type="text/javascript"> | ||||
| 		( function() { | ||||
| 			if ( null === document.getElementById( 'gravatar-profile-embed-styles' ) ) { | ||||
| 				var headID = document.getElementsByTagName( 'head' )[0]; | ||||
| 				var styleNode = document.createElement( 'style' ); | ||||
| 				styleNode.type = 'text/css'; | ||||
| 				styleNode.id = 'gravatar-profile-embed-styles'; | ||||
|  | ||||
| 				var gCSS = '.grofile-wrap { border: solid 1px #eee; padding: 10px; } .grofile { padding: 0 0 5px 0; }  .grofile-left { float: left; display: block; width: 96px; margin-right: 15px; } .grofile .gravatar { margin-bottom: 5px; } .grofile-clear { clear: left; font-size: 1px; height: 1px; } .grofile ul li a { text-indent: -99999px; } .grofile .grofile-left a:hover { text-decoration: none !important; border: none !important; } .grofile-name { margin-top: 0; }'; | ||||
|  | ||||
| 				if ( document.all ) { | ||||
| 					styleNode.innerText = gCSS; | ||||
| 				} else { | ||||
| 					styleNode.textContent = gCSS; | ||||
| 				} | ||||
|  | ||||
| 				headID.appendChild( styleNode ); | ||||
| 			} | ||||
| 		} )(); | ||||
| 	</script> | ||||
|  | ||||
| 	<div class="grofile vcard" id="grofile-embed-<?php echo esc_attr( $instance ); ?>"> | ||||
| 		<div class="grofile-inner"> | ||||
| 			<div class="grofile-left"> | ||||
| 				<div class="grofile-img"> | ||||
| 					<a href="<?php echo esc_url( $gravatar_url ); ?>"> | ||||
| 						<img src="<?php echo esc_url( $avatar_url ); ?>" width="96" height="96" class="no-grav gravatar photo" /> | ||||
| 					</a> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 			<div class="grofile-right"> | ||||
| 				<p class="grofile-name fn"> | ||||
| 					<strong><?php echo esc_html( $user->display_name ); ?></strong> | ||||
| 					<?php | ||||
| 					if ( ! empty( $user_location ) ) : | ||||
| 						?> | ||||
| 						<br><span class="grofile-location adr"><?php echo esc_html( $user_location ); ?></span><?php endif; ?> | ||||
| 				</p> | ||||
| 				<p class="grofile-bio"><strong><?php esc_html_e( 'Bio:', 'jetpack' ); ?></strong> <?php echo wp_kses_post( $user->description ); ?></p> | ||||
| 				<p class="grofile-view"> | ||||
| 					<a href="<?php echo esc_url( $gravatar_url ); ?>"><?php esc_html_e( 'View complete profile', 'jetpack' ); ?></a> | ||||
| 				</p> | ||||
| 			</div> | ||||
| 			<span class="grofile-clear"> </span> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	<?php | ||||
|  | ||||
| 	// Increment and return the rendered profile. | ||||
| 	$instance++; | ||||
|  | ||||
| 	return ob_get_clean(); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user