PluginProbe
CookieAdmin – Cookie Consent Banner / 1.2.6
CookieAdmin – Cookie Consent Banner v1.2.6
1.2.6 1.2.5 1.2.4 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 All 26 releases
← All changes | includes/admin.php +278 -778 1.0.2 → 1.2.6 View file →
@@ -30,8 +30,10 @@
30 30 'cookieadmin-scan-cookies',
31 31 'cookieadmin-consent',
32 32 'cookieadmin-consent-logs',
33 33 'cookieadmin-license',
34 + 'cookieadmin-do-not-sell',
35 + 'cookieadmin-dpdp'
34 36 ];
35 37
36 38 if(empty($current_page) || !in_array($current_page, $plugin_pages)){
37 39 return true;
@@ -38,8 +40,9 @@
38 40 }
39 41
40 42 //Consent Page CSS
41 43 wp_enqueue_style('cookieadmin-style', COOKIEADMIN_PLUGIN_URL . 'assets/css/cookie.css', [], COOKIEADMIN_VERSION);
44 + wp_enqueue_style('cookieadmin-user-style', COOKIEADMIN_PLUGIN_URL . 'assets/css/consent.css', [], COOKIEADMIN_VERSION);
42 45
43 46 //WP Color picker
44 47 wp_enqueue_style('wp-color-picker');
45 48
@@ -48,8 +51,9 @@
48 51
49 52 if(!empty($policy) && !empty($view)){
50 53
51 54 wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/cookie.js', [], COOKIEADMIN_VERSION);
55 + // wp_enqueue_script('cookieadmin_js', COOKIEADMIN_PLUGIN_URL . 'assets/js/consent.js', [], COOKIEADMIN_VERSION);
52 56
53 57 $policy['set'] = $view;
54 58 $policy['admin_url'] = admin_url('admin-ajax.php');
55 59 $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce');
@@ -54,39 +58,72 @@
54 58 $policy['admin_url'] = admin_url('admin-ajax.php');
55 59 $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce');
56 60 //cookieadmin_r_print($policy);die();
57 61
62 + $policy['lang']['show_more'] = __('Show more', 'cookieadmin');
63 + $policy['lang']['show_less'] = __('Show less', 'cookieadmin');
64 + $policy['lang']['days'] = __('Day(s)', 'cookieadmin');
65 + $policy['lang']['session'] = __('Session', 'cookieadmin');
66 + $policy['lang']['scan_completed'] = __('Scan completed', 'cookieadmin');
67 + $policy['lang']['processing'] = __('Processing...', 'cookieadmin');
68 + $policy['lang']['active'] = __('Active', 'cookieadmin');
69 + $policy['lang']['install_failed'] = __('Installation failed. Please try again.', 'cookieadmin');
70 + $policy['lang']['error_occurred'] = __('An error occurred. Please try again.', 'cookieadmin');
71 +
58 72 wp_localize_script('cookieadmin_js', 'cookieadmin_policy', $policy);
59 73 }
60 74
61 75 wp_enqueue_script('cookieadmin_js_footer', COOKIEADMIN_PLUGIN_URL . 'assets/js/footer.js', [], COOKIEADMIN_VERSION);
76 + wp_localize_script('cookieadmin_js_footer', 'cookieadmin_data', array('is_pro' => cookieadmin_is_pro()));
77 +
78 + // We only need to upload icon on consent form page
79 + if(!empty($_GET['page']) && $_GET['page'] == 'cookieadmin-consent'){
80 + //to upload icons
81 + wp_enqueue_media();
82 + }
62 83 }
63 84
64 85 //Add Main Menu
65 86 static function cookieadmin_plugin_menu(){
66 87
88 + if(!empty($_REQUEST['cookieadmin_save_settings'])){
89 +
90 + if(!empty($_REQUEST['cookieadmin_consent_type'])){
91 + \CookieAdmin\Admin\Consent::save_consent_form();
92 + }else{
93 + \CookieAdmin\Admin\Settings::save_settings();
94 + }
95 + }
96 +
67 97 $capability = 'activate_plugins';
98 + $logo = defined('SITEPAD') ? 'cookieadmin_icon_20-black.svg' : 'cookieadmin_icon_20.svg';
68 99
69 - add_menu_page(__('CookieAdmin', 'cookieadmin'), __('CookieAdmin', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin::dashboard_page', COOKIEADMIN_PLUGIN_URL .'assets/images/cookieadmin_icon_20.svg');
100 + add_menu_page(__('CookieAdmin', 'cookieadmin'), __('CookieAdmin', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin\Dashboard::dashboard', COOKIEADMIN_PLUGIN_URL .'assets/images/'.$logo);
70 101
71 - if (isset($_POST['cookieadmin_save_settings'])) {
72 - \CookieAdmin\Admin::cookieadmin_save_settings();
73 - }
102 + add_submenu_page('cookieadmin', __('Dashboard', 'cookieadmin'), __('Dashboard', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin\Dashboard::dashboard');
74 103
75 - add_submenu_page('cookieadmin', __('Dashboard', 'cookieadmin'), __('Dashboard', 'cookieadmin'), $capability, 'cookieadmin', '\CookieAdmin\Admin::dashboard_page');
104 + add_submenu_page('cookieadmin', __('Consent Form', 'cookieadmin'), __('Consent Form', 'cookieadmin'), $capability, 'cookieadmin-consent', '\CookieAdmin\Admin\Consent::consent_form');
76 105
77 - add_submenu_page('cookieadmin', __('Consent Form', 'cookieadmin'), __('Consent Form', 'cookieadmin'), $capability, 'cookieadmin-consent', '\CookieAdmin\Admin::consent_form_page');
106 + add_submenu_page('cookieadmin', __('Settings', 'cookieadmin'), __('Settings', 'cookieadmin'), $capability, 'cookieadmin-settings', '\CookieAdmin\Admin\Settings::settings');
78 107
79 - add_submenu_page('cookieadmin', __('Settings', 'cookieadmin'), __('Settings', 'cookieadmin'), $capability, 'cookieadmin-settings', '\CookieAdmin\Admin::settings_page');
108 + add_submenu_page('cookieadmin', __('Scan Cookies', 'cookieadmin'), __('Scan Cookies', 'cookieadmin'), $capability, 'cookieadmin-scan-cookies', '\CookieAdmin\Admin\Scan::show_cookies');
80 109
81 - add_submenu_page('cookieadmin', __('Scan Cookies', 'cookieadmin'), __('Scan Cookies', 'cookieadmin'), $capability, 'cookieadmin-scan-cookies', '\CookieAdmin\Admin::scan_cookies_page');
82 -
83 110 if(defined('COOKIEADMIN_PREMIUM')){
84 111 add_submenu_page('cookieadmin', __('Consent Logs', 'cookieadmin'), __('Consent Logs', 'cookieadmin'), $capability, 'cookieadmin-consent-logs', '\CookieAdminPro\Admin::show_consent_logs');
112 +
113 + // GEO Targeting
114 + add_submenu_page('cookieadmin', __('Geo Targeting', 'cookieadmin'), __('Geo Targeting', 'cookieadmin'), $capability, 'cookieadmin-geo-targeting', '\CookieAdminPro\Admin\Geo::geo_admin_page');
85 115
86 - add_submenu_page('cookieadmin', __('License', 'cookieadmin'), __('License', 'cookieadmin'), $capability, 'cookieadmin-license', '\CookieAdminPro\License::cookieadmin_show_license');
87 - }else{
116 + // Do Not Sell menu
117 + add_submenu_page('cookieadmin', __('Do Not Sell Requests', 'cookieadmin'), __('Do Not Sell', 'cookieadmin'), $capability, 'cookieadmin-do-not-sell', '\CookieAdminPro\Admin\DoNotSell::do_not_sell_requests');
88 118
119 + // DPDP (India) Data Principal Requests menu
120 + add_submenu_page('cookieadmin', __('DPDP Requests', 'cookieadmin'), __('DPDP Requests', 'cookieadmin'), $capability, 'cookieadmin-dpdp', '\CookieAdminPro\Admin\DPDP::dpdp_requests');
121 +
122 + if(!defined('SITEPAD')){
123 + add_submenu_page('cookieadmin', __('License', 'cookieadmin'), __('License', 'cookieadmin'), $capability, 'cookieadmin-license', '\CookieAdminPro\License::cookieadmin_show_license');
124 + }
125 + }else if(!defined('SITEPAD')){
89 126 // Go Pro link
90 127 add_submenu_page('cookieadmin', __('CookieAdmin Go Pro', 'cookieadmin'), __('Go Pro', 'cookieadmin'), $capability, COOKIEADMIN_PRO_URL);
91 128 }
92 129 }
@@ -94,854 +131,317 @@
94 131 // cookieadmin header
95 132 static function header_theme($title = 'Dashboard'){
96 133
97 134 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
98 -
135 +
136 + self::conflict_notice();
137 +
99 138 echo '
100 - <div class="cookieadmin-metabox-holder columns-2">
101 - <div class="cookieadmin-postbox-container">
102 - <div style="margin: 10px 20px 0 2px;" class="wrap">
139 + <div class="cookieadmin-metabox-holder">
140 + <div class="cookieadmin-header">
141 + <div class="cookieadmin-header-left">
103 142 <div class="cookieadmin-icon">
104 143 <img class="cookieadmin-logo" src="'.esc_attr(COOKIEADMIN_PLUGIN_URL).'assets/images/cookieadmin-logo.png" alt="CookieAdmin Logo">
105 144 </div>
145 + <span class="cookieadmin-header-version">v'.esc_html(COOKIEADMIN_VERSION).'</span>
106 146 </div>
107 - <h2>'.esc_html($title).'</h2>';
108 -
147 + <div class="cookieadmin-header-right">
148 + <a href="https://cookieadmin.net/docs" class="cookieadmin-header-link" target="_blank"><span class="dashicons dashicons-book-alt"></span> ' . esc_html__('Documentation', 'cookieadmin') . '</a>
149 + <span class="cookieadmin-header-separator"></span>
150 + <a href="https://softaculous.deskuss.com/open.php?topicId=26" class="cookieadmin-header-link" target="_blank"><span class="dashicons dashicons-sos"></span> ' . esc_html__('Support', 'cookieadmin') . '</a>
151 + </div>
152 + </div>
153 + <h1 class="cookieadmin-page-title">'.esc_html($title).'</h1>';
154 +
109 155 if(!empty($cookieadmin_error)){
110 - echo '<div id="cookieadmin_message" class="error"><p>'.esc_html($cookieadmin_error).'</p></div>';
156 + echo '<div class="cookieadmin-notice"><div id="cookieadmin_message" class="error"><p>'.esc_html($cookieadmin_error).'</p></div></div>';
111 157 }
112 158
113 159 if(!empty($cookieadmin_msg)){
114 - echo '<div id="cookieadmin_message" class="updated"><p>'.esc_html($cookieadmin_msg).'</p></div>';
160 + echo '<div class="cookieadmin-notice"><div id="cookieadmin_message" class="updated"><p>'.esc_html($cookieadmin_msg).'</p></div></div>';
115 161 }
162 +
163 + echo '<div class="cookieadmin-postbox-container">';
116 164 }
117 165
118 166 // cookieadmin footer
119 167 static function footer_theme($no_twitter = 0){
120 168 global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
121 -
122 - echo '</div>
123 - <div class="cookieadmin-footer">';
124 169
125 - if(empty($no_twitter)){
126 -
127 - echo '<br/><div class="cookieadmin-twitter">
128 - <span>'.esc_html__('Share with your followers', 'cookieadmin').'</span><br /><br />
129 - <form method="get" action="https://twitter.com/intent/tweet" id="tweet" onsubmit="return cookieadmin_dotweet(this);">
130 - <textarea name="text" cols="60" row="4" style="resize:none;">'.esc_html__('I easily manage Cookie Consent Banner on my #WordPress site using @cookieadmin', 'cookieadmin').'</textarea>
131 - <br />
132 - <input type="submit" value="Tweet!" class="cookieadmin-btn cookieadmin-btn-secondary" onsubmit="return false;" id="twitter-btn" style="margin-top:7px;"/>
133 - </form>
134 - </div>
135 - <br/>
136 - <hr>';
137 -
170 + echo '</div>';
171 +
172 + if(!defined('SITEPAD')){
173 + echo '<div class="cookieadmin-footer">
174 + <a href="'.esc_url(COOKIEADMIN_WWW_URL).'" target="_blank">CookieAdmin</a> v'.esc_html(COOKIEADMIN_VERSION).' &middot; ' . esc_html__('Report bugs', 'cookieadmin') . ' <a href="https://softaculous.deskuss.com/open.php?topicId=26" target="_blank">'.esc_html__('here', 'cookieadmin').'</a>';
175 +
176 + if(defined('COOKIEADMIN_PREMIUM')){
177 + echo ' &middot; <a href="mailto:[email protected]">'.esc_html__('Email support', 'cookieadmin').'</a>';
178 + }
179 +
180 + echo '</div>';
138 181 }
182 +
183 + echo '</div>';
184 + }
185 +
186 + static function cookieadmin_table_exists($table_name) {
187 + global $wpdb;
139 188
140 - echo '<a href="'.esc_url(COOKIEADMIN_WWW_URL).'" target="_blank">CookieAdmin</a><span> v'.esc_html(COOKIEADMIN_VERSION).esc_html__(' You can report any bugs ', 'cookieadmin').'</span><a href="http://wordpress.org/support/plugin/cookieadmin" target="_blank">'.esc_html__('here', 'cookieadmin').'</a>. ';
189 + $query = $wpdb->prepare("SHOW TABLES LIKE %s", $table_name);
141 190
142 - if(defined('COOKIEADMIN_PREMIUM')){
143 - echo 'Or email us at <a href="mailto:[email protected]">[email protected]</a>';
144 - }
145 -
146 - echo '</div>
147 - </div>';
191 + return $wpdb->get_var($query) === $table_name;
148 192 }
149 193
150 - static function dashboard_page(){
194 + static function scan_notice(){
151 195
152 - global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
196 + $cookieadmin_auto_scan = get_option('cookieadmin_scan');
197 + $current_page = isset($_GET['page']) ? sanitize_text_field(wp_unslash($_GET['page'])) : '';
153 198
154 - self::header_theme(__('Dashboard', 'cookieadmin'));
199 + if(empty($cookieadmin_auto_scan['status']) || (strpos($current_page, 'cookieadmin') !== 0)){
200 + return false;
201 + }
202 +
203 + $msg = '';
155 204
156 - $view = get_option('cookieadmin_law', 'cookieadmin_gdpr');
205 + if($cookieadmin_auto_scan['status'] === 2){
206 +
207 + $count = !empty($cookieadmin_auto_scan['count']) ? $cookieadmin_auto_scan['count'] : 0;
208 + /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
209 + $msg = sprintf(__('<br><strong>Cookie Scan is running:</strong> %1$d Cookies found. Please wait for cookies to appear on <a href="%2$s">Scan Cookies Page</a>', 'cookieadmin'), $count, esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies')));
210 + }
157 211
158 - echo '
159 - <div class="cookieadmin_consent-wrap">
160 - <div class="cookieadmin-admin-row">
161 - <div class="cookieadmin-stats-block cookieadmin-is-block-25">
162 - <div class="cookieadmin-stats-name">'.esc_html__('Consent Banner', 'cookieadmin').'</div>
163 - <div class="cookieadmin-stats-number cookieadmin-green">'.esc_html__('Enabled', 'cookieadmin').'</div>
164 - </div>
165 - <div class="cookieadmin-stats-block cookieadmin-is-block-25">
166 - <div class="cookieadmin-stats-name">'.esc_html__('Consent Type', 'cookieadmin').'&nbsp;
167 - <div class="cookieadmin-block-link"><a href="'.esc_url(admin_url('admin.php?page=cookieadmin-consent')).'">['.esc_html__('Edit', 'cookieadmin').']</a></div>
168 - </div>
169 - <div class="cookieadmin-stats-number cookieadmin-uppercase">'.(!empty($view) && $view == 'cookieadmin_us' ? esc_html__('US State Laws', 'cookieadmin') : esc_html__('GDPR', 'cookieadmin')).'</div>
170 - </div>
171 - </div>
172 - </div>';
212 + if($cookieadmin_auto_scan['status'] === 3 && isset($cookieadmin_auto_scan['success'])){
213 +
214 + if($cookieadmin_auto_scan['success'] === true){
215 + /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
216 + $msg = sprintf(__('<br><strong>Cookie Scan completed successfully:</strong> Please visit <a href="%1$s">Scan Cookies</a> to review scan results.', 'cookieadmin'), esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies')));
217 + }
218 +
219 + if($cookieadmin_auto_scan['success'] === false){
220 + /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
221 + $msg = sprintf(__('<br><strong>Cookie Scan failed:</strong> Please <a href="%1$s">Scan Cookies</a> again for compliance. %2$s', 'cookieadmin'), esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies')), esc_html(!empty($cookieadmin_auto_scan['message']) ? $cookieadmin_auto_scan['message'] : ''));
222 + }
223 + }
173 224
174 - self::footer_theme();
175 - }
176 -
177 - static function settings_page(){
178 -
179 - global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
225 + if(empty($msg)){
226 + return;
227 + }
180 228
181 - self::header_theme(__('Settings', 'cookieadmin'));
229 + // cookieadmin_logo_svg fn is Internal static SVG. if allowing user input or filters, escape it.
230 + echo '
231 + <div class="notice notice-info is-dismissible" id="cookieadmin-auto-scan-notice">
232 + <p>'.cookieadmin_logo_svg().wp_kses_post($msg). '</p>
233 + </div>';
182 234
183 - $view = get_option('cookieadmin_law', 'cookieadmin_gdpr');
184 - $policy = cookieadmin_load_policy();
185 - $policy['set'] = $view;
186 - $policy['admin_url'] = admin_url('admin-ajax.php');
187 - $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce');
188 -
189 - echo '
190 - <div class="cookieadmin_consent-wrap">
191 - <form action="" method="post" id="setting_submenu">
235 + wp_register_script('cookieadmin-scan-notice', '', ['jquery'], '', true);
236 + wp_enqueue_script('cookieadmin-scan-notice');
237 + wp_add_inline_script('cookieadmin-scan-notice', 'jQuery("#cookieadmin-auto-scan-notice").on("click",
238 + function(e){
239 +
240 + let target = jQuery(e.target);
241 + if(!target.hasClass("notice-dismiss")){
242 + return;
243 + }
244 +
245 + var data;
192 246
193 - <div class="cookieadmin_consent-contents">
194 - <div class="cookieadmin_consent_settings">
195 - <div class="cookieadmin-contents cookieadmin-settings">
196 - <div class="cookieadmin-setting setting-prior">
197 - <label class="cookieadmin-title">'.esc_html__('Load Cookies prior to consent', 'cookieadmin').'</label>
198 - <div class="cookieadmin-setting-contents">
199 - <input name="cookieadmin_preload[]" type="checkbox" id="functional_preload" value="functional" '.(!empty($policy[$view]['preload']) && in_array("functional", $policy[$view]['preload']) ? 'checked' : '').'>
200 - <label class="cookieadmin-input" for="functional_preload">'.esc_html__('Functional', 'cookieadmin').'</label>
201 - <input name="cookieadmin_preload[]" type="checkbox" id="analytical_preload" value="analytical" '.(!empty($policy[$view]['preload']) && in_array("analytical", $policy[$view]['preload']) ? 'checked' : '').'>
202 - <label class="cookieadmin-input" for="analytical_preload">'.esc_html__('Analytical', 'cookieadmin').'</label>
203 - <input name="cookieadmin_preload[]" type="checkbox" id="performance_preload" value="performance" '.(!empty($policy[$view]['preload']) && in_array("performance", $policy[$view]['preload']) ? 'checked' : '').'>
204 - <label class="cookieadmin-input" for="performance_preload">'.esc_html__('Performance', 'cookieadmin').'</label>
205 - <input name="cookieadmin_preload[]" type="checkbox" id="advertisement_preload" value="advertisement" '.(!empty($policy[$view]['preload']) && in_array("advertisement", $policy[$view]['preload']) ? 'checked' : '').'>
206 - <label for="advertisement_preload">'.esc_html__('Advertisement', 'cookieadmin').'</label>
207 - </div>
208 - </div>
209 -
210 - <div class="cookieadmin-setting setting-reload">
211 - <label class="cookieadmin-title">'.esc_html__('Reload page on consent', 'cookieadmin').'</label>
212 - <div class="cookieadmin-setting-contents">
213 - <label class="cookieadmin_toggle">
214 - <input name="cookieadmin_reload_on_consent" type="checkbox" id="cookieadmin_reload_on_consent" '.(!empty($policy[$view]['reload_on_consent']) ? 'checked' : '').'>
215 - <span class="cookieadmin_slider"></span>
216 - </label>
217 - </div>
218 - </div>
219 -
220 - <div class="cookieadmin-setting">
221 - <div class="cookieadmin-setting-contents">
222 - <span><input type="submit" name="cookieadmin_save_settings" class="cookieadmin-btn cookieadmin-btn-primary action" value="'.esc_html__('Save Settings', 'cookieadmin').'"></span>
223 - </div>
224 - </div>
225 - </div>
226 - </div>';
247 + // Hide it
248 + jQuery("#cookieadmin-auto-scan-notice").remove();
227 249
228 - wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security');
229 - echo '
230 - <br/>
231 - <br/>
232 - </div>
233 - </form>
234 - </div>';
250 + // Save this preference
251 + jQuery.post("'.admin_url('admin-ajax.php?action=cookieadmin_ajax_handler&cookieadmin_act=close-notice&notice=cookieadmin-scan-notice').'&cookieadmin_security='.wp_create_nonce('cookieadmin_admin_js_nonce').'", data, function(response) {
252 + });
253 +
254 + });');
235 255
236 - self::footer_theme();
237 256 }
238 -
239 - static function scan_cookies_page(){
240 - global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $wpdb;
257 + static function consent_log_purge_notice(){
241 258
242 - self::header_theme(__('Scan Cookies', 'cookieadmin'));
259 + $cookieadmin_consent_purge = get_option('cookieadmin_consent_purge', ['status' => 0, 'count' => 0]);
260 +
261 + if(empty($cookieadmin_consent_purge['status'])){
262 + return false;
263 + }
264 +
265 + $msg = '';
266 + $count = empty($cookieadmin_consent_purge['count']) ? 0 : $cookieadmin_consent_purge['count'];
243 267
244 - $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
245 - $scanned = $wpdb->get_results("SELECT * FROM {$table_name} limit 1");
268 + if($cookieadmin_consent_purge['status'] === 2){
269 + /* translators: %1$d: number of consent logs deleted */
270 + $msg = sprintf(__('<br><strong>Consent logs are being deleted :</strong> %1$d logs deleted. Please wait for deletion process to complete.', 'cookieadmin'), $count);
271 + }
246 272
247 - $cookies_scanned = '';
248 - $categorized = [];
249 - $categorized_cookies = [];
250 -
251 - if(!empty($scanned)){
252 -
253 - $is_categorized = $wpdb->get_var("SELECT * FROM {$table_name} WHERE category IS NOT NULL LIMIT 1");
254 -
255 - $scanned_cookies = $wpdb->get_results("SELECT * FROM {$table_name}");
256 -
257 - if(empty($is_categorized)){
258 -
259 - foreach($scanned_cookies as $row => $data){
260 - $exp = 'Session';
261 - $data->expires = strtotime($data->expires);
262 - if(!empty($data->expires) && ($data->expires > 0)){
263 - $exp = round(($data->expires - time()) / 86400);
264 - if($exp < 1 && !empty($data->max_age)){
265 - $exp = $data->max_age;
266 - }
267 - }
268 -
269 - $cookies_scanned .= '<tr><td>'.esc_html($data->cookie_name).'</td><td>'.esc_html($exp).'</td><td>'.esc_html($data->path).'</td><td>'.esc_html($data->domain).'</td><td>'.( $data->secure ? 'Yes' : 'No').'</td></tr>';
270 -
273 + if($cookieadmin_consent_purge['status'] === 3){
274 + if(isset($cookieadmin_consent_purge['success'])){
275 + if($cookieadmin_consent_purge['success'] === true){
276 + /* translators: %1$d: number of consent logs deleted */
277 + $msg = sprintf(__('<br><strong>Consent logs deleted successfully:</strong> %1$d logs deleted.', 'cookieadmin'), $count);
271 278 }
272 - }
273 - else{
274 -
275 - foreach($scanned_cookies as $row => $data){
276 279
277 - $exp = 'Session';
278 - if (!empty($data->expires) && is_string($data->expires)) {
279 - $timestamp = strtotime($data->expires);
280 - if ($timestamp && $timestamp > 0) {
281 - $exp = round(($timestamp - time()) / 86400);
282 - if ($exp < 1 && !empty($data->max_age)) {
283 - $exp = $data->max_age;
284 - }
285 - }
286 - }
287 -
288 - if(empty($data->category)){
289 - $data->category = 'Unknown';
290 - }
291 -
292 - if(!isset($categorized[$data->category])){
293 - $categorized[$data->category] = '';
294 - }
295 -
296 - if(empty($data->description)){
297 - $data->description = 'Not Available';
298 - }
299 -
300 - $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>';
301 -
302 - $categorized_cookies[$data->id]['id'] = $data->id;
303 - $categorized_cookies[$data->id]['cookie_name'] = $data->cookie_name;
304 - $categorized_cookies[$data->id]['description'] = $data->description;
305 - $categorized_cookies[$data->id]['category'] = $data->category;
306 - $categorized_cookies[$data->id]['expires'] = $exp;
307 -
280 + if($cookieadmin_consent_purge['success'] === false){
281 + /* translators: %1$d: number of consent logs deleted, %2$s: error message*/
282 + $msg = sprintf(__('<br><strong>Consent logs deletion failed:</strong> %1$d logs deleted. Error : %2$s', 'cookieadmin'), $count, esc_html($cookieadmin_consent_purge['message']));
308 283 }
309 -
310 - $cookies_scanned .= '<tr><td colspan="5">'.esc_html__('No uncategorized cookies yet. Click on Scan Cookies button to scan for new cookies!', 'cookieadmin').'</td></tr>';
311 284 }
312 - }else{
313 -
314 - $cookies_scanned .= '<tr><td colspan="5">'.esc_html__('No scanned cookies yet. Click on Scan Cookies button to scan for new cookies!', 'cookieadmin').'</td></tr>';
315 -
316 285 }
317 286
318 - wp_register_script('cookieadmin_categorized_cookies', '', array('jquery'), COOKIEADMIN_VERSION, true);
319 - wp_enqueue_script('cookieadmin_categorized_cookies');
320 - wp_localize_script('cookieadmin_categorized_cookies', 'categorized_cookies', $categorized_cookies);
287 + if(empty($msg)){
288 + return;
289 + }
321 290
322 - echo '
323 - <div class="cookieadmin_consent-wrap">
324 - <form action="" method="post">
325 - <div class="cookieadmin_consent-contents">
326 - <div class="cookieadmin_consent_settings">
327 - <div class="cookieadmin-setting cookieadmin-manager-cookie-scan">
328 - <label class="cookieadmin-title">'.esc_html__('Scanned Cookies', 'cookieadmin').'</label>
329 - <div class="cookieadmin-setting-contents cookieadmin-cookie-scan">
330 - <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-scan" value="Scan Cookies">
331 - </div>
332 - <div class="cookieadmin-manager-result">
333 - <table class="cookieadmin-table cookieadmin-cookie-scan-result">
334 - <thead>
335 - <tr>
336 - <th width="20%">'.esc_html__('Name', 'cookieadmin').'</th>
337 - <th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th>
338 - <th width="30%">'.esc_html__('Path', 'cookieadmin').'</th>
339 - <th width="20%">'.esc_html__('Domain', 'cookieadmin').'</th>
340 - <th width="10%">'.esc_html__('Secure', 'cookieadmin').'</th>
341 - </tr>
342 - </thead>
343 - <tbody>
344 - '.$cookies_scanned.'
345 - </tbody>
346 - </table>
347 - </div>
348 - </div>
349 -
350 - <div class="cookieadmin-setting cookieadmin-manager-cookie-categorize" style="margin-top:40px;">
351 - <label class="cookieadmin-title">'.esc_html__('Categorized Cookies', 'cookieadmin').'</label>
352 - <div class="cookieadmin-setting-contents cookieadmin-cookie-categorize">
353 - <input type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-auto-categorize" value="'.esc_attr__('Categorize Cookies', 'cookieadmin').'">
354 - </div>
355 - <div class="cookieadmin-manager-result">
356 - <table class="cookieadmin-table cookieadmin-cookie-categorized">
357 - <thead>
358 - <tr>
359 - <th width="30%">'.esc_html__('Name', 'cookieadmin').'</th>
360 - <th width="50%">'.esc_html__('Description', 'cookieadmin').'</th>
361 - <th width="10%">'.esc_html__('Expiry', 'cookieadmin').'</th>
362 - <th width="10%">'.esc_html__('Action', 'cookieadmin').'</th>
363 - </tr>
364 - </thead>
365 - <tbody id="necessary_tbody">
366 - <tr><td colspan=4>'.esc_html__('Necessary Cookies', 'cookieadmin').'</td></tr>
367 - '.( !empty($categorized['Necessary']) ? $categorized['Necessary'] : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).'
368 - </tbody>
369 - <tbody id="functional_tbody">
370 - <tr><td colspan=4>'.esc_html__('Functional Cookies', 'cookieadmin').'</td></tr>
371 - '.( !empty($categorized['Functional']) ? $categorized['Functional'] : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).'
372 - </tbody>
373 - <tbody id="analytical_tbody">
374 - <tr><td colspan=4>'.esc_html__('Analytical Cookies', 'cookieadmin').'</td></tr>
375 - '.( !empty($categorized['Analytical']) ? $categorized['Analytical'] : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).'
376 - </tbody>
377 - <tbody id="marketing_tbody">
378 - <tr><td colspan=4>'.esc_html__('Marketing Cookies', 'cookieadmin').'</td></tr>
379 - '.( !empty($categorized['Marketing']) ? $categorized['Marketing'] : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).'
380 - </tbody>
381 - <tbody id="unknown_tbody">
382 - <tr><td colspan=4>'.esc_html__('Unknown Cookies', 'cookieadmin').'</td></tr>
383 - '.( !empty($categorized['Unknown']) ? $categorized['Unknown'] : '<tr class="cookieadmin-empty-row"><td colspan=4>'.esc_html__('No Cookies Found!', 'cookieadmin').'</td></tr>' ).'
384 - </tbody>
385 - </table>
386 - </div>
387 - </div>
388 - </div>
389 - </div>';
291 + // cookieadmin_logo_svg fn is Internal static SVG. if allowing user input or filters, escape it.
292 + echo '
293 + <div class="notice notice-info is-dismissible" id="cookieadmin-consent-purge-notice">
294 + <p>'.cookieadmin_logo_svg().wp_kses_post($msg). '</p>
295 + </div>';
296 +
297 + wp_register_script('cookieadmin-consent-purge-notice', '', ['jquery'], '', true);
298 + wp_enqueue_script('cookieadmin-consent-purge-notice');
299 + wp_add_inline_script('cookieadmin-consent-purge-notice', 'jQuery("#cookieadmin-consent-purge-notice").on("click",
300 + function(e){
390 301
391 - wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security');
302 + let target = jQuery(e.target);
303 + if(!target.hasClass("notice-dismiss")){
304 + return;
305 + }
392 306
393 - echo '
394 - </div>
395 - </form>
396 - <br/>';
307 + var data;
308 +
309 + // Hide it
310 + jQuery("#cookieadmin-consent-purge-notice").remove();
311 +
312 + // Save this preference
313 + jQuery.post("'.admin_url('admin-ajax.php?action=cookieadmin_ajax_handler&cookieadmin_act=close-notice&notice=cookieadmin-consent-purge-notice').'&cookieadmin_security='.wp_create_nonce('cookieadmin_admin_js_nonce').'", data, function(response) {
314 + });
315 +
316 + });');
397 317
398 - self::footer_theme();
399 -
400 - echo '
401 - <!-- Modal Overlay -->
402 - <div class="modal-overlay" id="edit-cookie-modal" hidden>
403 - <div class="modal-container">
404 - <div class="modal-header">
405 - <h2>'.esc_html__('Edit Cookie', 'cookieadmin').'</h2>
406 - <button class="cookieadmin_dialog_modal_close_btn">&times;</button>
407 - </div>
318 + }
319 +
320 + static function conflict_notice(){
408 321
409 - <div class="modal-body">
410 - <div class="form-group">
411 - <label for="cookieadmin-dialog-cookie-category">'.esc_html__('Category', 'cookieadmin').'</label>
412 - <select id="cookieadmin-dialog-cookie-category">
413 - <option value="Unknown">'.esc_html__('Unknown', 'cookieadmin').'</option>
414 - <option value="Necessary">'.esc_html__('Necessary', 'cookieadmin').'</option>
415 - <option value="Functional">'.esc_html__('Functional', 'cookieadmin').'</option>
416 - <option value="Analytical">'.esc_html__('Analytical', 'cookieadmin').'</option>
417 - <option value="Marketing">'.esc_html__('Marketing', 'cookieadmin').'</option>
418 - </select>
419 - </div>
420 -
421 - <div class="form-group">
422 - <label for="cookie_id">'.esc_html__('Cookie Name/ID', 'cookieadmin').'</label>
423 - <input type="text" id="cookieadmin-dialog-cookie-name" Placeholder="'.esc_html__('Enter Cookie Name or id', 'cookieadmin').'">
424 - </div>
322 + $conflicting = [
323 + 'complianz-gdpr/complianz-gdpr.php' => 'Complianz',
324 + 'cookie-law-info/cookie-law-info.php' => 'CookieYes',
325 + 'cookiebot/cookiebot.php' => 'Cookiebot',
326 + 'cookie-notice/cookie-notice.php' => 'Cookie Notice',
327 + 'gdpr-cookie-compliance/gdpr-cookie-compliance.php' => 'GDPR Cookie Compliance',
328 + 'borlabs-cookie/borlabs-cookie.php' => 'Borlabs Cookie',
329 + 'wp-gdpr-compliance/wp-gdpr-compliance.php' => 'Cookie Information',
330 + ];
425 331
426 - <div class="form-group">
427 - <label for="description">'.esc_html__('Description', 'cookieadmin').'</label>
428 - <textarea id="cookieadmin-dialog-cookie-desc" Placeholder="'.esc_html__('Enter Cookie description here', 'cookieadmin').'"></textarea>
429 - </div>
332 + if(!function_exists('is_plugin_active')){
333 + require_once ABSPATH . 'wp-admin/includes/plugin.php';
334 + }
430 335
431 - <div class="form-group">
432 - <label for="duration">'.esc_html__('Duration', 'cookieadmin').'</label>
433 - <input type="text" id="cookieadmin-dialog-cookie-duration" Placeholder="'.esc_html__('30 days', 'cookieadmin').'">
434 - </div>
336 + $active = [];
337 + foreach($conflicting as $slug => $name){
338 + if(is_plugin_active($slug)){
339 + $active[] = $name;
340 + }
341 + }
435 342
436 - <div class="modal-footer" style="background-color:#ffffff;">
437 - <button class="cookieadmin-btn cookieadmin-btn-primary" id="cookieadmin_dialog_save_btn" form="edit-cookie-form">'.esc_html__('Save', 'cookieadmin').'</button>
438 - </div>
439 - </div>
440 - </div>
441 - </div>';
442 - }
343 + if(empty($active)){
344 + return;
345 + }
443 346
444 - static function consent_form_page(){
347 + $names = implode(', ', $active);
445 348
446 - global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
447 -
448 - self::header_theme(__('Consent Form', 'cookieadmin'));
449 -
450 - $view = get_option('cookieadmin_law', 'cookieadmin_gdpr');
451 - $policy = cookieadmin_load_policy();
452 - $templates = wp_kses_post(implode("", cookieadmin_load_consent_template($policy[$view], $view)));
453 - $policy['set'] = $view;
454 - $policy['admin_url'] = admin_url('admin-ajax.php');
455 - $policy['cookieadmin_nonce'] = wp_create_nonce('cookieadmin_admin_js_nonce');
456 -
457 - echo '
458 - <div class="cookieadmin_consent-wrap">
459 - <form action="" method="post" id="consent_submenu">
460 -
461 - <div class="cookieadmin_consent-contents">
462 - <div class="cookieadmin_consent_settings">
463 - <div class="cookieadmin-contents cookieadmin_consent">
464 -
465 - <div class="cookieadmin-setting">
466 - <label class="cookieadmin-title">'.esc_html__('Consent Type', 'cookieadmin').'</label>
467 - <div class="cookieadmin-setting-contents">
468 - <select name="cookieadmin_consent_type" id="cookieadmin_consent_type">
469 - <option name="cookieadmin_gdpr" id="cookieadmin_gdpr" value="cookieadmin_gdpr">'.esc_html__('GDPR', 'cookieadmin').'</option>
470 - <option name="cookieadmin_us" id="cookieadmin_us" value="cookieadmin_us">'.esc_html__('US State Laws', 'cookieadmin').'</option>
471 - </select>
472 - </div>
473 - </div>
474 -
475 - <div class="cookieadmin-setting cookieadmin_consent-expiry">
476 - <label class="cookieadmin-title" for="cookieadmin_consent-expiry">'.esc_html__('Consent Expiry', 'cookieadmin').'</label>
477 - <div class="cookieadmin-setting-contents">
478 - <input type="number" name="cookieadmin_days" id="cookieadmin_consent_expiry" style="max-width:70px;" value="'.esc_attr($policy[$view]['cookieadmin_days']).'">
479 - </div>
480 - </div>
481 -
482 - <div class="cookieadmin-setting consent-layout">
483 - <label class="cookieadmin-title">'.esc_html__('Notice Type', 'cookieadmin').'</label>
484 - <div class="cookieadmin-setting-contents">
485 - <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_box" value="box">
486 - <label class="cookieadmin-input" for="cookieadmin_layout_box">'.esc_html__('Box', 'cookieadmin').'</label>
487 - <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_footer" value="footer">
488 - <label class="cookieadmin-input" for="cookieadmin_layout_footer">'.esc_html__('Footer', 'cookieadmin').'</label>
489 - <input name="cookieadmin_layout" type="radio" id="cookieadmin_layout_popup" value="popup">
490 - <label for="cookieadmin_layout_popup">'.esc_html__('Popup', 'cookieadmin').'</label>
491 - </div>
492 - </div>
493 -
494 - <div class="cookieadmin-setting consent-position">
495 - <label class="cookieadmin-title">'.esc_html__('Notice Position', 'cookieadmin').'</label>
496 - <div class="cookieadmin-setting-contents">
497 - <input class="cookieadmin_box_layout" id="cookieadmin_position_bottom_left" name="cookieadmin_position" type="radio" value="bottom_left" checked>
498 - <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_bottom_left">'.esc_html__('Bottom Left', 'cookieadmin').'</label>
499 - <input class="cookieadmin_box_layout" id="cookieadmin_position_bottom_right" name="cookieadmin_position" type="radio" value="bottom_right">
500 - <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_bottom_right">'.esc_html__('Bottom Right', 'cookieadmin').'</label>
501 - <input class="cookieadmin_box_layout" id="cookieadmin_position_top_left" name="cookieadmin_position" type="radio" value="top_left">
502 - <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_top_left">'.esc_html__('Top Left', 'cookieadmin').'</label>
503 - <input class="cookieadmin_box_layout" id="cookieadmin_position_top_right" name="cookieadmin_position" type="radio" value="top_right">
504 - <label class="cookieadmin_box_layout cookieadmin-input" for="cookieadmin_position_top_right">'.esc_html__('Top Right', 'cookieadmin').'</label>
505 - <input class="cookieadmin_foter_layout" id="cookieadmin_position_top" name="cookieadmin_position" type="radio" value="top" style="display:none;">
506 - <label class="cookieadmin_foter_layout cookieadmin-input" for="cookieadmin_position_top" style="display:none;">'.esc_html__('Top', 'cookieadmin').'</label>
507 - <input class="cookieadmin_foter_layout" id="cookieadmin_position_bottom" name="cookieadmin_position" type="radio" value="bottom" style="display:none;">
508 - <label class="cookieadmin_foter_layout" for="cookieadmin_position_bottom" style="display:none;">'.esc_html__('Bottom', 'cookieadmin').'</label>
509 - </div>
510 - </div>
511 -
512 - <div class="cookieadmin-setting consent-modal-layout">
513 - <label class="cookieadmin-title">'.esc_html__('Preference Position', 'cookieadmin').'</label>
514 - <div class="cookieadmin-setting-contents">
515 - <input id="cookieadmin_modal_center" name="cookieadmin_modal" type="radio" value="center" checked>
516 - <label class="cookieadmin-input" for="cookieadmin_modal_center">'.esc_html__('Center', 'cookieadmin').'</label>
517 - <input id="cookieadmin_modal_side" name="cookieadmin_modal" type="radio" value="side">
518 - <label class="cookieadmin-input" for="cookieadmin_modal_side">'.esc_html__('Side', 'cookieadmin').'</label>
519 - <input id="cookieadmin_modal_down" name="cookieadmin_modal" type="radio" value="down">
520 - <label for="cookieadmin_modal_down">'.esc_html__('Draw down', 'cookieadmin').'</label>
521 - </div>
522 - </div>
523 -
524 - <div class="cookieadmin-setting consent-notice">
525 - <label class="cookieadmin-title">'.esc_html__('Notice Section', 'cookieadmin').'</label>
526 - <div class="cookieadmin-setting-contents cookieadmin-vertical">
527 - <label for="cookieadmin_notice_title">'.esc_html__('Title', 'cookieadmin').'</label>
528 - <input type="text" id="cookieadmin_notice_title_layout" name="cookieadmin_notice_title" style="width: 270px;" value="'.esc_attr($policy[$view]['cookieadmin_notice_title']).'">
529 - <label for="cookieadmin_notice_layout" style="margin-top:20px;">'.esc_html__('Notice', 'cookieadmin').'</label>
530 - <textarea rows="5vh" cols="100vw" id="cookieadmin_notice_layout" name="cookieadmin_notice">'.esc_html($policy[$view]['cookieadmin_notice']).'</textarea>
531 - <div class="cookieadmin-setting-colors cookieadmin-setting-contents cookieadmin-horizontal">
532 - <div class="cookieadmin-setting-color cookieadmin-vertical" >
533 - <label for="cookieadmin_notice_title_color">'.esc_html__('Title', 'cookieadmin').'</label>
534 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
535 - <input type="color" id="cookieadmin_notice_title_color_box" name="cookieadmin_notice_title_color_box" value="'.esc_attr($policy[$view]['cookieadmin_notice_title_color']).'">
536 - <input type="text" id="cookieadmin_notice_title_color" name="cookieadmin_notice_title_color" value="'.esc_attr($policy[$view]['cookieadmin_notice_title_color']).'" class="cookieadmin-color-input">
537 - </div>
538 - </div>
539 - <div class="cookieadmin-setting-color cookieadmin-vertical">
540 - <label for="cookieadmin_notice_color">'.esc_html__('Content', 'cookieadmin').'</label>
541 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
542 - <input type="color" id="cookieadmin_notice_color_box" name="cookieadmin_notice_color_box" value="'.esc_attr($policy[$view]['cookieadmin_notice_color']).'">
543 - <input type="text" id="cookieadmin_notice_color" name="cookieadmin_notice_color" value="'.esc_attr($policy[$view]['cookieadmin_notice_color']).'" class="cookieadmin-color-input">
544 - </div>
545 - </div>
546 - <div class="cookieadmin-setting-color cookieadmin-vertical">
547 - <label for="cookieadmin_consent_inside">'.esc_html__('Background', 'cookieadmin').'</label>
548 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
549 - <input type="color" id="cookieadmin_consent_inside_bg_color_box" name="cookieadmin_consent_inside_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_bg_color']).'">
550 - <input type="text" id="cookieadmin_consent_inside_bg_color" name="cookieadmin_consent_inside_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_bg_color']).'" class="cookieadmin-color-input">
551 - </div>
552 - </div>
553 - <div class="cookieadmin-setting-color cookieadmin-vertical">
554 - <label for="cookieadmin_consent_inside_border_color">'.esc_html__('Border', 'cookieadmin').'</label>
555 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
556 - <input type="color" id="cookieadmin_consent_inside_border_color_box" name="cookieadmin_consent_inside_border_color_box" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_border_color']).'">
557 - <input type="text" id="cookieadmin_consent_inside_border_color" name="cookieadmin_consent_inside_border_color" value="'.esc_attr($policy[$view]['cookieadmin_consent_inside_border_color']).'" class="cookieadmin-color-input">
558 - </div>
559 - </div>
560 - </div>
561 - </div>
562 - </div>
563 - </div>
564 - <div class="cookieadmin-setting">
565 - <label class="cookieadmin-title">'.esc_html__('Buttons', 'cookieadmin').'</label>
566 - <div class="cookieadmin-buttons cookieadmin-setting-contents cookieadmin-horizontal">
567 - <div class="cookieadmin-button cookieadmin-vertical">
568 - <input id="cookieadmin_customize_btn" name="cookieadmin_customize_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn']).'">
569 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
570 - <input type="color" id="cookieadmin_customize_btn_color_box" name="cookieadmin_customize_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_color']).'">
571 - <input type="text" id="cookieadmin_customize_btn_color" name="cookieadmin_customize_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_color']).'" class="cookieadmin-color-input">
572 - </div>
573 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
574 - <input type="color" id="cookieadmin_customize_btn_bg_color_box" name="cookieadmin_customize_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_bg_color']).'">
575 - <input type="text" id="cookieadmin_customize_btn_bg_color" name="cookieadmin_customize_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_customize_btn_bg_color']).'" class="cookieadmin-color-input">
576 - </div>
577 - </div>
578 - <div class="cookieadmin-button cookieadmin-vertical">
579 - <input id="cookieadmin_reject_btn" name="cookieadmin_reject_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn']).'">
580 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
581 - <input type="color" id="cookieadmin_reject_btn_color_box" name="cookieadmin_reject_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_color']).'">
582 - <input type="text" id="cookieadmin_reject_btn_color" name="cookieadmin_reject_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_color']).'" class="cookieadmin-color-input">
583 - </div>
584 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
585 - <input type="color" id="cookieadmin_reject_btn_bg_color_box" name="cookieadmin_reject_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_bg_color']).'">
586 - <input type="text" id="cookieadmin_reject_btn_bg_color" name="cookieadmin_reject_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_reject_btn_bg_color']).'" class="cookieadmin-color-input">
587 - </div>
588 - </div>
589 - <div class="cookieadmin-button cookieadmin-vertical">
590 - <input id="cookieadmin_accept_btn" name="cookieadmin_accept_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn']).'">
591 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
592 - <input type="color" id="cookieadmin_accept_btn_color_box" name="cookieadmin_accept_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_color']).'">
593 - <input type="text" id="cookieadmin_accept_btn_color" name="cookieadmin_accept_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_color']).'" class="cookieadmin-color-input">
594 - </div>
595 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
596 - <input type="color" id="cookieadmin_accept_btn_bg_color_box" name="cookieadmin_accept_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_bg_color']).'">
597 - <input type="text" id="cookieadmin_accept_btn_bg_color" name="cookieadmin_accept_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_accept_btn_bg_color']).'" class="cookieadmin-color-input">
598 - </div>
599 - </div>
600 - <div class="cookieadmin-button cookieadmin-vertical">
601 - <input id="cookieadmin_save_btn" name="cookieadmin_save_btn" style="max-width:130px;text-align:center;" value="'.esc_attr($policy[$view]['cookieadmin_save_btn']).'">
602 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
603 - <input type="color" id="cookieadmin_save_btn_color_box" name="cookieadmin_save_btn_color_box" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_color']).'">
604 - <input type="text" id="cookieadmin_save_btn_color" name="cookieadmin_save_btn_color" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_color']).'" class="cookieadmin-color-input">
605 - </div>
606 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
607 - <input type="color" id="cookieadmin_save_btn_bg_color_box" name="cookieadmin_save_btn_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_bg_color']).'">
608 - <input type="text" id="cookieadmin_save_btn_bg_color" name="cookieadmin_save_btn_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_save_btn_bg_color']).'" class="cookieadmin-color-input">
609 - </div>
610 - </div>
611 - </div>
612 - </div>
613 - <div class="cookieadmin-setting consent-preference">
614 - <label class="cookieadmin-title">'.esc_html__('Preference Section', 'cookieadmin').'</label>
615 - <div class="cookieadmin-setting-contents cookieadmin-vertical">
616 - <label for="cookieadmin_preference_title">'.esc_html__('Title', 'cookieadmin').'</label>
617 - <input type="text" id="cookieadmin_preference_title_layout" name="cookieadmin_preference_title" style="width: 270px;" value="'.esc_html($policy[$view]['cookieadmin_preference_title']).'">
618 - <label for="cookieadmin_preference" style="margin-top:20px;">'.esc_html__('Privacy Notice', 'cookieadmin').'</label>
619 - <textarea rows="8vh" cols="100vw" id="cookieadmin_preference_layout" name="cookieadmin_preference">'.esc_html($policy[$view]['cookieadmin_preference']).'</textarea>
620 - <div class="cookieadmin-setting-colors cookieadmin-setting-contents cookieadmin-setting-color cookieadmin-horizontal">
621 - <div class="cookieadmin-setting-color cookieadmin-vertical">
622 - <label for="cookieadmin_preference_title_color">'.esc_html__('Title', 'cookieadmin').'</label>
623 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
624 - <input type="color" id="cookieadmin_preference_title_color_box" name="cookieadmin_preference_title_color_box" value="'.esc_attr($policy[$view]['cookieadmin_preference_title_color']).'">
625 - <input type="text" id="cookieadmin_preference_title_color" name="cookieadmin_preference_title_color" value="'.esc_attr($policy[$view]['cookieadmin_preference_title_color']).'" class="cookieadmin-color-input">
626 - </div>
627 - </div>
628 - <div class="cookieadmin-setting-color cookieadmin-vertical">
629 - <label for="cookieadmin_details_wrapper_color">'.esc_html__('Content', 'cookieadmin').'</label>
630 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
631 - <input type="color" id="cookieadmin_details_wrapper_color_box" name="cookieadmin_details_wrapper_color_box" value="'.esc_attr($policy[$view]['cookieadmin_details_wrapper_color']).'">
632 - <input type="text" id="cookieadmin_details_wrapper_color" name="cookieadmin_details_wrapper_color" value="'.esc_attr($policy[$view]['cookieadmin_details_wrapper_color']).'" class="cookieadmin-color-input">
633 - </div>
634 - </div>
635 - <div class="cookieadmin-setting-color cookieadmin-vertical">
636 - <label for="preference_background_color">'.esc_html__('Background', 'cookieadmin').'</label>
637 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
638 - <input type="color" id="cookieadmin_cookie_modal_bg_color_box" name="cookieadmin_cookie_modal_bg_color_box" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_bg_color']).'">
639 - <input type="text" id="cookieadmin_cookie_modal_bg_color" name="cookieadmin_cookie_modal_bg_color" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_bg_color']).'" class="cookieadmin-color-input">
640 - </div>
641 - </div>
642 - <div class="cookieadmin-setting-color cookieadmin-vertical">
643 - <label for="cookieadmin_cookie_modal_border_color">'.esc_html__('Border', 'cookieadmin').'</label>
644 - <div class="cookieadmin-color-holder cookieadmin-horizontal">
645 - <input type="color" id="cookieadmin_cookie_modal_border_color_box" name="cookieadmin_cookie_modal_border_color_box" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_border_color']).'">
646 - <input type="text" id="cookieadmin_cookie_modal_border_color" name="cookieadmin_cookie_modal_border_color" value="'.esc_attr($policy[$view]['cookieadmin_cookie_modal_border_color']).'" class="cookieadmin-color-input">
647 - </div>
648 - </div>
649 - </div>
650 -
651 - <span style="margin-top:30px;">
652 -
653 - <input type="submit" name="cookieadmin_save_settings" class="cookieadmin-btn cookieadmin-btn-primary action" value="'.esc_html__('Save Settings', 'cookieadmin').'">
654 -
655 - <input type="button" id="cookieadmin_show_preview" name="cookieadmin_show_preview" class="cookieadmin-btn cookieadmin-btn-secondary" value="'.esc_html__('Show Preview', 'cookieadmin').'">
656 -
657 - </span>
658 -
659 - </div>
660 - </div>
661 - </div>
662 - </div>
663 - ';
664 - wp_nonce_field('cookieadmin_admin_nonce', 'cookieadmin_security');
665 - echo '<br/>
666 - <br/>
667 - </form>
349 + echo '<div class="cookieadmin-conflict-notice">
350 + <span class="dashicons dashicons-warning"></span>
351 + <span>'.sprintf(__('Conflicting plugin(s) detected: <b>%s</b>. Please deactivate them to avoid issues with CookieAdmin.', 'cookieadmin'), esc_html($names)).'</span>
668 352 </div>';
669 - self::footer_theme();
670 -
671 - echo $templates;
672 353 }
673 354
674 - static function cookieadmin_scan_cookies($url = ''){
675 - global $wpdb;
355 + static function close_notices(){
676 356
677 - $cookieData = \CookieAdmin\Scanner::start_scan($url);
678 - //cookieadmin_r_print($cookieData);
679 -
680 - if(!empty($cookieData) && self::save_raw_scan_results($cookieData)){
681 - wp_send_json_success($cookieData);
357 + if(empty($_REQUEST['notice'])){
358 + return;
682 359 }
683 360
684 - wp_send_json(['success' => true,
685 - 'data' => null,
686 - 'message' => __('No cookies found!', 'cookieadmin')]);
687 - }
688 -
689 - static function cookieadmin_table_exists($table_name) {
690 - global $wpdb;
361 + $notice = sanitize_text_field(wp_unslash($_REQUEST['notice']));
362 + $notice = str_replace('-notice', '', $notice);
363 + $notice = str_replace('-', '_', $notice);
691 364
692 - $query = $wpdb->prepare("SHOW TABLES LIKE %s", $table_name);
693 -
694 - return $wpdb->get_var($query) === $table_name;
365 + update_option($notice, array());
695 366 }
696 367
697 - static function cookieadmin_save_settings(){
698 -
699 - global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg;
700 -
701 - // debug_print_backtrace();die;
702 -
703 - check_admin_referer('cookieadmin_admin_nonce', 'cookieadmin_security');
704 -
705 - if(!current_user_can('administrator')){
706 - wp_send_json_error(array('message' => __('Sorry, but you do not have permissions to perform this action', 'cookieadmin')));
368 + static function plugin_update_notice(){
369 + if(defined('SOFTACULOUS_PLUGIN_UPDATE_NOTICE')){
370 + return;
707 371 }
708 -
709 - $policy = cookieadmin_load_policy();
710 -
711 - $cookieadmin_consent_type = isset( $_REQUEST['cookieadmin_consent_type'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['cookieadmin_consent_type'] ) ) : '';
712 372
713 - if(!empty($cookieadmin_consent_type)){
714 -
715 - $laws = array('cookieadmin_gdpr' => '', 'cookieadmin_us' => '');
716 -
717 - $law = array_key_exists($cookieadmin_consent_type, $laws) ? $cookieadmin_consent_type : 'cookieadmin_gdpr';
718 -
719 - if(empty($cookieadmin_error)){
720 - update_option('cookieadmin_law', $law);
721 - }
373 + $to_update_plugins = apply_filters('softaculous_plugin_update_notice', []);
374 +
375 + if(empty($to_update_plugins)){
376 + return;
722 377 }
723 378
724 - if(isset($_REQUEST['page']) && $_REQUEST['page'] === 'cookieadmin-settings'){
725 - // get the concent type from option table, if not saved then return default as 'gdpr'
726 - $law = get_option('cookieadmin_law', 'cookieadmin_gdpr');
379 + /* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
380 + $msg = sprintf(__('New versions of %1$s %2$s available. Updating ensures better performance, security, and access to the latest features.', 'cookieadmin'), '<b>'.esc_html(implode(', ', $to_update_plugins)).'</b>', (count($to_update_plugins) > 1 ? 'are' : 'is')) . ' <a class="button button-primary" href='.esc_url(admin_url('plugins.php?plugin_status=upgrade')).'>Update Now</a>';
727 381
728 - //set preload and consent field for "cookieadmin-settings" page
729 - $setting['preload'] = !empty($_REQUEST['cookieadmin_preload']) ? array_map('sanitize_text_field', wp_unslash($_REQUEST['cookieadmin_preload'])) : (!empty($policy[$law]['preload']) ? $policy[$law]['preload'] : []);
730 - $setting['reload_on_consent'] = !empty($_REQUEST['cookieadmin_reload_on_consent']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reload_on_consent'])) : '';
731 - }else{
732 - // set saved or default preload and consent field for for "cookieadmin-consent" page
733 - $setting['preload'] = !empty($policy[$law]['preload']) ? $policy[$law]['preload'] : [];
734 - $setting['reload_on_consent'] = !empty($policy[$law]['reload_on_consent']) ? $policy[$law]['reload_on_consent'] : '';
735 - }
736 -
737 - $setting['cookieadmin_geo_tgt'] = (!empty($_REQUEST['cookieadmin_geo_tgt'])) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_geo_tgt'])) : 'www';
738 -
739 - $setting['cookieadmin_layout'] = (!empty($_REQUEST['cookieadmin_layout']) && in_array($_REQUEST['cookieadmin_layout'], array('box', 'footer', 'popup'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_layout'])) : (!empty($policy[$law]['cookieadmin_layout']) ? $policy[$law]['cookieadmin_layout'] : 'box');
740 -
741 - $setting['cookieadmin_position'] = (!empty($_REQUEST['cookieadmin_position']) && in_array($_REQUEST['cookieadmin_position'], array('bottom_left', 'bottom_right', 'top_left', 'top_right', 'top', 'bottom'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_position'])) : (!empty($policy[$law]['cookieadmin_position']) ? $policy[$law]['cookieadmin_position'] : 'bottom_left');
382 + define('SOFTACULOUS_PLUGIN_UPDATE_NOTICE', true); // To make sure other plugins don't return a Notice
383 + echo '<div class="notice notice-info is-dismissible" id="cookieadmin-plugin-update-notice">
384 + <p>'.wp_kses_post($msg). '</p>
385 + </div>';
742 386
743 - $setting['cookieadmin_modal'] = (isset($_REQUEST['cookieadmin_modal']) && in_array($_REQUEST['cookieadmin_modal'], array('center', 'side', 'down'))) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_modal'])) : (!empty($policy[$law]['cookieadmin_modal']) ? $policy[$law]['cookieadmin_modal'] : 'center');
744 -
745 - if($setting['cookieadmin_layout'] == 'popup'){
746 - $setting['cookieadmin_modal'] = 'center';
747 - unset($setting['cookieadmin_position']);
748 - }
387 + wp_register_script('cookieadmin-update-notice', '', ['jquery'], '', true);
388 + wp_enqueue_script('cookieadmin-update-notice');
389 + wp_add_inline_script('cookieadmin-update-notice', 'jQuery("#cookieadmin-plugin-update-notice").on("click", function(e){
390 + let target = jQuery(e.target);
749 391
750 - $setting['cookieadmin_notice_title'] = !empty($_REQUEST['cookieadmin_notice_title']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_title'])) : $policy[$law]['cookieadmin_notice_title'];
751 - $setting['cookieadmin_notice_title_color'] = !empty($_REQUEST['cookieadmin_notice_title_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_title_color'])) : (!empty($policy[$law]['cookieadmin_notice_title_color']) ? $policy[$law]['cookieadmin_notice_title_color'] : '#000000');
752 -
753 - $setting['cookieadmin_notice'] = !empty($_REQUEST['cookieadmin_notice']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice'])) : $policy[$law]['cookieadmin_notice'];
754 - $setting['cookieadmin_notice_color'] = !empty($_REQUEST['cookieadmin_notice_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_notice_color'])) : (!empty($policy[$law]['cookieadmin_notice_color']) ? $policy[$law]['cookieadmin_notice_color'] : '#000000');
755 -
756 - $setting['cookieadmin_consent_inside_bg_color'] = !empty($_REQUEST['cookieadmin_consent_inside_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_consent_inside_bg_color'])) : (!empty($policy[$law]['cookieadmin_consent_inside_bg_color']) ? $policy[$law]['cookieadmin_consent_inside_bg_color'] : '#ffffff');
757 - $setting['cookieadmin_consent_inside_border_color'] = !empty($_REQUEST['cookieadmin_consent_inside_border_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_consent_inside_border_color'])) : (!empty($policy[$law]['cookieadmin_consent_inside_border_color']) ? $policy[$law]['cookieadmin_consent_inside_border_color'] : '#000000');
758 -
759 - $setting['cookieadmin_customize_btn'] = !empty($_REQUEST['cookieadmin_customize_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn'])) : (!empty($policy[$law]['cookieadmin_customize_btn']) ? $policy[$law]['cookieadmin_customize_btn'] : 'Customize');
760 - $setting['cookieadmin_customize_btn_color'] = !empty($_REQUEST['cookieadmin_customize_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn_color'])) : (!empty($policy[$law]['cookieadmin_customize_btn_color']) ? $policy[$law]['cookieadmin_customize_btn_color'] : '#ffffff');
761 - $setting['cookieadmin_customize_btn_bg_color'] = !empty($_REQUEST['cookieadmin_customize_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_customize_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_customize_btn_bg_color']) ? $policy[$law]['cookieadmin_customize_btn_bg_color'] : '#0000ff');
762 -
763 - $setting['cookieadmin_reject_btn'] = !empty($_REQUEST['cookieadmin_reject_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn'])) : (!empty($policy[$law]['cookieadmin_reject_btn']) ? $policy[$law]['cookieadmin_reject_btn'] : 'Reject All');
764 - $setting['cookieadmin_reject_btn_color'] = !empty($_REQUEST['cookieadmin_reject_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn_color'])) : (!empty($policy[$law]['cookieadmin_reject_btn_color']) ? $policy[$law]['cookieadmin_reject_btn_color'] : '#ffffff');
765 - $setting['cookieadmin_reject_btn_bg_color'] = !empty($_REQUEST['cookieadmin_reject_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_reject_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_reject_btn_bg_color']) ? $policy[$law]['cookieadmin_reject_btn_bg_color'] : '#ff0000');
392 + if(!target.hasClass("notice-dismiss")){
393 + return;
394 + }
766 395
767 - $setting['cookieadmin_accept_btn'] = !empty($_REQUEST['cookieadmin_accept_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn'])) : (!empty($policy[$law]['cookieadmin_accept_btn']) ? $policy[$law]['cookieadmin_accept_btn'] : 'Accept All');
768 - $setting['cookieadmin_accept_btn_color'] = !empty($_REQUEST['cookieadmin_accept_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn_color'])) : (!empty($policy[$law]['cookieadmin_accept_btn']) ? $policy[$law]['cookieadmin_accept_btn_color'] : '#ffffff');
769 - $setting['cookieadmin_accept_btn_bg_color'] = !empty($_REQUEST['cookieadmin_accept_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_accept_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_accept_btn_bg_color']) ? $policy[$law]['cookieadmin_accept_btn_bg_color'] : '#00ff00');
396 + var data;
397 +
398 + // Hide it
399 + jQuery("#cookieadmin-plugin-update-notice").hide();
400 +
401 + // Save this preference
402 + jQuery.post("'.admin_url('admin-ajax.php?action=cookieadmin_ajax_handler&cookieadmin_act=close-update-notice').'&cookieadmin_security='.wp_create_nonce('cookieadmin_admin_js_nonce').'", data, function(response) {
403 + //alert(response);
404 + });
405 + });');
406 + }
770 407
771 - $setting['cookieadmin_save_btn'] = !empty($_REQUEST['cookieadmin_save_btn']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn'])) : (!empty($policy[$law]['cookieadmin_save_btn']) ? $policy[$law]['cookieadmin_save_btn'] : 'Save Preferences');
772 - $setting['cookieadmin_save_btn_color'] = !empty($_REQUEST['cookieadmin_save_btn_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn_color'])) : (!empty($policy[$law]['cookieadmin_save_btn_color']) ? $policy[$law]['cookieadmin_save_btn_color'] : '#ffffff');
773 - $setting['cookieadmin_save_btn_bg_color'] = !empty($_REQUEST['cookieadmin_save_btn_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_save_btn_bg_color'])) : (!empty($policy[$law]['cookieadmin_save_btn_bg_color']) ? $policy[$law]['cookieadmin_save_btn_bg_color'] : '#183833');
408 + static function plugin_update_notice_filter($plugins = []){
409 + $plugins['cookieadmin/cookieadmin.php'] = 'CookieAdmin';
410 + return $plugins;
411 + }
774 412
775 - $setting['cookieadmin_preference_title'] = !empty($_REQUEST['cookieadmin_preference_title']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_preference_title'])) : $policy[$law]['cookieadmin_preference_title'];
776 - $setting['cookieadmin_preference_title_color'] = !empty($_REQUEST['cookieadmin_preference_title_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_preference_title_color'])) : (!empty($policy[$law]['cookieadmin_preference_title_color']) ? $policy[$law]['cookieadmin_preference_title_color'] : '#000000');
777 -
778 - $setting['cookieadmin_preference'] = !empty($_REQUEST['cookieadmin_preference']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_preference'])) : $policy[$law]['cookieadmin_preference'];
779 - $setting['cookieadmin_details_wrapper_color'] = !empty($_REQUEST['cookieadmin_details_wrapper_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_details_wrapper_color'])) : (!empty($policy[$law]['cookieadmin_details_wrapper_color']) ? $policy[$law]['cookieadmin_details_wrapper_color'] : '#000000');
780 -
781 - $setting['cookieadmin_cookie_modal_bg_color'] = !empty($_REQUEST['cookieadmin_cookie_modal_bg_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_cookie_modal_bg_color'])) : (!empty($policy[$law]['cookieadmin_cookie_modal_bg_color']) ? $policy[$law]['cookieadmin_cookie_modal_bg_color'] : '#ffffff');
782 - $setting['cookieadmin_cookie_modal_border_color'] = !empty($_REQUEST['cookieadmin_cookie_modal_border_color']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_cookie_modal_border_color'])) : (!empty($policy[$law]['cookieadmin_cookie_modal_border_color']) ? $policy[$law]['cookieadmin_cookie_modal_border_color'] : '#000000');
783 -
784 - $setting['cookieadmin_days'] = !empty($_REQUEST['cookieadmin_days']) ? sanitize_text_field(wp_unslash($_REQUEST['cookieadmin_days'])) : (!empty($policy[$law]['cookieadmin_days']) ? $policy[$law]['cookieadmin_days'] : '365');
785 -
786 - $policy[$law] = $setting;
787 -
788 - update_option('cookieadmin_consent_settings', $policy);
789 -
790 - if(empty($cookieadmin_error)){
791 - $cookieadmin_msg = __('Settings saved successfully', 'cookieadmin');
413 + static function close_plugin_update_notice(){
414 + $plugin_update_notice = get_option('softaculous_plugin_update_notice', []);
415 + $available_update_list = get_site_transient('update_plugins');
416 + $to_update_plugins = apply_filters('softaculous_plugin_update_notice', []);
417 +
418 + if(empty($available_update_list) || empty($available_update_list->response)){
419 + return;
792 420 }
793 - }
794 -
795 -
796 - static function cookieadmin_auto_configure_cookies(){
797 - global $wpdb;
798 -
799 - $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
800 - $categorized_cookies = [];
801 - $uncategorized_cookies = [];
802 -
803 - $all_cookies = $wpdb->get_results("SELECT cookie_name, category FROM {$table_name}");
804 -
805 - foreach($all_cookies as $cookie){
806 -
807 - if(!empty($cookie->categorized)){
808 - $categorized_cookies[] = $cookie->cookie_name;
809 - }else{
810 - $uncategorized_cookies[] = $cookie->cookie_name;
421 +
422 + foreach($to_update_plugins as $plugin_path => $plugin_name){
423 + if(isset($available_update_list->response[$plugin_path])){
424 + $plugin_update_notice[$plugin_path] = $available_update_list->response[$plugin_path]->new_version;
811 425 }
812 426 }
813 -
814 - if(!empty($uncategorized_cookies)){
815 -
816 - $uncategorized_cookies = array_flip($uncategorized_cookies);
817 - $categorized_cookies = array_flip($categorized_cookies);
818 -
819 -
820 - $categorizd_cookies = \CookieAdmin\CookieCategorizer::categorize_cookies($uncategorized_cookies, $categorized_cookies);
821 -
822 - $remove_cookies = $categorizd_cookies['remove_cookies'];
823 - unset($categorizd_cookies['remove_cookies']);
824 - if(!empty($remove_cookies)){
825 - $placeholders = implode(',', array_fill(0, count($remove_cookies), '%s'));
826 - $sql = $wpdb->prepare("DELETE FROM {$table_name} WHERE raw_name IN ({$placeholders})", ...$remove_cookies);
827 - $wpdb->query($sql);
828 - }
829 -
830 - foreach($categorizd_cookies as $cookie_data){
831 -
832 - $wpdb->update(
833 - $table_name,
834 - [ 'cookie_name' => $cookie_data['cookie_name'], 'category' => $cookie_data['category'], 'description' => $cookie_data['description'], 'edited' => 1, 'patterns' => $cookie_data['patterns'] ], // Data to update
835 - [ 'raw_name' => $cookie_data['raw_name'] ], // WHERE
836 - [ '%s', '%s', '%s', '%d', '%s' ], // Format for the data
837 - [ '%s' ] // Format for the WHERE clause
838 - );
839 -
840 - }
841 -
842 - $categorized_cookies = $wpdb->get_results("SELECT id, cookie_name, category, expires, description FROM {$table_name}");
843 -
844 - wp_send_json_success($categorized_cookies);
845 - }
846 - wp_send_json(['success' => true,
847 - 'data' => null,
848 - 'message' => __('No cookies to categorize!', 'cookieadmin')]);
427 +
428 + update_option('softaculous_plugin_update_notice', $plugin_update_notice);
849 429 }
850 -
851 - static function cookieadmin_edit_cookies(){
852 - global $wpdb;
430 +
431 + static function is_feature_available($return = 0){
853 432
854 - $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
855 -
856 - if(!empty($_REQUEST['cookie_info'])) {
857 -
858 - $cookie_info = wp_unslash($_REQUEST['cookie_info']);
859 -
860 - $resp = $wpdb->update(
861 - $table_name,
862 - [ 'cookie_name' => sanitize_text_field($cookie_info['name']), 'description' => sanitize_text_field($cookie_info['description']), 'expires' => sanitize_text_field($cookie_info['duration']), 'category' => sanitize_text_field($cookie_info['type']), 'edited' => 1], // Data to update
863 - [ 'id' => sanitize_text_field($cookie_info['id']) ], // WHERE
864 - [ '%s', '%s', '%s', '%s', '%d' ], // Format for the data
865 - [ '%d' ] // Format for the WHERE clause
866 - );
867 -
868 - }elseif( !empty($_REQUEST['cookie_raw_id']) ){
869 -
870 - $cookie_id = (int) sanitize_text_field(wp_unslash($_REQUEST['cookie_raw_id']));
871 -
872 - $resp = $wpdb->delete( $table_name, ['id' => $cookie_id], [ '%s' ] );
433 + if(cookieadmin_is_pro()){
434 + return '';
873 435 }
874 436
875 - if ($wpdb->last_error || $resp === false) {
876 - //error_log('DB Error: ' . $wpdb->last_error); // Log it
877 - wp_send_json(['success' => true,
878 - 'data' => null,
879 - 'message' => __('Error editing cookie, Error: ', 'cookieadmin') . esc_html($wpdb->last_error)]);
880 - }
437 + $msg = ' <a href="'.esc_url(COOKIEADMIN_PRO_URL).'" target="_blank" class="cookieadmin-pro-badge">'.esc_html__('Pro', 'cookieadmin').'</a>';
881 438
882 - wp_send_json_success(__('Cookie updated!', 'cookieadmin'));
883 -
884 - }
885 -
886 - static function save_raw_scan_results(array $found_cookies){
887 -
888 - global $wpdb;
889 -
890 - $table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
891 -
892 - if (empty($found_cookies)) {
893 - return ['inserted' => 0, 'updated' => 0];
439 + if(!empty($return)){
440 + return $msg;
441 + }else{
442 + echo wp_kses_post($msg);
894 443 }
895 444
896 - // Step 1: Fetch all existing cookie names from our database in one efficient query.
897 - $existing_cookies_in_db = $wpdb->get_col("SELECT cookie_name FROM {$table_name}");
898 - // Use array_flip for very fast 'isset' lookups instead of slow 'in_array' in a loop.
899 - $existing_cookies_lookup = !empty($existing_cookies_in_db) ? array_flip($existing_cookies_in_db) : [];
900 -
901 - $results = ['inserted' => 0, 'updated' => 0];
902 -
903 - // Step 2: Loop through each cookie found by the scanner.
904 - foreach ($found_cookies as $cookie_name => $cookie_data) {
905 -
906 - // Step 3: Check if the cookie exists in our DB.
907 - if (isset($existing_cookies_lookup[$cookie_name])) {
908 -
909 - $wpdb->update(
910 - $table_name,
911 - [ 'scan_timestamp' => time() ], // Data to update
912 - [ 'cookie_name' => $cookie_name ], // WHERE clause
913 - [ '%s' ], // Format for the data
914 - [ '%s' ] // Format for the WHERE clause
915 - );
916 - $results['updated']++;
917 -
918 - } else {
919 -
920 - // ------ INSERT a NEW cookie ------
921 - $data = [
922 - 'cookie_name' => sanitize_text_field($cookie_name),
923 - 'domain' => sanitize_text_field($cookie_data['domain']),
924 - 'path' => sanitize_text_field($cookie_data['path']),
925 - 'expires' => !empty($cookie_data['expires']) ? $cookie_data['expires'] : null,
926 - 'max_age' => $cookie_data['Max-Age'] ? $cookie_data['Max-Age'] : null,
927 - 'samesite' => !empty($cookie_data['samesite']) ? sanitize_text_field($cookie_data['samesite']) : null,
928 - 'secure' => (int)($cookie_data['secure'] ?? 0),
929 - 'httponly' => (int)($cookie_data['httponly'] ?? 0),
930 - 'raw_name' => sanitize_text_field($cookie_name),
931 - 'scan_timestamp' => time(),
932 - ];
933 -
934 - $formats = ['%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%s'];
935 -
936 - if ($wpdb->insert($table_name, $data, $formats)) {
937 - $results['inserted']++;
938 - } else {
939 - //error_log("CookieAdmin: Error inserting cookie data: " . $wpdb->last_error);
940 - }
941 - }
942 - }
943 - return $results;
944 445 }
945 -
946 446 }
947 447