PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.9.2
Jetpack – WP Security, Backup, Speed, & Growth v13.9.2
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 / flickr.php
jetpack / modules / widgets Last commit date
authors 8 years ago contact-info 5 years ago eu-cookie-law 2 years ago facebook-likebox 11 years ago flickr 2 years ago gallery 2 years ago goodreads 2 years ago google-translate 4 years ago image-widget 8 years ago instagram 6 years ago internet-defense-league 2 years ago migrate-to-core 3 years ago milestone 2 years ago my-community 8 years ago simple-payments 2 years ago social-icons 4 years ago social-media-icons 5 years ago top-posts 8 years ago wordpress-post-widget 2 years ago authors.php 3 years ago blog-stats.php 2 years ago class-jetpack-eu-cookie-law-widget.php 2 years ago class-jetpack-instagram-widget.php 2 years ago contact-info.php 2 years ago customizer-controls.css 9 years ago customizer-utils.js 6 years ago facebook-likebox.php 2 years ago flickr.php 2 years ago gallery.php 2 years ago goodreads.php 2 years ago google-translate.php 2 years ago gravatar-profile.css 10 years ago gravatar-profile.php 2 years ago image-widget.php 3 years ago internet-defense-league.php 3 years ago mailchimp.php 3 years ago milestone.php 5 years ago my-community.php 2 years ago rsslinks-widget.php 3 years ago simple-payments.php 2 years ago social-icons.php 2 years ago social-media-icons.php 2 years ago top-posts.php 2 years ago twitter-timeline-admin.js 6 years ago twitter-timeline.php 3 years ago upcoming-events.php 2 years ago wordpress-post-widget.php 4 years ago
flickr.php
236 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
6 /**
7 * Disable direct access/execution to/of the widget code.
8 */
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 if ( ! class_exists( 'Jetpack_Flickr_Widget' ) ) {
14 /**
15 * Flickr Widget
16 *
17 * Display your recent Flickr photos.
18 */
19 class Jetpack_Flickr_Widget extends WP_Widget {
20 /**
21 * Constructor.
22 */
23 public function __construct() {
24 parent::__construct(
25 'flickr',
26 /** This filter is documented in modules/widgets/facebook-likebox.php */
27 apply_filters( 'jetpack_widget_name', esc_html__( 'Flickr', 'jetpack' ) ),
28 array(
29 'description' => esc_html__( 'Display your recent Flickr photos.', 'jetpack' ),
30 'customize_selective_refresh' => true,
31 ),
32 array()
33 );
34
35 if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
36 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ) );
37 }
38 }
39
40 /**
41 * Enqueue style.
42 */
43 public function enqueue_style() {
44 wp_enqueue_style( 'flickr-widget-style', plugins_url( 'flickr/style.css', __FILE__ ), array(), '20170405' );
45 }
46
47 /**
48 * Return an associative array of default values.
49 *
50 * These values are used in new widgets.
51 *
52 * @return array Default values for the widget options.
53 */
54 public function defaults() {
55 return array(
56 'title' => esc_html__( 'Flickr Photos', 'jetpack' ),
57 'items' => 4,
58 'target' => false,
59 'flickr_image_size' => 'thumbnail',
60 'flickr_rss_url' => '',
61 );
62 }
63
64 /**
65 * Front-end display of the widget.
66 *
67 * @html-template-var array $instance
68 * @html-template-var string|null $flickr_home
69 * @html-template-var string $photos';
70 *
71 * @param array $args Widget arguments.
72 * @param array $instance Saved values from database.
73 */
74 public function widget( $args, $instance ) {
75 $instance = wp_parse_args( $instance, $this->defaults() );
76
77 if ( ! empty( $instance['flickr_rss_url'] ) ) {
78 /*
79 * Parse the URL, and rebuild a URL that's sure to display images.
80 * Some Flickr Feeds do not display images by default.
81 */
82 $flickr_parameters = wp_parse_url( htmlspecialchars_decode( $instance['flickr_rss_url'], ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 ) );
83
84 // Is it a Flickr Feed.
85 if (
86 ! empty( $flickr_parameters['host'] )
87 && ! empty( $flickr_parameters['query'] )
88 && str_contains( $flickr_parameters['host'], 'flickr' )
89 ) {
90 parse_str( $flickr_parameters['query'], $vars );
91
92 // Do we have an ID in the feed? Let's continue.
93 if ( isset( $vars['id'] ) ) {
94
95 // Flickr Feeds can be used for groups or for individuals.
96 if (
97 ! empty( $flickr_parameters['path'] )
98 && str_contains( $flickr_parameters['path'], 'groups' )
99 ) {
100 $feed_url = 'https://api.flickr.com/services/feeds/groups_pool.gne';
101 } else {
102 $feed_url = 'https://api.flickr.com/services/feeds/photos_public.gne';
103 }
104
105 // Build our new RSS feed.
106 $rss_url = sprintf(
107 '%1$s?id=%2$s&format=rss_200_enc',
108 esc_url( $feed_url ),
109 esc_attr( $vars['id'] )
110 );
111 }
112 }
113 }
114
115 // Still no RSS feed URL? Get a default feed from Flickr to grab interesting photos.
116 if ( empty( $rss_url ) ) {
117 $rss_url = 'https://api.flickr.com/services/feeds/photos_interesting.gne?format=rss_200';
118 }
119
120 $rss = fetch_feed( $rss_url );
121
122 $photos = '';
123 $flickr_home = null; // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Used in flickr/widget.php template file.
124 if ( ! is_wp_error( $rss ) ) {
125 foreach ( $rss->get_items( 0, $instance['items'] ) as $photo ) {
126 switch ( $instance['flickr_image_size'] ) {
127 case 'thumbnail':
128 $src = $photo->get_enclosure()->get_thumbnail();
129 break;
130 case 'small':
131 $src = preg_match( '/src="(.*?)"/i', $photo->get_description(), $p );
132 $src = $p[1];
133 break;
134 case 'large':
135 $src = $photo->get_enclosure()->get_link();
136 break;
137 }
138
139 $photos .= '<a href="' . esc_url( $photo->get_permalink(), array( 'http', 'https' ) ) . '" ';
140 if ( $instance['target'] ) {
141 $photos .= 'target="_blank" rel="noopener noreferrer" ';
142 }
143 $photos .= '><img src="' . esc_url( $src, array( 'http', 'https' ) ) . '" ';
144 $photos .= 'alt="' . esc_attr( $photo->get_title() ) . '" ';
145 $photos .= 'title="' . esc_attr( $photo->get_title() ) . '" ';
146 $photos .= ' /></a>';
147 }
148 if ( ! empty( $photos ) ) {
149 $photos = apply_filters( 'jetpack_image_cdn_content', $photos );
150 }
151
152 $flickr_home = $rss->get_link(); // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Used in flickr/widget.php template file.
153 }
154
155 echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
156 if ( empty( $photos ) ) {
157 if ( current_user_can( 'edit_theme_options' ) ) {
158 printf(
159 '<p>%1$s<br />%2$s</p>',
160 esc_html__( 'There are no photos to display. Make sure your Flickr feed URL is correct, and that your pictures are publicly accessible.', 'jetpack' ),
161 esc_html__( '(Only admins can see this message)', 'jetpack' )
162 );
163 }
164 } else {
165 echo $args['before_title'] . $instance['title'] . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
166 require __DIR__ . '/flickr/widget.php';
167 }
168 echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
169 /** This action is already documented in modules/widgets/gravatar-profile.php */
170 do_action( 'jetpack_stats_extra', 'widget_view', 'flickr' );
171 }
172
173 /**
174 * Back-end widget form.
175 *
176 * @html-template-var array $instance
177 *
178 * @param array $instance Previously saved values from database.
179 */
180 public function form( $instance ) {
181 $instance = wp_parse_args( $instance, $this->defaults() );
182 require __DIR__ . '/flickr/form.php';
183 }
184
185 /**
186 * Sanitize widget form values as they are saved.
187 *
188 * @param array $new_instance Values just sent to be saved.
189 * @param array $old_instance Previously saved values from database.
190 * @return array Updated safe values to be saved.
191 */
192 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
193 $instance = array();
194
195 if ( isset( $new_instance['title'] ) ) {
196 $instance['title'] = wp_kses( $new_instance['title'], array() );
197 }
198
199 if ( isset( $new_instance['items'] ) ) {
200 $instance['items'] = (int) $new_instance['items'];
201 }
202
203 if ( isset( $new_instance['target'] ) ) {
204 $instance['target'] = (bool) $new_instance['target'];
205 }
206
207 if (
208 isset( $new_instance['flickr_image_size'] ) &&
209 in_array( $new_instance['flickr_image_size'], array( 'thumbnail', 'small', 'large' ), true )
210 ) {
211 $instance['flickr_image_size'] = $new_instance['flickr_image_size'];
212 } else {
213 $instance['flickr_image_size'] = 'thumbnail';
214 }
215
216 if ( isset( $new_instance['flickr_rss_url'] ) ) {
217 $instance['flickr_rss_url'] = esc_url( $new_instance['flickr_rss_url'], array( 'http', 'https' ) );
218
219 if ( strlen( $instance['flickr_rss_url'] ) < 10 ) {
220 $instance['flickr_rss_url'] = '';
221 }
222 }
223
224 return $instance;
225 }
226 }
227
228 /**
229 * Register Jetpack_Flickr_Widget widget.
230 */
231 function jetpack_register_flickr_widget() {
232 register_widget( 'Jetpack_Flickr_Widget' );
233 }
234 add_action( 'widgets_init', 'jetpack_register_flickr_widget' );
235 }
236