77 lines
2.2 KiB
PHP
77 lines
2.2 KiB
PHP
<?php
|
|
require_once 'db/config.php';
|
|
|
|
try {
|
|
$pdo = db();
|
|
|
|
// Fetch total publics
|
|
$stmt_publics = $pdo->query("SELECT COUNT(*) as total_publics FROM publics");
|
|
$total_publics = $stmt_publics->fetchColumn();
|
|
|
|
// Fetch total subscribers
|
|
$stmt_subscribers = $pdo->query("SELECT SUM(subscribers) as total_subscribers FROM publics");
|
|
$total_subscribers = $stmt_subscribers->fetchColumn();
|
|
|
|
} catch (PDOException $e) {
|
|
// For a real app, you'd want to log this error, not die.
|
|
die("Database error: " . $e->getMessage());
|
|
}
|
|
|
|
// Function to format large numbers
|
|
function format_number($num) {
|
|
if ($num >= 1000000) {
|
|
return round($num / 1000000, 1) . 'M';
|
|
} elseif ($num >= 1000) {
|
|
return round($num / 1000, 1) . 'K';
|
|
}
|
|
return $num;
|
|
}
|
|
|
|
?>
|
|
|
|
<header class="mb-4">
|
|
<h1 class="h3">Dashboard</h1>
|
|
</header>
|
|
|
|
<!-- Stat Cards -->
|
|
<div class="row g-4 mb-4">
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="card stat-card p-3">
|
|
<h5 class="card-title">Total Subscribers</h5>
|
|
<p class="display-4 fw-bold"><?php echo format_number($total_subscribers ?? 0); ?></p>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="card stat-card p-3">
|
|
<h5 class="card-title">Avg. Views / Post</h5>
|
|
<p class="display-4 fw-bold">-</p> <!-- Placeholder -->
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="card stat-card p-3">
|
|
<h5 class="card-title">Monthly Income</h5>
|
|
<p class="display-4 fw-bold">-</p> <!-- Placeholder -->
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 col-lg-3">
|
|
<div class="card stat-card p-3">
|
|
<h5 class="card-title">Active Publics</h5>
|
|
<p class="display-4 fw-bold"><?php echo $total_publics ?? 0; ?></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Chart -->
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h5 class="card-title mb-0">Average Views Over Time</h5>
|
|
</div>
|
|
<div class="card-body" style="height: 400px;">
|
|
<canvas id="viewsChart"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|