From 197796713284cceed74c29a5245d23e975337f83 Mon Sep 17 00:00:00 2001 From: anonymoususer72041 <247563575+anonymoususer72041@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:55:58 +0100 Subject: [PATCH 1/5] fix: use user date format when editing activities --- ajax/editActivity.php | 8 ++++++-- js/activity.js | 3 ++- modules/candidates/Show.tpl | 4 ++++ modules/contacts/Show.tpl | 3 +++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ajax/editActivity.php b/ajax/editActivity.php index 91e7a5835..93f828f67 100755 --- a/ajax/editActivity.php +++ b/ajax/editActivity.php @@ -72,7 +72,11 @@ $activityMinute = trim(urldecode($_REQUEST['minute'])); $activityAMPM = trim(urldecode($_REQUEST['ampm'])); -if (!DateUtility::validate('-', $activityDate, DATE_FORMAT_MMDDYY)) +$dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; + +if (!DateUtility::validate('-', $activityDate, $dateFormatFlag)) { die('Invalid availability date.'); return; @@ -87,7 +91,7 @@ $date = sprintf( '%s %s', DateUtility::convert( - '-', $activityDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $activityDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ), date('H:i:00', $time) ); diff --git a/js/activity.js b/js/activity.js index 3824c8e23..3bdb3b0d2 100755 --- a/js/activity.js +++ b/js/activity.js @@ -274,7 +274,8 @@ function Activity_editEntry(activityID, dataItemID, dataItemType, sessionCookie) /* Date editor. */ var dateSpan = document.createElement('span'); var dateAndTime = unEscapeHTML(dateTD.innerHTML.replace(/(<([^>]+)>)/ig,"")); - dateSpan.innerHTML = DateInputForDOM('dateEditActivity' + activityID, true, 'MM-DD-YY', dateAndTime.substr(0,dateAndTime.indexOf(' ')), -1); + var userDateFormat = (typeof window.CATSUserDateFormat !== 'undefined' ? window.CATSUserDateFormat : 'MM-DD-YY'); + dateSpan.innerHTML = DateInputForDOM('dateEditActivity' + activityID, true, userDateFormat, dateAndTime.substr(0,dateAndTime.indexOf(' ')), -1); var timeString = dateAndTime.substr(dateAndTime.indexOf(' ')+2); var hourString = timeString.substr(0,timeString.indexOf(':')); diff --git a/modules/candidates/Show.tpl b/modules/candidates/Show.tpl index 92ca84f4e..1ecebd25c 100755 --- a/modules/candidates/Show.tpl +++ b/modules/candidates/Show.tpl @@ -14,6 +14,10 @@ use OpenCATS\UI\CandidateDuplicateQuickActionMenu; + +
diff --git a/modules/contacts/Show.tpl b/modules/contacts/Show.tpl index 603b3c354..cf6955250 100755 --- a/modules/contacts/Show.tpl +++ b/modules/contacts/Show.tpl @@ -6,6 +6,9 @@ use OpenCATS\UI\QuickActionMenu; data['firstName'].' '.$this->data['lastName'], array( 'js/activity.js', 'js/attachment.js')); ?> active); ?> +
From 633ca434a31f998a0528d22b93deecab5f5c6d77 Mon Sep 17 00:00:00 2001 From: anonymoususer72041 <247563575+anonymoususer72041@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:29:37 +0100 Subject: [PATCH 2/5] fix: use user date format when adding activities --- .../AddActivityChangeStatusModal.tpl | 3 +- modules/candidates/CandidatesUI.php | 55 ++++++++++--------- .../AddActivityScheduleEventModal.tpl | 21 +++---- modules/contacts/ContactsUI.php | 9 ++- 4 files changed, 48 insertions(+), 40 deletions(-) diff --git a/modules/candidates/AddActivityChangeStatusModal.tpl b/modules/candidates/AddActivityChangeStatusModal.tpl index 804d55d20..7472e9ebe 100755 --- a/modules/candidates/AddActivityChangeStatusModal.tpl +++ b/modules/candidates/AddActivityChangeStatusModal.tpl @@ -10,6 +10,7 @@ isFinishedMode): ?> +
diff --git a/modules/candidates/CandidatesUI.php b/modules/candidates/CandidatesUI.php index 7b7d13aef..8767a9095 100755 --- a/modules/candidates/CandidatesUI.php +++ b/modules/candidates/CandidatesUI.php @@ -3066,15 +3066,18 @@ private function _addActivityChangeStatus($isJobOrdersMode, $regardingID, } } - if ($this->isChecked('scheduleEvent', $_POST)) - { - /* Bail out if we received an invalid date. */ - $trimmedDate = $this->getTrimmedInput('dateAdd', $_POST); - if (empty($trimmedDate) || - !DateUtility::validate('-', $trimmedDate, DATE_FORMAT_MMDDYY)) - { - CommonErrors::fatalModal(COMMONERROR_MISSINGFIELDS, $this, 'Invalid date.'); - } + if ($this->isChecked('scheduleEvent', $_POST)) + { + /* Bail out if we received an invalid date. */ + $trimmedDate = $this->getTrimmedInput('dateAdd', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; + if (empty($trimmedDate) || + !DateUtility::validate('-', $trimmedDate, $dateFormatFlag)) + { + CommonErrors::fatalModal(COMMONERROR_MISSINGFIELDS, $this, 'Invalid date.'); + } /* Bail out if we don't have a valid event type. */ if (!$this->isRequiredIDValid('eventTypeID', $_POST)) @@ -3108,13 +3111,13 @@ private function _addActivityChangeStatus($isJobOrdersMode, $regardingID, $duration = $this->getTrimmedInput('duration', $_POST);; /* Is this a scheduled event or an all day event? */ - if ($allDay) - { - $date = DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD - ); - - $hour = 12; + if ($allDay) + { + $date = DateUtility::convert( + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD + ); + + $hour = 12; $minute = 0; $meridiem = 'AM'; } @@ -3151,16 +3154,16 @@ private function _addActivityChangeStatus($isJobOrdersMode, $regardingID, ); /* Create MySQL date string w/ 24hr time (YYYY-MM-DD HH:MM:SS). */ - $date = sprintf( - '%s %s', - DateUtility::convert( - '-', - $trimmedDate, - DATE_FORMAT_MMDDYY, - DATE_FORMAT_YYYYMMDD - ), - date('H:i:00', $time) - ); + $date = sprintf( + '%s %s', + DateUtility::convert( + '-', + $trimmedDate, + $dateFormatFlag, + DATE_FORMAT_YYYYMMDD + ), + date('H:i:00', $time) + ); } $description = $this->getTrimmedInput('description', $_POST); diff --git a/modules/contacts/AddActivityScheduleEventModal.tpl b/modules/contacts/AddActivityScheduleEventModal.tpl index c30144410..504895d46 100755 --- a/modules/contacts/AddActivityScheduleEventModal.tpl +++ b/modules/contacts/AddActivityScheduleEventModal.tpl @@ -3,13 +3,14 @@ onlyScheduleEvent): ?> - - - -isFinishedMode): ?> - - + + + +isFinishedMode): ?> + +
@@ -72,9 +73,9 @@
-
- -
+
+ +
diff --git a/modules/contacts/ContactsUI.php b/modules/contacts/ContactsUI.php index c7a9bf28d..81f8c917d 100755 --- a/modules/contacts/ContactsUI.php +++ b/modules/contacts/ContactsUI.php @@ -1376,8 +1376,11 @@ private function _addActivityScheduleEvent($regardingID, $directoryOverride = '' { /* Bail out if we received an invalid date. */ $trimmedDate = $this->getSanitisedInput('dateAdd', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; if (empty($trimmedDate) || - !DateUtility::validate('-', $trimmedDate, DATE_FORMAT_MMDDYY)) + !DateUtility::validate('-', $trimmedDate, $dateFormatFlag)) { CommonErrors::fatalModal(COMMONERROR_MISSINGFIELDS, $this, 'Invalid date.'); } @@ -1418,7 +1421,7 @@ private function _addActivityScheduleEvent($regardingID, $directoryOverride = '' if ($allDay) { $date = DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ); $hour = 12; @@ -1461,7 +1464,7 @@ private function _addActivityScheduleEvent($regardingID, $directoryOverride = '' DateUtility::convert( '-', $trimmedDate, - DATE_FORMAT_MMDDYY, + $dateFormatFlag, DATE_FORMAT_YYYYMMDD ), date('H:i:00', $time) From cdb141804981990e9476f35c964fbaa0d603fc4b Mon Sep 17 00:00:00 2001 From: anonymoususer72041 <247563575+anonymoususer72041@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:40:13 +0100 Subject: [PATCH 3/5] fix: use user date format when creating and editing calendar events --- modules/calendar/Calendar.tpl | 7 +++++-- modules/calendar/CalendarUI.js | 14 ++++++++++---- modules/calendar/CalendarUI.php | 18 ++++++++++++------ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/modules/calendar/Calendar.tpl b/modules/calendar/Calendar.tpl index b382162d2..e180fa3dd 100755 --- a/modules/calendar/Calendar.tpl +++ b/modules/calendar/Calendar.tpl @@ -2,6 +2,9 @@ active); ?> +
@@ -84,7 +87,7 @@
@@ -234,7 +237,7 @@ diff --git a/modules/calendar/CalendarUI.js b/modules/calendar/CalendarUI.js index 5d0755844..016c7fffe 100755 --- a/modules/calendar/CalendarUI.js +++ b/modules/calendar/CalendarUI.js @@ -188,8 +188,11 @@ function calendarEditEvent(entry) dayString = '0' + dayString; } - var dateString = monthString + '-' + dayString + '-' + yearString; - SetDateInputDate('dateEdit', 'MM-DD-YY', dateString); + var userDateFormat = (typeof window.CATSUserDateFormat !== 'undefined' ? window.CATSUserDateFormat : 'MM-DD-YY'); + var dateString = (userDateFormat == 'DD-MM-YY' + ? dayString + '-' + monthString + '-' + yearString + : monthString + '-' + dayString + '-' + yearString); + SetDateInputDate('dateEdit', userDateFormat, dateString); if (entry.getData('allDay') != '1') { @@ -377,8 +380,11 @@ function addEventByDay(year, month, day, hour) dayString = '0' + dayString; } - var dateString = monthString + '-' + dayString + '-' + yearString; - SetDateInputDate('dateAdd', 'MM-DD-YY', dateString); + var userDateFormat = (typeof window.CATSUserDateFormat !== 'undefined' ? window.CATSUserDateFormat : 'MM-DD-YY'); + var dateString = (userDateFormat == 'DD-MM-YY' + ? dayString + '-' + monthString + '-' + yearString + : monthString + '-' + dayString + '-' + yearString); + SetDateInputDate('dateAdd', userDateFormat, dateString); document.getElementById('publicEntry').checked = defaultPublic; diff --git a/modules/calendar/CalendarUI.php b/modules/calendar/CalendarUI.php index 234a38d00..011c02f52 100755 --- a/modules/calendar/CalendarUI.php +++ b/modules/calendar/CalendarUI.php @@ -349,8 +349,11 @@ private function onAddEvent() /* Bail out if we received an invalid date. */ $trimmedDate = $this->getTrimmedInput('dateAdd', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; if (empty($trimmedDate) || - !DateUtility::validate('-', $trimmedDate, DATE_FORMAT_MMDDYY)) + !DateUtility::validate('-', $trimmedDate, $dateFormatFlag)) { CommonErrors::fatal(COMMONERROR_BADFIELDS, $this, 'Invalid date.'); } @@ -409,7 +412,7 @@ private function onAddEvent() if ($allDay) { $date = DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ); $hour = 12; @@ -450,7 +453,7 @@ private function onAddEvent() $date = sprintf( '%s %s', DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ), date('H:i:00', $time) ); @@ -554,8 +557,11 @@ private function onEditEvent() /* Bail out if we received an invalid date. */ $trimmedDate = $this->getTrimmedInput('dateEdit', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; if (empty($trimmedDate) || - !DateUtility::validate('-', $trimmedDate, DATE_FORMAT_MMDDYY)) + !DateUtility::validate('-', $trimmedDate, $dateFormatFlag)) { CommonErrors::fatal(COMMONERROR_BADFIELDS, $this, 'Invalid date.'); } @@ -599,7 +605,7 @@ private function onEditEvent() if ($allDay) { $date = DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ); $hour = 12; @@ -640,7 +646,7 @@ private function onEditEvent() $date = sprintf( '%s %s', DateUtility::convert( - '-', $trimmedDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $trimmedDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ), date('H:i:00', $time) ); From bd89e579e15216199803536c89696a4edc6da9bb Mon Sep 17 00:00:00 2001 From: anonymoususer72041 <247563575+anonymoususer72041@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:11:46 +0100 Subject: [PATCH 4/5] fix: apply user date format to candidate availability and job order start date --- modules/candidates/Add.tpl | 6 +- modules/candidates/CandidatesUI.php | 91 ++++++++++++++--------------- modules/candidates/Edit.tpl | 9 ++- modules/joborders/Add.tpl | 5 +- modules/joborders/Edit.tpl | 9 ++- modules/joborders/JobOrdersUI.php | 25 ++++---- 6 files changed, 76 insertions(+), 69 deletions(-) diff --git a/modules/candidates/Add.tpl b/modules/candidates/Add.tpl index c56dcad6c..7dc96ee48 100755 --- a/modules/candidates/Add.tpl +++ b/modules/candidates/Add.tpl @@ -22,6 +22,10 @@ + +

Basic Information

- +
- +
@@ -416,7 +420,7 @@ diff --git a/modules/joborders/Add.tpl b/modules/joborders/Add.tpl index ca1ad96f2..3040d1db4 100755 --- a/modules/joborders/Add.tpl +++ b/modules/joborders/Add.tpl @@ -2,6 +2,9 @@ active, $this->subActive); ?> +
@@ -44,7 +47,7 @@
diff --git a/modules/joborders/Edit.tpl b/modules/joborders/Edit.tpl index d8f6fc0ec..bbc7c7985 100755 --- a/modules/joborders/Edit.tpl +++ b/modules/joborders/Edit.tpl @@ -2,6 +2,9 @@ active); ?> +
@@ -34,10 +37,10 @@
diff --git a/modules/joborders/JobOrdersUI.php b/modules/joborders/JobOrdersUI.php index ce7ae0f02..b3a308bf7 100755 --- a/modules/joborders/JobOrdersUI.php +++ b/modules/joborders/JobOrdersUI.php @@ -722,16 +722,19 @@ private function onAdd() * convert the date to MySQL format. */ $startDate = $this->getTrimmedInput('startDate', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; if (!empty($startDate)) { - if (!DateUtility::validate('-', $startDate, DATE_FORMAT_MMDDYY)) + if (!DateUtility::validate('-', $startDate, $dateFormatFlag)) { CommonErrors::fatal(COMMONERROR_MISSINGFIELDS, $this, 'Invalid start date.'); } /* Convert start_date to something MySQL can understand. */ $startDate = DateUtility::convert( - '-', $startDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $startDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ); } @@ -873,16 +876,7 @@ private function edit() $departmentsString = ListEditor::getStringFromList($departmentsRS, 'name'); /* Date format for DateInput()s. */ - if ($_SESSION['CATS']->isDateDMY()) - { - $data['startDateMDY'] = DateUtility::convert( - '-', $data['startDate'], DATE_FORMAT_DDMMYY, DATE_FORMAT_MMDDYY - ); - } - else - { - $data['startDateMDY'] = $data['startDate']; - } + $data['startDateUser'] = $data['startDate']; /* Get extra fields. */ $extraFieldRS = $jobOrders->extraFields->getValuesForEdit($jobOrderID); @@ -986,9 +980,12 @@ private function onEdit() * convert the date to MySQL format. */ $startDate = $this->getTrimmedInput('startDate', $_POST); + $dateFormatFlag = $_SESSION['CATS']->isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; if (!empty($startDate)) { - if (!DateUtility::validate('-', $startDate, DATE_FORMAT_MMDDYY)) + if (!DateUtility::validate('-', $startDate, $dateFormatFlag)) { CommonErrors::fatal(COMMONERROR_MISSINGFIELDS, $this, 'Invalid start date.'); return; @@ -996,7 +993,7 @@ private function onEdit() /* Convert start_date to something MySQL can understand. */ $startDate = DateUtility::convert( - '-', $startDate, DATE_FORMAT_MMDDYY, DATE_FORMAT_YYYYMMDD + '-', $startDate, $dateFormatFlag, DATE_FORMAT_YYYYMMDD ); } From 88ce43c13c9431bd7e98614d77effe0c854559f3 Mon Sep 17 00:00:00 2001 From: anonymoususer72041 <247563575+anonymoususer72041@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:22:36 +0100 Subject: [PATCH 5/5] fix: apply user date format to date extra fields --- lib/ExtraFields.php | 82 ++++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/lib/ExtraFields.php b/lib/ExtraFields.php index 33900a2c6..40b7589a5 100755 --- a/lib/ExtraFields.php +++ b/lib/ExtraFields.php @@ -28,6 +28,7 @@ */ include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); /** * Extra Fields Library @@ -555,26 +556,7 @@ public function getValuesForShow($dataItemID) break; case EXTRA_FIELD_DATE: - $dmy = false; - - if (isset($_SESSION['CATS']) && $_SESSION['CATS']->isLoggedIn()) - { - if ($_SESSION['CATS']->isDateDMY()) - { - $dmy = true; - } - } - else - { - // Look up the sites preference. (This would happen on careersUI) - $site = new Site($this->_siteID); - $siteRS = $site->getSiteBySiteID($this->_siteID); - - if ($siteRS['dateFormatDDMMYY'] == 1) - { - $dmy = true; - } - } + $dmy = $this->_isDateDMY(); if ($dmy) { @@ -677,7 +659,8 @@ public function getValuesForAdd() break; case EXTRA_FIELD_DATE: - $extraFields[$index]['addHTML'] = ''; + $dateFormat = $this->_isDateDMY() ? 'DD-MM-YY' : 'MM-DD-YY'; + $extraFields[$index]['addHTML'] = ''; break; case EXTRA_FIELD_TEXT: @@ -867,7 +850,15 @@ public function getValuesForEdit($dataItemID) break; case EXTRA_FIELD_DATE: - $extraFields[$index]['editHTML'] = ''; + $userDateFormat = $this->_isDateDMY() ? 'DD-MM-YY' : 'MM-DD-YY'; + $userDateValue = $data['value']; + if (!empty($userDateValue) && $userDateFormat == 'DD-MM-YY') + { + $userDateValue = DateUtility::convert( + '-', $userDateValue, DATE_FORMAT_MMDDYY, DATE_FORMAT_DDMMYY + ); + } + $extraFields[$index]['editHTML'] = ''; break; case EXTRA_FIELD_TEXT: @@ -893,11 +884,40 @@ public function setValuesOnEdit($dataItemID) { $extraFields = $this->_getValuesWithSettings($dataItemID); + $dateFormatFlag = $this->_isDateDMY() + ? DATE_FORMAT_DDMMYY + : DATE_FORMAT_MMDDYY; + for ($i = 0; $i < count($extraFields); $i++) { - if (isset($_POST['extraField' . $i]) && $extraFields[$i]['value'] != $_POST['extraField' . $i]) + if (!isset($_POST['extraField' . $i])) + { + continue; + } + + $newValue = $_POST['extraField' . $i]; + + if ($extraFields[$i]['extraFieldType'] == EXTRA_FIELD_DATE) { - $this->setValue($extraFields[$i]['fieldName'], $_POST['extraField' . $i], $dataItemID); + $newValue = trim($newValue); + + if (!empty($newValue) && + !DateUtility::validate('-', $newValue, $dateFormatFlag)) + { + continue; + } + + if (!empty($newValue)) + { + $newValue = DateUtility::convert( + '-', $newValue, $dateFormatFlag, DATE_FORMAT_MMDDYY + ); + } + } + + if ($extraFields[$i]['value'] != $newValue) + { + $this->setValue($extraFields[$i]['fieldName'], $newValue, $dataItemID); } } } @@ -908,6 +928,20 @@ public function setValuesOnEdit($dataItemID) * * @return array extra fields */ + private function _isDateDMY() + { + if (isset($_SESSION['CATS']) && $_SESSION['CATS']->isLoggedIn()) + { + return $_SESSION['CATS']->isDateDMY(); + } + + /* Careers portal / unauthenticated: fall back to site preference. */ + $site = new Site($this->_siteID); + $siteRS = $site->getSiteBySiteID($this->_siteID); + + return ($siteRS['dateFormatDDMMYY'] == 1); + } + public static function getValuesTypes() { return array (