Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev/core#4410: fixed timezone support for standalone #28468

Merged
merged 1 commit into from Dec 6, 2023

Conversation

jaapjansma
Copy link
Contributor

Overview

This adds timezone support the user of stand alone CiviCRM.

See https://lab.civicrm.org/dev/core/-/issues/4410

@artfulrobot can you review this?

Copy link

civibot bot commented Dec 4, 2023

🤖 Thank you for contributing to CiviCRM! ❤️ We will need to test and review this PR. 👷

Introduction for new contributors...
  • If this is your first PR, an admin will greenlight automated testing with the command ok to test or add to whitelist.
  • A series of tests will automatically run. You can see the results at the bottom of this page (if there are any problems, it will include a link to see what went wrong).
  • A demo site will be built where anyone can try out a version of CiviCRM that includes your changes.
  • If this process needs to be repeated, an admin will issue the command test this please to rerun tests and build a new demo site.
  • Before this PR can be merged, it needs to be reviewed. Please keep in mind that reviewers are volunteers, and their response time can vary from a few hours to a few weeks depending on their availability and their knowledge of this particular part of CiviCRM.
  • A great way to speed up this process is to "trade reviews" with someone - find an open PR that you feel able to review, and leave a comment like "I'm reviewing this now, could you please review mine?" (include a link to yours). You don't have to wait for a response to get started (and you don't have to stop at one!) the more you review, the faster this process goes for everyone 😄
  • To ensure that you are credited properly in the final release notes, please add yourself to contributor-key.yml
  • For more information about contributing, see CONTRIBUTING.md.
Quick links for reviewers...

➡️ Online demo of this PR 🔗

@civibot civibot bot added the master label Dec 4, 2023
Copy link

civibot bot commented Dec 4, 2023

The issue associated with the Pull Request can be viewed at https://lab.civicrm.org/dev/core/-/issues/4410

@artfulrobot
Copy link
Contributor

@jaapjansma I can see that the timezone is stored against the user. However I changed my user's timezone and the dates did not change, e.g. Created Date at the bottom of the contact summary screen; or searchkit timestamps on the user table: neither of these change when changing timezones. Is this correct?

@jaapjansma
Copy link
Contributor Author

I have this same issue in a Drupal 10 site where I can change my timezone. Looks like a CiviCRM core issue not handling the timezones correctly in displaying dates.

@artfulrobot
Copy link
Contributor

I think this should be merged; it seems to work as it should, and the fact that core doesn't is not something we can fix in this pr.

@mlutfy if you agree can you merge?

@demeritcowboy
Copy link
Contributor

FYI the PR has a merge conflict.

Just a comment on what you're seeing: TIMESTAMP db fields do (should) display differently when you change the timezone, DATETIME fields have no concept of timezone. The log record at the bottom of the contact summary for example is a mix of these. The created date is a timestamp, and should update, whereas the "last change" is a datetime and will not update. This isn't by design in civi - it's just never really had full timezone support. So here's an example where the user was created with timezone UTC, then switched to New_York. The "last change" doesn't change, but the "created" does, so for now I would expect standalone to work the same.

untitled3

@demeritcowboy
Copy link
Contributor

It seems like loadBootstrap is not called in standalone? So then setMySQLTimeZone() doesn't get called.

If I put CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); in web/index.php in invoke() just before print CRM_Core_Invoke::invoke($args); then it does something. But I haven't been following development enough to know if that's the right place. But that still doesn't make it quite the same as drupal. E.g. the contact summary change info updates the same way as drupal, but on a new contribution the default time doesn't use my specified timezone.

@artfulrobot
Copy link
Contributor

It seems like loadBootstrap is not called in standalone? So then setMySQLTimeZone() doesn't get called.

Yeah, I think the loadBootstrap is called for cli only, but I don't know if that's correct.

If I put CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); in web/index.php in invoke() just before print CRM_Core_Invoke::invoke($args); then it does something. But I haven't been following development enough to know if that's the right place.

Sounds like we should be calling setMySQLTimeZone() though.

But that still doesn't make it quite the same as drupal. E.g. the contact summary change info updates the same way as drupal, but on a new contribution the default time doesn't use my specified timezone.

Hmm. I think this is one of those things where once it's fixed things may get worse...!

@demeritcowboy
Copy link
Contributor

Ok let's merge this and figure out where to put the call to setMySQLTimeZone after. Since obviously the form part is working.

test fail is the usual ongoing fail.

@demeritcowboy demeritcowboy merged commit 557f7c9 into civicrm:master Dec 6, 2023
2 of 3 checks passed
@artfulrobot
Copy link
Contributor

Related: #29282

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants