PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.4.2
Jetpack – WP Security, Backup, Speed, & Growth v12.4.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 / internet-defense-league.php
jetpack / modules / widgets Last commit date
authors 8 years ago contact-info 5 years ago eu-cookie-law 4 years ago facebook-likebox 11 years ago flickr 4 years ago gallery 4 years ago goodreads 5 years ago google-translate 4 years ago image-widget 8 years ago instagram 6 years ago migrate-to-core 3 years ago milestone 3 years ago my-community 8 years ago simple-payments 4 years ago social-icons 4 years ago social-media-icons 5 years ago top-posts 8 years ago wordpress-post-widget 3 years ago authors.php 3 years ago blog-stats.php 3 years ago class-jetpack-eu-cookie-law-widget.php 3 years ago class-jetpack-instagram-widget.php 3 years ago contact-info.php 3 years ago customizer-controls.css 9 years ago customizer-utils.js 6 years ago facebook-likebox.php 3 years ago flickr.php 3 years ago gallery.php 3 years ago goodreads.php 3 years ago google-translate.php 3 years ago gravatar-profile.css 10 years ago gravatar-profile.php 3 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 3 years ago rsslinks-widget.php 3 years ago simple-payments.php 3 years ago social-icons.php 3 years ago social-media-icons.php 3 years ago top-posts.php 3 years ago twitter-timeline-admin.js 6 years ago twitter-timeline.php 3 years ago upcoming-events.php 3 years ago wordpress-post-widget.php 4 years ago
internet-defense-league.php
267 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 use Automattic\Jetpack\Image_CDN\Image_CDN_Core;
6
7 /**
8 * Jetpack_Internet_Defense_League_Widget main class.
9 */
10 class Jetpack_Internet_Defense_League_Widget extends WP_Widget {
11 /**
12 * Default widget settings.
13 *
14 * @var array
15 */
16 public $defaults = array();
17
18 /**
19 * Selected display variant.
20 *
21 * @var string
22 */
23 public $variant;
24 /**
25 * Display variants.
26 *
27 * @var array
28 */
29 public $variants = array();
30
31 /**
32 * Selected campaign.
33 *
34 * @var string
35 */
36 public $campaign;
37 /**
38 * Campaign options.
39 *
40 * @var array
41 */
42 public $campaigns = array();
43 /**
44 * False when enabling campaigns other than 'none' or empty.
45 *
46 * @var bool
47 */
48 public $no_current = true;
49
50 /**
51 * Selected badge to display.
52 *
53 * @var string
54 */
55 public $badge;
56 /**
57 * Badge display options.
58 *
59 * @var array
60 */
61 public $badges = array();
62
63 /**
64 * Jetpack_Internet_Defense_League_Widget constructor.
65 */
66 public function __construct() {
67 parent::__construct(
68 'internet_defense_league_widget',
69 /** This filter is documented in modules/widgets/facebook-likebox.php */
70 apply_filters( 'jetpack_widget_name', esc_html__( 'Internet Defense League', 'jetpack' ) ),
71 array(
72 'description' => esc_html__( 'Show your support for the Internet Defense League.', 'jetpack' ),
73 'customize_selective_refresh' => true,
74 )
75 );
76
77 // When enabling campaigns other than 'none' or empty, change $no_current to false above.
78 $this->campaigns = array(
79 '' => esc_html__( 'All current and future campaigns', 'jetpack' ),
80 'none' => esc_html__( 'None, just display the badge please', 'jetpack' ),
81 );
82
83 $this->variants = array(
84 'banner' => esc_html__( 'Banner at the top of my site', 'jetpack' ),
85 'modal' => esc_html__( 'Modal (Overlay Box)', 'jetpack' ),
86 );
87
88 $this->badges = array(
89 'shield_badge' => esc_html__( 'Shield Badge', 'jetpack' ),
90 'super_badge' => esc_html__( 'Super Badge', 'jetpack' ),
91 'side_bar_badge' => esc_html__( 'Red Cat Badge', 'jetpack' ),
92 );
93
94 if ( false === $this->no_current ) {
95 $this->badges['none'] = esc_html__( 'Don\'t display a badge (just the campaign)', 'jetpack' );
96 }
97
98 $this->defaults = array(
99 'campaign' => key( $this->campaigns ),
100 'variant' => key( $this->variants ),
101 'badge' => key( $this->badges ),
102 );
103
104 add_filter( 'widget_types_to_hide_from_legacy_widget_block', array( $this, 'hide_widget_in_block_editor' ) );
105 }
106
107 /**
108 * Remove the "Internet Defense League" widget from the Legacy Widget block
109 *
110 * @param array $widget_types List of widgets that are currently removed from the Legacy Widget block.
111 * @return array $widget_types New list of widgets that will be removed.
112 */
113 public function hide_widget_in_block_editor( $widget_types ) {
114 $widget_types[] = 'internet_defense_league_widget';
115 return $widget_types;
116 }
117
118 /**
119 * Display the Widget.
120 *
121 * @see WP_Widget::widget()
122 *
123 * @param array $args Display arguments.
124 * @param array $instance The settings for the particular instance of the widget.
125 */
126 public function widget( $args, $instance ) {
127 $instance = wp_parse_args( $instance, $this->defaults );
128
129 if ( 'none' !== $instance['badge'] ) {
130 if ( ! isset( $this->badges[ $instance['badge'] ] ) ) {
131 $instance['badge'] = $this->defaults['badge'];
132 }
133 $badge_url = esc_url( 'https://www.internetdefenseleague.org/images/badges/final/' . $instance['badge'] . '.png' );
134 $photon_badge_url = Image_CDN_Core::cdn_url( $badge_url );
135 $alt_text = esc_html__( 'Member of The Internet Defense League', 'jetpack' );
136 echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
137 echo '<p><a href="https://www.internetdefenseleague.org/"><img src="' . esc_url( $photon_badge_url ) . '" alt="' . esc_attr( $alt_text ) . '" style="max-width: 100%; height: auto;" /></a></p>';
138 echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
139 }
140
141 if ( 'none' !== $instance['campaign'] ) {
142 $this->campaign = $instance['campaign'];
143 $this->variant = $instance['variant'];
144 add_action( 'wp_footer', array( $this, 'footer_script' ) );
145 }
146
147 /** This action is already documented in modules/widgets/gravatar-profile.php */
148 do_action( 'jetpack_stats_extra', 'widget_view', 'internet_defense_league' );
149 }
150
151 /**
152 * Inline footer script.
153 */
154 public function footer_script() {
155 if ( ! isset( $this->campaigns[ $this->campaign ] ) ) {
156 $this->campaign = $this->defaults['campaign'];
157 }
158
159 if ( ! isset( $this->variants[ $this->variant ] ) ) {
160 $this->variant = $this->defaults['variant'];
161 }
162
163 // On AMP endpoints, prevent a validation error from the inline script.
164 if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
165 return;
166 }
167
168 ?>
169 <script type="text/javascript">
170 window._idl = {};
171 _idl.campaign = "<?php echo esc_js( $this->campaign ); ?>";
172 _idl.variant = "<?php echo esc_js( $this->variant ); ?>";
173 (function() {
174 var idl = document.createElement('script');
175 idl.async = true;
176 idl.src = 'https://members.internetdefenseleague.org/include/?url=' + (_idl.url || '') + '&campaign=' + (_idl.campaign || '') + '&variant=' + (_idl.variant || 'banner');
177 document.getElementsByTagName('body')[0].appendChild(idl);
178 })();
179 </script>
180 <?php
181 }
182
183 /**
184 * Widget form in the dashboard.
185 *
186 * @see WP_Widget::form()
187 *
188 * @param array $instance Previously saved values from database.
189 */
190 public function form( $instance ) {
191 $instance = wp_parse_args( $instance, $this->defaults );
192
193 // Hide first two form fields if no current campaigns.
194 if ( false === $this->no_current ) {
195 echo '<p><label>';
196 echo esc_html__( 'Which Internet Defense League campaign do you want to participate in?', 'jetpack' ) . '<br />';
197 $this->select( 'campaign', $this->campaigns, $instance['campaign'] );
198 echo '</label></p>';
199
200 echo '<p><label>';
201 echo esc_html__( 'How do you want to promote the campaign?', 'jetpack' ) . '<br />';
202 $this->select( 'variant', $this->variants, $instance['variant'] );
203 echo '</label></p>';
204 }
205
206 echo '<p><label>';
207 echo esc_html__( 'Which badge would you like to display?', 'jetpack' ) . '<br />';
208 $this->select( 'badge', $this->badges, $instance['badge'] );
209 echo '</label></p>';
210
211 echo '<p>' . wp_kses(
212 sprintf(
213 /* translators: %s is an HTML link to the website of an internet campaign called the "Internet Defense League" */
214 _x( 'Learn more about the %s', 'the Internet Defense League', 'jetpack' ),
215 '<a href="https://www.internetdefenseleague.org/">Internet Defense League</a>'
216 ),
217 array(
218 'a' => array(
219 'href' => array(),
220 ),
221 )
222 ) . '</p>';
223 }
224
225 /**
226 * Display a select form field.
227 *
228 * @param string $field_name Name of the field.
229 * @param array $options Array of options.
230 * @param string $default Default option.
231 */
232 public function select( $field_name, $options, $default = null ) {
233 echo '<select class="widefat" name="' . esc_attr( $this->get_field_name( $field_name ) ) . '">';
234 foreach ( $options as $option_slug => $option_name ) {
235 echo '<option value="' . esc_attr( $option_slug ) . '"' . selected( $option_slug, $default, false ) . '>' . esc_html( $option_name ) . '</option>';
236 }
237 echo '</select>';
238 }
239
240 /**
241 * Update widget.
242 *
243 * @see WP_Widget::update()
244 *
245 * @param array $new_instance New widget instance data.
246 * @param array $old_instance Old widget instance data.
247 */
248 public function update( $new_instance, $old_instance ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
249 $instance = array();
250
251 $instance['campaign'] = ( isset( $new_instance['campaign'] ) && isset( $this->campaigns[ $new_instance['campaign'] ] ) ) ? $new_instance['campaign'] : $this->defaults['campaign'];
252 $instance['variant'] = ( isset( $new_instance['variant'] ) && isset( $this->variants[ $new_instance['variant'] ] ) ) ? $new_instance['variant'] : $this->defaults['variant'];
253 $instance['badge'] = ( isset( $new_instance['badge'] ) && isset( $this->badges[ $new_instance['badge'] ] ) ) ? $new_instance['badge'] : $this->defaults['badge'];
254
255 return $instance;
256 }
257 }
258
259 /**
260 * Register the widget.
261 */
262 function jetpack_internet_defense_league_init() {
263 register_widget( 'Jetpack_Internet_Defense_League_Widget' );
264 }
265
266 add_action( 'widgets_init', 'jetpack_internet_defense_league_init' );
267