PluginProbe
CookieAdmin – Cookie Consent Banner / 1.2.3
CookieAdmin – Cookie Consent Banner v1.2.3
1.2.3 1.2.2 1.2.1 1.2.0 1.1.9 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
← All changes | includes/admin/scan.php +93 -60 1.1.71.2.3 View file →
@@ -54,8 +54,13 @@
54 54
55 55 if(empty($data->description)){
56 56 $data->description = 'Not Available';
57 57 }
58 +
59 + $patterns = !empty($data->patterns) ? $data->patterns : '';
60 + if(!empty($patterns)){
61 + $patterns = strtr($patterns, ['[' => '', ']' => '', '"' => '']);
62 + }
58 63
59 64 $categorized[$data->category] .= '<tr><td>'.esc_html($data->cookie_name).'</td><td>'.esc_html($data->description).'</td><td>'.esc_html($exp).'</td><td> <span class="dashicons dashicons-edit cookieadmin_edit_icon" id="edit_'.esc_attr($data->id).'"></span> <span class="dashicons dashicons-trash cookieadmin_delete_icon" id="delete_'.esc_attr($data->id).'"></span> </td></tr>';
60 65
61 66 $categorized_cookies[$data->id]['id'] = $data->id;
@@ -62,8 +67,9 @@
62 67 $categorized_cookies[$data->id]['cookie_name'] = $data->cookie_name;
63 68 $categorized_cookies[$data->id]['description'] = $data->description;
64 69 $categorized_cookies[$data->id]['category'] = $data->category;
65 70 $categorized_cookies[$data->id]['expires'] = $expires;
71 + $categorized_cookies[$data->id]['patterns'] = $patterns;
66 72
67 73 }
68 74
69 75 wp_register_script('cookieadmin_categorized_cookies', '', array('jquery'), COOKIEADMIN_VERSION, true);
@@ -74,62 +80,60 @@
74 80 $no_cookies_hidden = '<tr class="cookieadmin-empty-row" hidden><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>';
75 81
76 82 echo '
77 83 <div class="cookieadmin_consent-wrap">
78 - <form action="" method="post">
79 - <div class="cookieadmin_consent-contents">
80 - <div class="cookieadmin_consent_settings">
81 - <div class="cookieadmin-setting cookieadmin-manager-cookie-scan">
82 - <div class="cookieadmin-scan-cookie-info">
83 - <label class="cookieadmin-title">'.esc_html__('Scanned Cookies', 'cookieadmin').'</label>
84 - <p class="cookieadmin-desc">'.esc_html__('Scanned cookies will be automatically categorised and displayed here. You can add, edit and delete cookies as per your needs.', 'cookieadmin').'</p>
85 - </div>
86 - <div class="cookieadmin-setting-contents cookieadmin-buttons-div">
87 - <div class="cookieadmin-setting-contents cookieadmin-add-cookie-div">
88 - <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-add-cookie" value="'.esc_html__('Add Cookie', 'cookieadmin').'" cookieadmin-pro-only="1"></input>
89 - '.wp_kses_post($cookieadmin_requires_pro).'
90 - </div>
91 - <div class="cookieadmin-setting-contents cookieadmin-cookie-scan'.( !empty($cookieadmin_requires_pro) ? ' cookieadmin-tooltip-box' : '').'" data-tip="'.esc_html__('Basic scan might miss some cookies.', 'cookieadmin').'">'.
92 - ( !empty($cookieadmin_requires_pro) ? '
93 - <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Scan', 'cookieadmin').'"></input> ' : '').'
94 - <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Full Scan', 'cookieadmin').'" cookieadmin-pro-only="1">
95 - '.wp_kses_post($cookieadmin_requires_pro).'
96 - </div>
97 - </div>
98 - <div class="cookieadmin-manager-result">
99 - <table class="cookieadmin-table cookieadmin-cookie-categorized">
100 - <thead>
101 - <tr>
102 - <th width="30%">'.esc_html__('Name', 'cookieadmin').'</th>
103 - <th width="50%">'.esc_html__('Description', 'cookieadmin').'</th>
104 - <th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th>
105 - <th width="10%">'.esc_html__('Action', 'cookieadmin').'</th>
106 - </tr>
107 - </thead>
108 - <tbody id="necessary_tbody">
109 - <tr><td colspan=4>'.esc_html__('Necessary Cookies', 'cookieadmin').'</td></tr>
110 - '.( !empty($categorized['Necessary']) ? $no_cookies_hidden . wp_kses_post($categorized['Necessary']) : $no_cookies ).'
111 - </tbody>
112 - <tbody id="functional_tbody">
113 - <tr><td colspan=4>'.esc_html__('Functional Cookies', 'cookieadmin').'</td></tr>
114 - '.( !empty($categorized['Functional']) ? $no_cookies_hidden . wp_kses_post($categorized['Functional']) : $no_cookies ).'
115 - </tbody>
116 - <tbody id="analytics_tbody">
117 - <tr><td colspan=4>'.esc_html__('Analytical Cookies', 'cookieadmin').'</td></tr>
118 - '.( !empty($categorized['Analytics']) ? $no_cookies_hidden . wp_kses_post($categorized['Analytics']) :$no_cookies ).'
119 - </tbody>
120 - <tbody id="marketing_tbody">
121 - <tr><td colspan=4>'.esc_html__('Marketing Cookies', 'cookieadmin').'</td></tr>
122 - '.( !empty($categorized['Marketing']) ? $no_cookies_hidden . wp_kses_post($categorized['Marketing']) : $no_cookies ).'
123 - </tbody>
124 - <tbody id="unknown_tbody">
125 - <tr><td colspan=4>'.esc_html__('Unknown Cookies', 'cookieadmin').'</td></tr>
126 - '.( !empty($categorized['Unknown']) ? $no_cookies_hidden . wp_kses_post($categorized['Unknown']) : $no_cookies ).'
127 - </tbody>
128 - </table>
129 - </div>
84 + <form action="" method="post">';
85 + do_action('cookieadmin_before_scan_results');
86 +
87 + echo '<div class="cookieadmin-card">
88 + <div class="cookieadmin-card-header">
89 + <div>
90 + <span class="cookieadmin-card-title"><span class="dashicons dashicons-list-view"></span> '.esc_html__('Scanned Cookies', 'cookieadmin').'</span>
91 + <p class="cookieadmin-desc">'.esc_html__('Scanned cookies will be automatically categorised and displayed here. You can add, edit and delete cookies as per your needs.', 'cookieadmin').'</p>
130 92 </div>
93 + <div class="cookieadmin-toolbar-actions">
94 + <input type="button" class="cookieadmin-btn cookieadmin-btn-secondary cookieadmin-add-cookie" value="'.esc_html__('Add Cookie', 'cookieadmin').'" cookieadmin-pro-only="1"></input>
95 + '.wp_kses_post($cookieadmin_requires_pro).
96 + ( !empty($cookieadmin_requires_pro) ? '
97 + <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Scan', 'cookieadmin').'"></input> ' : '').'
98 + <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Full Scan', 'cookieadmin').'" cookieadmin-pro-only="1">
99 + '.wp_kses_post($cookieadmin_requires_pro).'
100 + </div>
131 101 </div>
102 + <div class="cookieadmin-card-body">
103 + <div class="cookieadmin-manager-result">
104 + <table class="cookieadmin-table cookieadmin-cookie-categorized">
105 + <thead>
106 + <tr>
107 + <th width="30%">'.esc_html__('Name', 'cookieadmin').'</th>
108 + <th width="50%">'.esc_html__('Description', 'cookieadmin').'</th>
109 + <th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th>
110 + <th width="10%">'.esc_html__('Action', 'cookieadmin').'</th>
111 + </tr>
112 + </thead>
113 + <tbody id="necessary_tbody">
114 + <tr><td colspan=4>'.esc_html__('Necessary Cookies', 'cookieadmin').'</td></tr>
115 + '.( !empty($categorized['Necessary']) ? $no_cookies_hidden . wp_kses_post($categorized['Necessary']) : $no_cookies ).'
116 + </tbody>
117 + <tbody id="functional_tbody">
118 + <tr><td colspan=4>'.esc_html__('Functional Cookies', 'cookieadmin').'</td></tr>
119 + '.( !empty($categorized['Functional']) ? $no_cookies_hidden . wp_kses_post($categorized['Functional']) : $no_cookies ).'
120 + </tbody>
121 + <tbody id="analytics_tbody">
122 + <tr><td colspan=4>'.esc_html__('Analytical Cookies', 'cookieadmin').'</td></tr>
123 + '.( !empty($categorized['Analytics']) ? $no_cookies_hidden . wp_kses_post($categorized['Analytics']) :$no_cookies ).'
124 + </tbody>
125 + <tbody id="marketing_tbody">
126 + <tr><td colspan=4>'.esc_html__('Marketing Cookies', 'cookieadmin').'</td></tr>
127 + '.( !empty($categorized['Marketing']) ? $no_cookies_hidden . wp_kses_post($categorized['Marketing']) : $no_cookies ).'
128 + </tbody>
129 + <tbody id="unknown_tbody">
130 + <tr><td colspan=4>'.esc_html__('Unknown Cookies', 'cookieadmin').'</td></tr>
131 + '.( !empty($categorized['Unknown']) ? $no_cookies_hidden . wp_kses_post($categorized['Unknown']) : $no_cookies ).'
132 + </tbody>
133 + </table>
134 + </div>
135 + </div>
132 136 </div>';
133 137
134 138 wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security');
135 139
@@ -174,10 +178,19 @@
174 178
175 179 <div class="cookieadmin_form-group">
176 180 <label for="duration">'.esc_html__('Duration', 'cookieadmin').'</label>
177 181 <input type="number" min=0 id="cookieadmin-dialog-cookie-duration" Placeholder="'.esc_html__('Set 0 for Session or expiry in days', 'cookieadmin').'">
178 - </div>
179 - </div>
182 + </div>';
183 +
184 + if(empty($cookieadmin_requires_pro)){
185 + echo '<div class="cookieadmin_form-group">
186 + <label for="patterns">'.esc_html__('Scripts patterns', 'cookieadmin').'</label>
187 + <span>'.__('If scripts has "src" attribute then paste the src or add comma separated patterns to match the scripts. Try choosing log patterns to block only targeted script', 'cookieadmin').'</span>
188 + <br /><span><strong>'.__('Note: ', 'cookieadmin').'</strong>'.__('Wildcards (*, ?, ^, % etc) are not allowed', 'cookieadmin').'</span>
189 + <textarea id="cookieadmin-dialog-cookie-patterns" Placeholder="'.esc_attr__('https://connect.facebook.net/en_US/fbevents.js OR fbq.push, window.facebookSignals', 'cookieadmin').'"></textarea>
190 + </div>';
191 + }
192 + echo '</div>
180 193 <div class="cookieadmin_modal-footer">
181 194 <span id="cookieadmin-message"></span>
182 195 <button class="cookieadmin-btn cookieadmin-btn-primary" id="cookieadmin_dialog_save_btn" form="edit-cookie-form">'.esc_html__('Save', 'cookieadmin').'</button>
183 196 </div>
@@ -226,9 +239,9 @@
226 239
227 240 if(!method_exists('\CookieAdminPro\Admin', 'cookieadmin_get_site_urls')){
228 241 $urls = [home_url()];
229 242 } else {
230 - $urls = \CookieAdminPro\Admin::cookieadmin_get_site_urls($urls, 1);
243 + $urls = \CookieAdminPro\Admin::cookieadmin_get_site_urls($urls);
231 244 }
232 245
233 246 $cookieData = apply_filters('cookieadmin_pro_scan_cookies', $urls);
234 247
@@ -451,11 +464,13 @@
451 464 );
452 465 }
453 466
454 467 $cookie_info = map_deep(wp_unslash($_REQUEST['cookie_info']), 'sanitize_text_field');
468 + // $scan_timestamp = $wpdb->get_col($wpdb->prepare("SELECT scan_timestamp FROM {$table_name} WHERE id = %d", $cookie_info['id']));
455 469
456 - $scan_timestamp = $wpdb->get_col($wpdb->prepare("SELECT scan_timestamp FROM {$table_name} WHERE id = %d", $cookie_info['id']));
457 -
470 + $scanned_cookies = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$table_name} WHERE id = %d", $cookie_info['id']));
471 + $scan_timestamp = !empty($scanned_cookies->scan_timestamp) ? $scanned_cookies->scan_timestamp : 0;
472 +
458 473 if(empty($scan_timestamp)){
459 474 wp_send_json(['success' => false,
460 475 'data' => null,
461 476 'message' => __('Error : Invalid cookie record', 'cookieadmin')]
@@ -461,16 +476,34 @@
461 476 'message' => __('Error : Invalid cookie record', 'cookieadmin')]
462 477 );
463 478 }
464 479
465 - $calculated_expiry_seconds = ($cookie_info['duration'] * 86400) + $scan_timestamp[0];
480 + $calculated_expiry_seconds = ($cookie_info['duration'] * 86400) + $scan_timestamp;
466 481 $calculated_expiry = date('Y-m-d H:i:s', $calculated_expiry_seconds);
482 +
483 + // Update the additional patterns into the saved patterns
484 + $patterns = '[]';
485 + if(!empty($cookie_info['patterns'])){
486 + $script_patterns = explode(',', $cookie_info['patterns']);
487 + if(!empty($script_patterns) && is_array($script_patterns)){
488 + foreach($script_patterns as $pat){
489 + if(strlen(str_replace(['*', '?', '^', '%'], '', $pat)) < strlen($pat)){
490 + continue;
491 + }
492 + // do not ad comma if the saved pattern is empty
493 + $comma = ($patterns === '[]') ? '' : ', ';
494 + $patterns = str_replace(']', $comma . '"' .(string) trim($pat).'"]', $patterns);
495 + }
496 + }
497 + }else{
498 + $patterns = !empty($scanned_cookies->patterns) ? $scanned_cookies->patterns : '[]';
499 + }
467 500
468 501 $resp = $wpdb->update(
469 502 $table_name,
470 - [ 'cookie_name' => $cookie_info['name'], 'description' => $cookie_info['description'], 'expires' => $calculated_expiry, 'category' => $cookie_info['type'], 'edited' => 1], // Data to update
503 + [ 'cookie_name' => $cookie_info['name'], 'description' => $cookie_info['description'], 'expires' => $calculated_expiry, 'category' => $cookie_info['type'], 'patterns' => $patterns, 'edited' => 1], // Data to update
471 504 [ 'id' => $cookie_info['id'] ], // WHERE
472 - [ '%s', '%s', '%s', '%s', '%d' ], // Format for the data
505 + [ '%s', '%s', '%s', '%s', '%s', '%d' ], // Format for the data
473 506 [ '%d' ] // Format for the WHERE clause
474 507 );
475 508
476 509 if ($wpdb->last_error || $resp === false) {