iubenda Cookie Solution for GDPR - Version 1.15.5

Version Description

  • Fix: Skip parsing engine when scripts blocking is disabled
  • Tweak: Update iubenda logo
Download this release

Release Info

Developer dfactory
Plugin Icon 128x128 iubenda Cookie Solution for GDPR
Version 1.15.5
Comparing to
See all releases

Code changes from version 1.15.4 to 1.15.5

Files changed (2) hide show
  1. iubenda_cookie_solution.php +71 -59
  2. readme.txt +8 -4
iubenda_cookie_solution.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: iubenda Cookie Solution for GDPR
4
  Plugin URI: https://www.iubenda.com
5
  Description: iubenda Cookie Solution allows you to make your website GDPR compliant and manage all aspects of cookie law on WP.
6
- Version: 1.15.4
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
@@ -12,7 +12,7 @@ Text Domain: iubenda-cookie-law-solution
12
  Domain Path: /languages
13
 
14
  ibenda Cookie Solution
15
- Copyright (C) 2018, iubenda s.r.l
16
 
17
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
18
 
@@ -35,7 +35,7 @@ $iubenda_cookie_law_solution = new iubenda_Cookie_Law_Solution();
35
  * iubenda_Cookie_Law_Solution final class.
36
  *
37
  * @class iubenda_Cookie_Law_Solution
38
- * @version 1.15.3
39
  */
