PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.0.3
Jetpack – WP Security, Backup, Speed, & Growth v12.0.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / shortcodes / gravatar.php
jetpack / modules / shortcodes Last commit date
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">&nbsp;</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