Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/cookiead.../includes/admin
File: scan.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace CookieAdmin\Admin;
[2] Fix | Delete
[3] Fix | Delete
if(!defined('COOKIEADMIN_VERSION') || !defined('ABSPATH')){
[4] Fix | Delete
die('Hacking Attempt');
[5] Fix | Delete
}
[6] Fix | Delete
[7] Fix | Delete
class Scan{
[8] Fix | Delete
[9] Fix | Delete
static function show_cookies(){
[10] Fix | Delete
global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $wpdb;
[11] Fix | Delete
[12] Fix | Delete
\CookieAdmin\Admin::header_theme(__('Manage Cookies', 'cookieadmin'));
[13] Fix | Delete
[14] Fix | Delete
$cookieadmin_requires_pro = \CookieAdmin\Admin::is_feature_available(1);
[15] Fix | Delete
[16] Fix | Delete
$table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
[17] Fix | Delete
[18] Fix | Delete
$categorized = [];
[19] Fix | Delete
$categorized_cookies = [];
[20] Fix | Delete
[21] Fix | Delete
[22] Fix | Delete
$scanned_cookies = $wpdb->get_results("SELECT * FROM {$table_name}");
[23] Fix | Delete
[24] Fix | Delete
foreach($scanned_cookies as $row => $data){
[25] Fix | Delete
[26] Fix | Delete
$expires = 0;
[27] Fix | Delete
[28] Fix | Delete
if(!empty($data->expires) && !empty($data->scan_timestamp)){
[29] Fix | Delete
$expires = strtotime($data->expires);
[30] Fix | Delete
$timestamp = $data->scan_timestamp;
[31] Fix | Delete
[32] Fix | Delete
if(!empty($expires) && ($expires > 0) && !empty($timestamp)){
[33] Fix | Delete
$expires = round(($expires - $timestamp) / 86400);
[34] Fix | Delete
}else{
[35] Fix | Delete
$expires = 0;
[36] Fix | Delete
}
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
if($expires < 1){
[40] Fix | Delete
$exp = __('Session', 'cookieadmin');
[41] Fix | Delete
}else{
[42] Fix | Delete
$exp = $expires . ' '.__('Day(s)', 'cookieadmin');
[43] Fix | Delete
}
[44] Fix | Delete
[45] Fix | Delete
if(empty($data->category)){
[46] Fix | Delete
$data->category = 'Unknown';
[47] Fix | Delete
}
[48] Fix | Delete
[49] Fix | Delete
if(!isset($categorized[$data->category])){
[50] Fix | Delete
$categorized[$data->category] = '';
[51] Fix | Delete
}
[52] Fix | Delete
[53] Fix | Delete
if(empty($data->description)){
[54] Fix | Delete
$data->description = 'Not Available';
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
$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>';
[58] Fix | Delete
[59] Fix | Delete
$categorized_cookies[$data->id]['id'] = $data->id;
[60] Fix | Delete
$categorized_cookies[$data->id]['cookie_name'] = $data->cookie_name;
[61] Fix | Delete
$categorized_cookies[$data->id]['description'] = $data->description;
[62] Fix | Delete
$categorized_cookies[$data->id]['category'] = $data->category;
[63] Fix | Delete
$categorized_cookies[$data->id]['expires'] = $expires;
[64] Fix | Delete
[65] Fix | Delete
}
[66] Fix | Delete
[67] Fix | Delete
wp_register_script('cookieadmin_categorized_cookies', '', array('jquery'), COOKIEADMIN_VERSION, true);
[68] Fix | Delete
wp_enqueue_script('cookieadmin_categorized_cookies');
[69] Fix | Delete
wp_localize_script('cookieadmin_categorized_cookies', 'categorized_cookies', $categorized_cookies);
[70] Fix | Delete
[71] Fix | Delete
$no_cookies = '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>';
[72] Fix | Delete
$no_cookies_hidden = '<tr class="cookieadmin-empty-row" hidden><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>';
[73] Fix | Delete
[74] Fix | Delete
echo '
[75] Fix | Delete
<div class="cookieadmin_consent-wrap">
[76] Fix | Delete
<form action="" method="post">
[77] Fix | Delete
<div class="cookieadmin_consent-contents">
[78] Fix | Delete
<div class="cookieadmin_consent_settings">
[79] Fix | Delete
<div class="cookieadmin-setting cookieadmin-manager-cookie-scan">
[80] Fix | Delete
<div class="cookieadmin-scan-cookie-info">
[81] Fix | Delete
<label class="cookieadmin-title">'.esc_html__('Scanned Cookies', 'cookieadmin').'</label>
[82] Fix | Delete
<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>
[83] Fix | Delete
</div>
[84] Fix | Delete
<div class="cookieadmin-setting-contents cookieadmin-buttons-div">
[85] Fix | Delete
<div class="cookieadmin-setting-contents cookieadmin-add-cookie-div">
[86] Fix | Delete
<input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-add-cookie" value="'.esc_html__('Add Cookie', 'cookieadmin').'" cookieadmin-pro-only="1"></input>
[87] Fix | Delete
'.wp_kses_post($cookieadmin_requires_pro).'
[88] Fix | Delete
</div>
[89] Fix | Delete
<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').'">'.
[90] Fix | Delete
( !empty($cookieadmin_requires_pro) ? '
[91] Fix | Delete
<input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Scan', 'cookieadmin').'"></input> ' : '').'
[92] Fix | Delete
<input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="'.esc_html__('Full Scan', 'cookieadmin').'" cookieadmin-pro-only="1">
[93] Fix | Delete
'.wp_kses_post($cookieadmin_requires_pro).'
[94] Fix | Delete
</div>
[95] Fix | Delete
</div>
[96] Fix | Delete
<div class="cookieadmin-manager-result">
[97] Fix | Delete
<table class="cookieadmin-table cookieadmin-cookie-categorized">
[98] Fix | Delete
<thead>
[99] Fix | Delete
<tr>
[100] Fix | Delete
<th width="30%">'.esc_html__('Name', 'cookieadmin').'</th>
[101] Fix | Delete
<th width="50%">'.esc_html__('Description', 'cookieadmin').'</th>
[102] Fix | Delete
<th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th>
[103] Fix | Delete
<th width="10%">'.esc_html__('Action', 'cookieadmin').'</th>
[104] Fix | Delete
</tr>
[105] Fix | Delete
</thead>
[106] Fix | Delete
<tbody id="necessary_tbody">
[107] Fix | Delete
<tr><td colspan=4>'.esc_html__('Necessary Cookies', 'cookieadmin').'</td></tr>
[108] Fix | Delete
'.( !empty($categorized['Necessary']) ? $no_cookies_hidden . wp_kses_post($categorized['Necessary']) : $no_cookies ).'
[109] Fix | Delete
</tbody>
[110] Fix | Delete
<tbody id="functional_tbody">
[111] Fix | Delete
<tr><td colspan=4>'.esc_html__('Functional Cookies', 'cookieadmin').'</td></tr>
[112] Fix | Delete
'.( !empty($categorized['Functional']) ? $no_cookies_hidden . wp_kses_post($categorized['Functional']) : $no_cookies ).'
[113] Fix | Delete
</tbody>
[114] Fix | Delete
<tbody id="analytics_tbody">
[115] Fix | Delete
<tr><td colspan=4>'.esc_html__('Analytical Cookies', 'cookieadmin').'</td></tr>
[116] Fix | Delete
'.( !empty($categorized['Analytics']) ? $no_cookies_hidden . wp_kses_post($categorized['Analytics']) :$no_cookies ).'
[117] Fix | Delete
</tbody>
[118] Fix | Delete
<tbody id="marketing_tbody">
[119] Fix | Delete
<tr><td colspan=4>'.esc_html__('Marketing Cookies', 'cookieadmin').'</td></tr>
[120] Fix | Delete
'.( !empty($categorized['Marketing']) ? $no_cookies_hidden . wp_kses_post($categorized['Marketing']) : $no_cookies ).'
[121] Fix | Delete
</tbody>
[122] Fix | Delete
<tbody id="unknown_tbody">
[123] Fix | Delete
<tr><td colspan=4>'.esc_html__('Unknown Cookies', 'cookieadmin').'</td></tr>
[124] Fix | Delete
'.( !empty($categorized['Unknown']) ? $no_cookies_hidden . wp_kses_post($categorized['Unknown']) : $no_cookies ).'
[125] Fix | Delete
</tbody>
[126] Fix | Delete
</table>
[127] Fix | Delete
</div>
[128] Fix | Delete
</div>
[129] Fix | Delete
</div>
[130] Fix | Delete
</div>';
[131] Fix | Delete
[132] Fix | Delete
wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security');
[133] Fix | Delete
[134] Fix | Delete
echo '
[135] Fix | Delete
</div>
[136] Fix | Delete
</form>
[137] Fix | Delete
<br/>';
[138] Fix | Delete
[139] Fix | Delete
\CookieAdmin\Admin::footer_theme();
[140] Fix | Delete
[141] Fix | Delete
echo '
[142] Fix | Delete
<!-- Modal Overlay -->
[143] Fix | Delete
<div class="cookieadmin_modal-overlay" id="edit-cookie-modal" hidden>
[144] Fix | Delete
<div class="cookieadmin_modal-container">
[145] Fix | Delete
<div class="cookieadmin_modal-header">
[146] Fix | Delete
<h2>'.esc_html__('Edit Cookie', 'cookieadmin').'</h2>
[147] Fix | Delete
<button class="cookieadmin_dialog_modal_close_btn">&times;</button>
[148] Fix | Delete
</div>
[149] Fix | Delete
[150] Fix | Delete
<div class="cookieadmin_modal-body">
[151] Fix | Delete
<div class="cookieadmin_form-group">
[152] Fix | Delete
<label for="cookieadmin-dialog-cookie-category">'.esc_html__('Category', 'cookieadmin').'</label>
[153] Fix | Delete
<select id="cookieadmin-dialog-cookie-category">
[154] Fix | Delete
<option value="" selected>'.esc_html__('Select a category', 'cookieadmin').'</option>
[155] Fix | Delete
<option value="Necessary">'.esc_html__('Necessary', 'cookieadmin').'</option>
[156] Fix | Delete
<option value="Functional">'.esc_html__('Functional', 'cookieadmin').'</option>
[157] Fix | Delete
<option value="Analytics">'.esc_html__('Analytical', 'cookieadmin').'</option>
[158] Fix | Delete
<option value="Marketing">'.esc_html__('Marketing', 'cookieadmin').'</option>
[159] Fix | Delete
<option value="Unknown">'.esc_html__('Unknown', 'cookieadmin').'</option>
[160] Fix | Delete
</select>
[161] Fix | Delete
</div>
[162] Fix | Delete
[163] Fix | Delete
<div class="cookieadmin_form-group">
[164] Fix | Delete
<label for="cookie_id">'.esc_html__('Cookie Name/ID', 'cookieadmin').'</label>
[165] Fix | Delete
<input type="text" id="cookieadmin-dialog-cookie-name" Placeholder="'.esc_html__('Enter Cookie Name or id', 'cookieadmin').'">
[166] Fix | Delete
</div>
[167] Fix | Delete
[168] Fix | Delete
<div class="cookieadmin_form-group">
[169] Fix | Delete
<label for="description">'.esc_html__('Description', 'cookieadmin').'</label>
[170] Fix | Delete
<textarea id="cookieadmin-dialog-cookie-desc" Placeholder="'.esc_html__('Enter Cookie description here', 'cookieadmin').'"></textarea>
[171] Fix | Delete
</div>
[172] Fix | Delete
[173] Fix | Delete
<div class="cookieadmin_form-group">
[174] Fix | Delete
<label for="duration">'.esc_html__('Duration', 'cookieadmin').'</label>
[175] Fix | Delete
<input type="number" min=0 id="cookieadmin-dialog-cookie-duration" Placeholder="'.esc_html__('Set 0 for Session or expiry in days', 'cookieadmin').'">
[176] Fix | Delete
</div>
[177] Fix | Delete
</div>
[178] Fix | Delete
<div class="cookieadmin_modal-footer">
[179] Fix | Delete
<span id="cookieadmin-message"></span>
[180] Fix | Delete
<button class="cookieadmin-btn cookieadmin-btn-primary" id="cookieadmin_dialog_save_btn" form="edit-cookie-form">'.esc_html__('Save', 'cookieadmin').'</button>
[181] Fix | Delete
</div>
[182] Fix | Delete
</div>
[183] Fix | Delete
</div>';
[184] Fix | Delete
}
[185] Fix | Delete
[186] Fix | Delete
[187] Fix | Delete
[188] Fix | Delete
static function scan_cookies_ajax(){
[189] Fix | Delete
global $cookieadmin_error;
[190] Fix | Delete
[191] Fix | Delete
$urls = [];
[192] Fix | Delete
if(!empty($_REQUEST['urls'])){
[193] Fix | Delete
$urls = map_deep(wp_unslash($_REQUEST['urls']), 'sanitize_url');
[194] Fix | Delete
}
[195] Fix | Delete
[196] Fix | Delete
if(cookieadmin_is_pro()){
[197] Fix | Delete
$scanner_info = get_option('cookieadmin_pro_scanner', []);
[198] Fix | Delete
[199] Fix | Delete
if(!empty($scanner_info['last_scan']) && (time() > $scanner_info['last_scan'] + 3600)){
[200] Fix | Delete
wp_send_json([
[201] Fix | Delete
'success' => false,
[202] Fix | Delete
'message' => __('Cookie Scan can be triggered once an hour', 'cookieadmin')
[203] Fix | Delete
]);
[204] Fix | Delete
}
[205] Fix | Delete
}
[206] Fix | Delete
[207] Fix | Delete
self::scan_cookies($urls);
[208] Fix | Delete
[209] Fix | Delete
if(!empty($cookieadmin_error)){
[210] Fix | Delete
wp_send_json([
[211] Fix | Delete
'success' => false,
[212] Fix | Delete
'message' => $cookieadmin_error]
[213] Fix | Delete
);
[214] Fix | Delete
}
[215] Fix | Delete
[216] Fix | Delete
wp_send_json(['success' => true, 'data' => null]);
[217] Fix | Delete
}
[218] Fix | Delete
[219] Fix | Delete
// Orchestrator function for scanning cookies
[220] Fix | Delete
static function scan_cookies($urls = []){
[221] Fix | Delete
global $cookieadmin_error;
[222] Fix | Delete
[223] Fix | Delete
if(cookieadmin_is_pro()){
[224] Fix | Delete
[225] Fix | Delete
if(!method_exists('\CookieAdminPro\Admin', 'cookieadmin_get_site_urls')){
[226] Fix | Delete
$urls = [home_url()];
[227] Fix | Delete
} else {
[228] Fix | Delete
$urls = \CookieAdminPro\Admin::cookieadmin_get_site_urls($urls, 1);
[229] Fix | Delete
}
[230] Fix | Delete
[231] Fix | Delete
$cookieData = apply_filters('cookieadmin_pro_scan_cookies', $urls);
[232] Fix | Delete
[233] Fix | Delete
//Server side scann - skipped for now - need to discuss.
[234] Fix | Delete
// $cookieData2 = \CookieAdmin\Scanner::start_scan($urls);
[235] Fix | Delete
// $cookieData = array_replace_recursive($cookieData2, $cookieData1);
[236] Fix | Delete
[237] Fix | Delete
if(!empty($cookieadmin_error)){
[238] Fix | Delete
update_option('cookieadmin_scan', [
[239] Fix | Delete
'status' => 3,
[240] Fix | Delete
'success' => false,
[241] Fix | Delete
'message' => $cookieadmin_error,
[242] Fix | Delete
'update' => time()
[243] Fix | Delete
]);
[244] Fix | Delete
return;
[245] Fix | Delete
}
[246] Fix | Delete
[247] Fix | Delete
if(!empty($cookieData)){
[248] Fix | Delete
[249] Fix | Delete
if(function_exists('cookieadmin_pro_get_remaining_urls')){
[250] Fix | Delete
// Check Remaining urls
[251] Fix | Delete
$remainig_urls = cookieadmin_pro_get_remaining_urls($urls);
[252] Fix | Delete
[253] Fix | Delete
if(!empty($remaining_urls)){
[254] Fix | Delete
//send next batch for scan
[255] Fix | Delete
wp_schedule_single_event(time() + 5, 'cookieadmin_run_auto_scan_batch', [$remaining_urls]);
[256] Fix | Delete
}
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
$res = self::save_raw_scan_results($cookieData);
[260] Fix | Delete
if(function_exists('cookieadmin_pro_update_scan_count')){
[261] Fix | Delete
cookieadmin_pro_update_scan_count($res);
[262] Fix | Delete
}
[263] Fix | Delete
[264] Fix | Delete
self::cookieadmin_auto_configure_cookies();
[265] Fix | Delete
return;
[266] Fix | Delete
}
[267] Fix | Delete
[268] Fix | Delete
}else{
[269] Fix | Delete
$cookieData = \CookieAdmin\Scanner::start_scan();
[270] Fix | Delete
if(!empty($cookieData)){
[271] Fix | Delete
self::save_raw_scan_results($cookieData);
[272] Fix | Delete
return self::cookieadmin_auto_configure_cookies();
[273] Fix | Delete
}
[274] Fix | Delete
}
[275] Fix | Delete
// cookieadmin_r_print($cookieData);
[276] Fix | Delete
[277] Fix | Delete
if(defined('DOING_CRON') && get_transient('cookieadmin_auto_scan_in_progress')){
[278] Fix | Delete
delete_transient('cookieadmin_auto_scan_in_progress');
[279] Fix | Delete
}
[280] Fix | Delete
[281] Fix | Delete
update_option('cookieadmin_scan', [
[282] Fix | Delete
'status' => 3,
[283] Fix | Delete
'success' => false,
[284] Fix | Delete
'message' => __('No Cookies Found', 'cookieadmin'),
[285] Fix | Delete
'update' => time()
[286] Fix | Delete
]);
[287] Fix | Delete
[288] Fix | Delete
return false;
[289] Fix | Delete
}
[290] Fix | Delete
[291] Fix | Delete
static function save_raw_scan_results(array $found_cookies){
[292] Fix | Delete
[293] Fix | Delete
global $wpdb;
[294] Fix | Delete
[295] Fix | Delete
$table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
[296] Fix | Delete
[297] Fix | Delete
if (empty($found_cookies)) {
[298] Fix | Delete
return ['inserted' => 0, 'updated' => 0];
[299] Fix | Delete
}
[300] Fix | Delete
[301] Fix | Delete
// Step 1: Fetch all existing cookie names from our database in one efficient query.
[302] Fix | Delete
$existing_cookies_in_db = $wpdb->get_col("SELECT cookie_name FROM {$table_name}");
[303] Fix | Delete
// Use array_flip for very fast 'isset' lookups instead of slow 'in_array' in a loop.
[304] Fix | Delete
$existing_cookies_lookup = !empty($existing_cookies_in_db) ? array_flip($existing_cookies_in_db) : [];
[305] Fix | Delete
[306] Fix | Delete
$results = ['inserted' => 0, 'updated' => 0];
[307] Fix | Delete
[308] Fix | Delete
// Step 2: Loop through each cookie found by the scanner.
[309] Fix | Delete
foreach ($found_cookies as $cookie_name => $cookie_data) {
[310] Fix | Delete
[311] Fix | Delete
// Step 3: Check if the cookie exists in our DB.
[312] Fix | Delete
if (isset($existing_cookies_lookup[$cookie_name])) {
[313] Fix | Delete
[314] Fix | Delete
$wpdb->update(
[315] Fix | Delete
$table_name,
[316] Fix | Delete
[
[317] Fix | Delete
'domain' => sanitize_text_field($cookie_data['domain']),
[318] Fix | Delete
'path' => sanitize_text_field($cookie_data['path']),
[319] Fix | Delete
'expires' => !empty($cookie_data['session']) ? 0 : (!empty($cookie_data['expires']) ? $cookie_data['expires'] : null),
[320] Fix | Delete
'samesite' => !empty($cookie_data['samesite']) ? sanitize_text_field($cookie_data['samesite']) : null,
[321] Fix | Delete
'secure' => (int)($cookie_data['secure'] ?? 0),
[322] Fix | Delete
'httponly' => (int)($cookie_data['httponly'] ?? 0),
[323] Fix | Delete
'raw_name' => sanitize_text_field($cookie_name),
[324] Fix | Delete
'scan_timestamp' => time(),
[325] Fix | Delete
], // Data to update
[326] Fix | Delete
[ 'cookie_name' => $cookie_name ], // WHERE clause
[327] Fix | Delete
['%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d'], // Format for the data
[328] Fix | Delete
[ '%s' ] // Format for the WHERE clause
[329] Fix | Delete
);
[330] Fix | Delete
$results['updated']++;
[331] Fix | Delete
[332] Fix | Delete
} else {
[333] Fix | Delete
[334] Fix | Delete
// ------ INSERT a NEW cookie ------
[335] Fix | Delete
$data = [
[336] Fix | Delete
'cookie_name' => sanitize_text_field($cookie_name),
[337] Fix | Delete
'domain' => sanitize_text_field($cookie_data['domain']),
[338] Fix | Delete
'path' => sanitize_text_field($cookie_data['path']),
[339] Fix | Delete
'expires' => !empty($cookie_data['session']) ? 0 : (!empty($cookie_data['expires']) ? $cookie_data['expires'] : null),
[340] Fix | Delete
'samesite' => !empty($cookie_data['samesite']) ? sanitize_text_field($cookie_data['samesite']) : null,
[341] Fix | Delete
'secure' => (int)($cookie_data['secure'] ?? 0),
[342] Fix | Delete
'httponly' => (int)($cookie_data['httponly'] ?? 0),
[343] Fix | Delete
'raw_name' => sanitize_text_field($cookie_name),
[344] Fix | Delete
'scan_timestamp' => time(),
[345] Fix | Delete
];
[346] Fix | Delete
[347] Fix | Delete
$formats = ['%s', '%s', '%s', '%s', '%s', '%d', '%d', '%s', '%d'];
[348] Fix | Delete
[349] Fix | Delete
if ($wpdb->insert($table_name, $data, $formats)) {
[350] Fix | Delete
$results['inserted']++;
[351] Fix | Delete
} else {
[352] Fix | Delete
//error_log("CookieAdmin: Error inserting cookie data: " . $wpdb->last_error);
[353] Fix | Delete
}
[354] Fix | Delete
}
[355] Fix | Delete
}
[356] Fix | Delete
return $results;
[357] Fix | Delete
}
[358] Fix | Delete
[359] Fix | Delete
static function cookieadmin_auto_configure_cookies(){
[360] Fix | Delete
global $wpdb, $cookieadmin_error;
[361] Fix | Delete
[362] Fix | Delete
$table_name = $wpdb->prefix . 'cookieadmin_cookies';
[363] Fix | Delete
$categorized_cookies = [];
[364] Fix | Delete
$uncategorized_cookies = [];
[365] Fix | Delete
[366] Fix | Delete
$all_cookies = $wpdb->get_results("SELECT id, cookie_name, category FROM {$table_name}");
[367] Fix | Delete
[368] Fix | Delete
foreach($all_cookies as $cookie){
[369] Fix | Delete
[370] Fix | Delete
if(!empty($cookie->category)){
[371] Fix | Delete
$categorized_cookies[$cookie->id] = $cookie->cookie_name;
[372] Fix | Delete
}else{
[373] Fix | Delete
$uncategorized_cookies[] = $cookie->cookie_name;
[374] Fix | Delete
}
[375] Fix | Delete
}
[376] Fix | Delete
[377] Fix | Delete
if(!empty($uncategorized_cookies)){
[378] Fix | Delete
[379] Fix | Delete
$uncategorized_cookies = array_flip($uncategorized_cookies);
[380] Fix | Delete
$categorized_cookies = array_flip($categorized_cookies);
[381] Fix | Delete
[382] Fix | Delete
[383] Fix | Delete
$categorizd_cookies = \CookieAdmin\CookieCategorizer::categorize_cookies($uncategorized_cookies, $categorized_cookies);
[384] Fix | Delete
[385] Fix | Delete
$remove_cookies = !empty($categorizd_cookies['remove_cookies']) ? $categorizd_cookies['remove_cookies'] : [];
[386] Fix | Delete
[387] Fix | Delete
unset($categorizd_cookies['remove_cookies']);
[388] Fix | Delete
if(!empty($remove_cookies)){
[389] Fix | Delete
$placeholders = implode(',', array_fill(0, count($remove_cookies), '%s'));
[390] Fix | Delete
$sql = $wpdb->prepare("DELETE FROM {$table_name} WHERE id IN ({$placeholders})", ...$remove_cookies);
[391] Fix | Delete
$wpdb->query($sql);
[392] Fix | Delete
}
[393] Fix | Delete
[394] Fix | Delete
foreach($categorizd_cookies as $cookie_data){
[395] Fix | Delete
[396] Fix | Delete
$count = $wpdb->update(
[397] Fix | Delete
$table_name,
[398] Fix | Delete
[ 'cookie_name' => $cookie_data['cookie_name'], 'category' => $cookie_data['category'], 'description' => $cookie_data['description'], 'edited' => 1, 'patterns' => $cookie_data['patterns'] ], // Data to update
[399] Fix | Delete
[ 'raw_name' => $cookie_data['raw_name'] ], // WHERE
[400] Fix | Delete
[ '%s', '%s', '%s', '%d', '%s' ], // Format for the data
[401] Fix | Delete
[ '%s' ] // Format for the WHERE clause
[402] Fix | Delete
);
[403] Fix | Delete
[404] Fix | Delete
}
[405] Fix | Delete
[406] Fix | Delete
update_option('cookieadmin_scan', [
[407] Fix | Delete
'status' => 3,
[408] Fix | Delete
'update' => time(),
[409] Fix | Delete
'success' => true,
[410] Fix | Delete
'count' => $count
[411] Fix | Delete
]);
[412] Fix | Delete
[413] Fix | Delete
$categorized_cookies = $wpdb->get_results("SELECT id, cookie_name, category, expires, scan_timestamp, description FROM {$table_name}");
[414] Fix | Delete
[415] Fix | Delete
delete_option('cookieadmin_first_scan');
[416] Fix | Delete
[417] Fix | Delete
return $categorized_cookies;
[418] Fix | Delete
}
[419] Fix | Delete
[420] Fix | Delete
$cookieadmin_error = $cookieadmin_error . ' ' . __('No new cookies Found!', 'cookieadmin');
[421] Fix | Delete
[422] Fix | Delete
return false;
[423] Fix | Delete
}
[424] Fix | Delete
[425] Fix | Delete
[426] Fix | Delete
static function edit_cookies(){
[427] Fix | Delete
global $wpdb;
[428] Fix | Delete
[429] Fix | Delete
$table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
[430] Fix | Delete
$data = null;
[431] Fix | Delete
[432] Fix | Delete
if(empty($_REQUEST['cookie_info'])){
[433] Fix | Delete
wp_send_json(['success' => false,
[434] Fix | Delete
'data' => null,
[435] Fix | Delete
'message' => __('Error : Cookie details missing', 'cookieadmin')]
[436] Fix | Delete
);
[437] Fix | Delete
}
[438] Fix | Delete
[439] Fix | Delete
$cookie_info = map_deep(wp_unslash($_REQUEST['cookie_info']), 'sanitize_text_field');
[440] Fix | Delete
[441] Fix | Delete
$scan_timestamp = $wpdb->get_col($wpdb->prepare("SELECT scan_timestamp FROM {$table_name} WHERE id = %d", $cookie_info['id']));
[442] Fix | Delete
[443] Fix | Delete
if(empty($scan_timestamp)){
[444] Fix | Delete
wp_send_json(['success' => false,
[445] Fix | Delete
'data' => null,
[446] Fix | Delete
'message' => __('Error : Invalid cookie record', 'cookieadmin')]
[447] Fix | Delete
);
[448] Fix | Delete
}
[449] Fix | Delete
[450] Fix | Delete
$calculated_expiry_seconds = ($cookie_info['duration'] * 86400) + $scan_timestamp[0];
[451] Fix | Delete
$calculated_expiry = date('Y-m-d H:i:s', $calculated_expiry_seconds);
[452] Fix | Delete
[453] Fix | Delete
$resp = $wpdb->update(
[454] Fix | Delete
$table_name,
[455] Fix | Delete
[ 'cookie_name' => $cookie_info['name'], 'description' => $cookie_info['description'], 'expires' => $calculated_expiry, 'category' => $cookie_info['type'], 'edited' => 1], // Data to update
[456] Fix | Delete
[ 'id' => $cookie_info['id'] ], // WHERE
[457] Fix | Delete
[ '%s', '%s', '%s', '%s', '%d' ], // Format for the data
[458] Fix | Delete
[ '%d' ] // Format for the WHERE clause
[459] Fix | Delete
);
[460] Fix | Delete
[461] Fix | Delete
if ($wpdb->last_error || $resp === false) {
[462] Fix | Delete
//error_log('DB Error: ' . $wpdb->last_error); // Log it
[463] Fix | Delete
wp_send_json(['success' => false,
[464] Fix | Delete
'data' => null,
[465] Fix | Delete
'message' => __('Cookie updation Failed, Error: ', 'cookieadmin') . esc_html($wpdb->last_error)]);
[466] Fix | Delete
}
[467] Fix | Delete
[468] Fix | Delete
wp_send_json(['success' => true,
[469] Fix | Delete
'data' => $data,
[470] Fix | Delete
'message' => __('Cookie updation successful', 'cookieadmin')]);
[471] Fix | Delete
[472] Fix | Delete
}
[473] Fix | Delete
[474] Fix | Delete
static function delete_cookies(){
[475] Fix | Delete
global $wpdb;
[476] Fix | Delete
[477] Fix | Delete
$table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
[478] Fix | Delete
[479] Fix | Delete
if(empty($_REQUEST['cookie_raw_id'])){
[480] Fix | Delete
wp_send_json(['success' => false,
[481] Fix | Delete
'data' => null,
[482] Fix | Delete
'message' => __('Error : Cookie Id missing', 'cookieadmin')]);
[483] Fix | Delete
}
[484] Fix | Delete
[485] Fix | Delete
$cookie_id = (int) sanitize_text_field(wp_unslash($_REQUEST['cookie_raw_id']));
[486] Fix | Delete
[487] Fix | Delete
$resp = $wpdb->delete( $table_name, ['id' => $cookie_id], [ '%s' ] );
[488] Fix | Delete
[489] Fix | Delete
if ($wpdb->last_error || $resp === false) {
[490] Fix | Delete
//error_log('DB Error: ' . $wpdb->last_error); //Log it
[491] Fix | Delete
wp_send_json(['success' => false,
[492] Fix | Delete
'data' => null,
[493] Fix | Delete
'message' => __('Cookie deletion Failed, Error: ', 'cookieadmin') . esc_html($wpdb->last_error)]);
[494] Fix | Delete
}
[495] Fix | Delete
[496] Fix | Delete
wp_send_json(['success' => true,
[497] Fix | Delete
'message' => __('Cookie deletion successful', 'cookieadmin')]);
[498] Fix | Delete
}
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function