Skip to content

Guest users not using configured America/Los_Angeles (PST) timezone Community Edition #582

@swoonai

Description

@swoonai

Guest users not using configured America/Los_Angeles (PST) timezone

I’ve configured HumHub to force the application and database timezone to PST (America/Los_Angeles), but guest users are still shown content in UTC instead of the configured timezone. Logged-in users work correctly.


Steps to reproduce

  1. Enable timezone configuration in common.php:
'formatter' => [
    'timeZone' => 'America/Los_Angeles',
    'defaultTimeZone' => 'America/Los_Angeles',
],
'db' => [
    'class' => yii\db\Connection::class,
    'on afterOpen' => function ($event) {
        // Dynamic MySQL offset for America/Los_Angeles
        $phpTzId = 'America/Los_Angeles';
        $tz      = new DateTimeZone($phpTzId);
        $now     = new DateTime('now', $tz);
        $offset  = $tz->getOffset($now);
        $sign    = $offset >= 0 ? '+' : '-';
        $offset  = abs($offset);
        $hours   = floor($offset / 3600);
        $minutes = floor(($offset % 3600) / 60);
        $mysqlOffset = sprintf('%s%02d:%02d', $sign, $hours, $minutes);

        $event->sender
            ->createCommand("SET time_zone = :tz")
            ->bindValue(':tz', $mysqlOffset)
            ->execute();
    },
],
  1. Enable guest access in config:
'params' => [
    'allowGuestAccess' => true,
],
'on beforeRequest' => function () {
    Yii::$app->params['allowGuestAccess'] = true;
},
  1. Visit the site as a guest (not logged in).

Expected behavior

All timestamps (posts, comments, activity stream, etc.) should display in America/Los_Angeles (PST/PDT) for guest users, consistent with logged-in users.

Actual behavior

Guest users still see UTC timestamps. Logged-in users respect the America/Los_Angeles timezone as expected.


Environment

  • HumHub version: 1.16.4
  • PHP version: 8.2.x
  • MySQL version: 8.0.x
  • OS: Ubuntu 22.04 LTS

Additional context

  • I verified that MySQL session time_zone is correctly set via SET time_zone on connection.
  • The Yii formatter is configured to America/Los_Angeles.
  • Issue only affects guest users.

Related: humhub/humhub#4871


Verification snippet

To confirm DB session timezone is applied correctly, I added this check:

$result = Yii::$app->db->createCommand("SELECT @@session.time_zone")->queryScalar();
Yii::warning("MySQL session timezone = " . $result, 'db-timezone');

Output in logs shows the correct offset (e.g. -07:00 for PDT), but guest pages still render in UTC.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions