= $this->extend('layout/management_layout') ?> = $this->section('content') ?> 'bg-info text-dark', 'active' => 'bg-success', 'closing' => 'bg-warning text-dark', 'closed' => 'bg-secondary', 'archived' => 'bg-dark', ]; $formatDate = static fn ($value): string => $value ? esc((string) $value) : 'Not set'; $money = static fn ($value): string => '$' . number_format((float) $value, 2); $activeId = (int) ($activeYear['id'] ?? 0); $nextDraftId = (int) ($nextDraftYear['id'] ?? 0); $defaultNewPreviousYear = $activeYear ?: ($schoolYears[0] ?? null); $defaultNewPreviousYearName = (string) ($defaultNewPreviousYear['name'] ?? 'None'); $previousYearNameByNewYearName = []; foreach (($schoolYears ?? []) as $existingYear) { $existingName = (string) ($existingYear['name'] ?? ''); if (preg_match('/^(\d{4})-(\d{4})$/', $existingName, $matches)) { $previousYearNameByNewYearName[$matches[2] . '-' . ((int) $matches[2] + 1)] = $existingName; } } $closingPreviewUrl = $activeId > 0 ? site_url('administrator/school-years/' . $activeId . '/closing/preview' . ($nextDraftId > 0 ? '?' . http_build_query(['target_school_year_id' => $nextDraftId]) : '')) : ''; ?> getFlashdata('success')): ?>
| School Year | Dates | Status | Verify | Last Activity | Updated | Actions |
|---|---|---|---|---|---|---|
| = esc($year['name'] ?? '') ?> |
= $formatDate($year['starts_on'] ?? null) ?>
= $formatDate($year['ends_on'] ?? null) ?>
Fall makeup: = $formatDate($year['fall_makeup_exam_on'] ?? null) ?>
|
= esc(ucfirst($status)) ?> |
Previous: = esc($previousYearName ?? 'Not linked') ?>
Students: = esc((string) ($verify['students'] ?? 0)) ?>
Promoted: = esc((string) ($verify['promoted'] ?? 0)) ?> / Decisions: = esc((string) ($verify['decisions'] ?? 0)) ?>
Queued: = esc((string) ($verify['queued'] ?? 0)) ?>
Carry-forward: = esc($money($verify['carry_forward_balance'] ?? 0)) ?>
|
= esc($transition['action'] ?? '') ?>
= esc($transition['created_at'] ?? '') ?>
-
|
= esc($year['updated_at'] ?? '') ?> |
|