File "dashboard.php"
Full Path: /home/naijiwfb/sabisentinel.com/wp-content/plugins/cookieadmin/includes/admin/dashboard.php
File size: 15.51 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace CookieAdmin\Admin;
if(!defined('COOKIEADMIN_VERSION') || !defined('ABSPATH')){
die('Hacking Attempt');
}
class Dashboard{
static function dashboard(){
global $cookieadmin_lang, $cookieadmin_error, $cookieadmin_msg, $cookieadmin_settings;
\CookieAdmin\Admin::header_theme(__('Dashboard', 'cookieadmin'));
$view = get_option('cookieadmin_law', 'cookieadmin_gdpr');
$stats = array();
$stats['banner'] = array(
'icon' => 'yes-alt',
'icon_color' => 'green',
'label' => __('Consent Banner', 'cookieadmin'),
'value' => esc_html__('Enabled', 'cookieadmin'),
'value_class' => 'cookieadmin-green',
);
$stats['consent_type'] = array(
'icon' => 'admin-site',
'icon_color' => 'blue',
'label' => __('Consent Type', 'cookieadmin'),
'value' => ($view == 'cookieadmin_us' ? esc_html__('US State Laws', 'cookieadmin') : esc_html__('GDPR', 'cookieadmin')),
'value_class' => 'cookieadmin-uppercase',
'edit_url' => admin_url('admin.php?page=cookieadmin-consent'),
);
$stats['gcm'] = array(
'icon' => 'google',
'icon_color' => 'navy',
'label' => __('Google Consent Mode v2', 'cookieadmin'),
'value' => (!empty($cookieadmin_settings['google_consent_mode_v2']) ? '<span class="cookieadmin-green">'.esc_html__('Enabled', 'cookieadmin').'</span>' : esc_html__('Disabled', 'cookieadmin')),
'edit_url' => admin_url('admin.php?page=cookieadmin-settings'),
);
$stats['auto_scan'] = array(
'icon' => 'update',
'icon_color' => 'amber',
'label' => __('Auto Scan', 'cookieadmin'),
'value' => (!empty($cookieadmin_settings['cookieadmin_auto_scan']) ? '<span class="cookieadmin-green">'.esc_html__('Enabled', 'cookieadmin').'</span>' : esc_html__('Disabled', 'cookieadmin')),
'edit_url' => admin_url('admin.php?page=cookieadmin-settings'),
);
$stats = apply_filters('cookieadmin_dashboard_stats', $stats);
// Stat cards
echo '<div class="cookieadmin-stats-grid">';
foreach($stats as $stat){
echo '<div class="cookieadmin-stat-card">
<div class="cookieadmin-stat-icon cookieadmin-stat-icon--'.esc_attr($stat['icon_color']).'"><span class="dashicons dashicons-'.esc_attr($stat['icon']).'"></span></div>
<div class="cookieadmin-stat-label">'.esc_html($stat['label']);
if(!empty($stat['edit_url'])){
echo ' <a class="cookieadmin-stat-edit" href="'.esc_url($stat['edit_url']).'">'.esc_html__('Edit', 'cookieadmin').'</a>';
}
echo '</div>
<div class="cookieadmin-stat-value '.(!empty($stat['value_class']) ? esc_attr($stat['value_class']) : '').'">'.wp_kses_post($stat['value']).'</div>
</div>';
}
echo '</div>';
// ====== DASHBOARD LAYOUT: MAIN 70% + SIDEBAR 30% ======
$checklist = self::get_setup_checklist();
$inventory = self::get_cookie_inventory();
echo '<div class="cookieadmin-dashboard-grid">';
// MAIN AREA (~70%)
echo '<div class="cookieadmin-dashboard-main">';
// Setup Checklist
echo '<div class="cookieadmin-card cookieadmin-mb-16">
<div class="cookieadmin-card-header">
<span class="cookieadmin-card-title"><span class="dashicons dashicons-performance"></span>'.esc_html__('Setup Checklist', 'cookieadmin').'</span>
</div>
<div class="cookieadmin-card-body">
<ol class="cookieadmin-checklist">';
foreach($checklist as $item){
// We should not show the checklist of Pro features if Pro is disabled.
if(isset($item['pro']) && !defined('COOKIEADMIN_PRO_VERSION')){
continue;
}
$done_class = $item['done'] ? 'cookieadmin-checklist-item--done' : 'cookieadmin-checklist-item--pending';
$icon = $item['done'] ? 'yes' : 'marker';
echo '<li><a href="'.esc_url($item['url']).'" class="'.esc_attr($done_class).'"><span class="dashicons dashicons-'.esc_attr($icon).'"></span> '.esc_html($item['label']).'</a></li>';
}
echo '</ol>
</div>
</div>';
// Cookie Inventory
echo '<div class="cookieadmin-card cookieadmin-mb-16">
<div class="cookieadmin-card-header">
<span class="cookieadmin-card-title"><span class="dashicons dashicons-chart-pie"></span>'.esc_html__('Cookie Inventory', 'cookieadmin').'</span>
<a href="'.esc_url(admin_url('admin.php?page=cookieadmin-scan-cookies')).'" class="cookieadmin-btn cookieadmin-btn-secondary cookieadmin-btn-sm">'.esc_html__('View All Cookies', 'cookieadmin').'</a>
</div>
<div class="cookieadmin-card-body">';
if(!empty($inventory['total'])){
echo '<div class="cookieadmin-inventory-total"><span class="cookieadmin-inventory-number">'.esc_html($inventory['total']).'</span> <span class="cookieadmin-inventory-label">'.esc_html__('Cookies discovered', 'cookieadmin').'</span></div>';
$seg_colors = array('necessary' => 'var(--cookieadmin-success)', 'functional' => 'var(--cookieadmin-info)', 'analytics' => 'var(--cookieadmin-warning)', 'marketing' => 'var(--cookieadmin-danger)', 'unknown' => 'var(--cookieadmin-text-soft)');
echo '<div class="cookieadmin-segment-bar">';
foreach($inventory['categories'] as $cat => $count){
if($count > 0 && !empty($inventory['total'])){
$pct = round(($count / $inventory['total']) * 100, 1);
echo '<div class="cookieadmin-segment" style="width:'.esc_attr($pct).'%;background:'.esc_attr($seg_colors[$cat]).';" title="'.esc_attr(ucfirst($cat)).': '.esc_attr($count).'"></div>';
}
}
echo '</div>';
echo '<div class="cookieadmin-segment-legend">';
foreach($inventory['categories'] as $cat => $count){
echo '<span class="cookieadmin-legend-item"><span class="cookieadmin-legend-dot" style="background:'.esc_attr($seg_colors[$cat]).';"></span> '.esc_html(ucfirst($cat)).': <strong>'.esc_html($count).'</strong></span>';
}
echo '</div>';
}else{
echo '<p class="cookieadmin-text-muted">'.esc_html__('No cookies discovered yet. Run a scan to get started.', 'cookieadmin').'</p>';
}
if(!empty($inventory['unknown'])){
echo '<div class="cookieadmin-inventory-warning"><span class="dashicons dashicons-warning"></span> '.esc_html__('Some cookies are uncategorized. Run a scan for better compliance.', 'cookieadmin').'</div>';
}
echo '</div>
</div>';
// Pro main-area widgets (appears inside main, below checklist + inventory)
do_action('cookieadmin_dashboard_main_widgets');
echo '</div>'; // end main
// SIDEBAR (~30%)
echo '<div class="cookieadmin-dashboard-sidebar">';
// Recommended Plugins (free)
self::render_recommended_plugins();
// Pro sidebar widgets (if any)
do_action('cookieadmin_dashboard_sidebar_widgets');
echo '</div>'; // end sidebar
echo '</div>'; // end grid
\CookieAdmin\Admin::footer_theme();
}
static function get_setup_checklist(){
global $cookieadmin_settings;
$policy = cookieadmin_load_policy();
$law = get_option('cookieadmin_law', '');
$scan = get_option('cookieadmin_scan', array());
$cur = !empty($policy[$law]) ? $policy[$law] : array();
$checklist = array();
$checklist[] = array(
'label' => __('Run Cookie Scan', 'cookieadmin'),
'done' => (!empty($scan['success']) && $scan['success'] === true),
'url' => admin_url('admin.php?page=cookieadmin-scan-cookies'),
);
$checklist[] = array(
'label' => __('Configure Consent Banner', 'cookieadmin'),
'done' => !empty($cur),
'url' => admin_url('admin.php?page=cookieadmin-consent'),
);
$checklist[] = array(
'label' => __('Set Consent Type', 'cookieadmin'),
'done' => (!empty($law) && in_array($law, array('cookieadmin_gdpr', 'cookieadmin_us'), true)),
'url' => admin_url('admin.php?page=cookieadmin-consent'),
);
$checklist[] = array(
'label' => __('Enable Google Consent Mode v2', 'cookieadmin'),
'done' => !empty($cookieadmin_settings['google_consent_mode_v2']),
'url' => admin_url('admin.php?page=cookieadmin-settings'),
'pro' => true,
);
$has_links = false;
if(!empty($cur['cookieadmin_privacy_policy']) || !empty($cur['cookieadmin_cookie_policy'])){
$has_links = true;
}
$checklist[] = array(
'label' => __('Set Privacy / Cookie Policy Links', 'cookieadmin'),
'done' => $has_links,
'url' => admin_url('admin.php?page=cookieadmin-consent'),
'pro' => true,
);
$checklist[] = array(
'label' => __('Configure Auto Scan', 'cookieadmin'),
'done' => !empty($cookieadmin_settings['cookieadmin_auto_scan']),
'url' => admin_url('admin.php?page=cookieadmin-settings'),
'pro' => true,
);
return $checklist;
}
static function get_cookie_inventory(){
global $wpdb;
$table_name = esc_sql($wpdb->prefix . 'cookieadmin_cookies');
if(!\CookieAdmin\Admin::cookieadmin_table_exists($table_name)){
return array('total' => 0, 'categories' => array('necessary' => 0, 'functional' => 0, 'analytics' => 0, 'marketing' => 0, 'unknown' => 0), 'unknown' => 0);
}
$total = (int) $wpdb->get_var("SELECT COUNT(*) FROM $table_name");
$categories = array('necessary' => 0, 'functional' => 0, 'analytics' => 0, 'marketing' => 0, 'unknown' => 0);
$rows = $wpdb->get_results("SELECT category, COUNT(*) AS cnt FROM $table_name GROUP BY category");
if(!empty($rows)){
foreach($rows as $row){
$cat = strtolower($row->category);
if(array_key_exists($cat, $categories)){
$categories[$cat] = (int) $row->cnt;
}else{
$categories['unknown'] += (int) $row->cnt;
}
}
}
return array(
'total' => $total,
'categories' => $categories,
'unknown' => $categories['unknown'],
);
}
static function render_recommended_plugins(){
$plugins = array(
'loginizer' => array(
'name' => 'Loginizer',
'desc' => __('Brute Force Protection & Login Security', 'cookieadmin'),
'icon' => 'dashicons-shield',
'wporg_url' => 'https://wordpress.org/plugins/loginizer/',
),
'gosmtp' => array(
'name' => 'GoSMTP',
'desc' => __('SMTP Mailer for WordPress', 'cookieadmin'),
'icon' => 'dashicons-email-alt',
'wporg_url' => 'https://wordpress.org/plugins/gosmtp/',
),
'backuply' => array(
'name' => 'Backuply',
'desc' => __('Backup & Restore made easy', 'cookieadmin'),
'icon' => 'dashicons-backup',
'wporg_url' => 'https://wordpress.org/plugins/backuply/',
),
'siteseo' => array(
'name' => 'SiteSEO',
'desc' => __('SEO Optimization for WordPress', 'cookieadmin'),
'icon' => 'dashicons-search',
'wporg_url' => 'https://wordpress.org/plugins/siteseo/',
),
);
echo '<div class="cookieadmin-card cookieadmin-recommended-plugins">
<div class="cookieadmin-card-header">
<span class="cookieadmin-card-title"><span class="dashicons dashicons-admin-plugins"></span>'.esc_html__('Recommended Plugins', 'cookieadmin').'</span>
</div>
<div class="cookieadmin-card-body">';
foreach($plugins as $slug => $plugin){
$status = self::get_plugin_status($slug);
echo '<div class="cookieadmin-recommended-plugin" data-slug="'.esc_attr($slug).'">
<div class="cookieadmin-recommended-plugin-info">
<div class="cookieadmin-recommended-plugin-icon"><span class="dashicons '.esc_attr($plugin['icon']).'"></span></div>
<div class="cookieadmin-recommended-plugin-details">
<div class="cookieadmin-recommended-plugin-name">'.esc_html($plugin['name']).'</div>
<div class="cookieadmin-recommended-plugin-desc">'.esc_html($plugin['desc']).'</div>
</div>
</div>
<div class="cookieadmin-recommended-plugin-action">
<a href="'.esc_url($plugin['wporg_url']).'" target="_blank" class="cookieadmin-recommended-plugin-link">'.esc_html__('Learn more', 'cookieadmin').' </a>
';
if($status === 'active'){
echo '<span class="cookieadmin-badge cookieadmin-success">'.esc_html__('Active', 'cookieadmin').'</span>';
}elseif($status === 'installed'){
echo '<button type="button" class="cookieadmin-btn cookieadmin-btn-secondary cookieadmin-btn-sm cookieadmin-plugin-activate-btn" data-slug="'.esc_attr($slug).'">'.esc_html__('Activate', 'cookieadmin').'</button>';
}else{
echo '<button type="button" class="cookieadmin-btn cookieadmin-btn-primary cookieadmin-btn-sm cookieadmin-plugin-install-btn" data-slug="'.esc_attr($slug).'">'.esc_html__('Install', 'cookieadmin').'</button>';
}
echo '</div>
</div>';
}
echo '</div>
</div>';
}
static function get_plugin_status($slug){
if(!function_exists('get_plugins')){
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
$all_plugins = get_plugins();
foreach($all_plugins as $plugin_path => $plugin_data){
if(strpos($plugin_path, $slug . '/') === 0){
if(is_plugin_active($plugin_path)){
return 'active';
}
return 'installed';
}
}
return 'not_installed';
}
static function install_recommended_plugin(){
check_ajax_referer('cookieadmin_admin_js_nonce', 'cookieadmin_security');
if(!current_user_can('install_plugins')){
wp_send_json_error(array('message' => __('You do not have permission to install plugins.', 'cookieadmin')));
}
$slug = !empty($_REQUEST['plugin']) ? sanitize_text_field(wp_unslash($_REQUEST['plugin'])) : '';
if(empty($slug)){
wp_send_json_error(array('message' => __('Plugin slug is required.', 'cookieadmin')));
}
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$api = plugins_api('plugin_information', array('slug' => $slug, 'fields' => array('sections' => false)));
if(is_wp_error($api)){
wp_send_json_error(array('message' => $api->get_error_message()));
}
$skin_class = class_exists('\Automatic_Upgrader_Skin') ? '\Automatic_Upgrader_Skin' : '\WP_Upgrader_Skin';
$skin = new $skin_class();
$upgrader = new \Plugin_Upgrader($skin);
$result = $upgrader->install($api->download_link);
if(is_wp_error($result)){
wp_send_json_error(array('message' => $result->get_error_message()));
}
if(!$result){
wp_send_json_error(array('message' => __('Plugin installation failed.', 'cookieadmin')));
}
$all_plugins = get_plugins();
$installed_plugin = '';
foreach($all_plugins as $path => $data){
if(strpos($path, $slug . '/') === 0){
$installed_plugin = $path;
break;
}
}
if(empty($installed_plugin)){
wp_send_json_error(array('message' => __('Plugin installed but could not be located for activation.', 'cookieadmin')));
}
$result = activate_plugin($installed_plugin);
if(is_wp_error($result)){
wp_send_json_error(array('message' => $result->get_error_message()));
}
wp_send_json_success(array('message' => __('Plugin installed and activated successfully.', 'cookieadmin')));
}
static function activate_recommended_plugin(){
check_ajax_referer('cookieadmin_admin_js_nonce', 'cookieadmin_security');
if(!current_user_can('activate_plugins')){
wp_send_json_error(array('message' => __('You do not have permission to activate plugins.', 'cookieadmin')));
}
$slug = !empty($_REQUEST['plugin']) ? sanitize_text_field(wp_unslash($_REQUEST['plugin'])) : '';
if(empty($slug)){
wp_send_json_error(array('message' => __('Plugin slug is required.', 'cookieadmin')));
}
if(!function_exists('get_plugins')){
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
$all_plugins = get_plugins();
$plugin_path = '';
foreach($all_plugins as $path => $data){
if(strpos($path, $slug . '/') === 0){
$plugin_path = $path;
break;
}
}
if(empty($plugin_path)){
wp_send_json_error(array('message' => __('Plugin not found.', 'cookieadmin')));
}
$result = activate_plugin($plugin_path);
if(is_wp_error($result)){
wp_send_json_error(array('message' => $result->get_error_message()));
}
wp_send_json_success(array('message' => __('Plugin activated successfully.', 'cookieadmin')));
}
}