float,'h_mm'=>float]) $e = $entry ?? []; function esc_html($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } $schoolYearRaw = (string)($e['school_year'] ?? ''); // Reduce school year to "xx-xx" if possible (e.g., 2025-2026 -> 25-26) $schoolYearFmt = $schoolYearRaw; if (preg_match('/(\d{2,4})\D+(\d{2,4})/', $schoolYearRaw, $m)) { $a = substr($m[1], -2); $b = substr($m[2], -2); $schoolYearFmt = $a . '-' . $b; } elseif (preg_match('/^\d{4}$/', $schoolYearRaw)) { $y = (int)$schoolYearRaw; if ($y > 0) { $schoolYearFmt = substr($schoolYearRaw, -2) . '-' . substr((string)($y + 1), -2); } } $schoolYear = esc_html($schoolYearFmt); $studentName = esc_html($e['student_name'] ?? ''); $dateRaw = $e['date'] ?? ''; // Normalize slip date without flipping month/day. if (!function_exists('format_slip_date')) { function format_slip_date($raw): string { $raw = trim((string)$raw); if ($raw === '') return ''; if (preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $raw)) { $dt = DateTime::createFromFormat('!Y-m-d', $raw); return $dt ? $dt->format('m-d-Y') : $raw; } if (preg_match('/^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/', $raw)) { $dt = DateTime::createFromFormat('!m/d/Y', $raw); return $dt ? $dt->format('m-d-Y') : $raw; } if (preg_match('/^\\d{1,2}-\\d{1,2}-\\d{4}$/', $raw)) { $dt = DateTime::createFromFormat('!m-d-Y', $raw); return $dt ? $dt->format('m-d-Y') : $raw; } try { return local_date($raw, 'm-d-Y'); } catch (Throwable $e) { return $raw; } } } $date = $dateRaw !== '' ? esc_html(format_slip_date($dateRaw)) : ''; $timeIn = esc_html($e['time_in'] ?? ''); $grade = esc_html($e['grade'] ?? ''); $reason = esc_html($e['reason'] ?? ''); $adminName = esc_html($e['admin_name'] ?? ''); $page = isset($page) && is_array($page) ? $page : ['w_mm' => 85.60, 'h_mm' => 53.98]; ?>