40
  class iubenda_Cookie_Law_Solution {
41
 
@@ -53,7 +53,7 @@ class iubenda_Cookie_Law_Solution {
53
  'custom_iframes' => array(),
54
  'deactivation' => false
55
  );
56
- public $version = '1.15.4';
57
  public $no_html = false;
58
  public $links = array();
59
  public $multilang = false;
@@ -88,7 +88,7 @@ class iubenda_Cookie_Law_Solution {
88
 
89
  /**
90
  * Initialize plugin.
91
- *
92
  * @return void
93
  */
94
  public function init() {
@@ -130,7 +130,7 @@ class iubenda_Cookie_Law_Solution {
130
 
131
  // load iubenda parser
132
  require_once( dirname( __FILE__ ) . '/iubenda-cookie-class/iubenda.class.php' );
133
-
134
  $links = array(
135
  'en' => array(
136
  'guide' => 'https://www.iubenda.com/en/iubenda-cookie-law-solution',
@@ -147,17 +147,17 @@ class iubenda_Cookie_Law_Solution {
147
  'documentation' => 'https://www.iubenda.com/it/help/posts/810',
148
  )
149
  );
150
-
151
  $locale = explode( '_', get_locale() );
152
  $locale_code = $locale[0];
153
-
154
  // assign links
155
  $this->links = in_array( $locale_code, array_keys( $links ) ) ? $links[$locale_code] : $links['en'];
156
  }
157
 
158
  /**
159
  * Plugin activation.
160
- *
161
  * @return void
162
  */
163
  public function activation() {
@@ -167,7 +167,7 @@ class iubenda_Cookie_Law_Solution {
167
 
168
  /**
169
  * Plugin deactivation.
170
- *
171
  * @return void
172
  */
173
  public function deactivation() {
@@ -180,7 +180,7 @@ class iubenda_Cookie_Law_Solution {
180
 
181
  /**
182
  * Plugin options migration for versions < 1.14.0
183
- *
184
  * @return void
185
  */
186
  public function update_plugin() {
@@ -246,7 +246,7 @@ class iubenda_Cookie_Law_Solution {
246
 
247
  /**
248
  * Handle shortcode function.
249
- *
250
  * @param array $atts
251
  * @param mixed $content
252
  * @return mixed
@@ -264,12 +264,12 @@ class iubenda_Cookie_Law_Solution {
264
  if ( $this->options['menu_position'] === 'submenu' ) {
265
  // sub menu
266
  add_submenu_page(
267
- 'options-general.php', 'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda-cookie-law-solution', array( $this, 'options_page' ), 'none'
268
  );
269
  } else {
270
  // top menu
271
  add_menu_page(
272
- 'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda-cookie-law-solution', array( $this, 'options_page' ), 'none'
273
  );
274
  }
275
  }
@@ -285,7 +285,7 @@ class iubenda_Cookie_Law_Solution {
285
 
286
  /**
287
  * Load admin scripts and styles.
288
- *
289
  * @param string $page
290
  * @return void
291
  */
@@ -302,14 +302,14 @@ class iubenda_Cookie_Law_Solution {
302
 
303
  /**
304
  * Load admin style inline, for menu icon only.
305
- *
306
  * @return mixed
307
  */
308
  public function admin_print_styles() {
309
  echo '
310
  <style>
311
  a.toplevel_page_iubenda-cookie-law-solution .wp-menu-image {
312
- background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkuNDE4IiBoZWlnaHQ9IjI3My4wMTgiIHZpZXdCb3g9IjAgMCAxMDkuNDE4IDI3My4wMTgiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSIjRkZGIiBkPSJNMTA5LjQxOCA1NC41M0MxMDkuNDE4IDI0LjQwNCA4NC45MzYgMCA1NC43MDggMCAyNC40ODYgMCAwIDI0LjQwNCAwIDU0LjUzYzAgMTQuNzY1IDUuOSAyOC4xNCAxNS40ODcgMzcuOTUzTDQuMTI0IDI3My4wMThoMTAzLjg3TDk2LjQ3NyA4OS43MzJjOC4wODYtOS41MDQgMTIuOTQtMjEuNzgyIDEyLjk0LTM1LjIwMnptLTY1LjM2LTkuOTAzQzQ3LjAwNyA0MS42OCA1MC42MyA0MC4yIDU0LjkzIDQwLjJjNC4yIDAgNy43NzMgMS40OCAxMC43MjUgNC40MjcgMi45NDggMi45NDggNC40MjQgNi41MjIgNC40MjQgMTAuNzI0IDAgNC4xOTctMS40NzYgNy43OTUtNC40MjQgMTAuNzk1LTIuOTUyIDMtNi41MjQgNC40OTgtMTAuNzI0IDQuNDk4LTQuMTk4IDAtNy44LTEuNDk4LTEwLjc5Ny00LjQ5OC0zLTMtNC41LTYuNi00LjUtMTAuNzk0LS4wMDItNC4yIDEuNDczLTcuNzc0IDQuNDI2LTEwLjcyM3ptNDQuMTY1IDIwOC44M0gyMS40ODZ2LTUuNDAyYzYuNyAwIDExLjItLjY0NiAxMy40OTgtMS45NDYgMi4yOTgtMS4yOTUgNC4xMjUtMy40NSA1LjQ3NS02LjQ0NyAxLjM0Ni0zIDIuMDIzLTguNzQ3IDIuMDIzLTE3LjI0N3YtNTIuOTQzYzAtMTQuODk4LS40NTMtMjQuNTQtMS4zNTItMjguOTQ0LS42OTgtMy4xOTYtMS43OTctNS40Mi0zLjMtNi42Ny0xLjQ5NS0xLjI1LTMuNTQ4LTEuODc0LTYuMTQ3LTEuODc0LTIuNzk4IDAtNi4yLjc1LTEwLjE5NyAyLjI1bC0yLjEwMi01LjQgNDEuMzk0LTE2Ljc5N2g2LjZ2MTEwLjM3N2MwIDguNTk4LjYyNCAxNC4zMiAxLjg3NSAxNy4xNyAxLjI1IDIuODQ4IDMuMDk2IDQuOTc0IDUuNTQ4IDYuMzc0IDIuNDUgMS40MDMgNi45MjYgMi4wOTcgMTMuNDIzIDIuMDk3djUuNHoiLz48L3N2Zz4=);
313
  background-position: center center;
314
  background-repeat: no-repeat;
315
  background-size: 7px auto;
@@ -317,20 +317,20 @@ class iubenda_Cookie_Law_Solution {
317
  </style>
318
  ';
319
  }
320
-
321
  /**
322
  * Redirect to the correct urle after switching menu position.
323
- *
324
  * @global string $pagenow
325
  * @return void
326
  */
327
  public function admin_page_redirect() {
328
  if ( ! empty( $_GET['settings-updated'] ) && ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'iubenda-cookie-law-solution' ) ) ) {
329
  global $pagenow;
330
-
331
  // no redirect by default
332
  $redirect_to = false;
333
-
334
  if ( $this->options['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
335
  // sub menu
336
  $redirect_to = admin_url( 'options-general.php?page=iubenda-cookie-law-solution' );
@@ -338,18 +338,18 @@ class iubenda_Cookie_Law_Solution {
338
  // top menu
339
  $redirect_to = admin_url( 'admin.php?page=iubenda-cookie-law-solution' );
340
  }
341
-
342
  if ( $redirect_to ) {
343
  // make sure it's current host location
344
  wp_safe_redirect( add_query_arg( 'settings-updated', true, $redirect_to ) );
345
  exit;
346
- }
347
  }
348
  }
349
 
350
  /**
351
  * Add wp_head content.
352
- *
353
  * @return void
354
  */
355
  public function wp_head() {
@@ -395,16 +395,16 @@ class iubenda_Cookie_Law_Solution {
395
  $iubenda_code .= "\n
396
  <script>
397
  var iCallback = function() {};
398
-
399
  if ( typeof _iub.csConfiguration != 'undefined' ) {
400
  if ( 'callback' in _iub.csConfiguration ) {
401
  if ( 'onConsentGiven' in _iub.csConfiguration.callback )
402
  iCallback = _iub.csConfiguration.callback.onConsentGiven;
403
-
404
  _iub.csConfiguration.callback.onConsentGiven = function() {
405
  iCallback();
406
-
407
- /* separator */
408
  jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
409
  }
410
  }
@@ -417,7 +417,7 @@ class iubenda_Cookie_Law_Solution {
417
 
418
  /**
419
  * Initialize html output.
420
- *
421
  * @return void
422
  */
423
  public function output_start() {
@@ -427,7 +427,7 @@ class iubenda_Cookie_Law_Solution {
427
 
428
  /**
429
  * Finish html output.
430
- *
431
  * @return void
432
  */
433
  public function output_end() {
@@ -437,25 +437,27 @@ class iubenda_Cookie_Law_Solution {
437
 
438
  /**
439
  * Handle final html output.
440
- *
441
  * @param mixed $output
442
  * @return mixed
443
  */
444
  public function output_callback( $output ) {
445
- // break on ajax, xmlrpc or iub_no_parse request
 
 
446
  if (
447
- ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
448
- || ( defined( 'DOING_AJAX' ) && DOING_AJAX )
449
- || isset( $_SERVER["HTTP_X_REQUESTED_WITH"] )
450
- || isset( $_GET['iub_no_parse'] )
451
  )
452
  return $output;
453
 
454
- // break on admin side
455
  if ( is_admin() )
456
  return $output;
457
 
458
- // break on rss feed
459
  if ( is_feed() && $this->options['output_feed'] )
460
  return $output;
461
 
@@ -464,8 +466,16 @@ class iubenda_Cookie_Law_Solution {
464
  elseif ( strpos( $output, "<html" ) > 200 )
465
  return $output;
466
 
467
- // check whether to run parser or not
468
- if ( ! ( $this->options['parse'] && ( ! iubendaParser::consent_given() || ( iubendaParser::consent_given() && ! $this->options['skip_parsing'] ) ) ) || iubendaParser::bot_detected() || $_POST || $this->no_html )
 
 
 
 
 
 
 
 
469
  return $output;
470
 
471
  $startime = microtime( true );
@@ -514,12 +524,12 @@ class iubenda_Cookie_Law_Solution {
514
 
515
  /**
516
  * Display errors and notices.
517
- *
518
  * @global string $pagenow
519
  */
520
  public function settings_errors() {
521
  global $pagenow;
522
-
523
  // force display notices in top menu settings page
524
  if ( $pagenow != 'options-general.php' )
525
  settings_errors( 'iub_settings_errors' );
@@ -527,7 +537,7 @@ class iubenda_Cookie_Law_Solution {
527
 
528
  /**
529
  * Code option.
530
- *
531
  * @return mixed
532
  */
533
  public function iub_code() {
@@ -555,7 +565,7 @@ class iubenda_Cookie_Law_Solution {
555
  $code = ! empty( $this->options['code_' . $lang_id] ) ? html_entity_decode( trim( wp_kses( $this->options['code_' . $lang_id], $this->get_allowed_html() ) ) ) : '';
556
  // handle default, if empty
557
  $code = empty( $code ) && $lang_id == $this->lang_default ? html_entity_decode( trim( wp_kses( $this->options['code_default'], $this->get_allowed_html() ) ) ) : $code;
558
-
559
  echo '
560
  <div id="tab-panel-' . $lang_id . '" class="help-tab-content' . ( $this->lang_default == $lang_id ? ' active' : '' ) . '">
561
  <textarea name="iubenda_cookie_law_solution[code_' . $lang_id . ']" class="large-text" cols="50" rows="10">' . $code . '</textarea>
@@ -611,7 +621,7 @@ class iubenda_Cookie_Law_Solution {
611
 
612
  /**
613
  * Parsing option.
614
- *
615
  * @return mixed
616
  */
617
  public function iub_parse() {
@@ -635,7 +645,7 @@ class iubenda_Cookie_Law_Solution {
635
 
636
  /**
637
  * Ctype option.
638
- *
639
  * @return mixed
640
  */
641
  public function iub_ctype() {
@@ -647,7 +657,7 @@ class iubenda_Cookie_Law_Solution {
647
 
648
  /**
649
  * RSS feed option.
650
- *
651
  * @return mixed
652
  */
653
  public function iub_output_feed() {
@@ -656,10 +666,10 @@ class iubenda_Cookie_Law_Solution {
656
  <label><input id="iub_ctype" type="checkbox" name="iubenda_cookie_law_solution[output_feed]" value="1" ' . checked( true, (bool) $this->options['output_feed'], false ) . '/>' . __( 'Do not run the plugin inside the RSS feed (recommended)', 'iubenda-cookie-law-solution' ) . '</label>
657
  </div>';
658
  }
659
-
660
  /**
661
  * Menu option.
662
- *
663
  * @return mixed
664
  */
665
  public function iub_menu_position() {
@@ -673,7 +683,7 @@ class iubenda_Cookie_Law_Solution {
673
 
674
  /**
675
  * Deactivation option.
676
- *
677
  * @return mixed
678
  */
679
  public function iub_deactivation() {
@@ -685,13 +695,13 @@ class iubenda_Cookie_Law_Solution {
685
 
686
  /**
687
  * Save options.
688
- *
689
  * @return void
690
  */
691
  public function save_options( $input ) {
692
  if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) )
693
  return $input;
694
-
695
  // save options
696
  if ( isset( $_POST['save_iubenda_options'] ) ) {
697
  $input['parse'] = (bool) isset( $input['parse'] );
@@ -706,7 +716,7 @@ class iubenda_Cookie_Law_Solution {
706
  if ( $this->multilang && ! empty( $this->languages ) ) {
707
  foreach ( $this->languages as $lang_id => $lang_name ) {
708
  $input['code_' . $lang_id] = ! empty( $input['code_' . $lang_id] ) ? wp_kses( $input['code_' . $lang_id], $this->get_allowed_html() ) : '';
709
-
710
  // handle default lang too
711
  if ( $lang_id == $this->lang_default ) {
712
  $input['code_default'] = ! empty( $input['code_' . $lang_id] ) ? wp_kses( $input['code_' . $lang_id], $this->get_allowed_html() ) : $this->options['code_default'];
@@ -754,7 +764,7 @@ class iubenda_Cookie_Law_Solution {
754
 
755
  return $input;
756
  }
757
-
758
  /**
759
  * Get allowed iubenda script HTML.
760
  *
@@ -790,7 +800,7 @@ class iubenda_Cookie_Law_Solution {
790
 
791
  /**
792
  * Load admin options page.
793
- *
794
  * @return void
795
  */
796
  public function options_page() {
@@ -800,9 +810,11 @@ class iubenda_Cookie_Law_Solution {
800
  ?>
801
  <div class="wrap">
802
  <div id="iubenda-view">
803
- <?php
804
  echo '
805
- <a class="iubenda-link" href="http://iubenda.com"><img id="iubenda-logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAAAdCAMAAAB8M6mmAAAAhFBMVEUAAAA0O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0I0O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr380O0Ibr3/////G69+35tdTw5/U8Ofx+vdiyKd+0rep4c/i9e8otIeN17/AB1g0AAAAHnRSTlMAEBAgIDAwQEBQUGBwcICAkJCgoLCwwMDQ0ODg8PCQCZ0FAAACrklEQVR4Xr2V63LbIBCFF1OZKBCiKAohlK7kXHt5//cruyDjjFTX42l9fnhh1+yHGB0EAJu7kXS/gUto8zRmPV2Edz/OergA7ctYtV0DCKPPBCgrF7kb4rzs3incrCzpEd05LKEDolqkb4nzNr1RuF1UB8TzcE1E/CPu+7Rbxwnozn06Eddw25H0wr9XsJQh3Flyazh4HGd9hRWpf4zbfptx15fAwR53dRHcWHFSkQDKoOJ05w5M1NjBdXpvFU0WW9TlHidN73rbVtz7844PU7mIiADQOkyaccIjqQOW6DHQ/3yTxiYg2pQhqVIfMPYDYiwZHdF3gdpk3K/XadoVH6hCgbbivMcsyzSPhntiFBAcbcOj6xI/QKl7UYynciOTj9YWJ/z8scfBjIOKQ68ADC2n8+oKNc37FHuqp7xMsQGuRzHvV1U/tMVQVwm0O4oLIg+4v0CkKXNiChZxEMVmbQrN/tBjweVdygXu7g84B3N/D6AxWhYdY8ZZgDroM6QaQUfGiwXu8Tiu5UyP0e3VLHERccUIqseCuzkVJzjjMEDVAtfgCk4HdLrgbk/FQcHhMZxa4hqPLg0WuKcTce1fcPITTvMbtoIbj+MaHvWIAxQFuXqYuuLYMKH08xQeTsVpbqRrPx1h9VVxFcd+6w77PX7G+dmtC5zDILK90XAl2nUjoD7A2fJUzRK3AYCBLzc5JCwqIarNTdmHxaRg7YBR5Gl3iJOx8EyKVkjFuxO8qhky7nV6m79ALXdDLyhGxXdf0EJYjO1s9yLFN2TZjgiIngaaSt4FjPla55AWc5o+dx/P0zQ9fzCOT5EfMBU19+nygl5CkeVEaCo6gOfI76AKuewwWgnQ0NRJcNwVxirGgdSGOlkFs5SxLZFrwppaXUoZ6qD1PFWSQ8p9wl3D/9ZvoAF23RgFj1kAAAAASUVORK5CYII="/></a>
 
 
806
  <p class="iubenda-text">
807
  ' . __( "This plugin is the easiest and most comprehensive way to adapt your WordPress site to the European cookie law. Upon your user's first visit, the plugin will take care of collecting their consent, of blocking the most popular among the scripts that install cookies and subsequently reactivate these scripts as soon as consent is provided. The basic settings include obtaining consent by a simple scroll action (the most effective method) and script reactivation without refreshing the page.", 'iubenda-cookie-law-solution' ) . '
808
  </p>
@@ -810,7 +822,7 @@ class iubenda_Cookie_Law_Solution {
810
  <span class="iubenda-title">' . __( "Would you like to know more about the cookie law?", 'iubenda-cookie-law-solution' ) . '</span><br />
811
  ' . sprintf( __( "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete guide to the cookie law.</a>", 'iubenda-cookie-law-solution' ), $this->links['guide'] ) . '
812
  </p>
813
- <p class="iubenda-text">
814
  <span class="iubenda-title">' . __( "What is the full functionality of the plugin?", 'iubenda-cookie-law-solution' ) . '</span><br />
815
  ' . sprintf( __( "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin page.</a>", 'iubenda-cookie-law-solution' ), $this->links['plugin_page'] ) . '
816
  </p>
@@ -847,4 +859,4 @@ class iubenda_Cookie_Law_Solution {
847
  <?php
848
  }
849
 
850
- }
3
  Plugin Name: iubenda Cookie Solution for GDPR
4
  Plugin URI: https://www.iubenda.com
5
  Description: iubenda Cookie Solution allows you to make your website GDPR compliant and manage all aspects of cookie law on WP.
6
+ Version: 1.15.5
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
12
  Domain Path: /languages
13
 
14
  ibenda Cookie Solution
15
+ Copyright (C) 2018-2019, iubenda s.r.l
16
 
17
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
18
 
35
  * iubenda_Cookie_Law_Solution final class.
36
  *
37
  * @class iubenda_Cookie_Law_Solution
38
+ * @version 1.15.5
39
  */
40
  class iubenda_Cookie_Law_Solution {
41
 
53
  'custom_iframes' => array(),
54
  'deactivation' => false
55
  );
56
+ public $version = '1.15.5';
57
  public $no_html = false;
58
  public $links = array();
59
  public $multilang = false;
88
 
89
  /**
90
  * Initialize plugin.
91
+ *
92
  * @return void
93
  */
94
  public function init() {
130
 
131
  // load iubenda parser
132
  require_once( dirname( __FILE__ ) . '/iubenda-cookie-class/iubenda.class.php' );
133
+
134
  $links = array(
135
  'en' => array(
136
  'guide' => 'https://www.iubenda.com/en/iubenda-cookie-law-solution',
147
  'documentation' => 'https://www.iubenda.com/it/help/posts/810',
148
  )
149
  );
150
+
151
  $locale = explode( '_', get_locale() );
152
  $locale_code = $locale[0];
153
+
154
  // assign links
155
  $this->links = in_array( $locale_code, array_keys( $links ) ) ? $links[$locale_code] : $links['en'];
156
  }
157
 
158
  /**
159
  * Plugin activation.
160
+ *
161
  * @return void
162
  */
163
  public function activation() {
167
 
168
  /**
169
  * Plugin deactivation.
170
+ *
171
  * @return void
172
  */
173
  public function deactivation() {
180
 
181
  /**
182
  * Plugin options migration for versions < 1.14.0
183
+ *
184
  * @return void
185
  */
186
  public function update_plugin() {
246
 
247
  /**
248
  * Handle shortcode function.
249
+ *
250
  * @param array $atts
251
  * @param mixed $content
252
  * @return mixed
264
  if ( $this->options['menu_position'] === 'submenu' ) {
265
  // sub menu
266
  add_submenu_page(
267
+ 'options-general.php', 'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda-cookie-law-solution', array( $this, 'options_page' ), 'none'
268
  );
269
  } else {
270
  // top menu
271
  add_menu_page(
272
+ 'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda-cookie-law-solution', array( $this, 'options_page' ), 'none'
273
  );
274
  }
275
  }
285
 
286
  /**
287
  * Load admin scripts and styles.
288
+ *
289
  * @param string $page
290
  * @return void
291
  */
302
 
303
  /**
304
  * Load admin style inline, for menu icon only.
305
+ *
306
  * @return mixed
307
  */
308
  public function admin_print_styles() {
309
  echo '
310
  <style>
311
  a.toplevel_page_iubenda-cookie-law-solution .wp-menu-image {
312
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAyMzIgNTAzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS40MTQyMTsiPiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDEzNi4yNDcsMjY4LjgzMSkiPiAgICAgICAgPHBhdGggZD0iTTAsLTM1LjgxTC0zNi4zLDAuNDg5TC0zNi4zLDE0MC45NzhMMCwxNDAuOTc4TDAsLTM1LjgxWk0tMjAuOTM4LC0xMjkuODAyQy02LjI4NywtMTI5LjgwMiA1LjU4NywtMTQxLjU2NSA1LjU4NywtMTU2LjA2QzUuNTg3LC0xNzAuNTU2IC02LjI4NywtMTgyLjMwOCAtMjAuOTM4LC0xODIuMzA4Qy0zNS42LC0xODIuMzA4IC00Ny40NzQsLTE3MC41NTYgLTQ3LjQ3NCwtMTU2LjA2Qy00Ny40NzQsLTE0MS41NjUgLTM1LjYsLTEyOS44MDIgLTIwLjkzOCwtMTI5LjgwMk04OS4zNiwtMTU0LjQxNkM4OS4zNiwtMTI3LjgyNSA3OS41NzUsLTEwMy40OTkgNjMuMjY5LC04NC42NzJMODYuNjk0LDIyNi42MjhMLTEyMi43MjgsMjI2LjYyOEwtMTAwLjAyNCwtNzkuMjI5Qy0xMTkuMzUxLC05OC42NjggLTEzMS4yNDcsLTEyNS4xNTkgLTEzMS4yNDcsLTE1NC40MTZDLTEzMS4yNDcsLTIxNC4wODYgLTgxLjg3NCwtMjYyLjQzOCAtMjAuOTM4LC0yNjIuNDM4QzM5Ljk5OSwtMjYyLjQzOCA4OS4zNiwtMjE0LjA4NiA4OS4zNiwtMTU0LjQxNiIgc3R5bGU9ImZpbGw6d2hpdGU7ZmlsbC1ydWxlOm5vbnplcm87Ii8+ICAgIDwvZz48L3N2Zz4=);
313
  background-position: center center;
314
  background-repeat: no-repeat;
315
  background-size: 7px auto;
317
  </style>
318
  ';
319
  }
320
+
321
  /**
322
  * Redirect to the correct urle after switching menu position.
323
+ *
324
  * @global string $pagenow
325
  * @return void
326
  */
327
  public function admin_page_redirect() {
328
  if ( ! empty( $_GET['settings-updated'] ) && ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'iubenda-cookie-law-solution' ) ) ) {
329
  global $pagenow;
330
+
331
  // no redirect by default
332
  $redirect_to = false;
333
+
334
  if ( $this->options['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
335
  // sub menu
336
  $redirect_to = admin_url( 'options-general.php?page=iubenda-cookie-law-solution' );
338
  // top menu
339
  $redirect_to = admin_url( 'admin.php?page=iubenda-cookie-law-solution' );
340
  }
341
+
342
  if ( $redirect_to ) {
343
  // make sure it's current host location
344
  wp_safe_redirect( add_query_arg( 'settings-updated', true, $redirect_to ) );
345
  exit;
346
+ }
347
  }
348
  }
349
 
350
  /**
351
  * Add wp_head content.
352
+ *
353
  * @return void
354
  */
355
  public function wp_head() {
395
  $iubenda_code .= "\n
396
  <script>
397
  var iCallback = function() {};
398
+
399
  if ( typeof _iub.csConfiguration != 'undefined' ) {
400
  if ( 'callback' in _iub.csConfiguration ) {
401
  if ( 'onConsentGiven' in _iub.csConfiguration.callback )
402
  iCallback = _iub.csConfiguration.callback.onConsentGiven;
403
+
404
  _iub.csConfiguration.callback.onConsentGiven = function() {
405
  iCallback();
406
+
407
+ /* separator */
408
  jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
409
  }
410
  }
417
 
418
  /**
419
  * Initialize html output.
420
+ *
421
  * @return void
422
  */
423
  public function output_start() {
427
 
428
  /**
429
  * Finish html output.
430
+ *
431
  * @return void
432
  */
433
  public function output_end() {
437
 
438
  /**
439
  * Handle final html output.
440
+ *
441
  * @param mixed $output
442
  * @return mixed
443
  */
444
  public function output_callback( $output ) {
445
+ // check whether to run parser or not
446
+
447
+ // bail on ajax, xmlrpc or iub_no_parse request
448
  if (
449
+ ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
450
+ || ( defined( 'DOING_AJAX' ) && DOING_AJAX )
451
+ || isset( $_SERVER["HTTP_X_REQUESTED_WITH"] )
452
+ || isset( $_GET['iub_no_parse'] )
453
  )
454
  return $output;
455
 
456
+ // bail on admin side
457
  if ( is_admin() )
458
  return $output;
459
 
460
+ // bail on rss feed
461
  if ( is_feed() && $this->options['output_feed'] )
462
  return $output;
463
 
466
  elseif ( strpos( $output, "<html" ) > 200 )
467
  return $output;
468
 
469
+ // bail if skripts blocking disabled
470
+ if ( ! $this->options['parse'] )
471
+ return $output;
472
+
473
+ // bail if consent given and skip parsing enabled
474
+ if ( iubendaParser::consent_given() && $this->options['skip_parsing'] )
475
+ return $output;
476
+
477
+ // bail if bot detectd, no html in output or it's a post request
478
+ if ( iubendaParser::bot_detected() || $_POST || $this->no_html )
479
  return $output;
480
 
481
  $startime = microtime( true );
524
 
525
  /**
526
  * Display errors and notices.
527
+ *
528
  * @global string $pagenow
529
  */
530
  public function settings_errors() {
531
  global $pagenow;
532
+
533
  // force display notices in top menu settings page
534
  if ( $pagenow != 'options-general.php' )
535
  settings_errors( 'iub_settings_errors' );
537
 
538
  /**
539
  * Code option.
540
+ *
541
  * @return mixed
542
  */
543
  public function iub_code() {
565
  $code = ! empty( $this->options['code_' . $lang_id] ) ? html_entity_decode( trim( wp_kses( $this->options['code_' . $lang_id], $this->get_allowed_html() ) ) ) : '';
566
  // handle default, if empty
567
  $code = empty( $code ) && $lang_id == $this->lang_default ? html_entity_decode( trim( wp_kses( $this->options['code_default'], $this->get_allowed_html() ) ) ) : $code;
568
+
569
  echo '
570
  <div id="tab-panel-' . $lang_id . '" class="help-tab-content' . ( $this->lang_default == $lang_id ? ' active' : '' ) . '">
571
  <textarea name="iubenda_cookie_law_solution[code_' . $lang_id . ']" class="large-text" cols="50" rows="10">' . $code . '</textarea>
621
 
622
  /**
623
  * Parsing option.
624
+ *
625
  * @return mixed
626
  */
627
  public function iub_parse() {
645
 
646
  /**
647
  * Ctype option.
648
+ *
649
  * @return mixed
650
  */
651
  public function iub_ctype() {
657
 
658
  /**
659
  * RSS feed option.
660
+ *
661
  * @return mixed
662
  */
663
  public function iub_output_feed() {
666
  <label><input id="iub_ctype" type="checkbox" name="iubenda_cookie_law_solution[output_feed]" value="1" ' . checked( true, (bool) $this->options['output_feed'], false ) . '/>' . __( 'Do not run the plugin inside the RSS feed (recommended)', 'iubenda-cookie-law-solution' ) . '</label>
667
  </div>';
668
  }
669
+
670
  /**
671
  * Menu option.
672
+ *
673
  * @return mixed
674
  */
675
  public function iub_menu_position() {
683
 
684
  /**
685
  * Deactivation option.
686
+ *
687
  * @return mixed
688
  */
689
  public function iub_deactivation() {
695
 
696
  /**
697
  * Save options.
698
+ *
699
  * @return void
700
  */
701
  public function save_options( $input ) {
702
  if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) )
703
  return $input;
704
+
705
  // save options
706
  if ( isset( $_POST['save_iubenda_options'] ) ) {
707
  $input['parse'] = (bool) isset( $input['parse'] );
716
  if ( $this->multilang && ! empty( $this->languages ) ) {
717
  foreach ( $this->languages as $lang_id => $lang_name ) {
718
  $input['code_' . $lang_id] = ! empty( $input['code_' . $lang_id] ) ? wp_kses( $input['code_' . $lang_id], $this->get_allowed_html() ) : '';
719
+
720
  // handle default lang too
721
  if ( $lang_id == $this->lang_default ) {
722
  $input['code_default'] = ! empty( $input['code_' . $lang_id] ) ? wp_kses( $input['code_' . $lang_id], $this->get_allowed_html() ) : $this->options['code_default'];
764
 
765
  return $input;
766
  }
767
+
768
  /**
769
  * Get allowed iubenda script HTML.
770
  *
800
 
801
  /**
802
  * Load admin options page.
803
+ *
804
  * @return void
805
  */
806
  public function options_page() {
810
  ?>
811
  <div class="wrap">
812
  <div id="iubenda-view">
813
+ <?php
814
  echo '
815
+ <a class="iubenda-link" href="http://iubenda.com" title="iubenda" title="_blank">
816
+ <img id="iubenda-logo" alt="iubenda logo" width="300" height="90" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjM3LjggMjgzLjUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYzNy44IDI4My41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzFDQzY5MTt9LnN0MXtmaWxsOiM1MTUyNTQ7fTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE3OC45LDk5LjljMCw4LjItMywxNS42LTgsMjEuNGw3LjIsOTUuNGgtNjQuMmw3LTkzLjhjLTUuOS02LTkuNi0xNC4xLTkuNi0yMy4xYzAtMTguMywxNS4xLTMzLjEsMzMuOC0zMy4xUzE3OC45LDgxLjYsMTc4LjksOTkuOSBNMTQ1LjEsMTA3LjRjNC41LDAsOC4xLTMuNiw4LjEtOC4xcy0zLjYtOC04LjEtOGMtNC41LDAtOC4xLDMuNi04LjEsOFMxNDAuNiwxMDcuNCwxNDUuMSwxMDcuNCBNMTUxLjUsMTM2LjJsLTExLjEsMTEuMXY0My4xaDExLjFWMTM2LjJ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTI2NS40LDE3OC42Yy0yLjMsMS4yLTQuNywxLjgtNy4yLDEuOGMtMi44LDAtNS4zLTAuOC03LjQtMi40Yy0yLjEtMS42LTMuNS0zLjctNC4zLTYuMmMtMC44LTIuNS0xLjItNi4xLTEuMi0xMC44di0xOC4yYzAsMCwwLTAuOSwwLTIuOGMwLTAuNSwwLTIuOC0xLjUtMy41Yy0wLjItMC4xLTAuNi0wLjItMS4yLTAuM2MtMC40LDAtMC44LTAuNC0wLjgtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC44LTAuOWg5LjNjMS4zLDAsMi40LDEuMSwyLjQsMi40VjE0N2wwLDE1LjVjMCw0LjYsMC44LDcuNywyLjUsOS4xYzEuNiwxLjUsMy42LDIuMiw1LjksMi4yYzEuNiwwLDMuNC0wLjUsNS40LTEuNWMyLTEsNS4zLTIuOCw4LjEtNS42bDAtMi40bDAtMjIuMlYxNDBjMC0wLjUsMC0yLjgtMS40LTMuNWMtMC4yLTAuMS0wLjYtMC4yLTEuMS0wLjNjLTAuNC0wLjEtMC44LTAuNC0wLjgtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC45LTAuOWg5LjJjMS4zLDAsMi40LDEuMSwyLjQsMi40djhjMCwwLjEsMCwwLjEsMCwwLjJ2MTYuNmMwLDMuOCwwLDcuNCwwLDEwLjZjMCwwLjcsMCwxLjIsMCwxLjJjMCwwLjUtMC4xLDMuMSwxLjQsMy44YzAuMiwwLjEsMC42LDAuMiwxLjIsMC4zYzAuNCwwLDAuOCwwLjQsMC44LDAuOGwwLDIuNGMwLDAuNS0wLjQsMC44LTAuOSwwLjloLTkuMmMtMS4zLDAtMi40LTEuMS0yLjQtMi40bDAtNC41bDAtMi41QzI3MS45LDE3NC41LDI2Ny43LDE3Ny40LDI2NS40LDE3OC42Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTMwOS4yLDE3NmMxLjksMC45LDMuOSwxLjMsNiwxLjNjMy4yLDAsNi4zLTEuNyw5LTUuMmMyLjgtMy41LDQuMi04LjUsNC4yLTE1LjJjMC02LjEtMS40LTEwLjgtNC4yLTE0LjFjLTIuOC0zLjMtNi00LjktOS41LTQuOWMtMS45LDAtMy44LDAuNS01LjcsMS40Yy0xLjIsMC42LTIuOCwxLjgtNC43LDMuNGMtMC41LDAuNS0wLjgsMS4xLTAuOCwxLjhWMTcxYzAsMC43LDAuMywxLjQsMC44LDEuOEMzMDYsMTc0LjIsMzA3LjYsMTc1LjMsMzA5LjIsMTc2IE0yOTQuOCwxMThjMC0wLjUsMC0yLjctMS40LTMuNGMtMC4yLTAuMS0wLjMtMC4xLTAuNi0wLjJjLTAuNC0wLjEtMC42LTAuNC0wLjYtMC44bDAtMi4zYzAtMC41LDAuNC0wLjgsMC45LTAuOWgxLjhoNi41YzEuMywwLDIuMywxLDIuMywyLjNsMCwxMnYxNS40YzQuNy02LjQsOS44LTkuNiwxNS4zLTkuNmM1LDAsOS40LDIuMSwxMy4xLDYuM2MzLjcsNC4yLDUuNiw5LjksNS42LDE3LjJjMCw4LjUtMi45LDE1LjMtOC42LDIwLjVjLTQuOSw0LjQtMTAuNSw2LjctMTYuNSw2LjdjLTIuOCwwLTUuNy0wLjUtOC43LTEuNWMtMi41LTAuOS01LjEtMi4xLTcuNy0zLjdjLTAuOC0wLjUtMS4zLTEuNC0xLjMtMi40di00NmMwLTAuOSwwLTIsMC0zLjNMMjk0LjgsMTE4eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zODkuMywxNzkuMWMtMC41LDAtMC45LTAuNC0wLjktMC45bDAtMi4zYzAtMC40LDAuMy0wLjgsMC43LTAuOGMwLjUtMC4xLDAuOC0wLjEsMS0wLjJjMS40LTAuNywxLjQtMi45LDEuNC0zLjR2LTIuN2MwLDAsMC01LjgsMC0xNy41YzAtMS45LDAtMy44LDAuMS01LjVsMC00LjZjMC0wLjUsMC0xLDAtMS41YzAtMC42LDAtMi44LTEuNC0zLjVjLTAuMS0wLjEtMC4zLTAuMS0wLjUtMC4yYy0wLjQtMC4xLTAuNi0wLjQtMC42LTAuOGwwLTIuM2MwLTAuNSwwLjQtMC44LDAuOS0wLjloOC4xYzEuMywwLDIuMywxLDIuMywyLjN2My40YzAsMCwwLDAuNiwwLDEuOGMwLDAuMywwLjIsMC42LDAuNiwwLjZjMC4yLDAsMC4zLTAuMSwwLjQtMC4yYzUuNC01LjksMTIuMy04LjgsMTcuMi04LjhjMi43LDAsNSwwLjYsNi45LDEuOWMxLjksMS4zLDMuNCwzLjQsNC42LDYuM2MwLjgsMi4xLDEuMiw1LjIsMS4yLDkuNHYxNi41bDAsNi4zYzAsMC41LDAsMi43LDEuNCwzLjRjMC4yLDAuMSwwLjQsMC4yLDAuOCwwLjJjMC40LDAuMSwwLjcsMC40LDAuNywwLjhsMCwyLjNjMCwwLjUtMC40LDAuOC0wLjgsMC45Yy0wLjgsMC0xLjUsMC0yLDBoLTYuNWMtMC4xLDAtMC4zLDAtMC40LDBoLTMuMWMtMS4xLDAtMi0wLjktMi0yYzAtMSwwLjctMS45LDEuNi0yLjJjMC4xLDAsMC4xLDAsMC4yLTAuMWMxLTAuNSwxLjMtMS44LDEuNC0yLjd2LTcuNGwwLTE1LjJjMC00LjMtMC42LTcuNC0xLjctOS4zYy0xLjItMS45LTMuMS0yLjktNS44LTIuOWMtNC4yLDAtMTAuMywyLjItMTQuNCw2Ljd2MjAuOHYwLjNsMCw2LjRjMCwwLjUsMCwyLjgsMS40LDMuNWMwLjEsMCwwLjEsMCwwLjIsMC4xYzEsMC4zLDEuNiwxLjIsMS42LDIuMmMwLDEuMS0wLjksMi0yLDJIMzk0QzM5NCwxNzkuMSwzOTIuNCwxNzkuMSwzODkuMywxNzkuMSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MTUsMTUzLjRjLTYuNiwxLjMtMTAuNCwyLjItMTEuNCwyLjVjLTMuNywxLjItNi42LDIuNi02LjgsOC43Yy0wLjEsMi41LDAuOCw0LjcsMi4zLDYuM2MxLjUsMS43LDMuMywyLjUsNS4zLDIuNWMyLjUsMCw1LjctMS44LDkuNi00LjhjMC43LTAuNSwxLjEtMS4zLDEuMS0yLjJWMTUzLjR6IE01MjMuOCwxNzAuOGMwLDAuMSwwLDAuMiwwLDAuMmMwLDAuMiwwLDAuMywwLDAuNGMwLjEsMS40LDAuNiwyLjQsMS40LDIuOGMwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmMwLjQsMC4xLDAuNywwLjQsMC43LDAuOGwwLDIuNGMwLDAuNS0wLjQsMC44LTAuOSwwLjloLTguM2MtMS4zLDAtMi4zLTEtMi4zLTIuM3YtNC41Yy01LDMuOS04LjIsNi4xLTkuNSw2LjdjLTEuOSwwLjktNCwxLjMtNi4xLDEuM2MtMy40LDAtNi4yLTEuMi04LjQtMy40Yy0yLjItMi4zLTMuMy01LjMtMy4zLTkuMWMwLTIuNCwwLjUtNC40LDEuNi02LjJjMS41LTIuNCwzLjctNS4yLDcuNi02LjhjNC0xLjYsNy4zLTIsMTgtNC40YzAtMC4zLDAtNCwwLTQuM2MwLTQuNS0wLjgtOS4yLTguNC04LjdjLTUuMywwLjMtMTAuMiwyLTE0LjcsNWMtMC40LDAuMy0wLjksMC4yLTEuMi0wLjJjLTAuMS0wLjEtMC4xLTAuMy0wLjEtMC41di0yLjhjMC0xLjUsMC4zLTIuNCwwLjktMi45YzMuMS0yLjUsMTAuOS01LjUsMTguNS01YzguNCwwLjYsMTEuNCw0LDEyLjksOS4zYzAuNSwxLjYsMSwyLjgsMSw3LjV2MTQuNWMwLDIsMCw0LDAsNS44VjE3MC44eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00NjUuNCwxMzcuOGMtMS43LTEtMy40LTEuNS01LTEuNWMtMywwLTUuOCwxLjMtOC4zLDMuOGMtMi43LDIuOC00LjYsNi41LTQuNiwxMy41YzAsNywxLjUsMTIuNCw0LjYsMTYuMmMzLDMuNyw2LjQsNS42LDEwLjIsNS42YzIuNywwLDUuMy0xLjEsNy44LTMuNGMwLjktMC44LDEuNC0xLjksMS40LTN2LTIwLjhDNDcxLjQsMTQzLjksNDY5LjEsMTQwLDQ2NS40LDEzNy44IE00ODEuMywxNzQuNmMwLjEsMC4xLDAuMywwLjEsMC41LDAuMmMwLjQsMC4xLDAuNiwwLjQsMC42LDAuOGwwLDIuM2MwLDAuNS0wLjQsMC44LTAuOSwwLjloLThjLTEuMiwwLTIuMy0xLTIuMy0yLjJ2LTIuMmMtMi4zLDIuNC00LjYsNC4yLTYuOCw1LjNjLTIuMiwxLjEtNC42LDEuNi03LjEsMS42Yy01LjIsMC05LjctMi4yLTEzLjYtNi42Yy0zLjktNC40LTUuOC0xMC01LjgtMTYuOXMyLjEtMTMuMSw2LjQtMTguOGM0LjMtNS43LDkuOC04LjUsMTYuNS04LjVjNC4yLDAsNy42LDEuMywxMC40LDR2LTE2LjdjMC0wLjUsMC0yLjctMS40LTMuNGMtMC4xLTAuMS0wLjMtMC4xLTAuNS0wLjJjLTAuNC0wLjEtMC42LTAuNC0wLjYtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC45LTAuOWg3LjljMS4yLDAsMi4zLDEsMi4zLDIuMnY1OC45QzQ3OS45LDE3MS44LDQ3OS45LDE3My45LDQ4MS4zLDE3NC42Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTM1MCwxNTAuMmMwLDAuMSwwLDAuMywwLjEsMC4zYzAuMSwwLjEsMC4yLDAuMSwwLjQsMC4xaDIzLjljMC4zLDAsMC41LTAuMiwwLjUtMC40YzAuMy0yLjUsMC40LTctMy4zLTEwLjhjLTEuOC0xLjktNC4xLTIuOC04LjMtMi44QzM1NS43LDEzNi42LDM1MC44LDE0My45LDM1MCwxNTAuMiBNMzQ3LjUsMTc0LjljLTMuOS00LjMtNS45LTExLjMtNS45LTE4LjJjMC03LjMsMi4zLTEzLjksNi40LTE4LjdjNC4zLTUsMTAuMi03LjcsMTcuMS03LjdjNS44LDAsMTAuMiwyLDEzLjIsNS44YzIuNywzLjYsNC4xLDguOCw0LjEsMTUuNGMwLDAuOCwwLDEuOS0wLjEsMy4zYy0wLjEsMC45LTAuOCwxLjYtMS43LDEuNmgtMjkuOGMtMC4xLDAtMC4zLDAuMS0wLjQsMC4xYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuNGMwLjEsNS40LDEuOCwxMCw1LDEzLjJjMy4xLDMuMiw3LjQsNC45LDEyLjQsNC45YzMuNywwLDguNi0xLDEyLjQtMi4xYzAuNS0wLjIsMS4xLDAuMSwxLjMsMC43YzAuMSwwLjIsMC4xLDAuNCwwLDAuNWwtMC41LDEuOWMtMC4yLDAuNy0wLjcsMS4zLTEuMywxLjZjLTMuNywxLjgtOS4zLDMuNS0xNSwzLjVDMzU3LjYsMTgxLjIsMzUxLjYsMTc5LjUsMzQ3LjUsMTc0LjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjMxLjEsMTM1Ljl2MzYuOWMwLDEsMC42LDEuOSwxLjQsMi4zYzAuOSwwLjQsMS40LDEuMywxLjQsMi4zdjAuN2MwLDAuOC0wLjYsMS40LTEuNCwxLjRIMjIwYy0wLjgsMC0xLjQtMC42LTEuNC0xLjR2LTAuN2MwLTEsMC42LTEuOSwxLjQtMi4zYzAuOS0wLjQsMS40LTEuMywxLjQtMi4zdi0zNS43YzAtMC41LTAuNC0wLjktMC45LTAuOXMtMC45LTAuNC0wLjktMC45di0xLjJjMC0xLjIsMC45LTIuMSwyLjEtMi4xaDUuNkMyMjkuNCwxMzIsMjMxLjEsMTMzLjcsMjMxLjEsMTM1LjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjI2LjMsMTEwLjhjMy4zLDAsNiwyLjcsNiw1LjljMCwzLjMtMi43LDUuOS02LDUuOXMtNi0yLjctNi01LjlDMjIwLjMsMTEzLjUsMjIzLDExMC44LDIyNi4zLDExMC44Ii8+PC9zdmc+"/>
817
+ </a>
818
  <p class="iubenda-text">
819
  ' . __( "This plugin is the easiest and most comprehensive way to adapt your WordPress site to the European cookie law. Upon your user's first visit, the plugin will take care of collecting their consent, of blocking the most popular among the scripts that install cookies and subsequently reactivate these scripts as soon as consent is provided. The basic settings include obtaining consent by a simple scroll action (the most effective method) and script reactivation without refreshing the page.", 'iubenda-cookie-law-solution' ) . '
820
  </p>
822
  <span class="iubenda-title">' . __( "Would you like to know more about the cookie law?", 'iubenda-cookie-law-solution' ) . '</span><br />
823
  ' . sprintf( __( "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete guide to the cookie law.</a>", 'iubenda-cookie-law-solution' ), $this->links['guide'] ) . '
824
  </p>
825
+ <p class="iubenda-text">
826
  <span class="iubenda-title">' . __( "What is the full functionality of the plugin?", 'iubenda-cookie-law-solution' ) . '</span><br />
827
  ' . sprintf( __( "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin page.</a>", 'iubenda-cookie-law-solution' ), $this->links['plugin_page'] ) . '
828
  </p>
859
  <?php
860
  }
861
 
862
+ }
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link:
4
  Tags: cookies, cookie law, cookie policy, cookie banner, cookie block, privacy policy, cookie consent, privacy
5
  Requires at least: 4.0
6
  Requires PHP: 5.2.4
7
- Tested up to: 5.0.2
8
- Stable tag: 1.15.4
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
@@ -141,6 +141,10 @@ We will be very happy to receive feedback here: [Uservoice forum](http://support
141
 
142
  == Changelog ==
143
 
 
 
 
 
144
  = 1.15.4 =
145
  * New: Option to block custom scripts and iframes
146
  * Tweak: Update and extend the list of blocked scripts including Google Site Search, Google oAuth, Linkedin widgets, PayPal widgets, Freshchat, Uservoice
@@ -341,5 +345,5 @@ We will be very happy to receive feedback here: [Uservoice forum](http://support
341
 
342
  == Upgrade Notice ==
343
 
344
- = 1.15.4 =
345
- * New: Option to block custom scripts and iframes
4
  Tags: cookies, cookie law, cookie policy, cookie banner, cookie block, privacy policy, cookie consent, privacy
5
  Requires at least: 4.0
6
  Requires PHP: 5.2.4
7
+ Tested up to: 5.0.3
8
+ Stable tag: 1.15.5
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
141
 
142
  == Changelog ==
143
 
144
+ = 1.15.5 =
145
+ * Fix: Skip parsing engine when scripts blocking is disabled
146
+ * Tweak: Update iubenda logo
147
+
148
  = 1.15.4 =
149
  * New: Option to block custom scripts and iframes
150
  * Tweak: Update and extend the list of blocked scripts including Google Site Search, Google oAuth, Linkedin widgets, PayPal widgets, Freshchat, Uservoice
345
 
346
  == Upgrade Notice ==
347
 
348
+ = 1.15.5 =
349
+ * Fix: Skip parsing engine when scripts blocking is disabled