iubenda Cookie Solution for GDPR - Version 1.11.0-beta2

Version Description

Download this release

Release Info

Developer Facens
Plugin Icon 128x128 iubenda Cookie Solution for GDPR
Version 1.11.0-beta2
Comparing to
See all releases

Code changes from version 1.11.0-beta1 to 1.11.0-beta2

iubenda-cookie-class/iubenda.class.faster.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * iubenda.class.php
5
+ * version: 2.0.0
6
+ * codename: Faster
7
+ * @author: Copyright 2015 iubenda
8
+ * @license GNU/GPL
9
+ * This program is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ *
20
+ * You should have received a copy of the GNU General Public License
21
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+ */
23
+
24
+ class Faster
25
+ {
26
+ /*
27
+ Variables
28
+ */
29
+
30
+ private $getBlack = array
31
+ (
32
+ array
33
+ (
34
+ "platform.twitter.com/widgets.js",
35
+ "apis.google.com/js/plusone.js",
36
+ "apis.google.com/js/platform.js",
37
+ "connect.facebook.net",
38
+ "www.youtube.com/iframe_api",
39
+ "pagead2.googlesyndication.com/pagead/js/adsbygoogle.js",
40
+ "sharethis.com/button/buttons.js",
41
+ "addthis.com/js/"
42
+ ),
43
+ array
44
+ (
45
+ "youtube.com",
46
+ "platform.twitter.com",
47
+ "www.facebook.com/plugins/like.php",
48
+ "www.facebook.com/plugins/likebox.php",
49
+ "apis.google.com",
50
+ "www.google.com/maps/embed/",
51
+ "player.vimeo.com/video",
52
+ "maps.google.it/maps",
53
+ "www.google.com/maps/embed"
54
+ )
55
+ );
56
+
57
+ /**/
58
+
59
+ private $getBlank = "//cdn.iubenda.com/cookie_solution/empty.html";
60
+
61
+ private $getClass = array("_iub_cs_activate", "_iub_cs_activate-inline");
62
+
63
+ /*
64
+ Methods
65
+ */
66
+
67
+ public function isBlack($offender, $blacklist)
68
+ {
69
+ /*
70
+ Check if a string is in the black list.
71
+ */
72
+
73
+ if(empty($offender) || empty($blacklist))
74
+ {
75
+ return false;
76
+ }
77
+
78
+ /**/
79
+
80
+ foreach($blacklist as $black)
81
+ {
82
+ if(strpos($offender, $black) !== false)
83
+ {
84
+ return true;
85
+ }
86
+ }
87
+
88
+ /**/
89
+
90
+ return false;
91
+ }
92
+
93
+ /**/
94
+
95
+ public function isParse($offender)
96
+ {
97
+ /*
98
+ Parse the entrie document and search for black elements.
99
+ */
100
+
101
+ libxml_use_internal_errors(true);
102
+
103
+ /**/
104
+
105
+ $src = "";
106
+
107
+ $blank = $this -> getBlank;
108
+ $class = $this -> getClass;
109
+
110
+ $list_1 = $this -> getBlack[0];
111
+ $list_2 = $this -> getBlack[1];
112
+
113
+ $document = new DOMDocument();
114
+
115
+ /**/
116
+
117
+ $document -> formatOutput = true;
118
+ $document -> preserveWhiteSpace = false;
119
+
120
+ /**/
121
+
122
+ $document -> loadHTML($offender);
123
+
124
+ /**/
125
+
126
+ $scripts = $document -> getElementsByTagName("script");
127
+ $iframes = $document -> getElementsByTagName("iframe");
128
+
129
+ /*
130
+ Parse the founded elements and check who is in black.
131
+ */
132
+
133
+ foreach($scripts as $script) {
134
+
135
+ $src = $script -> getAttribute("src");
136
+
137
+ /**/
138
+
139
+ if($this -> isBlack($src, $list_1))
140
+ {
141
+ $script -> setAttribute("type", "text/plain");
142
+ $script -> setAttribute("class", $script -> getAttribute("class")." ".$class[0]);
143
+ }
144
+ elseif($this -> isBlack($script -> nodeValue, $list_1))
145
+ {
146
+ $script -> setAttribute("type", "text/plain");
147
+ $script -> setAttribute("class", $script -> getAttribute("class")." ".$class[1]);
148
+ }
149
+ }
150
+ foreach($iframes as $iframe) {
151
+
152
+ $src = $iframe -> getAttribute("src");
153
+
154
+ /**/
155
+
156
+ if($this -> isBlack($src, $list_2))
157
+ {
158
+ $iframe -> setAttribute("src", $blank);
159
+ $iframe -> setAttribute("suppressedsrc", $src);
160
+ $iframe -> setAttribute("class", $iframe -> getAttribute("class")." ".$class[0]);
161
+ }
162
+ }
163
+
164
+ /**/
165
+
166
+ $offender = $document -> saveHTML();
167
+
168
+ /**/
169
+
170
+ libxml_use_internal_errors(false);
171
+
172
+ /**/
173
+
174
+ return $offender;
175
+ }
176
+ }
177
+
178
+ ?>
iubenda-cookie-class/iubenda.class.php CHANGED
@@ -1,17 +1,28 @@
1
  <?php
2
-
3
- /*
4
- *
5
- * iubenda.class.php
6
- *
7
- * Version: 1.0.1
8
- *
9
- */
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  class Page {
12
-
13
  const IUB_REGEX_PATTERN = '/<!--\s*IUB_COOKIE_POLICY_START\s*-->(.*?)<!--\s*IUB_COOKIE_POLICY_END\s*-->/sU';
14
-
15
  public $auto_script_tags = array(
16
  'platform.twitter.com/widgets.js',
17
  'apis.google.com/js/plusone.js',
@@ -34,7 +45,7 @@
34
  'maps.google.it/maps',
35
  'www.google.com/maps/embed'
36
  );
37
-
38
  public $iub_comments_detected = array();
39
  public $iframe_detected = array();
40
  public $iframe_converted = array();
@@ -42,8 +53,8 @@
42
  public $scripts_inline_detected = array();
43
  public $scripts_inline_converted = array();
44
  public $scripts_converted = array();
45
-
46
-
47
  /*
48
  construct: the whole HTML output of the page
49
  */
@@ -51,37 +62,37 @@
51
  $this->original_content_page = $content_page;
52
  $this->content_page = $content_page;
53
  }
54
-
55
  /*
56
  print iubenda banner, parameter: the script code of iubenda to print the banner
57
  */
58
- public function print_banner($banner){
59
  return $banner.= "\n
60
  <script>
61
  var iCallback = function(){};
62
-
63
  if('callback' in _iub.csConfiguration) {
64
  if('onConsentGiven' in _iub.csConfiguration.callback) iCallback = _iub.csConfiguration.callback.onConsentGiven;
65
-
66
  _iub.csConfiguration.callback.onConsentGiven = function()
67
  {
68
  iCallback();
69
-
70
  /*
71
  * Separator
72
  */
73
-
74
  jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
75
  };
76
  };
77
  </script>";
78
  }
79
-
80
  /*
81
  Static, detect bot & crawler
82
  */
