diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..397b4a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.log
diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index c722b7c..5f69af6 100644
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -108,6 +108,7 @@ $routes->get('administrator/student-score-card', 'View\StudentController::scoreC
// API for report card meta (students, class sections, school years)
$routes->get('api/printables/report-card/meta', 'View\ReportCardsController::reportCardMeta', ['filter' => 'auth']);
$routes->get('api/printables/report-card/completeness', 'View\ReportCardsController::reportCardCompleteness', ['filter' => 'auth']);
+$routes->get('api/printables/report-card/ack', 'View\ReportCardsController::reportCardAcknowledgement', ['filter' => 'auth']);
//Badges
$routes->get('printables_reports/badge_form', 'View\BadgesController::badgeForm');
@@ -330,6 +331,9 @@ $routes->post('/administrator/scores/update/{id}', 'View\ScoreController::update
// Route to delete a score record
$routes->get('/administrator/scores/delete/{id}', 'View\ScoreController::destroy');
$routes->get('/parent/scores', 'View\ScoreController::viewStudentScore');
+$routes->get('parent/report-cards', 'ParentReportCardController::index', ['filter' => 'auth:parent']);
+$routes->get('parent/report-cards/view/(:num)', 'ParentReportCardController::view/$1', ['filter' => 'auth:parent']);
+$routes->post('parent/report-cards/sign/(:num)', 'ParentReportCardController::sign/$1', ['filter' => 'auth:parent']);
diff --git a/app/Controllers/AdminProgressController.php b/app/Controllers/AdminProgressController.php
index 1878bf4..965d9fe 100644
--- a/app/Controllers/AdminProgressController.php
+++ b/app/Controllers/AdminProgressController.php
@@ -8,6 +8,7 @@ use App\Models\ClassSectionModel;
use App\Models\CalendarModel;
use App\Models\ConfigurationModel;
use App\Models\StudentClassModel;
+use App\Models\SubjectCurriculumModel;
use App\Services\SemesterRangeService;
use CodeIgniter\Exceptions\PageNotFoundException;
use CodeIgniter\HTTP\ResponseInterface;
@@ -21,6 +22,7 @@ class AdminProgressController extends BaseController
protected CalendarModel $calendarModel;
protected ConfigurationModel $configModel;
protected SemesterRangeService $semesterRangeService;
+ protected SubjectCurriculumModel $curriculumModel;
public function __construct()
{
@@ -32,6 +34,7 @@ class AdminProgressController extends BaseController
$this->calendarModel = new CalendarModel();
$this->configModel = new ConfigurationModel();
$this->semesterRangeService = new SemesterRangeService($this->configModel);
+ $this->curriculumModel = new SubjectCurriculumModel();
}
public function index()
@@ -107,6 +110,7 @@ class AdminProgressController extends BaseController
$filterEnd
);
$sectionStats = $this->buildSectionSubmissionStats($rows, $activeDatesSet, $expectedDays);
+ $sectionSubjectCounts = $this->buildSectionSubjectCounts($rows);
return view('admin/class_progress_list', [
'reportGroupsBySection' => $reportGroupsBySection,
@@ -115,6 +119,7 @@ class AdminProgressController extends BaseController
'statusOptions' => ClassProgressController::STATUS_OPTIONS,
'subjectSections' => ClassProgressController::SUBJECT_SECTIONS,
'sectionStats' => $sectionStats,
+ 'sectionSubjectCounts' => $sectionSubjectCounts,
'expectedDays' => $expectedDays,
]);
}
@@ -381,50 +386,166 @@ class AdminProgressController extends BaseController
protected function buildSectionSubmissionStats(array $rows, array $activeDatesSet, int $expectedDays): array
{
- $requiredSubjects = [];
- foreach (ClassProgressController::SUBJECT_SECTIONS as $section) {
- $requiredSubjects[] = $section['db_subject'] ?? $section['label'] ?? '';
- }
- $requiredSubjects = array_values(array_filter($requiredSubjects));
-
$submittedBySection = [];
foreach ($rows as $row) {
$sectionId = (int) ($row['class_section_id'] ?? 0);
$weekStart = (string) ($row['week_start'] ?? '');
- $subject = (string) ($row['subject'] ?? '');
- if ($sectionId === 0 || $weekStart === '' || $subject === '') {
+ if ($sectionId === 0 || $weekStart === '') {
continue;
}
- if (! empty($activeDatesSet) && empty($activeDatesSet[$weekStart])) {
- continue;
- }
- if (! in_array($subject, $requiredSubjects, true)) {
- continue;
- }
- $submittedBySection[$sectionId][$weekStart][$subject] = true;
+ $submittedBySection[$sectionId][$weekStart] = true;
}
$stats = [];
foreach ($submittedBySection as $sectionId => $weeks) {
- $submitted = 0;
- foreach ($weeks as $subjects) {
- $all = true;
- foreach ($requiredSubjects as $subject) {
- if (empty($subjects[$subject])) {
- $all = false;
- break;
- }
- }
- if ($all) {
- $submitted++;
- }
- }
+ $submitted = count($weeks);
$stats[$sectionId] = $this->buildSectionStat($submitted, $expectedDays);
}
return $stats;
}
+ protected function buildSectionSubjectCounts(array $rows): array
+ {
+ $allowedSubjects = [];
+ foreach (ClassProgressController::SUBJECT_SECTIONS as $section) {
+ $allowedSubjects[] = $section['db_subject'] ?? $section['label'] ?? '';
+ }
+ $allowedSubjects = array_values(array_filter($allowedSubjects));
+
+ $counts = [];
+ $latestWeekBySection = [];
+ $sectionClassMap = [];
+ foreach ($rows as $row) {
+ $sectionId = (int) ($row['class_section_id'] ?? 0);
+ $subject = (string) ($row['subject'] ?? '');
+ $weekStart = (string) ($row['week_start'] ?? '');
+ if ($sectionId === 0 || $subject === '' || $weekStart === '') {
+ continue;
+ }
+ if (! empty($allowedSubjects) && ! in_array($subject, $allowedSubjects, true)) {
+ continue;
+ }
+ if (! isset($sectionClassMap[$sectionId])) {
+ $sectionClassMap[$sectionId] = $this->classSectionModel->getClassId($sectionId);
+ }
+ if (
+ ! isset($latestWeekBySection[$sectionId])
+ || $weekStart > $latestWeekBySection[$sectionId]
+ ) {
+ $latestWeekBySection[$sectionId] = $weekStart;
+ }
+ }
+
+ $curriculumChapters = $this->buildCurriculumChapterMap(array_values(array_filter($sectionClassMap)));
+
+ foreach ($rows as $row) {
+ $sectionId = (int) ($row['class_section_id'] ?? 0);
+ $subject = (string) ($row['subject'] ?? '');
+ $weekStart = (string) ($row['week_start'] ?? '');
+ if ($sectionId === 0 || $subject === '' || $weekStart === '') {
+ continue;
+ }
+ if (! empty($allowedSubjects) && ! in_array($subject, $allowedSubjects, true)) {
+ continue;
+ }
+ if (empty($latestWeekBySection[$sectionId]) || $weekStart !== $latestWeekBySection[$sectionId]) {
+ continue;
+ }
+ $subjectSlug = $this->resolveSubjectSlug($subject);
+ $classId = $sectionClassMap[$sectionId] ?? null;
+ $chapterSet = [];
+ if ($classId && $subjectSlug && ! empty($curriculumChapters[$classId][$subjectSlug])) {
+ $chapterSet = $curriculumChapters[$classId][$subjectSlug];
+ }
+ $counts[$sectionId] = ($counts[$sectionId] ?? 0) + $this->countChapterSegments(
+ (string) ($row['unit_title'] ?? ''),
+ $chapterSet
+ );
+ }
+
+ return $counts;
+ }
+
+ protected function buildCurriculumChapterMap(array $classIds): array
+ {
+ $classIds = array_values(array_filter(array_map('intval', $classIds)));
+ if (empty($classIds)) {
+ return [];
+ }
+
+ $rows = $this->curriculumModel
+ ->whereIn('class_id', $classIds)
+ ->findAll();
+
+ $map = [];
+ foreach ($rows as $row) {
+ $classId = (int) ($row['class_id'] ?? 0);
+ $subject = (string) ($row['subject'] ?? '');
+ $chapter = trim((string) ($row['chapter_name'] ?? ''));
+ if ($classId === 0 || $subject === '' || $chapter === '') {
+ continue;
+ }
+ $map[$classId][$subject][$chapter] = true;
+ }
+
+ return $map;
+ }
+
+ protected function resolveSubjectSlug(string $subject): ?string
+ {
+ foreach (ClassProgressController::SUBJECT_SECTIONS as $slug => $section) {
+ $dbSubject = (string) ($section['db_subject'] ?? '');
+ $label = (string) ($section['label'] ?? '');
+ if ($subject === $dbSubject || $subject === $label) {
+ return $slug;
+ }
+ }
+ return null;
+ }
+
+ protected function countChapterSegments(string $unitTitle, array $chapterSet): int
+ {
+ $unitTitle = trim($unitTitle);
+ if ($unitTitle === '') {
+ return 1;
+ }
+ $parts = array_filter(array_map('trim', explode(';', $unitTitle)), static fn ($part) => $part !== '');
+ if (! $parts) {
+ return 1;
+ }
+
+ $count = 0;
+ $seen = [];
+ foreach ($parts as $part) {
+ $chapter = $this->extractChapterFromSegment($part);
+ $key = $chapter !== '' ? $chapter : $part;
+ if (! empty($chapterSet) && $chapter !== '' && empty($chapterSet[$chapter])) {
+ $key = $part;
+ }
+ if (isset($seen[$key])) {
+ continue;
+ }
+ $seen[$key] = true;
+ $count++;
+ }
+
+ return $count > 0 ? $count : 1;
+ }
+
+ protected function extractChapterFromSegment(string $segment): string
+ {
+ $segment = trim($segment);
+ if ($segment === '') {
+ return '';
+ }
+ $pos = strrpos($segment, '/');
+ if ($pos === false) {
+ return $segment;
+ }
+ return trim(substr($segment, $pos + 1));
+ }
+
protected function buildSectionStat(int $submitted, int $expectedDays): array
{
$percent = $expectedDays > 0 ? round(($submitted * 100) / $expectedDays, 1) : 0.0;
diff --git a/app/Controllers/ParentReportCardController.php b/app/Controllers/ParentReportCardController.php
new file mode 100644
index 0000000..8206712
--- /dev/null
+++ b/app/Controllers/ParentReportCardController.php
@@ -0,0 +1,186 @@
+db = \Config\Database::connect();
+ $this->configModel = new ConfigurationModel();
+ $this->ackModel = new ReportCardAcknowledgementModel();
+ $this->studentModel = new StudentModel();
+ }
+
+ public function index()
+ {
+ $parentId = $this->resolvePrimaryParentId();
+ if (! $parentId) {
+ return redirect()->back()->with('error', 'Unable to retrieve student data. Please contact support.');
+ }
+
+ $schoolYear = trim((string) ($this->request->getGet('school_year') ?? $this->configModel->getConfig('school_year') ?? ''));
+ $semester = trim((string) ($this->request->getGet('semester') ?? $this->configModel->getConfig('semester') ?? ''));
+
+ $builder = $this->db->table('students s')
+ ->select('s.id, s.firstname, s.lastname, cs.class_section_name')
+ ->join('student_class sc', 'sc.student_id = s.id', 'left')
+ ->join('classSection cs', 'cs.class_section_id = sc.class_section_id', 'left')
+ ->where('s.parent_id', $parentId)
+ ->orderBy('s.firstname', 'ASC')
+ ->orderBy('s.lastname', 'ASC');
+
+ if ($schoolYear !== '') {
+ $builder->where('sc.school_year', $schoolYear);
+ }
+ if ($semester !== '') {
+ $builder->where('sc.semester', $semester);
+ }
+
+ $students = $builder->get()->getResultArray();
+ $studentIds = array_values(array_filter(array_map(static fn ($s) => (int) ($s['id'] ?? 0), $students)));
+
+ $ackMap = [];
+ if (! empty($studentIds)) {
+ $rows = $this->ackModel
+ ->where('parent_id', $parentId)
+ ->where('school_year', $schoolYear)
+ ->where('semester', $semester)
+ ->whereIn('student_id', $studentIds)
+ ->findAll();
+ foreach ($rows as $row) {
+ $ackMap[(int) $row['student_id']] = $row;
+ }
+ }
+
+ return view('parent/report_cards', [
+ 'students' => $students,
+ 'ackMap' => $ackMap,
+ 'schoolYear' => $schoolYear,
+ 'semester' => $semester,
+ ]);
+ }
+
+ public function view($studentId)
+ {
+ $parentId = $this->resolvePrimaryParentId();
+ if (! $parentId) {
+ return redirect()->back()->with('error', 'Unable to retrieve student data. Please contact support.');
+ }
+
+ $student = $this->studentModel->find((int) $studentId);
+ if (! $student || (int) ($student['parent_id'] ?? 0) !== $parentId) {
+ throw new PageNotFoundException('Student not found.');
+ }
+
+ $schoolYear = trim((string) ($this->request->getGet('school_year') ?? $this->configModel->getConfig('school_year') ?? ''));
+ $semester = trim((string) ($this->request->getGet('semester') ?? $this->configModel->getConfig('semester') ?? ''));
+
+ $this->touchAcknowledgement($parentId, (int) $studentId, $schoolYear, $semester, [
+ 'viewed_at' => date('Y-m-d H:i:s'),
+ ]);
+
+ $url = site_url('report-card/student/' . (int) $studentId);
+ $query = [];
+ if ($schoolYear !== '') {
+ $query['school_year'] = $schoolYear;
+ }
+ if ($semester !== '') {
+ $query['semester'] = $semester;
+ }
+ if ($query) {
+ $url .= '?' . http_build_query($query);
+ }
+
+ return redirect()->to($url);
+ }
+
+ public function sign($studentId)
+ {
+ $parentId = $this->resolvePrimaryParentId();
+ if (! $parentId) {
+ return redirect()->back()->with('error', 'Unable to retrieve student data. Please contact support.');
+ }
+
+ $student = $this->studentModel->find((int) $studentId);
+ if (! $student || (int) ($student['parent_id'] ?? 0) !== $parentId) {
+ throw new PageNotFoundException('Student not found.');
+ }
+
+ $name = trim((string) $this->request->getPost('signed_name'));
+ if ($name === '') {
+ return redirect()->back()->with('error', 'Please type your full name to sign.');
+ }
+
+ $schoolYear = trim((string) ($this->configModel->getConfig('school_year') ?? ''));
+ $semester = trim((string) ($this->configModel->getConfig('semester') ?? ''));
+ $now = date('Y-m-d H:i:s');
+ $this->touchAcknowledgement($parentId, (int) $studentId, $schoolYear, $semester, [
+ 'viewed_at' => $now,
+ 'signed_at' => $now,
+ 'signed_name' => $name,
+ 'signer_ip' => $this->request->getIPAddress(),
+ ]);
+
+ return redirect()->to(site_url('parent/report-cards'))->with('success', 'Report card acknowledged.');
+ }
+
+ protected function resolvePrimaryParentId(): ?int
+ {
+ $parentId = (int) (session()->get('user_id') ?? 0);
+ $userType = (string) ($_SESSION['user_type'] ?? '');
+ if ($userType === 'primary') {
+ return $parentId ?: null;
+ }
+ if ($userType === 'secondary') {
+ $row = $this->db->table('parents')
+ ->select('parent_id')
+ ->where('secondparent_user_id', $parentId)
+ ->get()
+ ->getRowArray();
+ return $row ? (int) ($row['parent_id'] ?? 0) : null;
+ }
+ if ($userType === 'tertiary') {
+ $row = $this->db->table('authorized_users')
+ ->select('user_id as parent_id')
+ ->where('authorized_user_id', $parentId)
+ ->get()
+ ->getRowArray();
+ return $row ? (int) ($row['parent_id'] ?? 0) : null;
+ }
+ return $parentId ?: null;
+ }
+
+ protected function touchAcknowledgement(
+ int $parentId,
+ int $studentId,
+ string $schoolYear,
+ string $semester,
+ array $values
+ ): void {
+ $criteria = [
+ 'parent_id' => $parentId,
+ 'student_id' => $studentId,
+ 'school_year' => $schoolYear,
+ 'semester' => $semester,
+ ];
+ $existing = $this->ackModel->where($criteria)->first();
+ if ($existing) {
+ $this->ackModel->update((int) $existing['id'], $values);
+ return;
+ }
+ $this->ackModel->insert(array_merge($criteria, $values));
+ }
+}
diff --git a/app/Controllers/View/ReportCardsController.php b/app/Controllers/View/ReportCardsController.php
index 74b6e1b..7b52691 100644
--- a/app/Controllers/View/ReportCardsController.php
+++ b/app/Controllers/View/ReportCardsController.php
@@ -4,18 +4,21 @@ namespace App\Controllers\View;
use App\Models\CalendarModel;
use App\Models\AttendanceDataModel;
+use App\Models\ReportCardAcknowledgementModel;
use App\Services\SemesterRangeService;
class ReportCardsController extends PrintablesBaseController
{
protected $calendarModel;
protected $semesterRangeService;
+ protected $ackModel;
public function __construct()
{
parent::__construct();
$this->calendarModel = new CalendarModel();
$this->semesterRangeService = new SemesterRangeService($this->configModel);
+ $this->ackModel = new ReportCardAcknowledgementModel();
}
public function report_card()
@@ -369,6 +372,24 @@ class ReportCardsController extends PrintablesBaseController
$isNumeric = static fn($v) => $v !== null && $v !== '' && is_numeric($v);
+ $ackMap = [];
+ try {
+ $ackRows = $this->ackModel
+ ->whereIn('student_id', $studentIds)
+ ->where('school_year', $year)
+ ->where('semester', $sem)
+ ->orderBy('updated_at', 'DESC')
+ ->findAll();
+ foreach ($ackRows as $row) {
+ $sid = (int) ($row['student_id'] ?? 0);
+ if ($sid > 0 && ! isset($ackMap[$sid])) {
+ $ackMap[$sid] = $row;
+ }
+ }
+ } catch (\Throwable $e) {
+ $ackMap = [];
+ }
+
$results = [];
$completeCount = 0;
$warningCount = 0;
@@ -471,12 +492,16 @@ class ReportCardsController extends PrintablesBaseController
$warningCount++;
}
+ $ack = $sid > 0 ? ($ackMap[$sid] ?? null) : null;
$results[] = [
'id' => $sid,
'name' => $name !== '' ? $name : 'N/A',
'missing' => $missing,
'warnings' => $warnings,
'complete' => $isComplete,
+ 'viewed_at' => $ack['viewed_at'] ?? null,
+ 'signed_at' => $ack['signed_at'] ?? null,
+ 'signed_name' => $ack['signed_name'] ?? null,
];
}
@@ -501,6 +526,37 @@ class ReportCardsController extends PrintablesBaseController
]);
}
+ /**
+ * API: report card parent acknowledgement status
+ * GET params: student_id, school_year, semester
+ */
+ public function reportCardAcknowledgement()
+ {
+ $studentId = (int) ($this->request->getGet('student_id') ?? 0);
+ if ($studentId <= 0) {
+ return $this->response->setJSON(['ok' => false, 'error' => 'Missing student_id'])->setStatusCode(400);
+ }
+ $schoolYear = trim((string) ($this->request->getGet('school_year') ?? $this->schoolYear ?? ''));
+ $semester = trim((string) ($this->request->getGet('semester') ?? $this->semester ?? ''));
+
+ $row = $this->ackModel
+ ->where('student_id', $studentId)
+ ->where('school_year', $schoolYear)
+ ->where('semester', $semester)
+ ->orderBy('updated_at', 'DESC')
+ ->first();
+
+ return $this->response->setJSON([
+ 'ok' => true,
+ 'student_id' => $studentId,
+ 'school_year' => $schoolYear,
+ 'semester' => $semester,
+ 'viewed_at' => $row['viewed_at'] ?? null,
+ 'signed_at' => $row['signed_at'] ?? null,
+ 'signed_name' => $row['signed_name'] ?? null,
+ ]);
+ }
+
protected function fetchStudentsByClass(int $sectionId, ?string $schoolYear)
{
$b = $this->studentClassModel
diff --git a/app/Controllers/View/ScoreController.php b/app/Controllers/View/ScoreController.php
index 4e05fba..ff24070 100644
--- a/app/Controllers/View/ScoreController.php
+++ b/app/Controllers/View/ScoreController.php
@@ -1378,6 +1378,7 @@ $students = $this->db->table('students')
$releaseScores = (strcasecmp($semester, 'Fall') === 0) ? $releaseFall
: ((strcasecmp($semester, 'Spring') === 0) ? $releaseSpring : $releaseAny);
$scores[$selectedYear][$semester][$studentId] = [
+ 'student_id' => $studentId,
'school_id' => $student['school_id'],
'student_firstname' => $student['firstname'],
'student_lastname' => $student['lastname'],
diff --git a/app/Database/Migrations/2026-01-10-000007_AllowCompetitionWinnerRankTies.php b/app/Database/Migrations/2026-01-10-000007_AllowCompetitionWinnerRankTies.php
index e7c6498..3729203 100644
--- a/app/Database/Migrations/2026-01-10-000007_AllowCompetitionWinnerRankTies.php
+++ b/app/Database/Migrations/2026-01-10-000007_AllowCompetitionWinnerRankTies.php
@@ -13,11 +13,11 @@ class AllowCompetitionWinnerRankTies extends Migration
return;
}
- if ($db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
+ if ($this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
$db->query('DROP INDEX competition_id_class_section_id_rank ON competition_winners');
}
- if (!$db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
+ if (! $this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
$db->query(
'CREATE INDEX competition_id_class_section_id_rank ON competition_winners (competition_id, class_section_id, rank)'
);
@@ -31,7 +31,7 @@ class AllowCompetitionWinnerRankTies extends Migration
return;
}
- if ($db->indexExists('competition_winners', 'competition_id_class_section_id_rank')) {
+ if ($this->indexExists($db, 'competition_winners', 'competition_id_class_section_id_rank')) {
$db->query('DROP INDEX competition_id_class_section_id_rank ON competition_winners');
}
@@ -39,4 +39,23 @@ class AllowCompetitionWinnerRankTies extends Migration
'ALTER TABLE competition_winners ADD UNIQUE KEY competition_id_class_section_id_rank (competition_id, class_section_id, rank)'
);
}
+
+ private function indexExists($db, string $table, string $index): bool
+ {
+ if (method_exists($db, 'indexExists')) {
+ return $db->indexExists($table, $index);
+ }
+
+ $dbName = $db->getDatabase();
+ $builder = $db->table('information_schema.STATISTICS');
+ $row = $builder
+ ->select('INDEX_NAME')
+ ->where('TABLE_SCHEMA', $dbName)
+ ->where('TABLE_NAME', $table)
+ ->where('INDEX_NAME', $index)
+ ->get()
+ ->getRowArray();
+
+ return ! empty($row);
+ }
}
diff --git a/app/Database/Migrations/2026-02-05-000300_AddPageSelectionToPrintRequests.php b/app/Database/Migrations/2026-02-05-000300_AddPageSelectionToPrintRequests.php
index 8af9a6b..70a47e5 100644
--- a/app/Database/Migrations/2026-02-05-000300_AddPageSelectionToPrintRequests.php
+++ b/app/Database/Migrations/2026-02-05-000300_AddPageSelectionToPrintRequests.php
@@ -1 +1,37 @@
-Print all
\ No newline at end of file
+db->tableExists('print_requests')) {
+ return;
+ }
+
+ if (! $this->db->fieldExists('page_selection', 'print_requests')) {
+ $this->forge->addColumn('print_requests', [
+ 'page_selection' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 255,
+ 'null' => true,
+ 'after' => 'num_copies',
+ ],
+ ]);
+ }
+ }
+
+ public function down()
+ {
+ if (! $this->db->tableExists('print_requests')) {
+ return;
+ }
+
+ if ($this->db->fieldExists('page_selection', 'print_requests')) {
+ $this->forge->dropColumn('print_requests', 'page_selection');
+ }
+ }
+}
diff --git a/app/Database/Migrations/2026-02-27-120000_CreateReportCardAcknowledgements.php b/app/Database/Migrations/2026-02-27-120000_CreateReportCardAcknowledgements.php
new file mode 100644
index 0000000..54e49f3
--- /dev/null
+++ b/app/Database/Migrations/2026-02-27-120000_CreateReportCardAcknowledgements.php
@@ -0,0 +1,77 @@
+db->tableExists('report_card_acknowledgements')) {
+ return;
+ }
+
+ $this->forge->addField([
+ 'id' => [
+ 'type' => 'INT',
+ 'constraint' => 11,
+ 'unsigned' => true,
+ 'auto_increment' => true,
+ ],
+ 'parent_id' => [
+ 'type' => 'INT',
+ 'constraint' => 11,
+ 'unsigned' => true,
+ ],
+ 'student_id' => [
+ 'type' => 'INT',
+ 'constraint' => 11,
+ 'unsigned' => true,
+ ],
+ 'school_year' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 20,
+ ],
+ 'semester' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 20,
+ ],
+ 'viewed_at' => [
+ 'type' => 'DATETIME',
+ 'null' => true,
+ ],
+ 'signed_at' => [
+ 'type' => 'DATETIME',
+ 'null' => true,
+ ],
+ 'signed_name' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 120,
+ 'null' => true,
+ ],
+ 'signer_ip' => [
+ 'type' => 'VARCHAR',
+ 'constraint' => 45,
+ 'null' => true,
+ ],
+ 'created_at' => [
+ 'type' => 'DATETIME',
+ 'null' => true,
+ ],
+ 'updated_at' => [
+ 'type' => 'DATETIME',
+ 'null' => true,
+ ],
+ ]);
+
+ $this->forge->addKey('id', true);
+ $this->forge->addKey(['parent_id', 'student_id', 'school_year', 'semester'], false, true);
+ $this->forge->createTable('report_card_acknowledgements');
+ }
+
+ public function down()
+ {
+ $this->forge->dropTable('report_card_acknowledgements', true);
+ }
+}
diff --git a/app/Models/ReportCardAcknowledgementModel.php b/app/Models/ReportCardAcknowledgementModel.php
new file mode 100644
index 0000000..0778bc1
--- /dev/null
+++ b/app/Models/ReportCardAcknowledgementModel.php
@@ -0,0 +1,27 @@
+
@@ -90,6 +91,7 @@
$collapseId = 'progress-section-' . $sectionId;
$headingId = 'progress-heading-' . $sectionId;
$stat = $sectionStats[$sectionId] ?? null;
+ $subjectCount = (int) ($sectionSubjectCounts[$sectionId] ?? 0);
if (! $stat) {
if ($expectedDays === 0) {
$stat = [
@@ -113,12 +115,14 @@
$submissionLabel = $expectedDays > 0
? ('Submitted: ' . (int) $stat['submitted'] . ' / ' . (int) $expectedDays . ' (' . $percentLabel . ')')
: 'Submitted: N/A';
+ $subjectLabel = 'Subjects: ' . $subjectCount;
?>
+
+
+
diff --git a/app/Views/parent/report_cards.php b/app/Views/parent/report_cards.php
new file mode 100644
index 0000000..40dd404
--- /dev/null
+++ b/app/Views/parent/report_cards.php
@@ -0,0 +1,72 @@
+= $this->extend('layout/main_layout') ?>
+= $this->section('content') ?>
+
+
+
+
Report Cards
+
+ = esc($schoolYear ?: 'N/A') ?> = $semester ? '• ' . esc($semester) . ' Semester' : '' ?>
+
+
+
+
+ getFlashdata('error')): ?>
+
= esc(session()->getFlashdata('error')) ?>
+
+ getFlashdata('success')): ?>
+
= esc(session()->getFlashdata('success')) ?>
+
+
+
+
No students available for report cards.
+
+
+
+
+
+ | Student |
+ Class Section |
+ Viewed |
+ Signature |
+ Action |
+
+
+
+
+
+
+ | = esc(trim(($student['firstname'] ?? '') . ' ' . ($student['lastname'] ?? ''))) ?> |
+ = esc($student['class_section_name'] ?? 'N/A') ?> |
+ = $viewedAt ? esc(local_datetime($viewedAt, 'm-d-Y H:i')) : 'Not viewed' ?> |
+
+
+ = esc($signedName ?: 'Signed') ?>
+ = esc(local_datetime($signedAt, 'm-d-Y H:i')) ?>
+
+ Not signed
+
+ |
+
+ View Report
+
+
+
+ |
+
+
+
+
+
+
+
+= $this->endSection() ?>
diff --git a/app/Views/parent/scores.php b/app/Views/parent/scores.php
index c515b36..f7cdd0e 100644
--- a/app/Views/parent/scores.php
+++ b/app/Views/parent/scores.php
@@ -1,7 +1,9 @@
= $this->extend('layout/main_layout') ?>
= $this->section('content') ?>
@@ -73,6 +75,7 @@ $showExamScoresBySemester = $showExamScoresBySemester ?? [];
Exam |
Semester Score |
+
Report Card |
@@ -96,6 +99,32 @@ $showExamScoresBySemester = $showExamScoresBySemester ?? [];
= esc($student['scores']['midterm_exam']['score'] ?? $student['scores']['final_exam']['score'] ?? '-') ?> |
= esc($student['scores']['semester']['score'] ?? '-') ?> |
+
+
+ 0) {
+ $reportYear = (string) ($selectedYear ?? '');
+ $reportSemester = (string) ($semester ?? '');
+ $reportDate = date('Y-m-d');
+ $reportUrl = base_url('parent/report-cards/view/' . $reportStudentId);
+ $query = http_build_query([
+ 'school_year' => $reportYear,
+ 'semester' => $reportSemester,
+ 'report_date' => $reportDate,
+ ]);
+ if ($query) {
+ $reportUrl .= '?' . $query;
+ }
+ }
+ ?>
+ 0): ?>
+ View
+
+ Unavailable
+
+ |
+
diff --git a/app/Views/partials/navbar.php b/app/Views/partials/navbar.php
index a6cb47c..942ec2a 100644
--- a/app/Views/partials/navbar.php
+++ b/app/Views/partials/navbar.php
@@ -334,6 +334,12 @@ switch ($role) {
'label' => 'Scores',
'title' => 'Review progressive academic score for the year (homeworks, projects and exams).',
],
+ [
+ 'href' => base_url('/parent/report-cards'),
+ 'icon' => 'bi-file-earmark-text',
+ 'label' => 'Report Cards',
+ 'title' => 'View and acknowledge student report cards.',
+ ],
[
'href' => base_url('/parent/progress'),
'icon' => 'bi-journal-check',
diff --git a/app/Views/printables_reports/report_card.php b/app/Views/printables_reports/report_card.php
index d6cf4b7..3377849 100644
--- a/app/Views/printables_reports/report_card.php
+++ b/app/Views/printables_reports/report_card.php
@@ -48,6 +48,7 @@
Download
+
@@ -67,10 +68,12 @@
- | Student |
+ Student |
Status |
Missing |
Warnings |
+ Viewed |
+ Signed |
@@ -91,6 +94,7 @@
document.addEventListener('DOMContentLoaded', function(){
const API = = json_encode(site_url('api/printables/report-card/meta')) ?>;
const COMPLETENESS_API = = json_encode(site_url('api/printables/report-card/completeness')) ?>;
+ const ACK_API = = json_encode(site_url('api/printables/report-card/ack')) ?>;
// add cache-busting cb param
const withCB = (u) => u + (u.includes('?') ? '&' : '?') + 'cb=' + Date.now();
@@ -119,6 +123,7 @@ document.addEventListener('DOMContentLoaded', function(){
const $completenessSummary = document.getElementById('completenessSummary');
const $completenessWrap = document.getElementById('completenessTableWrap');
const $completenessBody = document.getElementById('completenessBody');
+ const $ackStatus = document.getElementById('ackStatus');
function opt(el, val, label) {
const o = document.createElement('option'); o.value = String(val); o.textContent = label; el.appendChild(o);
@@ -157,10 +162,40 @@ document.addEventListener('DOMContentLoaded', function(){
// Classes
$class.innerHTML = '';
(data.classSections || []).forEach(c => opt($class, c.class_section_id || c.id, c.class_section_name));
+
+ updateAckStatus();
+ }
+
+ async function updateAckStatus() {
+ if (! $ackStatus) return;
+ const sid = $student.value;
+ const y = $year.value || '';
+ const s = $sem.value || '';
+ if (!sid) {
+ $ackStatus.textContent = '';
+ return;
+ }
+ try {
+ const url = `${ACK_API}?student_id=${encodeURIComponent(sid)}&school_year=${encodeURIComponent(y)}&semester=${encodeURIComponent(s)}`;
+ const res = await fetch(url, { credentials: 'same-origin' });
+ const data = await res.json();
+ if (!res.ok || data?.ok === false) {
+ $ackStatus.textContent = 'Parent acknowledgement: unavailable';
+ return;
+ }
+ const viewed = data.viewed_at ? `Viewed: ${data.viewed_at}` : 'Viewed: not yet';
+ const signed = data.signed_at
+ ? `Signed: ${data.signed_at} (${data.signed_name || 'name missing'})`
+ : 'Signed: not yet';
+ $ackStatus.textContent = `Parent acknowledgement — ${viewed} · ${signed}`;
+ } catch (err) {
+ $ackStatus.textContent = 'Parent acknowledgement: unavailable';
+ }
}
$year.addEventListener('change', function(){ loadMeta(this.value, $sem.value).catch(console.error); });
$sem.addEventListener('change', function(){ loadMeta($year.value, this.value).catch(console.error); });
+ $student.addEventListener('change', function(){ updateAckStatus(); });
$viewS.addEventListener('click', function(){
const sid = $student.value; const y = $year.value; const s=$sem.value;
@@ -254,10 +289,18 @@ document.addEventListener('DOMContentLoaded', function(){
tdMissing.textContent = missing.length ? missing.join(', ') : 'None';
const tdWarnings = document.createElement('td');
tdWarnings.textContent = warningsList.length ? warningsList.join(', ') : 'None';
+ const tdViewed = document.createElement('td');
+ tdViewed.textContent = row.viewed_at ? row.viewed_at : 'Not viewed';
+ const tdSigned = document.createElement('td');
+ tdSigned.textContent = row.signed_at
+ ? `${row.signed_at}${row.signed_name ? ` (${row.signed_name})` : ''}`
+ : 'Not signed';
tr.appendChild(tdName);
tr.appendChild(tdStatus);
tr.appendChild(tdMissing);
tr.appendChild(tdWarnings);
+ tr.appendChild(tdViewed);
+ tr.appendChild(tdSigned);
$completenessBody.appendChild(tr);
});
$completenessWrap.hidden = false;
diff --git a/writable/cache/navbar_cd1336c7da8c3f064f0b3b9e0c0a2232 b/writable/cache/navbar_cd1336c7da8c3f064f0b3b9e0c0a2232
index d05281a..0f7ebe4 100644
--- a/writable/cache/navbar_cd1336c7da8c3f064f0b3b9e0c0a2232
+++ b/writable/cache/navbar_cd1336c7da8c3f064f0b3b9e0c0a2232
@@ -1 +1 @@
-a:3:{s:4:"time";i:1772167656;s:3:"ttl";i:300;s:4:"data";a:19:{i:0;a:12:{s:2:"id";s:2:"63";s:14:"menu_parent_id";N;s:5:"label";s:6:"Family";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-09 15:22:56";s:10:"updated_at";s:19:"2025-10-26 06:33:11";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"64";s:14:"menu_parent_id";s:2:"63";s:5:"label";s:16:"Family Managment";s:3:"url";s:12:"family/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-09 15:23:49";s:10:"updated_at";s:19:"2025-10-26 06:28:34";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"74";s:14:"menu_parent_id";s:2:"63";s:5:"label";s:13:"Family Update";s:3:"url";s:22:"families/import-legacy";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:29:11";s:10:"updated_at";s:19:"2025-10-26 06:29:11";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:1;a:12:{s:2:"id";s:2:"67";s:14:"menu_parent_id";N;s:5:"label";s:9:"Inventory";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 06:24:37";s:10:"updated_at";s:19:"2025-09-16 16:48:58";s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"56";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:5:"Books";s:3:"url";s:14:"inventory/book";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:13:48";s:10:"updated_at";s:19:"2025-10-05 03:43:38";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"72";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:26:"Update Inventory Movements";s:3:"url";s:19:"inventory/movements";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-02 06:07:53";s:10:"updated_at";s:19:"2025-10-05 03:42:08";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"55";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:19:"Classroom Equipment";s:3:"url";s:9:"inventory";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 18:56:08";s:10:"updated_at";s:19:"2025-09-16 16:47:32";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"57";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:16:"Kitchen Supplies";s:3:"url";s:17:"inventory/kitchen";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:14:24";s:10:"updated_at";s:19:"2025-09-16 16:48:23";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"58";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:15:"Office Supplies";s:3:"url";s:16:"inventory/office";s:10:"icon_class";N;s:6:"target";s:6:"_blank";s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:14:53";s:10:"updated_at";s:19:"2025-09-10 22:17:05";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"66";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:7:"Summary";s:3:"url";s:21:"inventory/summary-all";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 05:56:10";s:10:"updated_at";s:19:"2025-09-11 06:28:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:2;a:12:{s:2:"id";s:2:"83";s:14:"menu_parent_id";N;s:5:"label";s:15:"TimeOff Request";s:3:"url";s:22:"/administrator/absence";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-11-01 20:58:55";s:10:"updated_at";s:19:"2025-11-01 20:58:55";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"86";s:14:"menu_parent_id";N;s:5:"label";s:11:"Competition";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-11 07:40:32";s:10:"updated_at";s:19:"2026-01-11 07:40:32";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"87";s:14:"menu_parent_id";s:2:"86";s:5:"label";s:17:"Competition Setup";s:3:"url";s:19:"competition-winners";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-11 07:41:19";s:10:"updated_at";s:19:"2026-01-11 07:41:19";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:4;a:12:{s:2:"id";s:2:"88";s:14:"menu_parent_id";N;s:5:"label";s:23:"Notification Management";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-13 19:48:58";s:10:"updated_at";s:19:"2026-01-13 19:48:58";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"89";s:14:"menu_parent_id";s:2:"88";s:5:"label";s:18:"Notification Setup";s:3:"url";s:35:"/administrator/notifications_alerts";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-13 19:49:35";s:10:"updated_at";s:19:"2026-01-13 19:49:35";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:5;a:12:{s:2:"id";s:2:"92";s:14:"menu_parent_id";N;s:5:"label";s:10:"Curriculum";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-18 07:23:26";s:10:"updated_at";s:19:"2026-01-18 07:23:26";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"91";s:14:"menu_parent_id";s:2:"92";s:5:"label";s:14:"Class Progress";s:3:"url";s:14:"admin/progress";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-15 04:38:48";s:10:"updated_at";s:19:"2026-01-18 07:24:37";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"93";s:14:"menu_parent_id";s:2:"92";s:5:"label";s:18:"Curriculum Subject";s:3:"url";s:32:"administrator/subject-curriculum";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-18 07:25:26";s:10:"updated_at";s:19:"2026-01-18 07:25:26";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:6;a:12:{s:2:"id";s:2:"94";s:14:"menu_parent_id";N;s:5:"label";s:19:"Teacher Submissions";s:3:"url";s:33:"administrator/teacher-submissions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-25 22:20:24";s:10:"updated_at";s:19:"2026-01-25 22:20:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"95";s:14:"menu_parent_id";N;s:5:"label";s:5:"Exams";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-29 01:51:29";s:10:"updated_at";s:19:"2026-01-29 01:51:29";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"96";s:14:"menu_parent_id";s:2:"95";s:5:"label";s:12:"Exams Drafts";s:3:"url";s:26:"/administrator/exam-drafts";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-29 01:52:20";s:10:"updated_at";s:19:"2026-01-29 01:52:20";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:8;a:12:{s:2:"id";s:1:"1";s:14:"menu_parent_id";N;s:5:"label";s:5:"Users";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"10";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"12";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:20:"Active Notifications";s:3:"url";s:20:"notifications/active";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"13";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:21:"Deleted Notifications";s:3:"url";s:21:"notifications/deleted";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"14";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:14:"Login Activity";s:3:"url";s:19:"user/login_activity";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:55:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"15";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:9:"User List";s:3:"url";s:14:"user/user_list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"52";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:14:"Navbar Builder";s:3:"url";s:11:"nav-builder";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:34:01";s:10:"updated_at";s:19:"2025-09-05 21:57:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"76";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:13:"IP Management";s:3:"url";s:21:"administrator/ip_bans";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:34:35";s:10:"updated_at";s:19:"2025-10-26 06:34:35";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:9;a:12:{s:2:"id";s:1:"2";s:14:"menu_parent_id";N;s:5:"label";s:5:"Roles";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"20";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:56:34";s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"16";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:16:"Assign User Role";s:3:"url";s:26:"rolepermission/assign_role";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:11:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"17";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:15:"Role Management";s:3:"url";s:20:"rolepermission/roles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:55:43";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"53";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:21:"Permission Management";s:3:"url";s:31:"rolepermission/list_permissions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 05:25:02";s:10:"updated_at";s:19:"2025-09-12 07:24:13";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:10;a:12:{s:2:"id";s:1:"3";s:14:"menu_parent_id";N;s:5:"label";s:13:"Configuration";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"30";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:54:57";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"84";s:14:"menu_parent_id";s:1:"3";s:5:"label";s:24:"Edit attendance Comments";s:3:"url";s:34:"administrator/attendance-templates";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-04 04:17:02";s:10:"updated_at";s:19:"2026-01-04 04:17:02";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"18";s:14:"menu_parent_id";s:1:"3";s:5:"label";s:22:"Add/Edit Configuration";s:3:"url";s:32:"configuration/configuration_view";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:52:20";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:11;a:12:{s:2:"id";s:1:"4";s:14:"menu_parent_id";N;s:5:"label";s:8:"Staffing";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"40";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"71";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:16:"Staff Attendance";s:3:"url";s:30:"admin/teacher-attendance/month";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-27 04:29:24";s:10:"updated_at";s:19:"2025-09-28 05:39:08";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"19";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:13:"Staff Profile";s:3:"url";s:11:"staff/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"20";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:24:"Teacher Class Assignment";s:3:"url";s:38:"administrator/teacher_class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:12;a:12:{s:2:"id";s:1:"5";s:14:"menu_parent_id";N;s:5:"label";s:7:"Parents";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"50";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"21";s:14:"menu_parent_id";s:1:"5";s:5:"label";s:14:"Parent Profile";s:3:"url";s:29:"administrator/parent_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:13;a:12:{s:2:"id";s:1:"6";s:14:"menu_parent_id";N;s:5:"label";s:15:"Student-Affairs";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"60";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:16:{i:0;a:12:{s:2:"id";s:2:"90";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Remove Student";s:3:"url";s:31:"/administrator/removed_students";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-14 03:53:43";s:10:"updated_at";s:19:"2026-01-14 03:53:43";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"97";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Placement Test";s:3:"url";s:17:"grading/placement";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-02-06 03:08:29";s:10:"updated_at";s:19:"2026-02-06 03:08:29";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"22";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:21:"Attendance Management";s:3:"url";s:30:"administrator/daily_attendance";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-27 05:10:47";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"23";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:26:"Attendance Tracking System";s:3:"url";s:21:"attendance/violations";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-10-12 15:13:51";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"24";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Attendance Scans";s:3:"url";s:16:"rfid_coming_soon";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"25";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:12:"Classes List";s:3:"url";s:30:"administrator/class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:6;a:12:{s:2:"id";s:2:"78";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Early Dismissals";s:3:"url";s:27:"attendance/early-dismissals";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:40:01";s:10:"updated_at";s:19:"2025-10-26 14:57:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"26";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:17:"Emergency Contact";s:3:"url";s:31:"administrator/emergency_contact";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:56:05";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:8;a:12:{s:2:"id";s:2:"27";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:21:"Enrollment-Withdrawal";s:3:"url";s:37:"enroll_withdraw/enrollment_withdrawal";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"6";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-19 06:23:25";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:9;a:12:{s:2:"id";s:2:"28";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:20:"Incidents Management";s:3:"url";s:22:"flags/flags_management";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"7";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-29 04:26:10";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:10;a:12:{s:2:"id";s:2:"29";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:15:"School Calendar";s:3:"url";s:27:"administrator/calendar_view";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:11;a:12:{s:2:"id";s:2:"77";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:18:"Late Slips History";s:3:"url";s:13:"slips/preview";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:38:42";s:10:"updated_at";s:19:"2025-10-26 06:38:42";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:12;a:12:{s:2:"id";s:2:"30";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Score Analysis";s:3:"url";s:15:"report/combined";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"9";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-26 05:12:17";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:13;a:12:{s:2:"id";s:2:"31";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Score Management";s:3:"url";s:7:"grading";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"10";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-26 05:11:48";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:14;a:12:{s:2:"id";s:2:"32";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:24:"Student Class Assignment";s:3:"url";s:38:"administrator/student_class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"11";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:15;a:12:{s:2:"id";s:2:"33";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:15:"Student Profile";s:3:"url";s:30:"administrator/student_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"12";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:14;a:12:{s:2:"id";s:1:"7";s:14:"menu_parent_id";N;s:5:"label";s:7:"Classes";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"70";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"79";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:16:"Class Distribute";s:3:"url";s:38:"administrator/sections/auto-distribute";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:41:13";s:10:"updated_at";s:19:"2025-10-26 06:41:13";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"34";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:12:"Classes List";s:3:"url";s:30:"administrator/class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:08:21";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"80";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:22:"Section Auto Generator";s:3:"url";s:39:"administrator/sections/promotion-totals";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:42:02";s:10:"updated_at";s:19:"2025-10-26 06:42:02";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:15;a:12:{s:2:"id";s:1:"8";s:14:"menu_parent_id";N;s:5:"label";s:13:"Communication";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"80";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:46:08";s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"65";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:12:"New Students";s:3:"url";s:29:"admin/enrollment/new-students";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 03:44:37";s:10:"updated_at";s:19:"2025-09-16 16:45:27";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"73";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:24:"Whatsapp Link Management";s:3:"url";s:9:"whatsapp/";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-11 22:58:29";s:10:"updated_at";s:19:"2025-10-11 22:58:29";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"35";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:22:"Parent Email Extractor";s:3:"url";s:29:"emails/parent_email_extractor";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:08:44";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"36";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:14:"Parent Profile";s:3:"url";s:29:"administrator/parent_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:44:58";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"37";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:15:"Student Profile";s:3:"url";s:30:"administrator/student_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:09:19";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"81";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:16:"Grading Tracking";s:3:"url";s:25:"grading/homework-tracking";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:43:11";s:10:"updated_at";s:19:"2025-10-26 14:35:52";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:16;a:12:{s:2:"id";s:1:"9";s:14:"menu_parent_id";N;s:5:"label";s:9:"Financial";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"90";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:56:16";s:10:"deleted_at";N;s:8:"children";a:11:{i:0;a:12:{s:2:"id";s:2:"68";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:17:"Add Extra Charges";s:3:"url";s:13:"admin/charges";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-21 05:05:12";s:10:"updated_at";s:19:"2025-09-21 05:05:12";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"69";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:14:"Manual Payment";s:3:"url";s:18:"payment/manual_pay";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-21 05:06:53";s:10:"updated_at";s:19:"2025-09-21 05:06:53";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"82";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:16:"Payment Tracking";s:3:"url";s:22:"payment/unpaid-parents";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-11-01 16:23:39";s:10:"updated_at";s:19:"2025-12-07 16:19:30";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"38";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Discount Management";s:3:"url";s:14:"discounts/list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:52:38";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"39";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Expenses Management";s:3:"url";s:14:"expenses/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:57:45";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"40";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:16:"Financial Report";s:3:"url";s:24:"payment/financial_report";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:58:15";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:6;a:12:{s:2:"id";s:2:"41";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Invoices Management";s:3:"url";s:34:"invoice_payment/invoice_management";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:57:07";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"42";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:14:"Manual Payment";s:3:"url";s:18:"payment/manual_pay";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:58:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:8;a:12:{s:2:"id";s:2:"43";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:18:"PaypalTransactions";s:3:"url";s:33:"administrator/paypal_transactions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"6";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:9;a:12:{s:2:"id";s:2:"44";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:17:"Refund Management";s:3:"url";s:12:"refunds/list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"7";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 17:02:17";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:10;a:12:{s:2:"id";s:2:"45";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:24:"Reimbursement Management";s:3:"url";s:20:"reimbursements/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 17:01:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:17;a:12:{s:2:"id";s:2:"10";s:14:"menu_parent_id";N;s:5:"label";s:10:"Printables";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:3:"100";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:5:{i:0;a:12:{s:2:"id";s:2:"85";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:17:"Print for teacher";s:3:"url";s:20:"admin/print-requests";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-07 04:29:16";s:10:"updated_at";s:19:"2026-01-07 04:29:16";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"46";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:6:"Badges";s:3:"url";s:29:"printables_reports/badge_form";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:18:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"47";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:10:"Class Prep";s:3:"url";s:10:"class-prep";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-27 04:31:03";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"48";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:12:"Report Cards";s:3:"url";s:30:"printables_reports/report_card";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"49";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:8:"Stickers";s:3:"url";s:27:"printables_reports/stickers";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:18;a:12:{s:2:"id";s:2:"11";s:14:"menu_parent_id";N;s:5:"label";s:16:"Event Management";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:3:"110";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"50";s:14:"menu_parent_id";s:2:"11";s:5:"label";s:8:"Calendar";s:3:"url";s:22:"administrator/calendar";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:20:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"51";s:14:"menu_parent_id";s:2:"11";s:5:"label";s:6:"Events";s:3:"url";s:20:"administrator/events";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}}}
\ No newline at end of file
+a:3:{s:4:"time";i:1772172244;s:3:"ttl";i:300;s:4:"data";a:19:{i:0;a:12:{s:2:"id";s:2:"63";s:14:"menu_parent_id";N;s:5:"label";s:6:"Family";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-09 15:22:56";s:10:"updated_at";s:19:"2025-10-26 06:33:11";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"64";s:14:"menu_parent_id";s:2:"63";s:5:"label";s:16:"Family Managment";s:3:"url";s:12:"family/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-09 15:23:49";s:10:"updated_at";s:19:"2025-10-26 06:28:34";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"74";s:14:"menu_parent_id";s:2:"63";s:5:"label";s:13:"Family Update";s:3:"url";s:22:"families/import-legacy";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:29:11";s:10:"updated_at";s:19:"2025-10-26 06:29:11";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:1;a:12:{s:2:"id";s:2:"67";s:14:"menu_parent_id";N;s:5:"label";s:9:"Inventory";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 06:24:37";s:10:"updated_at";s:19:"2025-09-16 16:48:58";s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"56";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:5:"Books";s:3:"url";s:14:"inventory/book";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:13:48";s:10:"updated_at";s:19:"2025-10-05 03:43:38";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"72";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:26:"Update Inventory Movements";s:3:"url";s:19:"inventory/movements";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-02 06:07:53";s:10:"updated_at";s:19:"2025-10-05 03:42:08";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"55";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:19:"Classroom Equipment";s:3:"url";s:9:"inventory";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 18:56:08";s:10:"updated_at";s:19:"2025-09-16 16:47:32";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"57";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:16:"Kitchen Supplies";s:3:"url";s:17:"inventory/kitchen";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:14:24";s:10:"updated_at";s:19:"2025-09-16 16:48:23";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"58";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:15:"Office Supplies";s:3:"url";s:16:"inventory/office";s:10:"icon_class";N;s:6:"target";s:6:"_blank";s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 19:14:53";s:10:"updated_at";s:19:"2025-09-10 22:17:05";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"66";s:14:"menu_parent_id";s:2:"67";s:5:"label";s:7:"Summary";s:3:"url";s:21:"inventory/summary-all";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 05:56:10";s:10:"updated_at";s:19:"2025-09-11 06:28:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:2;a:12:{s:2:"id";s:2:"83";s:14:"menu_parent_id";N;s:5:"label";s:15:"TimeOff Request";s:3:"url";s:22:"/administrator/absence";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-11-01 20:58:55";s:10:"updated_at";s:19:"2025-11-01 20:58:55";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"86";s:14:"menu_parent_id";N;s:5:"label";s:11:"Competition";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-11 07:40:32";s:10:"updated_at";s:19:"2026-01-11 07:40:32";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"87";s:14:"menu_parent_id";s:2:"86";s:5:"label";s:17:"Competition Setup";s:3:"url";s:19:"competition-winners";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-11 07:41:19";s:10:"updated_at";s:19:"2026-01-11 07:41:19";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:4;a:12:{s:2:"id";s:2:"88";s:14:"menu_parent_id";N;s:5:"label";s:23:"Notification Management";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-13 19:48:58";s:10:"updated_at";s:19:"2026-01-13 19:48:58";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"89";s:14:"menu_parent_id";s:2:"88";s:5:"label";s:18:"Notification Setup";s:3:"url";s:35:"/administrator/notifications_alerts";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-13 19:49:35";s:10:"updated_at";s:19:"2026-01-13 19:49:35";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:5;a:12:{s:2:"id";s:2:"92";s:14:"menu_parent_id";N;s:5:"label";s:10:"Curriculum";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-18 07:23:26";s:10:"updated_at";s:19:"2026-01-18 07:23:26";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"91";s:14:"menu_parent_id";s:2:"92";s:5:"label";s:14:"Class Progress";s:3:"url";s:14:"admin/progress";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-15 04:38:48";s:10:"updated_at";s:19:"2026-01-18 07:24:37";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"93";s:14:"menu_parent_id";s:2:"92";s:5:"label";s:18:"Curriculum Subject";s:3:"url";s:32:"administrator/subject-curriculum";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-18 07:25:26";s:10:"updated_at";s:19:"2026-01-18 07:25:26";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:6;a:12:{s:2:"id";s:2:"94";s:14:"menu_parent_id";N;s:5:"label";s:19:"Teacher Submissions";s:3:"url";s:33:"administrator/teacher-submissions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-25 22:20:24";s:10:"updated_at";s:19:"2026-01-25 22:20:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"95";s:14:"menu_parent_id";N;s:5:"label";s:5:"Exams";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-29 01:51:29";s:10:"updated_at";s:19:"2026-01-29 01:51:29";s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"96";s:14:"menu_parent_id";s:2:"95";s:5:"label";s:12:"Exams Drafts";s:3:"url";s:26:"/administrator/exam-drafts";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-29 01:52:20";s:10:"updated_at";s:19:"2026-01-29 01:52:20";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:8;a:12:{s:2:"id";s:1:"1";s:14:"menu_parent_id";N;s:5:"label";s:5:"Users";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"10";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"12";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:20:"Active Notifications";s:3:"url";s:20:"notifications/active";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"13";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:21:"Deleted Notifications";s:3:"url";s:21:"notifications/deleted";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"14";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:14:"Login Activity";s:3:"url";s:19:"user/login_activity";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:55:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"15";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:9:"User List";s:3:"url";s:14:"user/user_list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"52";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:14:"Navbar Builder";s:3:"url";s:11:"nav-builder";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:34:01";s:10:"updated_at";s:19:"2025-09-05 21:57:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"76";s:14:"menu_parent_id";s:1:"1";s:5:"label";s:13:"IP Management";s:3:"url";s:21:"administrator/ip_bans";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:34:35";s:10:"updated_at";s:19:"2025-10-26 06:34:35";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:9;a:12:{s:2:"id";s:1:"2";s:14:"menu_parent_id";N;s:5:"label";s:5:"Roles";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"20";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:56:34";s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"16";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:16:"Assign User Role";s:3:"url";s:26:"rolepermission/assign_role";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:11:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"17";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:15:"Role Management";s:3:"url";s:20:"rolepermission/roles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:55:43";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"53";s:14:"menu_parent_id";s:1:"2";s:5:"label";s:21:"Permission Management";s:3:"url";s:31:"rolepermission/list_permissions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-08 05:25:02";s:10:"updated_at";s:19:"2025-09-12 07:24:13";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:10;a:12:{s:2:"id";s:1:"3";s:14:"menu_parent_id";N;s:5:"label";s:13:"Configuration";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"30";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:54:57";s:10:"deleted_at";N;s:8:"children";a:2:{i:0;a:12:{s:2:"id";s:2:"84";s:14:"menu_parent_id";s:1:"3";s:5:"label";s:24:"Edit attendance Comments";s:3:"url";s:34:"administrator/attendance-templates";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-04 04:17:02";s:10:"updated_at";s:19:"2026-01-04 04:17:02";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"18";s:14:"menu_parent_id";s:1:"3";s:5:"label";s:22:"Add/Edit Configuration";s:3:"url";s:32:"configuration/configuration_view";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:52:20";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:11;a:12:{s:2:"id";s:1:"4";s:14:"menu_parent_id";N;s:5:"label";s:8:"Staffing";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"40";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"71";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:16:"Staff Attendance";s:3:"url";s:30:"admin/teacher-attendance/month";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-27 04:29:24";s:10:"updated_at";s:19:"2025-09-28 05:39:08";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"19";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:13:"Staff Profile";s:3:"url";s:11:"staff/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"20";s:14:"menu_parent_id";s:1:"4";s:5:"label";s:24:"Teacher Class Assignment";s:3:"url";s:38:"administrator/teacher_class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:12;a:12:{s:2:"id";s:1:"5";s:14:"menu_parent_id";N;s:5:"label";s:7:"Parents";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"50";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:1:{i:0;a:12:{s:2:"id";s:2:"21";s:14:"menu_parent_id";s:1:"5";s:5:"label";s:14:"Parent Profile";s:3:"url";s:29:"administrator/parent_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:13;a:12:{s:2:"id";s:1:"6";s:14:"menu_parent_id";N;s:5:"label";s:15:"Student-Affairs";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"60";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:16:{i:0;a:12:{s:2:"id";s:2:"90";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Remove Student";s:3:"url";s:31:"/administrator/removed_students";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-14 03:53:43";s:10:"updated_at";s:19:"2026-01-14 03:53:43";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"97";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Placement Test";s:3:"url";s:17:"grading/placement";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-02-06 03:08:29";s:10:"updated_at";s:19:"2026-02-06 03:08:29";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"22";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:21:"Attendance Management";s:3:"url";s:30:"administrator/daily_attendance";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-27 05:10:47";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"23";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:26:"Attendance Tracking System";s:3:"url";s:21:"attendance/violations";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-10-12 15:13:51";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"24";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Attendance Scans";s:3:"url";s:16:"rfid_coming_soon";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"25";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:12:"Classes List";s:3:"url";s:30:"administrator/class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:6;a:12:{s:2:"id";s:2:"78";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Early Dismissals";s:3:"url";s:27:"attendance/early-dismissals";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:40:01";s:10:"updated_at";s:19:"2025-10-26 14:57:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"26";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:17:"Emergency Contact";s:3:"url";s:31:"administrator/emergency_contact";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:56:05";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:8;a:12:{s:2:"id";s:2:"27";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:21:"Enrollment-Withdrawal";s:3:"url";s:37:"enroll_withdraw/enrollment_withdrawal";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"6";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-19 06:23:25";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:9;a:12:{s:2:"id";s:2:"28";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:20:"Incidents Management";s:3:"url";s:22:"flags/flags_management";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"7";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-29 04:26:10";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:10;a:12:{s:2:"id";s:2:"29";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:15:"School Calendar";s:3:"url";s:27:"administrator/calendar_view";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:11;a:12:{s:2:"id";s:2:"77";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:18:"Late Slips History";s:3:"url";s:13:"slips/preview";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:38:42";s:10:"updated_at";s:19:"2025-10-26 06:38:42";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:12;a:12:{s:2:"id";s:2:"30";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:14:"Score Analysis";s:3:"url";s:15:"report/combined";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"9";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-26 05:12:17";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:13;a:12:{s:2:"id";s:2:"31";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:16:"Score Management";s:3:"url";s:7:"grading";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"10";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2026-01-26 05:11:48";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:14;a:12:{s:2:"id";s:2:"32";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:24:"Student Class Assignment";s:3:"url";s:38:"administrator/student_class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"11";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:15;a:12:{s:2:"id";s:2:"33";s:14:"menu_parent_id";s:1:"6";s:5:"label";s:15:"Student Profile";s:3:"url";s:30:"administrator/student_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"12";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:14;a:12:{s:2:"id";s:1:"7";s:14:"menu_parent_id";N;s:5:"label";s:7:"Classes";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"70";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"79";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:16:"Class Distribute";s:3:"url";s:38:"administrator/sections/auto-distribute";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:41:13";s:10:"updated_at";s:19:"2025-10-26 06:41:13";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"34";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:12:"Classes List";s:3:"url";s:30:"administrator/class_assignment";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:08:21";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"80";s:14:"menu_parent_id";s:1:"7";s:5:"label";s:22:"Section Auto Generator";s:3:"url";s:39:"administrator/sections/promotion-totals";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:42:02";s:10:"updated_at";s:19:"2025-10-26 06:42:02";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:15;a:12:{s:2:"id";s:1:"8";s:14:"menu_parent_id";N;s:5:"label";s:13:"Communication";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"80";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:46:08";s:10:"deleted_at";N;s:8:"children";a:6:{i:0;a:12:{s:2:"id";s:2:"65";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:12:"New Students";s:3:"url";s:29:"admin/enrollment/new-students";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-11 03:44:37";s:10:"updated_at";s:19:"2025-09-16 16:45:27";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"73";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:24:"Whatsapp Link Management";s:3:"url";s:9:"whatsapp/";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-11 22:58:29";s:10:"updated_at";s:19:"2025-10-11 22:58:29";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"35";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:22:"Parent Email Extractor";s:3:"url";s:29:"emails/parent_email_extractor";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:08:44";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"36";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:14:"Parent Profile";s:3:"url";s:29:"administrator/parent_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:44:58";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"37";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:15:"Student Profile";s:3:"url";s:30:"administrator/student_profiles";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:09:19";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"81";s:14:"menu_parent_id";s:1:"8";s:5:"label";s:16:"Grading Tracking";s:3:"url";s:25:"grading/homework-tracking";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-10-26 06:43:11";s:10:"updated_at";s:19:"2025-10-26 14:35:52";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:16;a:12:{s:2:"id";s:1:"9";s:14:"menu_parent_id";N;s:5:"label";s:9:"Financial";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:2:"90";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:56:16";s:10:"deleted_at";N;s:8:"children";a:11:{i:0;a:12:{s:2:"id";s:2:"68";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:17:"Add Extra Charges";s:3:"url";s:13:"admin/charges";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-21 05:05:12";s:10:"updated_at";s:19:"2025-09-21 05:05:12";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"69";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:14:"Manual Payment";s:3:"url";s:18:"payment/manual_pay";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-21 05:06:53";s:10:"updated_at";s:19:"2025-09-21 05:06:53";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"82";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:16:"Payment Tracking";s:3:"url";s:22:"payment/unpaid-parents";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-11-01 16:23:39";s:10:"updated_at";s:19:"2025-12-07 16:19:30";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"38";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Discount Management";s:3:"url";s:14:"discounts/list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 02:52:38";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"39";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Expenses Management";s:3:"url";s:14:"expenses/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:57:45";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:5;a:12:{s:2:"id";s:2:"40";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:16:"Financial Report";s:3:"url";s:24:"payment/financial_report";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:58:15";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:6;a:12:{s:2:"id";s:2:"41";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:19:"Invoices Management";s:3:"url";s:34:"invoice_payment/invoice_management";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:57:07";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:7;a:12:{s:2:"id";s:2:"42";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:14:"Manual Payment";s:3:"url";s:18:"payment/manual_pay";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"5";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 16:58:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:8;a:12:{s:2:"id";s:2:"43";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:18:"PaypalTransactions";s:3:"url";s:33:"administrator/paypal_transactions";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"6";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:9;a:12:{s:2:"id";s:2:"44";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:17:"Refund Management";s:3:"url";s:12:"refunds/list";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"7";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 17:02:17";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:10;a:12:{s:2:"id";s:2:"45";s:14:"menu_parent_id";s:1:"9";s:5:"label";s:24:"Reimbursement Management";s:3:"url";s:20:"reimbursements/index";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"8";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-16 17:01:41";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:17;a:12:{s:2:"id";s:2:"10";s:14:"menu_parent_id";N;s:5:"label";s:10:"Printables";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:3:"100";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:5:{i:0;a:12:{s:2:"id";s:2:"85";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:17:"Print for teacher";s:3:"url";s:20:"admin/print-requests";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"0";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-01-07 04:29:16";s:10:"updated_at";s:19:"2026-01-07 04:29:16";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"46";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:6:"Badges";s:3:"url";s:29:"printables_reports/badge_form";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:18:24";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"47";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:10:"Class Prep";s:3:"url";s:10:"class-prep";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-27 04:31:03";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:3;a:12:{s:2:"id";s:2:"48";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:12:"Report Cards";s:3:"url";s:30:"printables_reports/report_card";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:4;a:12:{s:2:"id";s:2:"49";s:14:"menu_parent_id";s:2:"10";s:5:"label";s:8:"Stickers";s:3:"url";s:27:"printables_reports/stickers";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"4";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}}}i:18;a:12:{s:2:"id";s:2:"11";s:14:"menu_parent_id";N;s:5:"label";s:16:"Event Management";s:3:"url";N;s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:3:"110";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:3:{i:0;a:12:{s:2:"id";s:2:"50";s:14:"menu_parent_id";s:2:"11";s:5:"label";s:8:"Calendar";s:3:"url";s:22:"administrator/calendar";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"1";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";s:19:"2025-09-09 03:20:09";s:10:"deleted_at";N;s:8:"children";a:0:{}}i:1;a:12:{s:2:"id";s:2:"51";s:14:"menu_parent_id";s:2:"11";s:5:"label";s:6:"Events";s:3:"url";s:20:"administrator/events";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"2";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2025-09-05 17:23:56";s:10:"updated_at";N;s:10:"deleted_at";N;s:8:"children";a:0:{}}i:2;a:12:{s:2:"id";s:2:"98";s:14:"menu_parent_id";s:2:"11";s:5:"label";s:19:"Competition Winners";s:3:"url";s:25:"admin/competition-winners";s:10:"icon_class";N;s:6:"target";N;s:10:"sort_order";s:1:"3";s:10:"is_enabled";s:1:"1";s:10:"created_at";s:19:"2026-02-27 05:50:42";s:10:"updated_at";s:19:"2026-02-27 05:50:42";s:10:"deleted_at";N;s:8:"children";a:0:{}}}}}}
\ No newline at end of file
diff --git a/writable/logs/log-2026-02-10.log b/writable/logs/log-2026-02-10.log
deleted file mode 100644
index 6832ebe..0000000
--- a/writable/logs/log-2026-02-10.log
+++ /dev/null
@@ -1,66 +0,0 @@
-ERROR - 2026-02-10 07:23:30 --> mysqli_sql_exception: Column 'school_year' in where clause is ambiguous in /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php:327
-Stack trace:
-#0 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php(327): mysqli->query()
-#1 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Database/BaseConnection.php(729): CodeIgniter\Database\MySQLi\Connection->execute()
-#2 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Database/BaseConnection.php(646): CodeIgniter\Database\BaseConnection->simpleQuery()
-#3 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Database/BaseBuilder.php(1649): CodeIgniter\Database\BaseConnection->query()
-#4 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Model.php(286): CodeIgniter\Database\BaseBuilder->get()
-#5 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/BaseModel.php(677): CodeIgniter\Model->doFindAll()
-#6 /opt/lampp/htdocs/alrahma_school_sunday/app/Models/StudentClassModel.php(55): CodeIgniter\BaseModel->findAll()
-#7 /opt/lampp/htdocs/alrahma_school_sunday/app/Controllers/View/AttendanceTrackingController.php(70): App\Models\StudentClassModel->findAll()
-#8 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/CodeIgniter.php(933): App\Controllers\View\AttendanceTrackingController->pendingViolationsView()
-#9 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/CodeIgniter.php(507): CodeIgniter\CodeIgniter->runController()
-#10 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/CodeIgniter.php(354): CodeIgniter\CodeIgniter->handleRequest()
-#11 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Boot.php(363): CodeIgniter\CodeIgniter->run()
-#12 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/Boot.php(68): CodeIgniter\Boot::runCodeIgniter()
-#13 /opt/lampp/htdocs/alrahma_school_sunday/public/index.php(60): CodeIgniter\Boot::bootWeb()
-#14 /opt/lampp/htdocs/alrahma_school_sunday/vendor/codeigniter4/framework/system/rewrite.php(44): require_once('...')
-#15 {main}
-CRITICAL - 2026-02-10 07:23:30 --> CodeIgniter\Database\Exceptions\DatabaseException: Column 'school_year' in where clause is ambiguous
-[Method: GET, Route: attendance/violations]
-in SYSTEMPATH/Database/BaseConnection.php on line 684.
- 1 SYSTEMPATH/Database/BaseBuilder.php(1649): CodeIgniter\Database\BaseConnection->query()
- 2 SYSTEMPATH/Model.php(286): CodeIgniter\Database\BaseBuilder->get()
- 3 SYSTEMPATH/BaseModel.php(677): CodeIgniter\Model->doFindAll()
- 4 APPPATH/Models/StudentClassModel.php(55): CodeIgniter\BaseModel->findAll()
- 5 APPPATH/Controllers/View/AttendanceTrackingController.php(70): App\Models\StudentClassModel->findAll()
- 6 SYSTEMPATH/CodeIgniter.php(933): App\Controllers\View\AttendanceTrackingController->pendingViolationsView()
- 7 SYSTEMPATH/CodeIgniter.php(507): CodeIgniter\CodeIgniter->runController()
- 8 SYSTEMPATH/CodeIgniter.php(354): CodeIgniter\CodeIgniter->handleRequest()
- 9 SYSTEMPATH/Boot.php(363): CodeIgniter\CodeIgniter->run()
-10 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter()
-11 FCPATH/index.php(60): CodeIgniter\Boot::bootWeb()
-12 SYSTEMPATH/rewrite.php(44): require_once('/opt/lampp/htdocs/alrahma_school_sunday/public/index.php')
-CRITICAL - 2026-02-10 07:23:30 --> [Caused by] CodeIgniter\Database\Exceptions\DatabaseException: Column 'school_year' in where clause is ambiguous
-in SYSTEMPATH/Database/MySQLi/Connection.php on line 332.
- 1 SYSTEMPATH/Database/BaseConnection.php(729): CodeIgniter\Database\MySQLi\Connection->execute()
- 2 SYSTEMPATH/Database/BaseConnection.php(646): CodeIgniter\Database\BaseConnection->simpleQuery()
- 3 SYSTEMPATH/Database/BaseBuilder.php(1649): CodeIgniter\Database\BaseConnection->query()
- 4 SYSTEMPATH/Model.php(286): CodeIgniter\Database\BaseBuilder->get()
- 5 SYSTEMPATH/BaseModel.php(677): CodeIgniter\Model->doFindAll()
- 6 APPPATH/Models/StudentClassModel.php(55): CodeIgniter\BaseModel->findAll()
- 7 APPPATH/Controllers/View/AttendanceTrackingController.php(70): App\Models\StudentClassModel->findAll()
- 8 SYSTEMPATH/CodeIgniter.php(933): App\Controllers\View\AttendanceTrackingController->pendingViolationsView()
- 9 SYSTEMPATH/CodeIgniter.php(507): CodeIgniter\CodeIgniter->runController()
-10 SYSTEMPATH/CodeIgniter.php(354): CodeIgniter\CodeIgniter->handleRequest()
-11 SYSTEMPATH/Boot.php(363): CodeIgniter\CodeIgniter->run()
-12 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter()
-13 FCPATH/index.php(60): CodeIgniter\Boot::bootWeb()
-14 SYSTEMPATH/rewrite.php(44): require_once('/opt/lampp/htdocs/alrahma_school_sunday/public/index.php')
-CRITICAL - 2026-02-10 07:23:30 --> [Caused by] mysqli_sql_exception: Column 'school_year' in where clause is ambiguous
-in SYSTEMPATH/Database/MySQLi/Connection.php on line 327.
- 1 SYSTEMPATH/Database/MySQLi/Connection.php(327): mysqli->query()
- 2 SYSTEMPATH/Database/BaseConnection.php(729): CodeIgniter\Database\MySQLi\Connection->execute()
- 3 SYSTEMPATH/Database/BaseConnection.php(646): CodeIgniter\Database\BaseConnection->simpleQuery()
- 4 SYSTEMPATH/Database/BaseBuilder.php(1649): CodeIgniter\Database\BaseConnection->query()
- 5 SYSTEMPATH/Model.php(286): CodeIgniter\Database\BaseBuilder->get()
- 6 SYSTEMPATH/BaseModel.php(677): CodeIgniter\Model->doFindAll()
- 7 APPPATH/Models/StudentClassModel.php(55): CodeIgniter\BaseModel->findAll()
- 8 APPPATH/Controllers/View/AttendanceTrackingController.php(70): App\Models\StudentClassModel->findAll()
- 9 SYSTEMPATH/CodeIgniter.php(933): App\Controllers\View\AttendanceTrackingController->pendingViolationsView()
-10 SYSTEMPATH/CodeIgniter.php(507): CodeIgniter\CodeIgniter->runController()
-11 SYSTEMPATH/CodeIgniter.php(354): CodeIgniter\CodeIgniter->handleRequest()
-12 SYSTEMPATH/Boot.php(363): CodeIgniter\CodeIgniter->run()
-13 SYSTEMPATH/Boot.php(68): CodeIgniter\Boot::runCodeIgniter()
-14 FCPATH/index.php(60): CodeIgniter\Boot::bootWeb()
-15 SYSTEMPATH/rewrite.php(44): require_once('/opt/lampp/htdocs/alrahma_school_sunday/public/index.php')
diff --git a/writable/logs/log-2026-02-25.log b/writable/logs/log-2026-02-25.log
deleted file mode 100644
index 39e8720..0000000
--- a/writable/logs/log-2026-02-25.log
+++ /dev/null
@@ -1,3 +0,0 @@
-ERROR - 2026-02-25 21:13:03 --> No class section found for user ID: 2
-ERROR - 2026-02-25 21:13:45 --> No class section found for user ID: 1
-ERROR - 2026-02-25 21:24:56 --> No class section found for user ID: 2
diff --git a/writable/logs/log-2026-02-26.log b/writable/logs/log-2026-02-26.log
deleted file mode 100644
index a3b8da3..0000000
--- a/writable/logs/log-2026-02-26.log
+++ /dev/null
@@ -1 +0,0 @@
-ERROR - 2026-02-26 19:10:40 --> No class section found for user ID: 1
diff --git a/writable/session/ci_session01fd4625b0c67ac15b18834dca2b16cb b/writable/session/ci_session01fd4625b0c67ac15b18834dca2b16cb
index b5ec2df..210938a 100644
--- a/writable/session/ci_session01fd4625b0c67ac15b18834dca2b16cb
+++ b/writable/session/ci_session01fd4625b0c67ac15b18834dca2b16cb
@@ -1 +1 @@
-__ci_last_regenerate|i:1772167652;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772167655;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
+__ci_last_regenerate|i:1772168049;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772167655;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_session13e20cdfdb6621c5b09f29a82f029e57 b/writable/session/ci_session13e20cdfdb6621c5b09f29a82f029e57
new file mode 100644
index 0000000..8aae405
--- /dev/null
+++ b/writable/session/ci_session13e20cdfdb6621c5b09f29a82f029e57
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772171635;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_session15accf59fe089c23e568cb193e604b1a b/writable/session/ci_session15accf59fe089c23e568cb193e604b1a
new file mode 100644
index 0000000..1b0e022
--- /dev/null
+++ b/writable/session/ci_session15accf59fe089c23e568cb193e604b1a
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772173263;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"2";user_email|s:24:"moulay.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772172575;roles|a:1:{i:0;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|N;
\ No newline at end of file
diff --git a/writable/session/ci_session28db9d4191c8557373ac41e16ea594a7 b/writable/session/ci_session28db9d4191c8557373ac41e16ea594a7
new file mode 100644
index 0000000..3f158b4
--- /dev/null
+++ b/writable/session/ci_session28db9d4191c8557373ac41e16ea594a7
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772168666;_ci_previous_url|s:42:"http://localhost:8080/admin/print-requests";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772167655;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";class_section_id|i:21;class_section_ids|a:1:{i:0;i:21;}
\ No newline at end of file
diff --git a/writable/session/ci_session28fb8fb63570017f69429eedebb942ef b/writable/session/ci_session28fb8fb63570017f69429eedebb942ef
new file mode 100644
index 0000000..accde71
--- /dev/null
+++ b/writable/session/ci_session28fb8fb63570017f69429eedebb942ef
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772171325;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_session60e8aa014efc1e020759de78e578be33 b/writable/session/ci_session60e8aa014efc1e020759de78e578be33
new file mode 100644
index 0000000..d5005f2
--- /dev/null
+++ b/writable/session/ci_session60e8aa014efc1e020759de78e578be33
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772169271;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772168936;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_session655568293d5858415e3f5a32174490d7 b/writable/session/ci_session655568293d5858415e3f5a32174490d7
new file mode 100644
index 0000000..1b0e022
--- /dev/null
+++ b/writable/session/ci_session655568293d5858415e3f5a32174490d7
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772173263;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"2";user_email|s:24:"moulay.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772172575;roles|a:1:{i:0;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|N;
\ No newline at end of file
diff --git a/writable/session/ci_session97bdada8c5a5254ff8e979f95353c509 b/writable/session/ci_session97bdada8c5a5254ff8e979f95353c509
new file mode 100644
index 0000000..c608de8
--- /dev/null
+++ b/writable/session/ci_session97bdada8c5a5254ff8e979f95353c509
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772172343;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_sessiona4a444a82ad686d0dc5a091c81d94170 b/writable/session/ci_sessiona4a444a82ad686d0dc5a091c81d94170
new file mode 100644
index 0000000..6331333
--- /dev/null
+++ b/writable/session/ci_sessiona4a444a82ad686d0dc5a091c81d94170
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772169728;_ci_previous_url|s:43:"http://localhost:8080/admin/progress/view/1";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772168936;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_sessiona996af0961b7f64bfba73ae4960a7965 b/writable/session/ci_sessiona996af0961b7f64bfba73ae4960a7965
new file mode 100644
index 0000000..e6ac068
--- /dev/null
+++ b/writable/session/ci_sessiona996af0961b7f64bfba73ae4960a7965
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772170251;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772151602;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_sessionb439b9809878d7711491d477aa83ca5d b/writable/session/ci_sessionb439b9809878d7711491d477aa83ca5d
new file mode 100644
index 0000000..2f5ea18
--- /dev/null
+++ b/writable/session/ci_sessionb439b9809878d7711491d477aa83ca5d
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772172244;_ci_previous_url|s:52:"http://localhost:8080/printables_reports/report_card";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772168936;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_sessionb5f9db7b39dedb66cb2dd08bcc069309 b/writable/session/ci_sessionb5f9db7b39dedb66cb2dd08bcc069309
index 800692c..13a2eb3 100644
--- a/writable/session/ci_sessionb5f9db7b39dedb66cb2dd08bcc069309
+++ b/writable/session/ci_sessionb5f9db7b39dedb66cb2dd08bcc069309
@@ -1 +1 @@
-__ci_last_regenerate|i:1772151598;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772151602;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
+__ci_last_regenerate|i:1772168444;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772151602;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_sessionbbe3696172b144f313d2ec3f954d10f3 b/writable/session/ci_sessionbbe3696172b144f313d2ec3f954d10f3
new file mode 100644
index 0000000..2f5ea18
--- /dev/null
+++ b/writable/session/ci_sessionbbe3696172b144f313d2ec3f954d10f3
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772172244;_ci_previous_url|s:52:"http://localhost:8080/printables_reports/report_card";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772168936;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file
diff --git a/writable/session/ci_sessionc94c11e1d9da69e0cdb692421e7b1672 b/writable/session/ci_sessionc94c11e1d9da69e0cdb692421e7b1672
new file mode 100644
index 0000000..2f0b94b
--- /dev/null
+++ b/writable/session/ci_sessionc94c11e1d9da69e0cdb692421e7b1672
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772170606;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_sessioneb31c51a5591f18c9eebf66fb00ec27a b/writable/session/ci_sessioneb31c51a5591f18c9eebf66fb00ec27a
new file mode 100644
index 0000000..0440987
--- /dev/null
+++ b/writable/session/ci_sessioneb31c51a5591f18c9eebf66fb00ec27a
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772170913;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_sessionf79d092c32d1b7de11f536773504068d b/writable/session/ci_sessionf79d092c32d1b7de11f536773504068d
new file mode 100644
index 0000000..35d3399
--- /dev/null
+++ b/writable/session/ci_sessionf79d092c32d1b7de11f536773504068d
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772172006;_ci_previous_url|s:35:"http://localhost:8080/parent/scores";user_id|s:1:"3";user_email|s:19:"kelabidi0@gmail.com";user_name|s:15:"Khadija Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772170259;roles|a:2:{i:0;s:7:"teacher";i:1;s:6:"parent";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:6:"parent";class_section_id|i:10;class_section_ids|a:1:{i:0;i:10;}
\ No newline at end of file
diff --git a/writable/session/ci_sessionfdfc6c7d215d20cc59b91faab68fe350 b/writable/session/ci_sessionfdfc6c7d215d20cc59b91faab68fe350
new file mode 100644
index 0000000..e8879c1
--- /dev/null
+++ b/writable/session/ci_sessionfdfc6c7d215d20cc59b91faab68fe350
@@ -0,0 +1 @@
+__ci_last_regenerate|i:1772171020;_ci_previous_url|s:36:"http://localhost:8080/admin/progress";user_id|s:1:"1";user_email|s:23:"larbi.elabidi@gmail.com";user_name|s:20:"Moulay Larbi Elabidi";user_type|s:7:"primary";is_logged_in|b:1;login_time|i:1772168936;roles|a:20:{i:0;s:5:"admin";i:1;s:13:"administrator";i:2;s:15:"csm_contributor";i:3;s:15:"fes_contributor";i:4;s:21:"financial_contributor";i:5;s:14:"fs_contributor";i:6;s:11:"head of csm";i:7;s:28:"head of department education";i:8;s:10:"head of fa";i:9;s:11:"head of fes";i:10;s:10:"head of fs";i:11;s:12:"head of itpd";i:12;s:16:"itpd contributor";i:13;s:6:"parent";i:14;s:9:"principal";i:15;s:15:"saf_contributor";i:16;s:10:"substitute";i:17;s:7:"teacher";i:18;s:17:"teacher_assistant";i:19;s:14:"vice principal";}semester|s:6:"Spring";school_year|s:9:"2025-2026";role|s:13:"administrator";
\ No newline at end of file