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