css
4 years ago
images
12 years ago
img
13 years ago
js
4 years ago
archiveorg-book.php
5 years ago
archiveorg.php
5 years ago
archives.php
5 years ago
bandcamp.php
5 years ago
brightcove.php
5 years ago
cartodb.php
5 years ago
class.filter-embedded-html-objects.php
3 years ago
codepen.php
5 years ago
crowdsignal.php
3 years ago
dailymotion.php
3 years ago
descript.php
4 years ago
facebook.php
3 years ago
flatio.php
5 years ago
flickr.php
5 years ago
getty.php
3 years ago
gist.php
5 years ago
googleapps.php
3 years ago
googlemaps.php
5 years ago
googleplus.php
5 years ago
gravatar.php
3 years ago
houzz.php
5 years ago
inline-pdfs.php
4 years ago
instagram.php
3 years ago
kickstarter.php
3 years ago
mailchimp.php
3 years ago
medium.php
3 years ago
mixcloud.php
3 years ago
others.php
3 years ago
pinterest.php
5 years ago
presentations.php
3 years ago
quiz.php
4 years ago
recipe.php
3 years ago
scribd.php
5 years ago
sitemap.php
5 years ago
slideshare.php
5 years ago
slideshow.php
3 years ago
smartframe.php
4 years ago
soundcloud.php
3 years ago
spotify.php
4 years ago
ted.php
5 years ago
tweet.php
5 years ago
twitchtv.php
5 years ago
twitter-timeline.php
5 years ago
unavailable.php
3 years ago
untappd-menu.php
3 years ago
upcoming-events.php
3 years ago
ustream.php
5 years ago
videopress.php
4 years ago
vimeo.php
3 years ago
vine.php
5 years ago
vr.php
3 years ago
wordads.php
5 years ago
wufoo.php
3 years ago
youtube.php
3 years ago
gravatar.php
170 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Gravatar shortcode for avatar and profile. |
| 4 | * |
| 5 | * Usage: |
| 6 | * |
| 7 | * [gravatar email="user@example.org" size="48"] |
| 8 | * [gravatar_profile who="user@example.org"] |
| 9 | * |
| 10 | * @package automattic/jetpack |
| 11 | */ |
| 12 | |
| 13 | add_shortcode( 'gravatar', 'jetpack_gravatar_shortcode' ); |
| 14 | add_shortcode( 'gravatar_profile', 'jetpack_gravatar_profile_shortcode' ); |
| 15 | |
| 16 | /** |
| 17 | * Get gravatar using the email provided at the specified size. |
| 18 | * |
| 19 | * @since 4.5.0 |
| 20 | * |
| 21 | * @param array $atts Shortcode attributes. |
| 22 | * |
| 23 | * @return bool|string |
| 24 | */ |
| 25 | function jetpack_gravatar_shortcode( $atts ) { |
| 26 | $atts = shortcode_atts( |
| 27 | array( |
| 28 | 'email' => '', |
| 29 | 'size' => 96, |
| 30 | ), |
| 31 | $atts |
| 32 | ); |
| 33 | |
| 34 | if ( empty( $atts['email'] ) || ! is_email( $atts['email'] ) ) { |
| 35 | return false; |
| 36 | } |
| 37 | |
| 38 | $atts['size'] = (int) $atts['size']; |
| 39 | if ( 0 > $atts['size'] ) { |
| 40 | $atts['size'] = 96; |
| 41 | } |
| 42 | |
| 43 | return get_avatar( $atts['email'], $atts['size'] ); |
| 44 | } |
| 45 | |
| 46 | /** |
| 47 | * Display Gravatar profile |
| 48 | * |
| 49 | * @since 4.5.0 |
| 50 | * |
| 51 | * @param array $atts Shortcode attributes. |
| 52 | * |
| 53 | * @uses shortcode_atts() |
| 54 | * @uses get_user_by() |
| 55 | * @uses is_email() |
| 56 | * @uses sanitize_email() |
| 57 | * @uses sanitize_user() |
| 58 | * @uses set_url_scheme() |
| 59 | * @uses wpcom_get_avatar_url() |
| 60 | * @uses get_user_attribute() |
| 61 | * @uses esc_url() |
| 62 | * @uses esc_html() |
| 63 | * @uses _e() |
| 64 | * |
| 65 | * @return string |
| 66 | */ |
| 67 | function jetpack_gravatar_profile_shortcode( $atts ) { |
| 68 | // Give each use of the shortcode a unique ID. |
| 69 | static $instance = 0; |
| 70 | |
| 71 | // Process passed attributes. |
| 72 | $atts = shortcode_atts( |
| 73 | array( |
| 74 | 'who' => null, |
| 75 | ), |
| 76 | $atts, |
| 77 | 'jetpack_gravatar_profile' |
| 78 | ); |
| 79 | |
| 80 | // Can specify username, user ID, or email address. |
| 81 | if ( is_numeric( $atts['who'] ) ) { |
| 82 | $user = get_user_by( 'id', (int) $atts['who'] ); |
| 83 | } elseif ( is_email( $atts['who'] ) ) { |
| 84 | $user = get_user_by( 'email', sanitize_email( $atts['who'] ) ); |
| 85 | } elseif ( is_string( $atts['who'] ) ) { |
| 86 | $user = get_user_by( 'login', sanitize_user( $atts['who'] ) ); |
| 87 | } else { |
| 88 | $user = false; |
| 89 | } |
| 90 | |
| 91 | // Bail if we don't have a user. |
| 92 | if ( false === $user ) { |
| 93 | return false; |
| 94 | } |
| 95 | |
| 96 | // Render the shortcode. |
| 97 | $gravatar_url = 'https://gravatar.com/' . $user->user_login; |
| 98 | |
| 99 | if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { |
| 100 | $avatar_url = wpcom_get_avatar_url( $user->ID, 96 ); |
| 101 | $avatar_url = $avatar_url[0]; |
| 102 | $user_location = get_user_attribute( $user->ID, 'location' ); |
| 103 | } else { |
| 104 | $avatar_url = get_avatar_url( $user->user_email, array( 'size' => 96 ) ); |
| 105 | $user_location = get_user_meta( $user->ID, 'location', true ); |
| 106 | } |
| 107 | |
| 108 | ob_start(); |
| 109 | |
| 110 | if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) { |
| 111 | wp_enqueue_style( 'gravatar-style', plugins_url( '/css/gravatar-amp.css', __FILE__ ), array(), JETPACK__VERSION ); |
| 112 | } else { |
| 113 | ?> |
| 114 | <script type="text/javascript"> |
| 115 | ( function() { |
| 116 | if ( null === document.getElementById( 'gravatar-profile-embed-styles' ) ) { |
| 117 | var headID = document.getElementsByTagName( 'head' )[0]; |
| 118 | var styleNode = document.createElement( 'style' ); |
| 119 | styleNode.type = 'text/css'; |
| 120 | styleNode.id = 'gravatar-profile-embed-styles'; |
| 121 | |
| 122 | var gCSS = '.grofile-wrap { border: solid 1px #f0f0f1; 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; }'; |
| 123 | |
| 124 | if ( document.all ) { |
| 125 | styleNode.innerText = gCSS; |
| 126 | } else { |
| 127 | styleNode.textContent = gCSS; |
| 128 | } |
| 129 | |
| 130 | headID.appendChild( styleNode ); |
| 131 | } |
| 132 | } )(); |
| 133 | </script> |
| 134 | <?php |
| 135 | } |
| 136 | ?> |
| 137 | |
| 138 | <div class="grofile vcard" id="grofile-embed-<?php echo esc_attr( $instance ); ?>"> |
| 139 | <div class="grofile-inner"> |
| 140 | <div class="grofile-left"> |
| 141 | <div class="grofile-img"> |
| 142 | <a href="<?php echo esc_url( $gravatar_url ); ?>"> |
| 143 | <img src="<?php echo esc_url( $avatar_url ); ?>" width="96" height="96" class="no-grav gravatar photo" /> |
| 144 | </a> |
| 145 | </div> |
| 146 | </div> |
| 147 | <div class="grofile-right"> |
| 148 | <p class="grofile-name fn"> |
| 149 | <strong><?php echo esc_html( $user->display_name ); ?></strong> |
| 150 | <?php |
| 151 | if ( ! empty( $user_location ) ) : |
| 152 | ?> |
| 153 | <br><span class="grofile-location adr"><?php echo esc_html( $user_location ); ?></span><?php endif; ?> |
| 154 | </p> |
| 155 | <p class="grofile-bio"><strong><?php esc_html_e( 'Bio:', 'jetpack' ); ?></strong> <?php echo wp_kses_post( $user->description ); ?></p> |
| 156 | <p class="grofile-view"> |
| 157 | <a href="<?php echo esc_url( $gravatar_url ); ?>"><?php esc_html_e( 'View complete profile', 'jetpack' ); ?></a> |
| 158 | </p> |
| 159 | </div> |
| 160 | <span class="grofile-clear"> </span> |
| 161 | </div> |
| 162 | </div> |
| 163 | <?php |
| 164 | |
| 165 | // Increment and return the rendered profile. |
| 166 | ++$instance; |
| 167 | |
| 168 | return ob_get_clean(); |
| 169 | } |
| 170 |