| @@ -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) { |