83
  static function bot_detected() {
84
- return (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT']));
85
  }
86
 
87
  /*
@@ -93,6 +104,7 @@ if('callback' in _iub.csConfiguration) {
93
  return true;
94
  }
95
  }
 
96
  }
97
  /*
98
  Static, utility function: strpos for array
@@ -111,14 +123,14 @@ if('callback' in _iub.csConfiguration) {
111
  }
112
  return false;
113
  }
114
-
115
 
116
  /* Convert scripts, iframe and other code inside IUBENDAs comment in text/plain to not generate cookies */
117
  public function create_tags($html){
118
-
119
  $elements = $html->find("*");
120
  $js = '';
121
-
122
  if(is_array($elements)){
123
  $count = count($elements);
124
  for($j=0; $j<$count; $j++){
@@ -127,30 +139,28 @@ if('callback' in _iub.csConfiguration) {
127
  case 'script':
128
  $class = $e->class;
129
  $e->class = $class . ' _iub_cs_activate';
130
- $e->type = 'text/plain';
131
  $js.= $e->outertext;
132
  break;
133
-
134
  case 'iframe':
135
  $new_src = "//cdn.iubenda.com/cookie_solution/empty.html";
136
  $class = $e->class;
137
  $e->suppressedsrc = $e->src;
138
  $e->src = $new_src;
139
- $e->class = $class . ' _iub_cs_activate';
140
  $js.= $e->outertext;
141
  break;
142
-
143
  default:
144
- $js.= '<noscript class="_no_script_iub">';
145
- $js.= $e->outertext;
146
- $js.= '</noscript>';
147
  break;
148
- }
149
  }
150
  }
151
  return $js;
152
  }
153
-
154
  /* Parse all IUBENDAs comment and convert the code inside with create_tags method */
155
  public function parse_iubenda_comments(){
156
  preg_match_all(self::IUB_REGEX_PATTERN, $this->content_page, $scripts);
@@ -158,20 +168,20 @@ if('callback' in _iub.csConfiguration) {
158
  $count = count($scripts[1]);
159
  $js_scripts = array();
160
  for($j=0; $j<$count; $j++){
161
- $this->iub_comments_detected[] = $scripts[1][$j];
162
  $html = str_get_html($scripts[1][$j], $lowercase=true, $forceTagsClosed=true, $stripRN=false);
163
  $js_scripts[] = $this->create_tags($html);
164
  }
165
-
166
  if(is_array($scripts[1]) && is_array($js_scripts)){
167
  if(count($scripts[1]) >= 1 && count($js_scripts) >= 1){
168
  $this->content_page = strtr($this->content_page, array_combine($scripts[1], $js_scripts));
169
  }
170
- }
171
- }
172
  }
173
-
174
- /* Parse automatically all the scripts in the page and converts it in text/plain
175
  if src or the whole output has inside one of the elements in $auto_script_tags array */
176
  public function parse_scripts(){
177
 
@@ -188,7 +198,7 @@ if('callback' in _iub.csConfiguration) {
188
  $class = $s->class;
189
  $s->class = $class . ' _iub_cs_activate-inline';
190
  $s->type = 'text/plain';
191
- $this->scripts_converted[] = $s->innertext;
192
  }
193
  }else{
194
  $src = $s->src;
@@ -208,9 +218,9 @@ if('callback' in _iub.csConfiguration) {
208
  /*
209
  * AdSense check by Peste Vasile Alexandru, AdSense here
210
  */
211
-
212
  $ad_found = false;
213
-
214
  while(preg_match("#google_ad_client =(.*?);#i", $html))
215
  {
216
  $ad_found = true;
@@ -219,49 +229,49 @@ if('callback' in _iub.csConfiguration) {
219
  $ad_width = null;
220
  $ad_height = null;
221
  $ad_block = null;
222
-
223
  /**/
224
-
225
  preg_match("#google_ad_client =(.*?);#i", $html, $ad_client);
226
  preg_match("#google_ad_slot =(.*?);#i", $html, $ad_slot);
227
  preg_match("#google_ad_width =(.*?);#i", $html, $ad_width);
228
  preg_match("#google_ad_height =(.*?);#i", $html, $ad_height);
229
-
230
  /**/
231
-
232
  $html = preg_replace("#google_ad_client =(.*?);#i", "", $html, 1);
233
  $html = preg_replace("#google_ad_slot =(.*?);#i", "", $html, 1);
234
  $html = preg_replace("#google_ad_width =(.*?);#i", "", $html, 1);
235
  $html = preg_replace("#google_ad_height =(.*?);#i", "", $html, 1);
236
-
237
  /**/
238
-
239
  $ad_client = trim($ad_client[1]);
240
  $ad_slot = trim($ad_slot[1]);
241
  $ad_width = trim($ad_width[1]);
242
  $ad_height = trim($ad_height[1]);
243
-
244
  /**/
245
-
246
  $ad_class = 'class="_iub_cs_activate_google_ads"';
247
  $ad_style = 'style="width:'.$ad_width.'px; height:'.$ad_height.'px;"';
248
-
249
  $ad_client = 'data-client='.$ad_client;
250
  $ad_slot = 'data-slot='.$ad_slot;
251
  $ad_width = 'data-width="'.$ad_width.'"';
252
  $ad_height = 'data-height="'.$ad_height.'"';
253
-
254
  /**/
255
-
256
  $ad_block = "<div $ad_style $ad_class $ad_width $ad_height $ad_slot $ad_client></div>";
257
-
258
  /**/
259
-
260
  $html = preg_replace('#(<[^>]+) src="//pagead2.googlesyndication.com/pagead/show_ads.js"(.*?)</script>#i', $ad_block, $html, 1);
261
  }
262
-
263
  /**/
264
-
265
  if($ad_found)
266
  {
267
  $adsense_callback =
@@ -302,34 +312,34 @@ if('callback' in _iub.csConfiguration) {
302
  else
303
  {
304
  _iub.csConfiguration.callback = {};
305
-
306
  _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
307
  }
308
  </script>
309
  ";
310
-
311
  $html = str_replace("</body>", $adsense_callback."</body>", $html);
312
  }
313
-
314
  /**/
315
-
316
  $this->content_page = $html;
317
  }
318
  }
319
 
320
  /* Parse automatically all the iframe in the page and change the src to suppressedsrc
321
- if src has inside one of the elements in $auto_iframe_tags array */
322
  public function parse_iframe(){
323
  $html = str_get_html($this->content_page, $lowercase=true, $forceTagsClosed=true, $stripRN=false);
324
  if(is_object($html)){
325
- $iframes = $html->find("iframe");
326
  if(is_array($iframes)){
327
  $count = count($iframes);
328
  for($j=0; $j<$count; $j++){
329
  $i = $iframes[$j];
330
  $src = $i->src;
331
  $this->iframe_detected[] = $src;
332
- if (Page::strpos_array($src, $this->auto_iframe_tags) !== false){
333
  $new_src = "//cdn.iubenda.com/cookie_solution/empty.html";
334
  $class = $i->class;
335
  $i->suppressedsrc = $src;
@@ -342,23 +352,24 @@ if('callback' in _iub.csConfiguration) {
342
  $this->content_page = $html;
343
  }
344
  }
345
-
346
  /*
347
  Call three methods to parse the page, iubendas comment, scripts + iframe
348
  */
349
- public function parse(){
 
350
  $this->parse_iubenda_comments();
351
  $this->parse_scripts();
352
  $this->parse_iframe();
353
  }
354
-
355
  /*
356
  Return the final page to output
357
  */
358
  public function get_converted_page(){
359
  return $this->content_page;
360
  }
361
-
362
  }
363
 
364
- ?>
1
  <?php
2
+ /**
3
+ * iubenda.class.php
4
+ * version: 1.0.1
5
+ * @author: Copyright 2015 iubenda
6
+ * @license GNU/GPL
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU General Public License for more details.
16
+ *
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ */
21
 
22
  class Page {
23
+
24
  const IUB_REGEX_PATTERN = '/<!--\s*IUB_COOKIE_POLICY_START\s*-->(.*?)<!--\s*IUB_COOKIE_POLICY_END\s*-->/sU';
25
+
26
  public $auto_script_tags = array(
27
  'platform.twitter.com/widgets.js',
28
  'apis.google.com/js/plusone.js',
45
  'maps.google.it/maps',
46
  'www.google.com/maps/embed'
47
  );
48
+
49
  public $iub_comments_detected = array();
50
  public $iframe_detected = array();
51
  public $iframe_converted = array();
53
  public $scripts_inline_detected = array();
54
  public $scripts_inline_converted = array();
55
  public $scripts_converted = array();
56
+
57
+
58
  /*
59
  construct: the whole HTML output of the page
60
  */
62
  $this->original_content_page = $content_page;
63
  $this->content_page = $content_page;
64
  }
65
+
66
  /*
67
  print iubenda banner, parameter: the script code of iubenda to print the banner
68
  */
69
+ public function print_banner($banner){
70
  return $banner.= "\n
71
  <script>
72
  var iCallback = function(){};
73
+
74
  if('callback' in _iub.csConfiguration) {
75
  if('onConsentGiven' in _iub.csConfiguration.callback) iCallback = _iub.csConfiguration.callback.onConsentGiven;
76
+
77
  _iub.csConfiguration.callback.onConsentGiven = function()
78
  {
79
  iCallback();
80
+
81
  /*
82
  * Separator
83
  */
84
+
85
  jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
86
  };
87
  };
88
  </script>";
89
  }
90
+
91
  /*
92
  Static, detect bot & crawler
93
  */
94
  static function bot_detected() {
95
+ return (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/bot|crawl|slurp|spider|google|yahoo/i', $_SERVER['HTTP_USER_AGENT']));
96
  }
97
 
98
  /*
104
  return true;
105
  }
106
  }
107
+ return false;
108
  }
109
  /*
110
  Static, utility function: strpos for array
123
  }
124
  return false;
125
  }
126
+
127
 
128
  /* Convert scripts, iframe and other code inside IUBENDAs comment in text/plain to not generate cookies */
129
  public function create_tags($html){
130
+
131
  $elements = $html->find("*");
132
  $js = '';
133
+
134
  if(is_array($elements)){
135
  $count = count($elements);
136
  for($j=0; $j<$count; $j++){
139
  case 'script':
140
  $class = $e->class;
141
  $e->class = $class . ' _iub_cs_activate';
142
+ $e->type = 'text/plain';
143
  $js.= $e->outertext;
144
  break;
145
+
146
  case 'iframe':
147
  $new_src = "//cdn.iubenda.com/cookie_solution/empty.html";
148
  $class = $e->class;
149
  $e->suppressedsrc = $e->src;
150
  $e->src = $new_src;
151
+ $e->class = $class . ' _iub_cs_activate';
152
  $js.= $e->outertext;
153
  break;
154
+
155
  default:
156
+ $js = $html;
 
 
157
  break;
158
+ }
159
  }
160
  }
161
  return $js;
162
  }
163
+
164
  /* Parse all IUBENDAs comment and convert the code inside with create_tags method */
165
  public function parse_iubenda_comments(){
166
  preg_match_all(self::IUB_REGEX_PATTERN, $this->content_page, $scripts);
168
  $count = count($scripts[1]);
169
  $js_scripts = array();
170
  for($j=0; $j<$count; $j++){
171
+ $this->iub_comments_detected[] = $scripts[1][$j];
172
  $html = str_get_html($scripts[1][$j], $lowercase=true, $forceTagsClosed=true, $stripRN=false);
173
  $js_scripts[] = $this->create_tags($html);
174
  }
175
+
176
  if(is_array($scripts[1]) && is_array($js_scripts)){
177
  if(count($scripts[1]) >= 1 && count($js_scripts) >= 1){
178
  $this->content_page = strtr($this->content_page, array_combine($scripts[1], $js_scripts));
179
  }
180
+ }
181
+ }
182
  }
183
+
184
+ /* Parse automatically all the scripts in the page and converts it in text/plain
185
  if src or the whole output has inside one of the elements in $auto_script_tags array */
186
  public function parse_scripts(){
187
 
198
  $class = $s->class;
199
  $s->class = $class . ' _iub_cs_activate-inline';
200
  $s->type = 'text/plain';
201
+ $this->scripts_converted[] = $s->innertext;
202
  }
203
  }else{
204
  $src = $s->src;
218
  /*
219
  * AdSense check by Peste Vasile Alexandru, AdSense here
220
  */
221
+
222
  $ad_found = false;
223
+
224
  while(preg_match("#google_ad_client =(.*?);#i", $html))
225
  {
226
  $ad_found = true;
229
  $ad_width = null;
230
  $ad_height = null;
231
  $ad_block = null;
232
+
233
  /**/
234
+
235
  preg_match("#google_ad_client =(.*?);#i", $html, $ad_client);
236
  preg_match("#google_ad_slot =(.*?);#i", $html, $ad_slot);
237
  preg_match("#google_ad_width =(.*?);#i", $html, $ad_width);
238
  preg_match("#google_ad_height =(.*?);#i", $html, $ad_height);
239
+
240
  /**/
241
+
242
  $html = preg_replace("#google_ad_client =(.*?);#i", "", $html, 1);
243
  $html = preg_replace("#google_ad_slot =(.*?);#i", "", $html, 1);
244
  $html = preg_replace("#google_ad_width =(.*?);#i", "", $html, 1);
245
  $html = preg_replace("#google_ad_height =(.*?);#i", "", $html, 1);
246
+
247
  /**/
248
+
249
  $ad_client = trim($ad_client[1]);
250
  $ad_slot = trim($ad_slot[1]);
251
  $ad_width = trim($ad_width[1]);
252
  $ad_height = trim($ad_height[1]);
253
+
254
  /**/
255
+
256
  $ad_class = 'class="_iub_cs_activate_google_ads"';
257
  $ad_style = 'style="width:'.$ad_width.'px; height:'.$ad_height.'px;"';
258
+
259
  $ad_client = 'data-client='.$ad_client;
260
  $ad_slot = 'data-slot='.$ad_slot;
261
  $ad_width = 'data-width="'.$ad_width.'"';
262
  $ad_height = 'data-height="'.$ad_height.'"';
263
+
264
  /**/
265
+
266
  $ad_block = "<div $ad_style $ad_class $ad_width $ad_height $ad_slot $ad_client></div>";
267
+
268
  /**/
269
+
270
  $html = preg_replace('#(<[^>]+) src="//pagead2.googlesyndication.com/pagead/show_ads.js"(.*?)</script>#i', $ad_block, $html, 1);
271
  }
272
+
273
  /**/
274
+
275
  if($ad_found)
276
  {
277
  $adsense_callback =
312
  else
313
  {
314
  _iub.csConfiguration.callback = {};
315
+
316
  _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
317
  }
318
  </script>
319
  ";
320
+
321
  $html = str_replace("</body>", $adsense_callback."</body>", $html);
322
  }
323
+
324
  /**/
325
+
326
  $this->content_page = $html;
327
  }
328
  }
329
 
330
  /* Parse automatically all the iframe in the page and change the src to suppressedsrc
331
+ if src has inside one of the elements in $auto_iframe_tags array */
332
  public function parse_iframe(){
333
  $html = str_get_html($this->content_page, $lowercase=true, $forceTagsClosed=true, $stripRN=false);
334
  if(is_object($html)){
335
+ $iframes = $html->find("iframe");
336
  if(is_array($iframes)){
337
  $count = count($iframes);
338
  for($j=0; $j<$count; $j++){
339
  $i = $iframes[$j];
340
  $src = $i->src;
341
  $this->iframe_detected[] = $src;
342
+ if (Page::strpos_array($src, $this->auto_iframe_tags) !== false){
343
  $new_src = "//cdn.iubenda.com/cookie_solution/empty.html";
344
  $class = $i->class;
345
  $i->suppressedsrc = $src;
352
  $this->content_page = $html;
353
  }
354
  }
355
+
356
  /*
357
  Call three methods to parse the page, iubendas comment, scripts + iframe
358
  */
359
+ public function parse()
360
+ {
361
  $this->parse_iubenda_comments();
362
  $this->parse_scripts();
363
  $this->parse_iframe();
364
  }
365
+
366
  /*
367
  Return the final page to output
368
  */
369
  public function get_converted_page(){
370
  return $this->content_page;
371
  }
372
+
373
  }
374
 
375
+ ?>
iubenda_cookie_solution.php CHANGED
@@ -1,60 +1,147 @@
1
  <?php
 
2
  /*
3
  * Plugin Name: Iubenda Cookie Solution
4
  * Plugin URI: https://www.iubenda.com
5
  * Description: Iubenda Cookie Solution permette di gestire tutti gli aspetti della cookie law su WP.
6
  * Author: iubenda
7
- * Version: 1.10.21
8
  * Text Domain: iubenda-cookie-wp-plugin
9
  * Author URI: https://www.iubenda.com
10
  */
11
 
12
- define('DEBUG', 0);
13
- define('IUB_REGEX_PATTERN', '/<!--IUB_COOKIE_POLICY_START-->(.*)<!--IUB_COOKIE_POLICY_END-->/sU');
 
 
 
 
 
 
 
 
14
 
15
  /**/
16
 
17
- if(isset($_GET["iub_no_parse"]) && !empty($_GET["iub_no_parse"]) || defined("XMLRPC_REQUEST") && XMLRPC_REQUEST) {
 
18
  return;
19
  }
20
 
21
  /**/
 
 
 
 
 
 
 
 
 
22
 
23
  function iubenda_load_admin_panel()
24
  {
25
  /*
26
- * Check for WPML
27
  */
28
 
29
- if(function_exists('icl_object_id')) {
 
30
  define("IUBENDA_WPML", true);
31
  }
32
 
33
- /*
34
- * Check for SimpleHTMLDom
35
- */
36
-
37
- if(!function_exists('file_get_html')){
38
- include_once dirname(__FILE__) . '/iubenda-cookie-class/simple_html_dom.php';
39
  }
40
-
41
- /*
42
- * Import iubenda CLASS
43
- */
44
 
45
- include_once dirname(__FILE__) . '/iubenda-cookie-class/iubenda.class.php';
 
46
 
47
  /*
48
- * Add settings panel
49
  */
50
 
51
- if(is_admin()) add_action('admin_menu', 'iub_admin');
 
 
 
52
  }
53
 
54
  add_action("plugins_loaded", "iubenda_load_admin_panel");
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  function __iubenda_buffer_head()
57
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  /*
59
  * __iubenda_buffer_head
60
  */
@@ -63,7 +150,8 @@
63
 
64
  /**/
65
 
66
- if(get_option("iub_code")) {
 
67
  $wpml_old = html_entity_decode(stripslashes(get_option("iub_code")));
68
 
69
  $iubenda_languages = array("it", "de", "en", "es", "pt-br", "ru", "fr");
@@ -82,79 +170,96 @@
82
  update_option("iub_code", false);
83
  }
84
 
85
- if(defined("IUBENDA_WPML") && get_option("iubenda-code-".ICL_LANGUAGE_CODE)) {
86
-
87
  $iubenda_code .= get_option("iubenda-code-".ICL_LANGUAGE_CODE);
88
  }
89
- else {
 
90
  $iubenda_code .= get_option("iubenda-code-default");
91
  }
92
 
93
  $iubenda_code .= "\n
94
- <script>
95
- var iCallback = function(){};
96
-
97
- if('callback' in _iub.csConfiguration) {
98
- if('onConsentGiven' in _iub.csConfiguration.callback) iCallback = _iub.csConfiguration.callback.onConsentGiven;
99
-
100
- _iub.csConfiguration.callback.onConsentGiven = function()
101
- {
102
- iCallback();
 
103
 
104
- /*
105
- * Separator
106
- */
107
 
108
- jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
109
- };
110
- };
111
- </script>";
112
-
113
-
114
  /**/
115
 
116
- echo $iubenda_code;
117
  }
118
-
119
- /**/
120
-
121
- add_action("wp_head", "__iubenda_buffer_head", 99);
122
-
123
- function __iubenda_shutdown()
124
- {
125
- $final = "";
126
 
127
- $levels = ob_get_level();
128
 
129
- for($i = 0; $i < $levels; $i++){
130
- $final .= ob_get_clean();
131
- }
132
-
133
- echo apply_filters("final_output", $final);
134
- }
135
-
136
- // add_action("shutdown", "__iubenda_shutdown", 0);
137
-
138
- function __iubenda_setup_output() {
139
- if(!is_admin()) {
140
- ob_start("__iubenda_final_output");
141
- }
142
- }
143
-
144
- add_action("registered_taxonomy", "__iubenda_setup_output", 0);
145
 
146
  function __iubenda_final_output($output)
147
  {
148
- if(Page::consent_given() && get_option("skip_parsing") || Page::bot_detected()) {
 
149
  return $output;
150
  }
151
 
152
- $page = new Page($output);
153
- $page->parse();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
 
155
  /**/
156
 
157
- return $page->get_converted_page();
158
  }
159
 
160
  add_filter("final_output", "__iubenda_final_output");
@@ -165,27 +270,17 @@ if('callback' in _iub.csConfiguration) {
165
  return '<!--IUB_COOKIE_POLICY_START-->'.do_shortcode($content).'<!--IUB_COOKIE_POLICY_END-->';
166
  }
167
 
168
-
169
  add_shortcode('iub-cookie-policy', 'iub_func');
170
 
171
-
172
- /***********************************
173
- *
174
- * Add menù item on the admin
175
- *
176
- ************************************/
177
-
178
 
179
  function iub_admin()
180
  {
181
  add_menu_page("Iubenda - Settings", "Iubenda", "administrator", __FILE__, "__iub_admin_load");
182
  }
183
 
 
184
 
185
- /*
186
- * Iub admin forms
187
- *
188
- */
189
  function __iub_admin_load(){
190
 
191
  if(get_option("iub_code")) {
@@ -195,7 +290,8 @@ if('callback' in _iub.csConfiguration) {
195
 
196
  foreach($iubenda_languages as $iubenda_language)
197
  {
198
- if(strpos($wpml_old, 'lang: "'.$iubenda_language) !== false) {
 
199
  $language_tag = $iubenda_language;
200
 
201
  break;
@@ -207,19 +303,7 @@ if('callback' in _iub.csConfiguration) {
207
  update_option("iub_code", false);
208
  }
209
 
210
- // Only for debug purposes
211
- // *Don't touch*
212
- // delete_option('iub_cp_default');
213
- // delete_option('iub_cp');
214
-
215
- /***************************************************************************
216
- *
217
- * Style for messages
218
- *
219
- ***************************************************************************/
220
-
221
-
222
- if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
223
  wp_die( __( 'You are not allowed to access this part of the site' ) );
224
  }
225
 
@@ -231,38 +315,109 @@ if('callback' in _iub.csConfiguration) {
231
  update_option("skip_parsing", "skip");
232
  }
233
  else {
234
- update_option("skip_parsing", null);
 
 
 
 
 
 
235
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  }
237
 
238
- if(!get_option("default_skip_parsing")) {
239
- update_option("default_skip_parsing", true);
240
- update_option("skip_parsing", "skip");
241
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
 
243
  /**/
244
 
245
  if($_POST)
246
  {
247
- foreach($iubenda_language as $iub_check) {
 
248
  if(!empty($_POST["iubenda-code-$iub_check"])) {
249
  update_option("iubenda-code-$iub_check", stripslashes($_POST["iubenda-code-$iub_check"]));
250
  }
251
  }
252
  }
253
 
254
- /* */
255
-
256
- $checked = "";
257
-
258
- if(get_option("skip_parsing")) $checked = 'checked="true"';
259
 
260
- /* */
 
 
 
 
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
 
263
  echo '
264
-
265
  <style>
 
 
 
 
 
 
 
 
 
 
 
266
  #iubenda-tabs
267
  {
268
  display: table;
@@ -417,6 +572,23 @@ if('callback' in _iub.csConfiguration) {
417
  display: inline-table;
418
  margin-bottom: 10px;
419
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  </style>
421
  <script>
422
  function iubendaGetLanguage(str) {
@@ -448,6 +620,22 @@ if('callback' in _iub.csConfiguration) {
448
  var firstTab = document.querySelector("[data-iubenda-button]");
449
 
450
  if(firstTab) jQuery(firstTab).trigger("click");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  }
452
  );
453
 
@@ -460,17 +648,17 @@ if('callback' in _iub.csConfiguration) {
460
  }, 3000
461
  );
462
  </script>
463
-
464
  <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>
465
 
466
  <p class="iubenda-text">
467
- Questo plugin &#xE8; il modo pi&#xF9; semplice e completo per adeguare il tuo sito Wordpress alla cookie law. Alla prima visita dell&#x27;utente il plugin si occuper&#xE0; di raccoglierne il consenso, di bloccare i pi&#xF9; popolari fra gli script che installano cookie e di riattivarli non appena il consenso viene fornito. Le impostazioni di base includono la raccolta del consenso tramite il semplice scroll (il metodo pi&#xF9; efficace) e la riattivazione senza il refresh della pagina.
468
- <span class="iubenda-title">Vuoi capire di più sulla cookie law?</span>
469
- Consulta <a href="https://www.iubenda.com/it/soluzione-cookie-law" class="iubenda-url" target="_blank">la nostra guida completa alla cookie law</a>.
470
- <span class="iubenda-title">Quali sono le funzionalità complete del plugin?</span>
471
- Visita <a href="https://www.iubenda.com/it/help/posts/810" class="iubenda-url" target="_blank">la nostra pagina dedicata al plugin</a>.
472
- <span class="iubenda-title">Inserisci qui sotto il codice di iubenda per la cookie law.</span>
473
- Per far funzionare il plugin, è necessario inserire nel form sottostante il codice di iubenda che attiva il banner cookie law e la cookie policy.Questo codice può essere generato su www.iubenda.com, seguendo <a href="https://www.iubenda.com/it/help/posts/680" class="iubenda-url" target="_blank">questa guida
474
  </a>.
475
  </p>
476
 
@@ -503,7 +691,7 @@ if('callback' in _iub.csConfiguration) {
503
 
504
  echo
505
  '
506
- <div id="iubenda-information">Seleziona una lingua a cui associare un codice</div>
507
  ';
508
 
509
  }
@@ -512,18 +700,76 @@ if('callback' in _iub.csConfiguration) {
512
  echo '<textarea class="iubenda-textarea iubenda-textarea-single" name="iubenda-code-default">'.stripslashes(get_option("iubenda-code-default")).'</textarea>';
513
  }
514
 
515
- echo '
516
- <p>
517
- <input type="checkbox" name="skip_parsing" value="skip" '.$checked.'>
518
- Lascia intatti gli script della pagina se l\'utente ha già dato il consenso (migliora le prestazioni, altamente consigliato, da disattivare solo qualora il tuo sito utilizzi un sistema di cache)
519
- </p>
520
- <p>
521
- <input type="submit" value="SAVE" id="iubenda-save">
522
- </p>
523
- </form>
524
- <p class="iubenda-text">
525
- <span class="iubenda-title">Hai bisogno di supporto su questo plugin?</span>
526
- Visita il nostro <a href="//support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti" class="iubenda-url" target="_blank">forum di supporto</a>.
527
- </p>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
528
  }
529
  ?>
1
  <?php
2
+
3
  /*
4
  * Plugin Name: Iubenda Cookie Solution
5
  * Plugin URI: https://www.iubenda.com
6
  * Description: Iubenda Cookie Solution permette di gestire tutti gli aspetti della cookie law su WP.
7
  * Author: iubenda
8
+ * Version: 1.11.0-beta2
9
  * Text Domain: iubenda-cookie-wp-plugin
10
  * Author URI: https://www.iubenda.com
11
  */
12
 
13
+ define("IUB_DEBUG", 0);
14
+ define("IUB_REGEX_PATTERN", "/<!--IUB_COOKIE_POLICY_START-->(.*)<!--IUB_COOKIE_POLICY_END-->/sU");
15
+
16
+ /*
17
+ * External resources
18
+ */
19
+
20
+ define("IUB_HTML_DOM", "/iubenda-cookie-class/simple_html_dom.php");
21
+ define("IUB_CLASS_FASTER", "/iubenda-cookie-class/iubenda.class.faster.php");
22
+ define("IUB_CLASS_DEFAULT", "/iubenda-cookie-class/iubenda.class.php");
23
 
24
  /**/
25
 
26
+ if(defined("XMLRPC_REQUEST") && XMLRPC_REQUEST || defined("DOING_AJAX") && DOING_AJAX || isset($_SERVER["HTTP_X_REQUESTED_WITH"]) || isset($_GET["iub_no_parse"]))
27
+ {
28
  return;
29
  }
30
 
31
  /**/
32
+
33
+ function __iubenda_initialize_output()
34
+ {
35
+ ob_start("__iubenda_final_output");
36
+ }
37
+
38
+ add_action("registered_taxonomy", "__iubenda_initialize_output", 0);
39
+
40
+ /****/
41
 
42
  function iubenda_load_admin_panel()
43
  {
44
  /*
45
+ * Checks
46
  */
47
 
48
+ if(function_exists("icl_object_id"))
49
+ {
50
  define("IUBENDA_WPML", true);
51
  }
52
 
53
+ if(!function_exists("file_get_html"))
54
+ {
55
+ require(dirname(__FILE__).IUB_HTML_DOM);
 
 
 
56
  }
 
 
 
 
57
 
58
+ require(dirname(__FILE__).IUB_CLASS_FASTER);
59
+ require(dirname(__FILE__).IUB_CLASS_DEFAULT);
60
 
61
  /*
62
+ * Admin
63
  */
64
 
65
+ if(is_admin())
66
+ {
67
+ add_action("admin_menu", "iub_admin");
68
+ }
69
  }
70
 
71
  add_action("plugins_loaded", "iubenda_load_admin_panel");
72
 
73
+ /****/
74
+
75
+ function __iubenda_content_type()
76
+ {
77
+ if(get_option("iubenda_ctype"))
78
+ {
79
+ $iub_headers = headers_list();
80
+ $destroy = true;
81
+
82
+ /**/
83
+
84
+ foreach($iub_headers as $h)
85
+ {
86
+ if(strpos($h, "Content-Type: text/html") !== false || strpos($h, "Content-type: text/html") !== false)
87
+ {
88
+ $destroy = false;
89
+ }
90
+ }
91
+
92
+ /**/
93
+
94
+ if($destroy)
95
+ {
96
+ define("IUBENDA_NO_HTML", true);
97
+ }
98
+ }
99
+ }
100
+
101
+ /***/
102
+
103
  function __iubenda_buffer_head()
104
  {
105
+ /*
106
+ * iubenda user logged in
107
+ */
108
+
109
+ if(!get_option("default_skip_parsing")) {
110
+ update_option("default_skip_parsing", true);
111
+ update_option("skip_parsing", true);
112
+ }
113
+ if(!get_option("default_iubendactype")) {
114
+ update_option("default_iubendactype", true);
115
+ update_option("iubenda_ctype", true);
116
+ }
117
+ if(!get_option("default_iubendaparse")) {
118
+ update_option("default_iubendaparse", true);
119
+ update_option("iubenda_parse", true);
120
+ }
121
+ if(!get_option("default_parser_engine")) {
122
+ update_option("default_parser_engine", true);
123
+ update_option("parser_engine", "default");
124
+ }
125
+
126
+
127
+ /**/
128
+
129
+ __iubenda_content_type();
130
+
131
+ /**/
132
+
133
+ if(function_exists("is_user_logged_in"))
134
+ {
135
+ if(is_user_logged_in())
136
+ {
137
+ return;
138
+ }
139
+ }
140
+ if($_POST || defined("IUBENDA_NO_HTML"))
141
+ {
142
+ return;
143
+ }
144
+
145
  /*
146
  * __iubenda_buffer_head
147
  */
150
 
151
  /**/
152
 
153
+ if(get_option("iub_code"))
154
+ {
155
  $wpml_old = html_entity_decode(stripslashes(get_option("iub_code")));
156
 
157
  $iubenda_languages = array("it", "de", "en", "es", "pt-br", "ru", "fr");
170
  update_option("iub_code", false);
171
  }
172
 
173
+ if(defined("IUBENDA_WPML") && get_option("iubenda-code-".ICL_LANGUAGE_CODE))
174
+ {
175
  $iubenda_code .= get_option("iubenda-code-".ICL_LANGUAGE_CODE);
176
  }
177
+ else
178
+ {
179
  $iubenda_code .= get_option("iubenda-code-default");
180
  }
181
 
182
  $iubenda_code .= "\n
183
+ <script>
184
+ var iCallback = function(){};
185
+
186
+ if('callback' in _iub.csConfiguration)
187
+ {
188
+ if('onConsentGiven' in _iub.csConfiguration.callback) iCallback = _iub.csConfiguration.callback.onConsentGiven;
189
+
190
+ _iub.csConfiguration.callback.onConsentGiven = function()
191
+ {
192
+ iCallback();
193
 
194
+ /*
195
+ * Separator
196
+ */
197
 
198
+ jQuery('noscript._no_script_iub').each(function (a, b) { var el = jQuery(b); el.after(el.html()); });
199
+ };
200
+ };
201
+ </script>";
202
+
 
203
  /**/
204
 
205
+ echo($iubenda_code);
206
  }
 
 
 
 
 
 
 
 
207
 
208
+ add_action("wp_head", "__iubenda_buffer_head", 99);
209
 
210
+ /****/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
 
212
  function __iubenda_final_output($output)
213
  {
214
+ if(!get_option("iubenda_parse") || Page::consent_given() && get_option("skip_parsing") || Page::bot_detected() || $_POST || defined("IUBENDA_NO_HTML") || get_option("iubenda_output_filter") && ob_get_level() > 1)
215
+ {
216
  return $output;
217
  }
218
 
219
+ /**/
220
+
221
+ if(function_exists("is_user_logged_in")) { if(is_user_logged_in()) { return $output; } }
222
+ if(function_exists("is_feed") && get_option("iubenda_output_feed")) { if(is_feed()) { return $output; } }
223
+
224
+ /**/
225
+
226
+ $startime = microtime(true);
227
+
228
+ /**/
229
+
230
+ if(get_option("parser_engine") == "new")
231
+ {
232
+ $faster = new Faster;
233
+
234
+ /**/
235
+
236
+ $output = $faster -> isParse($output);
237
+
238
+ /**/
239
+
240
+ $signature = "Parsed with iubenda experimental class in ";
241
+ }
242
+ else
243
+ {
244
+ $page = new Page($output);
245
+ $page->parse();
246
+
247
+ /**/
248
+
249
+ $output = $page->get_converted_page();
250
+
251
+ /**/
252
+
253
+ $signature = "Parsed with iubenda default class in ";
254
+ }
255
+
256
+ /**/
257
+
258
+ $output .= "<!-- ".$signature.round(microtime(true) - $startime, 4)."s -->";
259
 
260
  /**/
261
 
262
+ return $output;
263
  }
264
 
265
  add_filter("final_output", "__iubenda_final_output");
270
  return '<!--IUB_COOKIE_POLICY_START-->'.do_shortcode($content).'<!--IUB_COOKIE_POLICY_END-->';
271
  }
272
 
 
273
  add_shortcode('iub-cookie-policy', 'iub_func');
274
 
275
+ /****/
 
 
 
 
 
 
276
 
277
  function iub_admin()
278
  {
279
  add_menu_page("Iubenda - Settings", "Iubenda", "administrator", __FILE__, "__iub_admin_load");
280
  }
281
 
282
+ /****/
283
 
 
 
 
 
284
  function __iub_admin_load(){
285
 
286
  if(get_option("iub_code")) {
290
 
291
  foreach($iubenda_languages as $iubenda_language)
292
  {
293
+ if(strpos($wpml_old, 'lang: "'.$iubenda_language) !== false)
294
+ {
295
  $language_tag = $iubenda_language;
296
 
297
  break;
303
  update_option("iub_code", false);
304
  }
305
 
306
+ if (!current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
307
  wp_die( __( 'You are not allowed to access this part of the site' ) );
308
  }
309
 
315
  update_option("skip_parsing", "skip");
316
  }
317
  else {
318
+ update_option("skip_parsing", false);
319
+ }
320
+ if(!empty($_POST['iubenda_ctype'])) {
321
+ update_option("iubenda_ctype", true);
322
+ }
323
+ else {
324
+ update_option("iubenda_ctype", false);
325
  }
326
+ if(!empty($_POST['iubenda_parse'])) {
327
+ update_option("iubenda_parse", true);
328
+ }
329
+ else {
330
+ update_option("iubenda_parse", false);
331
+ }
332
+ if(!empty($_POST['iubenda_output_filter'])) {
333
+ update_option("iubenda_output_filter", true);
334
+ }
335
+ else {
336
+ update_option("iubenda_output_filter", false);
337
+ }
338
+ if(!empty($_POST['iubenda_output_feed'])) {
339
+ update_option("iubenda_output_feed", true);
340
+ }
341
+ else {
342
+ update_option("iubenda_output_feed", false);
343
+ }
344
+
345
+ if($_POST["parser_engine"] == "default") update_option("parser_engine", "default");
346
+ if($_POST["parser_engine"] == "new") update_option("parser_engine", "new");
347
  }
348
 
349
+ /*
350
+ Enabled by default.
351
+ */
352
+
353
+ if(!get_option("default_skip_parsing")) {
354
+ update_option("default_skip_parsing", true);
355
+ update_option("skip_parsing", "skip");
356
+ }
357
+ if(!get_option("default_parser_engine")) {
358
+ update_option("default_parser_engine", true);
359
+ update_option("parser_engine", "default");
360
+ }
361
+ if(!get_option("default_iubendactype")) {
362
+ update_option("default_iubendactype", true);
363
+ update_option("iubenda_ctype", true);
364
+ }
365
+ if(!get_option("default_iubendaparse")) {
366
+ update_option("default_iubendaparse", true);
367
+ update_option("iubenda_parse", true);
368
+ }
369
+ if(!get_option("default_iubenda_output_feed")) {
370
+ update_option("default_iubenda_output_feed", true);
371
+ update_option("iubenda_output_feed", true);
372
+ }
373
 
374
  /**/
375
 
376
  if($_POST)
377
  {
378
+ foreach($iubenda_language as $iub_check)
379
+ {
380
  if(!empty($_POST["iubenda-code-$iub_check"])) {
381
  update_option("iubenda-code-$iub_check", stripslashes($_POST["iubenda-code-$iub_check"]));
382
  }
383
  }
384
  }
385
 
386
+ /**/
 
 
 
 
387
 
388
+ $checked = "";
389
+ $checked_ctype = "";
390
+ $checked_parse = "";
391
+ $checked_output_feed = "";
392
+ $checked_output_filter = "";
393
 
394
+ if(get_option("iubenda_parse")) $checked_parse = 'checked="true"';
395
+ if(get_option("skip_parsing")) $checked = 'checked="true"';
396
+ if(get_option("iubenda_ctype")) $checked_ctype = 'checked="true"';
397
+ if(get_option("iubenda_output_feed")) $checked_output_feed = 'checked="true"';
398
+ if(get_option("iubenda_output_filter")) $checked_output_filter = 'checked="true"';
399
+
400
+ $parser_engine_default = "";
401
+ $parser_engine_new = "";
402
+
403
+ if(get_option("parser_engine") == "default") $parser_engine_default = 'checked="true"';
404
+ if(get_option("parser_engine") == "new") $parser_engine_new = 'checked="true"';
405
+
406
+ /**/
407
 
408
  echo '
 
409
  <style>
410
+ #iubenda-view
411
+ {
412
+ display: table;
413
+
414
+ width: 90%;
415
+ margin: 50px auto;
416
+
417
+ border-radius: 2px;
418
+ background-color: #FFFFFF;
419
+ box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.1)
420
+ }
421
  #iubenda-tabs
422
  {
423
  display: table;
572
  display: inline-table;
573
  margin-bottom: 10px;
574
  }
575
+
576
+ #parser_engine label input
577
+ {
578
+ margin-right: 5px
579
+ }
580
+
581
+ #parser_engine, #par_skip_parsing, #par_iubenda_output_filter {
582
+ margin-left: 30px;
583
+ }
584
+
585
+ .wp-admin .iubenda-checkbox-options p label input[type=checkbox], .iubenda-checkbox-options label span {
586
+ display: inline-block;
587
+ vertical-align: top;
588
+ margin-top: 0;
589
+ line-height: 1.2;
590
+ }
591
+
592
  </style>
593
  <script>
594
  function iubendaGetLanguage(str) {
620
  var firstTab = document.querySelector("[data-iubenda-button]");
621
 
622
  if(firstTab) jQuery(firstTab).trigger("click");
623
+
624
+ var engine = document.getElementById("parser_type");
625
+
626
+ engine.onchange = function()
627
+ {
628
+ if(this.checked)
629
+ {
630
+ document.getElementById("iubenda_parse_child").style.display = "block";
631
+ }
632
+ else
633
+ {
634
+ document.getElementById("iubenda_parse_child").style.display = "none";
635
+ }
636
+ }
637
+
638
+ jQuery(engine).trigger("change");
639
  }
640
  );
641
 
648
  }, 3000
649
  );
650
  </script>
651
+ <div id="iubenda-view">
652
  <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>
653
 
654
  <p class="iubenda-text">
655
+ Questo plugin &#xE8; il modo pi&#xF9; semplice e completo per adeguare il tuo sito Wordpress alla cookie law. Alla prima visita dell&#x27;utente il plugin si occuper&#xE0; di raccoglierne il consenso, di bloccare i pi&#xF9; popolari fra gli script che installano cookie e di riattivarli non appena il consenso viene fornito. Le impostazioni di base includono la raccolta del consenso tramite il semplice scroll (il metodo pi&#xF9; efficace) e la riattivazione senza il refresh della pagina.
656
+ <span class="iubenda-title">Vuoi capire di più sulla cookie law?</span>
657
+ Consulta <a href="https://www.iubenda.com/it/soluzione-cookie-law" class="iubenda-url" target="_blank">la nostra guida completa alla cookie law</a>.
658
+ <span class="iubenda-title">Quali sono le funzionalità complete del plugin?</span>
659
+ Visita <a href="https://www.iubenda.com/it/help/posts/810" class="iubenda-url" target="_blank">la nostra pagina dedicata al plugin</a>.
660
+ <span class="iubenda-title">Inserisci qui sotto il codice di iubenda per la cookie law.</span>
661
+ Per far funzionare il plugin, è necessario inserire nel form sottostante il codice di iubenda che attiva il banner cookie law e la cookie policy.Questo codice può essere generato su www.iubenda.com, seguendo <a href="https://www.iubenda.com/it/help/posts/680" class="iubenda-url" target="_blank">questa guida
662
  </a>.
663
  </p>
664
 
691
 
692
  echo
693
  '
694
+ <div id="iubenda-information">Seleziona una lingua a cui associare il tuo codice</div>
695
  ';
696
 
697
  }
700
  echo '<textarea class="iubenda-textarea iubenda-textarea-single" name="iubenda-code-default">'.stripslashes(get_option("iubenda-code-default")).'</textarea>';
701
  }
702
 
703
+ echo '
704
+ <div class="iubenda-checkbox-options">
705
+
706
+ <p>
707
+ <label>
708
+ <input id="parser_type" type="checkbox" name="iubenda_parse" value="enabled" '.$checked_parse.'>
709
+ <span>
710
+ Effettua il blocco automatico degli script rilevati dal plugin<br />
711
+ (consulta <a target="_blank" class="iubenda-url" href="https://www.iubenda.com/it/help/posts/810">la nostra documentazione</a> per la lista di script rilevati)
712
+ </span>
713
+ </label>
714
+ </p>
715
+
716
+ <div id="iubenda_parse_child">
717
+ <p id="parser_engine">
718
+ Parsing engine:<br>
719
+ <label><input type="radio" name="parser_engine" value="default" '.$parser_engine_default.'>Default</label>
720
+ <label><input type="radio" name="parser_engine" value="new" '.$parser_engine_new.'>Sperimentale (Performance migliorata)</label>
721
+ </p>
722
+ <p id="par_skip_parsing">
723
+ <label>
724
+ <input type="checkbox" name="skip_parsing" value="skip" '.$checked.'>
725
+ <span>
726
+ Lascia intatti gli script della pagina se l\'utente ha già dato il consenso<br />
727
+ (migliora le prestazioni, altamente consigliato, da disattivare solo qualora il tuo sito utilizzi un sistema di cache)
728
+ </span>
729
+ </label>
730
+ </p>
731
+ <p id="par_iubenda_output_filter">
732
+ <label>
733
+ <input type="checkbox" name="iubenda_output_filter" value="enabled" '.$checked_output_filter.'>
734
+ <span>
735
+ Applica ottimizzazioni speciali in caso di errori con l\'output<br />
736
+ (attiva questa opzione solo qualora avessi problemi di performance o notassi che il blocco dei codici viene applicato più volte)
737
+ </span>
738
+ </label>
739
+ </p>
740
+
741
+ <hr />
742
+ </div> <!-- /iubenda_parse_child -->
743
+
744
+ <p>
745
+ <label>
746
+ <input type="checkbox" name="iubenda_ctype" value="enabled" '.$checked_ctype.'>
747
+ <span>
748
+ Restringi l\'esecuzione del plugin alle sole richieste che presentano "Content-type: text/html" (consigliato)
749
+ </span>
750
+ </label>
751
+ </p>
752
+ <p>
753
+ <label>
754
+ <input type="checkbox" name="iubenda_output_feed" value="enabled" '.$checked_output_feed.'>
755
+ <span>
756
+ Non eseguire il plugin all\'interno dei Feed RSS (consigliato)
757
+ </span>
758
+ </label>
759
+ </p>
760
+ <p>
761
+ <input type="submit" value="Salva" id="iubenda-save">
762
+ </p>
763
+ </div> <!-- /iubenda-checkbox-options -->
764
+ </form>
765
+ <p class="iubenda-text">
766
+ <span class="iubenda-title">Hai bisogno di supporto su questo plugin?</span>
767
+ Visita il nostro <a href="//support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti" class="iubenda-url" target="_blank">forum di supporto</a>.
768
+ </p>
769
+ <p class="iubenda-text">
770
+ <span class="iubenda-title">Vuoi provare una versione Beta di questo plugin, con le funzionalità più recenti?</span>
771
+ Visita <a href="https://www.iubenda.com/it/help/posts/810" class="iubenda-url" target="_blank">la nostra documentazione</a> e segui le istruzioni per installare una versione Beta.
772
+ </p>
773
+ </div>';
774
  }
775
  ?>
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: iubenda
3
  Donate link:
4
  Tags: cookies, cookie law, cookie policy, cookie banner, cookie block, privacy policy, cookie consent, privacy
5
  Requires at least: 3.0.1
6
- Tested up to: 4.4.0
7
- Stable tag: 1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -12,7 +12,7 @@ A plugin that works with the iubenda Cookie Law Solution: shows a cookie banner
12
 
13
  == Description ==
14
 
15
- NOTE: This plugin is a beta and could in certain situations still have bugs. We encourage you to actively let us know about any issues here: http://bit.ly/1g79rcQ (support.iubenda.com)
16
 
17
  * Find a comprehensive _guide and demo_ to the cookie law solution on our help blog https://www.iubenda.com/en/help/posts/1177
18
 
@@ -54,7 +54,7 @@ Iubenda and the Cookie Law Solution extension for WordPress help remove these co
54
 
55
  -----
56
 
57
- NOTA: Il plugin è attualmente in versione beta e potrebbe pertanto presentare alcuni bug. Ti invitiamo a segnalare sul nostro forum eventuali malfunzionamenti: http://bit.ly/1Vlbxck (support.iubenda.com)
58
 
59
  * Consulta la _guida completa_ al kit cookie law di iubenda: https://www.iubenda.com/it/help/posts/680
60
 
@@ -96,7 +96,7 @@ Il plugin Wordpress di iubenda permette di semplificare l’adeguamento del prop
96
 
97
  == Installation ==
98
 
99
- **NOTE: This plugin is a beta and could in certain situations still have bugs. We encourage you to actively let us know about any issues here:** http://bit.ly/1g79rcQ
100
 
101
  - **Installation via WP.org**: search in your WordPress plugin admin panel for "Iubenda Cookie Solution", install it;
102
  - Once the plugin is installed and activated, go to the Admin Panel (Settings > Iubenda Cookie Solution) where you will be asked to paste the code into tht field that gets generated from your Iubenda account dashboard when you activate the cookie law kit for your privacy policy. For more information on how to activate the cookie law kit, see this article: https://www.iubenda.com/it/help/posts/680;
@@ -106,8 +106,8 @@ Il plugin Wordpress di iubenda permette di semplificare l’adeguamento del prop
106
 
107
  `<!--IUB_COOKIE_POLICY_START-->
108
  <!--IUB_COOKIE_POLICY_END-->`
109
- - In case you're querying WordPress via API, you can disable our plugin by using the iub_no_parse=true URL parameter, like this: www.example.com/api/get_recent_posts?iub_no_parse=true.
110
-
111
 
112
  - **Installazione automatica**: installa da WordPres.org cercando "Iubenda Cookie Solution";
113
  - Una volta installato ed attivato il plugin, accedi al pannello Admin (Impostazioni > Iubenda Cookie Solution) dove ti verrà chiesto di incollare in un campo il codice che iubenda genera quando attivi il kit cookie law sulla tua privacy policy. Per ulteriori informazioni su come attivare il kit cookie law, consulta questo articolo: https://www.iubenda.com/it/help/posts/680;
@@ -119,6 +119,14 @@ Il plugin Wordpress di iubenda permette di semplificare l’adeguamento del prop
119
  <!--IUB_COOKIE_POLICY_END-->`
120
  - Se utilizzi WordPress tramite API, puoi disattivare il nostro plugin usando il parametro URL iub_no_parse=true, in questo modo: www.example.com/api/get_recent_posts?iub_no_parse=true.
121
 
 
 
 
 
 
 
 
 
122
  == Screenshots ==
123
 
124
  1. This screen shot shows the default banner on top of our test site testkada4.altervista.org/cookie-test/example2.html
@@ -127,11 +135,19 @@ Il plugin Wordpress di iubenda permette di semplificare l’adeguamento del prop
127
 
128
  == Changelog ==
129
 
 
 
 
 
 
 
 
 
130
  = 1.10.21 =
131
  * Rolling back to 1.10.11
132
 
133
  = 1.10.20 =
134
- * Hotfix: moved is_user_logged_in method control after the “template_redirect” hook.
135
 
136
  = 1.10.19 =
137
  * Fixed a series of conflicts with AJAX requests, which were conflicting with Contact Form 7 and other plugins
@@ -302,7 +318,7 @@ In case of continued browsing, the preferences of your users for the use of cook
302
  == Bug reports ==
303
 
304
  * The best way you can help us is by providing as much information as possible, including the use of wp_debug https://codex.wordpress.org/Debugging_in_WordPress.
305
- * We will be very happy to receive feedback here: http://bit.ly/1g79rcQ
306
 
307
  == Istruzioni in italiano ==
308
 
@@ -337,4 +353,4 @@ In caso di proseguimento della navigazione, le preferenze dei tuoi utenti circa
337
  == Segnalazioni di bug ==
338
 
339
  * Il modo migliore per aiutarci è quello di fornire quante più informazioni possibili, compreso l'uso di wp_debug https://codex.wordpress.org/Debugging_in_WordPress.
340
- * Saremo molto contenti di ricevere feedback qui: http://bit.ly/1g79rcQ
3
  Donate link:
4
  Tags: cookies, cookie law, cookie policy, cookie banner, cookie block, privacy policy, cookie consent, privacy
5
  Requires at least: 3.0.1
6
+ Tested up to: 4.4.1
7
+ Stable tag: 1.10.21
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
12
 
13
  == Description ==
14
 
15
+ NOTE: This plugin is a beta and could in certain situations still have bugs. We encourage you to actively let us know about any issues here: [Uservoice forum](http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti) (support.iubenda.com)
16
 
17
  * Find a comprehensive _guide and demo_ to the cookie law solution on our help blog https://www.iubenda.com/en/help/posts/1177
18
 
54
 
55
  -----
56
 
57
+ NOTA: Il plugin è attualmente in versione beta e potrebbe pertanto presentare alcuni bug. Ti invitiamo a segnalare sul nostro forum eventuali malfunzionamenti: [Uservoice forum](http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti) (support.iubenda.com)
58
 
59
  * Consulta la _guida completa_ al kit cookie law di iubenda: https://www.iubenda.com/it/help/posts/680
60
 
96
 
97
  == Installation ==
98
 
99
+ **NOTE: This plugin is a beta and could in certain situations still have bugs. We encourage you to actively let us know about any issues here:** [Uservoice forum](http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti)
100
 
101
  - **Installation via WP.org**: search in your WordPress plugin admin panel for "Iubenda Cookie Solution", install it;
102
  - Once the plugin is installed and activated, go to the Admin Panel (Settings > Iubenda Cookie Solution) where you will be asked to paste the code into tht field that gets generated from your Iubenda account dashboard when you activate the cookie law kit for your privacy policy. For more information on how to activate the cookie law kit, see this article: https://www.iubenda.com/it/help/posts/680;
106
 
107
  `<!--IUB_COOKIE_POLICY_START-->
108
  <!--IUB_COOKIE_POLICY_END-->`
109
+ - In case you're querying WordPress via API, you can disable our plugin by using the iub_no_parse=true URL parameter, like this: www.example.com/api/get_recent_posts?iub_no_parse=true.
110
+
111
 
112
  - **Installazione automatica**: installa da WordPres.org cercando "Iubenda Cookie Solution";
113
  - Una volta installato ed attivato il plugin, accedi al pannello Admin (Impostazioni > Iubenda Cookie Solution) dove ti verrà chiesto di incollare in un campo il codice che iubenda genera quando attivi il kit cookie law sulla tua privacy policy. Per ulteriori informazioni su come attivare il kit cookie law, consulta questo articolo: https://www.iubenda.com/it/help/posts/680;
119
  <!--IUB_COOKIE_POLICY_END-->`
120
  - Se utilizzi WordPress tramite API, puoi disattivare il nostro plugin usando il parametro URL iub_no_parse=true, in questo modo: www.example.com/api/get_recent_posts?iub_no_parse=true.
121
 
122
+ == Frequently Asked Questions ==
123
+
124
+ **Where can I find help?**
125
+ You can find a dedicated support forum thread here [Uservoice forum](http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti) or we're happy to answer at info@iubenda.com.
126
+
127
+ **Do you have more guidance, or a demo?**
128
+ Yes, right here: https://www.iubenda.com/en/help/posts/1177
129
+
130
  == Screenshots ==
131
 
132
  1. This screen shot shows the default banner on top of our test site testkada4.altervista.org/cookie-test/example2.html
135
 
136
  == Changelog ==
137
 
138
+ = 1.11.0 =
139
+ * New: Introduced a MUCH FASTER experimental parsing engine (visit the plugin options and select the experimental parsing engine)
140
+ * New: Created a new option that allow users to enable/disable the parsing engine and to select the parsing engine between stabile and experimental
141
+ * New: Created a new option that filters the output buffer level to get only the first level ()
142
+ * Fixed a series of conflicts with AJAX requests, which were conflicting with Contact Form 7, BackWPUp and other plugins
143
+ * Added filter that only activates the plugin when the Content Type is text/html, enabled by default
144
+ * Loads of bug fixes and speed improvements
145
+
146
  = 1.10.21 =
147
  * Rolling back to 1.10.11
148
 
149
  = 1.10.20 =
150
+ * Hotfix: moved "is_user_logged_in" method control after the “template_redirect” hook.
151
 
152
  = 1.10.19 =
153
  * Fixed a series of conflicts with AJAX requests, which were conflicting with Contact Form 7 and other plugins
318
  == Bug reports ==
319
 
320
  * The best way you can help us is by providing as much information as possible, including the use of wp_debug https://codex.wordpress.org/Debugging_in_WordPress.
321
+ * We will be very happy to receive feedback here: [Uservoice forum](http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti)
322
 
323
  == Istruzioni in italiano ==
324
 
353
  == Segnalazioni di bug ==
354
 
355
  * Il modo migliore per aiutarci è quello di fornire quante più informazioni possibili, compreso l'uso di wp_debug https://codex.wordpress.org/Debugging_in_WordPress.
356
+ * Saremo molto contenti di ricevere feedback qui: http://support.iubenda.com/forums/314835-general/suggestions/9670701-discussion-regarding-the-iubenda-cookie-law-soluti