Project

General

Profile

Actions

Bug #101171

open

EXT:belog ignores timezone in filter

Added by Jonas Renggli 11 months ago. Updated 11 months ago.

Status:
New
Priority:
Should have
Assignee:
-
Category:
Backend User Interface
Target version:
-
Start date:
2023-06-26
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
12
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

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

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

2023-06-26-belog.png (38.4 KB) 2023-06-26-belog.png Jonas Renggli, 2023-06-26 19:23
Actions #1

Updated by Jonas Renggli 11 months ago

  • File deleted (Bildschirmfoto 2023-06-26 um 20.54.15.png)
Actions #2

Updated by Jonas Renggli 11 months ago

Actions #3

Updated by Jonas Renggli 11 months 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);
    }
Actions

Also available in: Atom PDF