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