PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.5.1
Jetpack – WP Security, Backup, Speed, & Growth v14.5.1
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 / widgets / gravatar-profile.php
jetpack / modules / widgets Last commit date
authors 8 years ago contact-info 5 years ago eu-cookie-law 1 year ago facebook-likebox 11 years ago flickr 2 years ago gallery 1 year ago goodreads 2 years ago google-translate 1 year ago image-widget 8 years ago instagram 6 years ago internet-defense-league 2 years ago milestone 1 year ago my-community 8 years ago simple-payments 1 year ago social-icons 1 year ago social-media-icons 5 years ago top-posts 8 years ago wordpress-post-widget 2 years ago authors.php 1 year ago blog-stats.php 1 year ago class-jetpack-eu-cookie-law-widget.php 1 year ago class-jetpack-instagram-widget.php 1 year ago contact-info.php 1 year ago customizer-controls.css 9 years ago customizer-utils.js 1 year ago facebook-likebox.php 2 years ago flickr.php 1 year ago gallery.php 1 year ago goodreads.php 1 year ago google-translate.php 1 year ago gravatar-profile.css 1 year ago gravatar-profile.php 1 year ago image-widget.php 1 year ago internet-defense-league.php 3 years ago mailchimp.php 3 years ago milestone.php 5 years ago my-community.php 1 year ago rsslinks-widget.php 3 years ago simple-payments.php 1 year ago social-icons.php 1 year ago social-media-icons.php 1 year ago top-posts.php 1 year ago twitter-timeline-admin.js 1 year ago twitter-timeline.php 1 year ago upcoming-events.php 2 years ago wordpress-post-widget.php 1 year ago
gravatar-profile.php
524 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
4
5 add_action( 'widgets_init', 'jetpack_gravatar_profile_widget_init' );
6 /**
7 * Register the widget for use in Appearance -> Widgets
8 */
9 function jetpack_gravatar_profile_widget_init() {
10 register_widget( 'Jetpack_Gravatar_Profile_Widget' );
11 }
12
13 /**
14 * Display a widgetized version of your Gravatar Profile
15 * https://blog.gravatar.com/2010/03/26/gravatar-profiles/
16 */
17 class Jetpack_Gravatar_Profile_Widget extends WP_Widget {
18 /**
19 * Jetpack_Gravatar_Profile_Widget constructor.
20 */
21 public function __construct() {
22 parent::__construct(
23 'grofile',
24 /** This filter is documented in modules/widgets/facebook-likebox.php */
25 apply_filters( 'jetpack_widget_name', __( 'Gravatar Profile', 'jetpack' ) ),
26 array(
27 'classname' => 'widget-grofile grofile',
28 'description' => __( 'Display a mini version of your Gravatar Profile', 'jetpack' ),
29 'customize_selective_refresh' => true,
30 )
31 );
32
33 if ( is_admin() ) {
34 add_action( 'admin_footer-widgets.php', array( $this, 'admin_script' ) );
35 }
36
37 if ( is_customize_preview() ) {
38 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
39 }
40 }
41
42 /**
43 * Display the Widget.
44 *
45 * @see WP_Widget::widget()
46 *
47 * @param array $args Display arguments.
48 * @param array $instance The settings for the particular instance of the widget.
49 */
50 public function widget( $args, $instance ) {
51 /**
52 * Fires when an item is displayed on the front end.
53 *
54 * Can be used to track stats about the number of displays for a specific item
55 *
56 * @module widgets, shortcodes
57 *
58 * @since 1.6.0
59 *
60 * @param string widget_view Item type (e.g. widget, or embed).
61 * @param string grofile Item description (e.g. grofile, goodreads).
62 */
63 do_action( 'jetpack_stats_extra', 'widget_view', 'grofile' );
64
65 $instance = wp_parse_args(
66 $instance,
67 array(
68 'title' => '',
69 'email' => '',
70 )
71 );
72
73 /** This filter is documented in core/src/wp-includes/default-widgets.php */
74 $title = apply_filters( 'widget_title', $instance['title'] );
75
76 if ( ! $instance['email'] ) {
77 if ( current_user_can( 'edit_theme_options' ) ) {
78 echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
79 if ( ! empty( $title ) ) {
80 echo $args['before_title'] . $title . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
81 }
82 echo '<p>' . wp_kses(
83 sprintf(
84 /* translators: %s is a link to the widget settings page. */
85 __( 'You need to select what to show in this <a href="%s">Gravatar Profile widget</a>.', 'jetpack' ),
86 admin_url( 'widgets.php' )
87 ),
88 array(
89 'a' => array(
90 'href' => true,
91 ),
92 )
93 ) . '</p>';
94 echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
95 }
96 return;
97 }
98
99 echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
100 if ( ! empty( $title ) ) {
101 echo $args['before_title'] . $title . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
102 }
103
104 $profile = $this->get_profile( $instance['email'] );
105
106 if ( ! empty( $profile ) ) {
107 $profile = wp_parse_args(
108 $profile,
109 array(
110 'thumbnailUrl' => '',
111 'profileUrl' => '',
112 'displayName' => '',
113 'aboutMe' => '',
114 'urls' => array(),
115 'accounts' => array(),
116 )
117 );
118 $base_width = 320;
119 $gravatar_url = add_query_arg( 's', $base_width, $profile['thumbnailUrl'] ); // The default grav returned by grofiles is super small.
120
121 // Generate a srcset with larger sizes for high DPI screens.
122 $srcset = '';
123 $multipliers = array( 1, 1.5, 2, 3, 4 );
124 $srcset_values = array();
125 foreach ( $multipliers as $multiplier ) {
126 $srcset_width = (int) ( $base_width * $multiplier );
127 $srcset_url = add_query_arg( 's', $srcset_width, $profile['thumbnailUrl'] );
128 $srcset_values[] = "{$srcset_url} {$multiplier}x";
129 }
130 $srcset = implode( ', ', $srcset_values );
131
132 // Enqueue front end assets.
133 $this->enqueue_scripts();
134
135 ?>
136 <img
137 src="<?php echo esc_url( $gravatar_url ); ?>"
138 srcset="<?php echo esc_attr( $srcset ); ?>"
139 class="grofile-thumbnail no-grav"
140 alt="<?php echo esc_attr( $profile['displayName'] ); ?>"
141 loading="lazy" />
142 <div class="grofile-meta">
143 <h4><a href="<?php echo esc_url( $profile['profileUrl'] ); ?>"><?php echo esc_html( $profile['displayName'] ); ?></a></h4>
144 <p><?php echo wp_kses_post( $profile['aboutMe'] ); ?></p>
145 </div>
146
147 <?php
148
149 if ( $instance['show_personal_links'] ) {
150 $this->display_personal_links( (array) $profile['urls'] );
151 }
152
153 if ( $instance['show_account_links'] ) {
154 $this->display_accounts( (array) $profile['accounts'], $profile['displayName'] );
155 }
156
157 ?>
158
159 <p><a href="<?php echo esc_url( $profile['profileUrl'] ); ?>" class="grofile-full-link">
160 <?php
161 echo esc_html(
162 /**
163 * Filter the Gravatar Profile widget's profile link title.
164 *
165 * @module widgets
166 *
167 * @since 2.8.0
168 *
169 * @param string $str Profile link title.
170 */
171 apply_filters(
172 'jetpack_gravatar_full_profile_title',
173 __( 'View Full Profile &rarr;', 'jetpack' )
174 )
175 );
176 ?>
177 </a></p>
178
179 <?php
180 } elseif ( current_user_can( 'edit_theme_options' ) ) {
181 echo '<p>' . esc_html__( 'Error loading profile', 'jetpack' ) . '</p>';
182 }
183
184 echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
185 }
186
187 /**
188 * Displays the "Personal Links" section.
189 *
190 * @param array $personal_links Array of links.
191 */
192 public function display_personal_links( $personal_links = array() ) {
193 if ( empty( $personal_links ) ) {
194 return;
195 }
196 ?>
197
198 <h4>
199 <?php
200 echo esc_html(
201 apply_filters(
202 /**
203 * Filter the Gravatar Profile widget's "Personal Links" section title.
204 *
205 * @module widgets
206 *
207 * @since 2.8.0
208 *
209 * @param string $str "Personal Links" section title.
210 */
211 'jetpack_gravatar_personal_links_title',
212 __( 'Personal Links', 'jetpack' )
213 )
214 );
215 ?>
216 </h4>
217 <ul class="grofile-urls grofile-links">
218
219 <?php foreach ( $personal_links as $personal_link ) : ?>
220 <?php if ( is_array( $personal_link ) ) : ?>
221 <li>
222 <a href="<?php echo esc_url( $personal_link['value'] ); ?>">
223 <?php
224 $link_title = ( ! empty( $personal_link['title'] ) ) ? $personal_link['title'] : $personal_link['value'];
225 echo esc_html( $link_title );
226 ?>
227 </a>
228 </li>
229 <?php endif; ?>
230 <?php endforeach; ?>
231 </ul>
232
233 <?php
234 }
235
236 /**
237 * Displays the "Verified Services" accounts.
238 *
239 * @param array $accounts Array of social accounts.
240 * @param string $display_name Gravatar display name of the user.
241 */
242 public function display_accounts( $accounts = array(), $display_name = '' ) {
243 if ( empty( $accounts ) ) {
244 return;
245 }
246 ?>
247
248 <h4>
249 <?php
250 echo esc_html(
251 /**
252 * Filter the Gravatar Profile widget's "Verified Services" section title.
253 *
254 * @module widgets
255 *
256 * @since 2.8.0
257 *
258 * @param string $str "Verified Services" section title.
259 */
260 apply_filters(
261 'jetpack_gravatar_verified_services_title',
262 __( 'Verified Services', 'jetpack' )
263 )
264 );
265 ?>
266 </h4>
267 <ul class="grofile-urls grofile-accounts">
268
269 <?php
270 foreach ( $accounts as $account ) :
271 $is_hidden = $account['is_hidden'] ?? false;
272 if ( true !== $account['verified'] || $is_hidden ) {
273 continue;
274 }
275
276 $sanitized_service_name = $this->get_sanitized_service_name( $account['shortname'] );
277 $link_title = sprintf(
278 /* translators: %1$s: account display name. %2$s: service name ( Facebook, Twitter, etc.) */
279 _x( '%1$s on %2$s', '1: User Name, 2: Service Name (Facebook, Twitter, ...)', 'jetpack' ),
280 esc_html( $display_name ),
281 esc_html( $sanitized_service_name )
282 );
283 ?>
284
285 <li>
286 <a href="<?php echo esc_url( $account['url'] ); ?>" title="<?php echo esc_html( $link_title ); ?>">
287 <span
288 class="grofile-accounts-logo grofile-accounts-<?php echo esc_attr( $account['shortname'] ); ?> accounts_<?php echo esc_attr( $account['shortname'] ); ?>"
289 style="background-image: url('<?php echo esc_attr( $account['iconUrl'] ); ?>')"
290 ></span>
291 </a>
292 </li>
293
294 <?php endforeach; ?>
295 </ul>
296
297 <?php
298 }
299
300 /**
301 * Enqueue CSS and JavaScript.
302 *
303 * @since 4.0.0
304 */
305 public function enqueue_scripts() {
306 wp_enqueue_style(
307 'gravatar-profile-widget',
308 plugins_url( 'gravatar-profile.css', __FILE__ ),
309 array(),
310 '20120711'
311 );
312
313 wp_enqueue_style(
314 'gravatar-card-services',
315 'https://secure.gravatar.com/css/services.css',
316 array(),
317 defined( 'GROFILES__CACHE_BUSTER' ) ? GROFILES__CACHE_BUSTER : gmdate( 'YW' )
318 );
319 }
320
321 /**
322 * Outputs the widget settings form.
323 *
324 * @param array $instance Current settings.
325 */
326 public function form( $instance ) {
327 $title = isset( $instance['title'] ) ? $instance['title'] : '';
328 $email = isset( $instance['email'] ) ? $instance['email'] : '';
329 $email_user = isset( $instance['email_user'] ) ? $instance['email_user'] : get_current_user_id();
330 $show_personal_links = isset( $instance['show_personal_links'] ) ? (bool) $instance['show_personal_links'] : '';
331 $show_account_links = isset( $instance['show_account_links'] ) ? (bool) $instance['show_account_links'] : '';
332 $profile_url = 'https://gravatar.com/profile/edit';
333
334 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
335 $profile_url = admin_url( 'profile.php' );
336
337 if ( isset( $_REQUEST['calypso'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
338 $profile_url = 'https://wordpress.com/me';
339 }
340 }
341 ?>
342 <p>
343 <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">
344 <?php esc_html_e( 'Title', 'jetpack' ); ?> <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
345 </label>
346 </p>
347
348 <p>
349 <label for="<?php echo esc_attr( $this->get_field_id( 'email_user' ) ); ?>">
350 <?php esc_html_e( 'Select a user or pick "custom" and enter a custom email address.', 'jetpack' ); ?>
351 <br />
352
353 <?php
354 wp_dropdown_users(
355 array(
356 'show_option_none' => __( 'Custom', 'jetpack' ),
357 'selected' => $email_user,
358 'name' => $this->get_field_name( 'email_user' ),
359 'id' => $this->get_field_id( 'email_user' ),
360 'class' => 'gravatar-profile-user-select',
361 )
362 );
363 ?>
364 </label>
365 </p>
366
367 <p class="gprofile-email-container <?php echo empty( $email_user ) || -1 === (int) $email_user ? '' : 'hidden'; ?>">
368 <label for="<?php echo esc_attr( $this->get_field_id( 'email' ) ); ?>"><?php esc_html_e( 'Custom Email Address', 'jetpack' ); ?>
369 <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'email' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>" type="text" value="<?php echo esc_attr( $email ); ?>" />
370 </label>
371 </p>
372
373 <p>
374 <label for="<?php echo esc_attr( $this->get_field_id( 'show_personal_links' ) ); ?>">
375 <input type="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'show_personal_links' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'show_personal_links' ) ); ?>" <?php checked( $show_personal_links ); ?> />
376 <?php esc_html_e( 'Show Personal Links', 'jetpack' ); ?>
377 <br />
378 <small><?php esc_html_e( 'Links to your websites, blogs, or any other sites that help describe who you are.', 'jetpack' ); ?></small>
379 </label>
380 </p>
381
382 <p>
383 <label for="<?php echo esc_attr( $this->get_field_id( 'show_account_links' ) ); ?>">
384 <input type="checkbox" name="<?php echo esc_attr( $this->get_field_name( 'show_account_links' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'show_account_links' ) ); ?>" <?php checked( $show_account_links ); ?> />
385 <?php esc_html_e( 'Show Account Links', 'jetpack' ); ?>
386 <br />
387 <small><?php esc_html_e( 'Links to services that you use across the web.', 'jetpack' ); ?></small>
388 </label>
389 </p>
390
391 <p><a href="<?php echo esc_url( $profile_url ); ?>" target="_blank" title="<?php esc_attr_e( 'Opens in new window', 'jetpack' ); ?>"><?php esc_html_e( 'Edit Your Profile', 'jetpack' ); ?></a> | <a href="https://gravatar.com" target="_blank" title="<?php esc_attr_e( 'Opens in new window', 'jetpack' ); ?>"><?php esc_html_e( "What's a Gravatar?", 'jetpack' ); ?></a></p>
392
393 <?php
394 }
395
396 /**
397 * Inline admin script.
398 */
399 public function admin_script() {
400 ?>
401 <script>
402 jQuery( function( $ ) {
403 $( '.wrap' ).on( 'change', '.gravatar-profile-user-select', function() {
404 var $input = $(this).closest('.widget-inside').find('.gprofile-email-container');
405 if ( '-1' === this.value.toLowerCase() ) {
406 $input.show();
407 } else {
408 $input.hide();
409 }
410 });
411 } );
412 </script>
413 <?php
414 }
415
416 /**
417 * Update widget.
418 *
419 * @see WP_Widget::update()
420 *
421 * @param array $new_instance New widget instance data.
422 * @param array $old_instance Old widget instance data.
423 */
424 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
425 $instance = array();
426
427 $instance['title'] = isset( $new_instance['title'] ) ? wp_kses( $new_instance['title'], array() ) : '';
428 $instance['email'] = isset( $new_instance['email'] ) ? wp_kses( $new_instance['email'], array() ) : '';
429 $instance['email_user'] = isset( $new_instance['email_user'] ) ? (int) $new_instance['email_user'] : -1;
430 $instance['show_personal_links'] = isset( $new_instance['show_personal_links'] ) ? (bool) $new_instance['show_personal_links'] : false;
431 $instance['show_account_links'] = isset( $new_instance['show_account_links'] ) ? (bool) $new_instance['show_account_links'] : false;
432
433 if ( $instance['email_user'] > 0 ) {
434 $user = get_userdata( $instance['email_user'] );
435 $instance['email'] = $user->user_email;
436 }
437
438 $hashed_email = md5( strtolower( trim( $instance['email'] ) ) );
439 $cache_key = 'grofile-' . $hashed_email;
440 delete_transient( $cache_key );
441
442 return $instance;
443 }
444
445 /**
446 * Get the Gravatar profile for a given email address.
447 *
448 * @param string $email Email address.
449 */
450 private function get_profile( $email ) {
451 $hashed_email = md5( strtolower( trim( $email ) ) );
452 $cache_key = 'grofile-' . $hashed_email;
453 $profile = get_transient( $cache_key );
454
455 if ( ! $profile ) {
456 $profile_url = sprintf(
457 'https://secure.gravatar.com/%s.json',
458 $hashed_email
459 );
460
461 $expire = 300;
462 $response = wp_remote_get(
463 esc_url_raw( $profile_url ),
464 array( 'User-Agent' => 'WordPress.com Gravatar Profile Widget' )
465 );
466 $response_code = wp_remote_retrieve_response_code( $response );
467 if ( 200 === $response_code ) {
468 $profile = wp_remote_retrieve_body( $response );
469 $profile = json_decode( $profile, true );
470
471 if ( is_array( $profile ) && ! empty( $profile['entry'] ) && is_array( $profile['entry'] ) ) {
472 $expire = 900; // Cache for 15 minutes.
473 $profile = $profile['entry'][0];
474 } else {
475 // Something strange happened. Cache for 5 minutes.
476 $profile = array();
477 }
478 } else {
479 $expire = 900; // Cache for 15 minutes.
480 $profile = array();
481 }
482
483 set_transient( $cache_key, $profile, $expire );
484 }
485 return $profile;
486 }
487
488 /**
489 * Return properly capitalized service name.
490 *
491 * @param string $shortname The service.
492 *
493 * @return string
494 */
495 private function get_sanitized_service_name( $shortname ) {
496 // Some services have stylized or mixed cap names *cough* WP *cough*.
497 switch ( $shortname ) {
498 case 'friendfeed':
499 return 'FriendFeed';
500 case 'linkedin':
501 return 'LinkedIn';
502 case 'yahoo':
503 return 'Yahoo!';
504 case 'youtube':
505 return 'YouTube';
506 // phpcs:ignore WordPress.WP.CapitalPDangit
507 case 'wordpress':
508 return 'WordPress';
509 case 'tripit':
510 return 'TripIt';
511 case 'myspace':
512 return 'MySpace';
513 case 'foursquare':
514 return 'foursquare';
515 case 'google':
516 return 'Google+';
517 default:
518 // Others don't.
519 $shortname = ucwords( $shortname );
520 }
521 return $shortname;
522 }
523 }
524