Files
igny8/igny8-wp-plugin-for-reference-olny/modules/settings/status.php
2025-11-09 10:27:02 +00:00

353 lines
18 KiB
PHP

<?php
/**
* ==========================
* 🔐 IGNY8 FILE RULE HEADER
* ==========================
* @file : status.php
* @location : /modules/settings/status.php
* @type : Admin Page
* @scope : Module Only
* @allowed : System status monitoring, health checks, diagnostics
* @reusability : Single Use
* @notes : System status monitoring page for settings module
*/
// Prevent direct access
if (!defined('ABSPATH')) {
exit;
}
?>
<!-- System Status Section -->
<div class="igny8-dashboard-section">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>System Status</h3>
<p class="igny8-card-subtitle">Monitor system health and component status</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-admin-site igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
</div>
</div>
</div>
<!-- Debug Monitoring & System Layers Section -->
<div class="igny8-grid-2 igny8-dashboard-section" style="
display: flex;
flex-direction: row;
">
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>Debug Monitoring</h3>
<p class="igny8-card-subtitle">Real-time debug monitoring controls and status</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-admin-tools igny8-dashboard-icon-lg igny8-dashboard-icon-orange"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<p style="color: var(--text-dim); margin-bottom: 16px;">Enable or disable submodule debug monitoring for Planner, Writer, Linker, Optimizer and Personalize</p>
<!-- Real-time Monitoring Controls -->
<div style="display: flex; align-items: center; gap: 12px; margin-bottom: 20px;">
<div style="font-size: 13px; color: var(--text-dim); text-align: right;">
Real-time Monitoring
</div>
<div style="display: flex; align-items: center; gap: 8px;">
<div style="display: flex; align-items: center; gap: 4px;">
<input type="radio" id="debug-enabled" name="debug_monitoring" value="1" <?php echo get_option('igny8_debug_enabled', false) ? 'checked' : ''; ?>>
<label for="debug-enabled" style="font-size: 12px; color: var(--text-dim);">On</label>
</div>
<div style="display: flex; align-items: center; gap: 4px;">
<input type="radio" id="debug-disabled" name="debug_monitoring" value="0" <?php echo !get_option('igny8_debug_enabled', false) ? 'checked' : ''; ?>>
<label for="debug-disabled" style="font-size: 12px; color: var(--text-dim);">Off</label>
</div>
<button type="button" id="save-debug-setting" class="igny8-btn igny8-btn-primary">
<span class="dashicons dashicons-yes-alt" style="font-size: 14px;"></span>
Save
</button>
</div>
</div>
<!-- Current Status Display -->
<?php
$debug_enabled = get_option('igny8_debug_enabled', false);
$status_text = $debug_enabled ? 'Enabled' : 'Disabled';
$status_color = $debug_enabled ? 'var(--green-dark)' : 'var(--red-dark)';
$status_icon = $debug_enabled ? '✅' : '❌';
// Set background and border colors based on status
if ($debug_enabled) {
$status_bg = 'rgba(16,185,129,0.1)';
$status_border = 'var(--green)';
} else {
$status_bg = 'rgba(239,68,68,0.1)';
$status_border = 'var(--red)';
}
?>
<div style="background: <?php echo $status_bg; ?>; border: 1px solid <?php echo $status_border; ?>; border-radius: var(--radius); padding: 16px; margin-top: 16px;">
<div style="display: flex; align-items: center; gap: 12px;">
<span style="font-size: 24px;"><?php echo $status_icon; ?></span>
<div>
<strong style="color: <?php echo $status_color; ?>;">Debug Monitoring: <?php echo $status_text; ?></strong><br>
<span style="color: var(--text-dim); font-size: 14px;">
<?php if ($debug_enabled): ?>
Real-time debug monitoring is active for all submodules. Debug cards and status indicators are visible on submodule pages.
<?php else: ?>
Debug monitoring is disabled. Debug cards and status indicators are hidden on submodule pages.
<?php endif; ?>
</span>
</div>
</div>
</div>
</div>
</div>
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>System Layers</h3>
<p class="igny8-card-subtitle">System layer health and operational metrics</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-chart-bar igny8-dashboard-icon-lg igny8-dashboard-icon-teal"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<!-- Metrics Row -->
<div class="igny8-metrics-row">
<div class="igny8-metric">
<div class="igny8-metric-value">100%</div>
<div class="igny8-metric-label">Layer Health</div>
</div>
<div class="igny8-metric">
<div class="igny8-metric-value" style="color: var(--green);">6</div>
<div class="igny8-metric-label">Operational</div>
</div>
<div class="igny8-metric">
<div class="igny8-metric-value" style="color: var(--red-dark);">0</div>
<div class="igny8-metric-label">Failed</div>
</div>
<div class="igny8-metric">
<div class="igny8-metric-value">6</div>
<div class="igny8-metric-label">Total Layers</div>
</div>
</div>
<!-- Layer Status Circles -->
<div class="igny8-flex" style="justify-content: center; gap: 16px; margin: 20px 0;">
<?php
$layer_labels = [
'database_system' => 'DB',
'configuration_system' => 'CFG',
'rendering_system' => 'RND',
'javascript_ajax' => 'JS',
'component_functionality' => 'CMP',
'data_flow' => 'FLW'
];
foreach ($layer_labels as $layer_key => $label):
$layer_status = true; // Simplified - always true for basic layer summary
$status_class = $layer_status ? 'bg-success' : 'bg-error';
?>
<div class="bg-circle <?php echo $status_class; ?>" title="<?php echo ucfirst(str_replace('_', ' ', $layer_key)); ?>: <?php echo $layer_status ? 'Operational' : 'Failed'; ?>">
<?php echo $label; ?>
</div>
<?php endforeach; ?>
</div>
<div style="background: rgba(16,185,129,0.1); border: 1px solid var(--green); border-radius: var(--radius); padding: 16px; margin-top: 16px;">
<div style="display: flex; align-items: center; gap: 12px;">
<span style="font-size: 24px;">✅</span>
<div>
<strong style="color: var(--green-dark);">All Layers Operational</strong><br>
<span style="color: var(--text-dim); font-size: 14px;">
All 6 layers are functioning correctly.
The Igny8 plugin is operating at full capacity.
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- System Information & Database Status Section -->
<div class="igny8-dashboard-section">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>System Information & Database Status</h3>
<p class="igny8-card-subtitle">System details, database tables, and module status</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-admin-site igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
</div>
</div>
</div>
<!-- 4 Cards Grid -->
<div class="igny8-grid igny8-grid-4">
<!-- Card 1: System Information & API Status -->
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>System & API Info</h3>
<p class="igny8-card-subtitle">System information and API configuration status</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-admin-site igny8-dashboard-icon-lg igny8-dashboard-icon-blue"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<div style="margin-bottom: 15px;">
<div style="font-weight: bold; margin-bottom: 8px; color: #333;">System Information</div>
<div style="font-size: 12px; margin-bottom: 4px;"><strong>Plugin:</strong> <?php echo get_option('igny8_version', 'Unknown'); ?></div>
<div style="font-size: 12px; margin-bottom: 4px;"><strong>WordPress:</strong> <?php echo get_bloginfo('version'); ?></div>
<div style="font-size: 12px; margin-bottom: 4px;"><strong>PHP:</strong> <?php echo PHP_VERSION; ?></div>
<div style="font-size: 12px; margin-bottom: 4px;"><strong>MySQL:</strong> <?php global $wpdb; echo $wpdb->db_version(); ?></div>
</div>
<div>
<div style="font-weight: bold; margin-bottom: 8px; color: #333;">API Status</div>
<?php
$api_key = get_option('igny8_api_key');
$api_configured = !empty($api_key);
$api_status_color = $api_configured ? 'green' : 'red';
$api_status_icon = $api_configured ? '✓' : '✗';
?>
<div style="font-size: 12px; margin-bottom: 4px; color: <?php echo $api_status_color; ?>;">
<strong>OpenAI API:</strong> <?php echo $api_status_icon; ?> <?php echo $api_configured ? 'Configured' : 'Not Configured'; ?>
</div>
<div style="font-size: 12px; margin-bottom: 4px;"><strong>Model:</strong> <?php echo get_option('igny8_model', 'gpt-4.1'); ?></div>
</div>
</div>
</div>
<!-- Card 2: Database Tables Part 1 -->
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>Database Tables 1</h3>
<p class="igny8-card-subtitle">Core database tables status and health</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-database igny8-dashboard-icon-lg igny8-dashboard-icon-green"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<?php
global $wpdb;
$tables_part1 = [
'igny8_keywords' => 'Keywords',
'igny8_tasks' => 'Tasks',
'igny8_data' => 'Data',
'igny8_variations' => 'Variations',
'igny8_rankings' => 'Rankings',
'igny8_suggestions' => 'Suggestions',
'igny8_campaigns' => 'Campaigns'
];
foreach ($tables_part1 as $table => $name) {
$table_name = $wpdb->prefix . $table;
$exists = $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name;
$status_color = $exists ? 'green' : 'red';
$status_icon = $exists ? '✓' : '✗';
echo "<div style='font-size: 12px; margin-bottom: 3px; color: $status_color;'>$status_icon $name</div>";
}
?>
</div>
</div>
<!-- Card 3: Database Tables Part 2 -->
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>Database Tables 2</h3>
<p class="igny8-card-subtitle">Extended database tables status and health</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-database igny8-dashboard-icon-lg igny8-dashboard-icon-purple"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<?php
$tables_part2 = [
'igny8_content_ideas' => 'Content Ideas',
'igny8_clusters' => 'Clusters',
'igny8_sites' => 'Sites',
'igny8_backlinks' => 'Backlinks',
'igny8_mapping' => 'Mapping',
'igny8_prompts' => 'Prompts',
'igny8_logs' => 'Logs'
];
foreach ($tables_part2 as $table => $name) {
$table_name = $wpdb->prefix . $table;
$exists = $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name;
$status_color = $exists ? 'green' : 'red';
$status_icon = $exists ? '✓' : '✗';
echo "<div style='font-size: 12px; margin-bottom: 3px; color: $status_color;'>$status_icon $name</div>";
}
?>
</div>
</div>
<!-- Card 4: Module Status -->
<div class="igny8-card">
<div class="igny8-standard-header">
<div class="igny8-card-header-content">
<div class="igny8-card-title-text">
<h3>Module Status</h3>
<p class="igny8-card-subtitle">Plugin modules activation and status</p>
</div>
<div class="igny8-card-icon">
<span class="dashicons dashicons-admin-tools igny8-dashboard-icon-lg igny8-dashboard-icon-amber"></span>
</div>
</div>
</div>
<div class="igny8-card-body">
<?php
$modules = [
'planner' => 'Planner',
'writer' => 'Writer',
'personalize' => 'Personalize',
'optimizer' => 'Optimizer',
'linker' => 'Linker'
];
foreach ($modules as $module => $name) {
$enabled = get_option("igny8_{$module}_enabled", true);
$status_color = $enabled ? 'green' : 'red';
$status_icon = $enabled ? '✓' : '✗';
echo "<div style='font-size: 12px; margin-bottom: 3px; color: $status_color;'>$status_icon $name</div>";
}
?>
</div>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
if (typeof window.initializeDebugToggle === 'function') {
window.initializeDebugToggle();
}
});
</script>