PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 7.0.3
Jetpack – WP Security, Backup, Speed, & Growth v7.0.3
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 / eu-cookie-law.php
jetpack / modules / widgets Last commit date
authors 8 years ago contact-info 9 years ago eu-cookie-law 8 years ago facebook-likebox 10 years ago flickr 8 years ago gallery 9 years ago goodreads 8 years ago google-plus 6 years ago google-translate 8 years ago image-widget 8 years ago migrate-to-core 8 years ago milestone 7 years ago my-community 8 years ago search 8 years ago simple-payments 7 years ago social-icons 8 years ago social-media-icons 8 years ago top-posts 8 years ago wordpress-post-widget 7 years ago authors.php 7 years ago blog-stats.php 7 years ago contact-info.php 7 years ago customizer-controls.css 9 years ago customizer-utils.js 7 years ago eu-cookie-law.php 7 years ago facebook-likebox.php 7 years ago flickr.php 7 years ago gallery.php 7 years ago goodreads.php 7 years ago google-translate.php 7 years ago gravatar-profile.css 9 years ago gravatar-profile.php 7 years ago image-widget.php 7 years ago internet-defense-league.php 7 years ago mailchimp.php 7 years ago milestone.php 9 years ago my-community.php 7 years ago rsslinks-widget.php 7 years ago search.php 7 years ago simple-payments.php 7 years ago social-icons.php 7 years ago social-media-icons.php 7 years ago top-posts.php 7 years ago twitter-timeline-admin.js 9 years ago twitter-timeline.php 7 years ago upcoming-events.php 7 years ago wordpress-post-widget.php 7 years ago
eu-cookie-law.php
302 lines
1 <?php
2
3 /**
4 * Disable direct access/execution to/of the widget code.
5 */
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit;
8 }
9
10 if ( ! class_exists( 'Jetpack_EU_Cookie_Law_Widget' ) ) {
11 /**
12 * EU Cookie Law Widget
13 *
14 * Display the EU Cookie Law banner in the bottom part of the screen.
15 */
16 class Jetpack_EU_Cookie_Law_Widget extends WP_Widget {
17 /**
18 * EU Cookie Law cookie name.
19 *
20 * @var string
21 */
22 public static $cookie_name = 'eucookielaw';
23
24 /**
25 * Default hide options.
26 *
27 * @var array
28 */
29 private $hide_options = array(
30 'button',
31 'scroll',
32 'time',
33 );
34
35 /**
36 * Default text options.
37 *
38 * @var array
39 */
40 private $text_options = array(
41 'default',
42 'custom',
43 );
44
45 /**
46 * Default color scheme options.
47 *
48 * @var array
49 */
50 private $color_scheme_options = array(
51 'default',
52 'negative',
53 );
54
55 /**
56 * Default policy URL options.
57 *
58 * @var array
59 */
60 private $policy_url_options = array(
61 'default',
62 'custom',
63 );
64
65 /**
66 * Widget position options.
67 *
68 * @var array
69 */
70 private $position_options = array(
71 'bottom',
72 'top',
73 );
74
75 /**
76 * Constructor.
77 */
78 function __construct() {
79 parent::__construct(
80 'eu_cookie_law_widget',
81 /** This filter is documented in modules/widgets/facebook-likebox.php */
82 apply_filters( 'jetpack_widget_name', esc_html__( 'Cookies & Consents Banner', 'jetpack' ) ),
83 array(
84 'description' => esc_html__( 'Display a banner for EU Cookie Law and GDPR compliance.', 'jetpack' ),
85 'customize_selective_refresh' => true,
86 ),
87 array()
88 );
89
90 if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
91 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_frontend_scripts' ) );
92 }
93 }
94
95 /**
96 * Enqueue scripts and styles.
97 */
98 function enqueue_frontend_scripts() {
99 wp_enqueue_style( 'eu-cookie-law-style', plugins_url( 'eu-cookie-law/style.css', __FILE__ ), array(), '20170403' );
100 wp_enqueue_script(
101 'eu-cookie-law-script',
102 Jetpack::get_file_url_for_environment(
103 '_inc/build/widgets/eu-cookie-law/eu-cookie-law.min.js',
104 'modules/widgets/eu-cookie-law/eu-cookie-law.js'
105 ),
106 array( 'jquery' ),
107 '20180522',
108 true
109 );
110 }
111
112 /**
113 * Return an associative array of default values.
114 *
115 * These values are used in new widgets.
116 *
117 * @return array Default values for the widget options.
118 */
119 public function defaults() {
120 return array(
121 'hide' => $this->hide_options[0],
122 'hide-timeout' => 30,
123 'consent-expiration' => 180,
124 'text' => $this->text_options[0],
125 'customtext' => '',
126 'color-scheme' => $this->color_scheme_options[0],
127 'policy-url' => get_option( 'wp_page_for_privacy_policy' ) ? $this->policy_url_options[1] : $this->policy_url_options[0],
128 'default-policy-url' => 'https://automattic.com/cookies/',
129 'custom-policy-url' => get_option( 'wp_page_for_privacy_policy' ) ? get_permalink( (int) get_option( 'wp_page_for_privacy_policy' ) ) : '',
130 'position' => $this->position_options[0],
131 'policy-link-text' => esc_html__( 'Cookie Policy', 'jetpack' ),
132 'button' => esc_html__( 'Close and accept', 'jetpack' ),
133 'default-text' => esc_html__( "Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use. \r\nTo find out more, including how to control cookies, see here:", 'jetpack' ),
134 );
135 }
136
137 /**
138 * Front-end display of the widget.
139 *
140 * @param array $args Widget arguments.
141 * @param array $instance Saved values from database.
142 */
143 public function widget( $args, $instance ) {
144 /**
145 * Filters the display of the EU Cookie Law widget.
146 *
147 * @since 6.1.1
148 *
149 * @param bool true Should the EU Cookie Law widget be disabled. Default to false.
150 */
151 if ( apply_filters( 'jetpack_disable_eu_cookie_law_widget', false ) ) {
152 return;
153 }
154
155 $instance = wp_parse_args( $instance, $this->defaults() );
156
157 $classes = array();
158 $classes['hide'] = 'hide-on-' . esc_attr( $instance['hide'] );
159 if ( 'negative' === $instance['color-scheme'] ) {
160 $classes['negative'] = 'negative';
161 }
162
163 if ( 'top' === $instance['position'] ) {
164 $classes['top'] = 'top';
165 }
166
167 if ( Jetpack::is_module_active( 'wordads' ) ) {
168 $classes['ads'] = 'ads-active';
169 $classes['hide'] = 'hide-on-button';
170 }
171
172 echo $args['before_widget'];
173 require( dirname( __FILE__ ) . '/eu-cookie-law/widget.php' );
174 echo $args['after_widget'];
175 /** This action is already documented in modules/widgets/gravatar-profile.php */
176 do_action( 'jetpack_stats_extra', 'widget_view', 'eu_cookie_law' );
177 }
178
179 /**
180 * Back-end widget form.
181 *
182 * @param array $instance Previously saved values from database.
183 */
184 public function form( $instance ) {
185 $instance = wp_parse_args( $instance, $this->defaults() );
186 if ( Jetpack::is_module_active( 'wordads' ) ) {
187 $instance['hide'] = 'button';
188 }
189
190 wp_enqueue_script(
191 'eu-cookie-law-widget-admin',
192 Jetpack::get_file_url_for_environment(
193 '_inc/build/widgets/eu-cookie-law/eu-cookie-law-admin.min.js',
194 'modules/widgets/eu-cookie-law/eu-cookie-law-admin.js'
195 ),
196 array( 'jquery' ),
197 20180417
198 );
199
200 require( dirname( __FILE__ ) . '/eu-cookie-law/form.php' );
201 }
202
203 /**
204 * Sanitize widget form values as they are saved.
205 *
206 * @param array $new_instance Values just sent to be saved.
207 * @param array $old_instance Previously saved values from database.
208 * @return array Updated safe values to be saved.
209 */
210 public function update( $new_instance, $old_instance ) {
211 $instance = array();
212 $defaults = $this->defaults();
213
214 $instance['hide'] = $this->filter_value( isset( $new_instance['hide'] ) ? $new_instance['hide'] : '', $this->hide_options );
215 $instance['text'] = $this->filter_value( isset( $new_instance['text'] ) ? $new_instance['text'] : '', $this->text_options );
216 $instance['color-scheme'] = $this->filter_value( isset( $new_instance['color-scheme'] ) ? $new_instance['color-scheme'] : '', $this->color_scheme_options );
217 $instance['policy-url'] = $this->filter_value( isset( $new_instance['policy-url'] ) ? $new_instance['policy-url'] : '', $this->policy_url_options );
218 $instance['position'] = $this->filter_value( isset( $new_instance['position'] ) ? $new_instance['position'] : '', $this->position_options );
219
220 if ( isset( $new_instance['hide-timeout'] ) ) {
221 // Time can be a value between 3 and 1000 seconds.
222 $instance['hide-timeout'] = min( 1000, max( 3, intval( $new_instance['hide-timeout'] ) ) );
223 }
224
225 if ( isset( $new_instance['consent-expiration'] ) ) {
226 // Time can be a value between 1 and 365 days.
227 $instance['consent-expiration'] = min( 365, max( 1, intval( $new_instance['consent-expiration'] ) ) );
228 }
229
230 if ( isset( $new_instance['customtext'] ) ) {
231 $instance['customtext'] = mb_substr( wp_kses( $new_instance['customtext'], array() ), 0, 4096 );
232 } else {
233 $instance['text'] = $this->text_options[0];
234 }
235
236 if ( isset( $new_instance['policy-url'] ) ) {
237 $instance['policy-url'] = 'custom' === $new_instance['policy-url']
238 ? 'custom'
239 : 'default';
240 } else {
241 $instance['policy-url'] = $this->policy_url_options[0];
242 }
243
244 if ( 'custom' === $instance['policy-url'] && isset( $new_instance['custom-policy-url'] ) ) {
245 $instance['custom-policy-url'] = esc_url( $new_instance['custom-policy-url'], array( 'http', 'https' ) );
246
247 if ( strlen( $instance['custom-policy-url'] ) < 10 ) {
248 unset( $instance['custom-policy-url'] );
249 global $wp_customize;
250 if ( ! isset( $wp_customize ) ) {
251 $instance['policy-url'] = $this->policy_url_options[0];
252 }
253 }
254 }
255
256 if ( isset( $new_instance['policy-link-text'] ) ) {
257 $instance['policy-link-text'] = trim( mb_substr( wp_kses( $new_instance['policy-link-text'], array() ), 0, 100 ) );
258 }
259
260 if ( empty( $instance['policy-link-text'] ) || $instance['policy-link-text'] == $defaults['policy-link-text'] ) {
261 unset( $instance['policy-link-text'] );
262 }
263
264 if ( isset( $new_instance['button'] ) ) {
265 $instance['button'] = trim( mb_substr( wp_kses( $new_instance['button'], array() ), 0, 100 ) );
266 }
267
268 if ( empty( $instance['button'] ) || $instance['button'] == $defaults['button'] ) {
269 unset( $instance['button'] );
270 }
271
272 // Show the banner again if a setting has been changed.
273 setcookie( self::$cookie_name, '', time() - 86400, '/' );
274
275 return $instance;
276 }
277
278 /**
279 * Check if the value is allowed and not empty.
280 *
281 * @param string $value Value to check.
282 * @param array $allowed Array of allowed values.
283 *
284 * @return string $value if pass the check or first value from allowed values.
285 */
286 function filter_value( $value, $allowed = array() ) {
287 $allowed = (array) $allowed;
288 if ( empty( $value ) || ( ! empty( $allowed ) && ! in_array( $value, $allowed ) ) ) {
289 $value = $allowed[0];
290 }
291 return $value;
292 }
293 }
294
295 // Register Jetpack_EU_Cookie_Law_Widget widget.
296 function jetpack_register_eu_cookie_law_widget() {
297 register_widget( 'Jetpack_EU_Cookie_Law_Widget' );
298 };
299
300 add_action( 'widgets_init', 'jetpack_register_eu_cookie_law_widget' );
301 }
302