diff --git a/modules/candidate_parameters/ajax/getData.php b/modules/candidate_parameters/ajax/getData.php index 65dead0bc0..0269d6e4bc 100644 --- a/modules/candidate_parameters/ajax/getData.php +++ b/modules/candidate_parameters/ajax/getData.php @@ -563,8 +563,7 @@ function getDOBFields(): array $dobFormat = $config->getSetting('dobFormat'); $dobProcessedFormat = implode("-", str_split($dobFormat, 1)); - $dobDate = DateTime::createFromFormat('Y-m-d', $dob); - $formattedDate = $dobDate ? $dobDate->format($dobProcessedFormat) : null; + $formattedDate = formatCandidateDate($dob, $dobProcessedFormat); $result = [ 'pscid' => $pscid, @@ -610,9 +609,10 @@ function getDODFields(): array $dobFormat = $config->getSetting('dobFormat'); $dobProcessedFormat = implode("-", str_split($dobFormat, 1)); - $dobDate = DateTime::createFromFormat('Y-m-d', $candidateData['DoB']); - $dob = $dobDate ? $dobDate->format($dobProcessedFormat) : null; - + $dob = formatCandidateDate( + $candidateData['DoB'] ?? null, + $dobProcessedFormat + ); $result = [ 'pscid' => $candidateData['PSCID'], 'candID' => $candID->__toString(), @@ -704,3 +704,28 @@ function getDiagnosisEvolutionFields(): array return $result; } +/** + * Format a candidate date for display. + * + * Returns null when the date is null or invalid. + * + * @param string|null $date Database date in Y-m-d format + * @param string $format Display format + * + * @return string|null + */ +function formatCandidateDate(?string $date, string $format): ?string +{ + if (empty($date)) { + return null; + } + + $dateTime = DateTime::createFromFormat('Y-m-d', $date); + + if ($dateTime === false) { + return null; + } + + return $dateTime->format($format); +} +