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