Bug #101171
openEXT:belog ignores timezone in filter
0%
Description
Actual Result¶
The dates in the list correctly respect the current timezone. However, the filter does not. When applying a time range filter, the list displays entries outside of that specified range. For example, when filtering from 18:00 to 19:00, the log entries shown are from 20:48.
Expected Result¶
The log entries shown should correspond to the date range configured in the filter.
Steps to reproduce¶
- Install TYPO3 12 following the instructions on https://docs.typo3.org/m/typo3/tutorial-getting-started/main/en-us/Installation/TutorialDdev.html.
- Configure the timezone to
Europe/Zurich
. - Set up TYPO3.
- Log in to the TYPO3 backend.
- Navigate to the Log module (e.g. https://typo3twelve.ddev.site/typo3/module/system/BelogLog).
- Observe a log entry from the most recent login, such as "User admin logged in from 192.168.144.13."
- Use the "From" and "To" fields to filter the log entries by date and time.
A short script to speed things up ;-)
ddev config --project-type=typo3 --docroot=public --create-docroot --php-version=8.1 --timezone=Europe/Zurich
ddev start
ddev composer create "typo3/cms-base-distribution:^12"
ddev exec ./vendor/bin/typo3 setup
ddev launch
Environment¶
Tested both with TYPO3 11 and 12
Files
Updated by Jonas Renggli over 1 year ago
- File deleted (
Bildschirmfoto 2023-06-26 um 20.54.15.png)
Updated by Jonas Renggli over 1 year ago
- File 2023-06-26-belog.png 2023-06-26-belog.png added
- Description updated (diff)
Updated by Jonas Renggli over 1 year ago
I don't know the exact functionality of this extension and the interaction with the component flatpickr.js.
In my opinion, the most pragmatic way would be to consider the timezone just before accessing the persistence in BackendLogController::setStartAndEndTimeFromTimeSelector()
. The following code is quick and dirty but achieves the expected result:
protected function setStartAndEndTimeFromTimeSelector(Constraint $constraint)
{
$timezone = new \DateTimeZone(date_default_timezone_get());
$startTime = $constraint->getManualDateStart()
? (new \DateTime(
$constraint->getManualDateStart()->format('Y-m-d H:i:s'),
$timezone
))->getTimestamp()
: 0;
$endTime = $constraint->getManualDateStop()
? (new \DateTime(
$constraint->getManualDateStop()->format('Y-m-d H:i:s'),
$timezone
))->getTimestamp()
: 0;
if ($endTime <= $startTime) {
$endTime = $GLOBALS['EXEC_TIME'];
}
$constraint->setStartTimestamp($startTime);
$constraint->setEndTimestamp($endTime);
}
Updated by Georg Ringer 4 months ago
- Related to Feature #61110: Support for timezones in all date fields in TYPO3 BE added