Error in formating DateTime object. Expected DateTime, but instead given boolean
WordPress Event Management, Calendars & Registration › Forums › Report A Bug › Error in formating DateTime object. Expected DateTime, but instead given boolean
This topic contains 2 replies, has 2 voices, and was last updated by Benjamine Heath 2 years, 11 months ago.
-
AuthorPosts
-
November 28, 2021 at 11:09 pm #40590
Hi,
I’m using the shortcode [eo_fullcalendar] to display our calendar on this page: https://villagezendo.org/calendar/
Periodically, the calendar gets hung up in perpetual loading, and I’ve found because the following call is returning an Error 500:
I’ve noticed that flushing our object cache temporarily resolves this issue, but the error still continues happening periodically. I’m definitely no server-side expert, but I thought that maybe this has to do with object caching on our server (since flushing it fixes it temporarily), so I disabled object caching on that page. However the error continues to persist periodically.
I checked our PHP error logs and found the following:
[28-Nov-2021 22:34:03 UTC] PHP Fatal error: Uncaught Exception: Error in formating DateTime object. Expected DateTime, but instead given boolean in /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php:31 Stack trace: #0 /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php(164): eo_format_datetime(false, 'F j, Y g:i a') #1 /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-ajax.php(179): eo_format_event_occurrence(20043, 0, 'F j, Y ', 'g:i a', ' - ', false) #2 /wordpress/core/5.8.2/wp-includes/class-wp-hook.php(303): eventorganiser_public_fullcalendar('') #3 /wordpress/core/5.8.2/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters('', Array) #4 /wordpress/core/5.8.2/wp-includes/plugin.php(470): WP_Hook->do_action(Array) #5 /wordpress/core/5.8.2/wp-admin/admin-ajax.php(187): do_action('wp_ajax_eventor...') #6 {main} thrown in /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php on line 31 [28-Nov-2021 22:35:22 UTC] PHP Fatal error: Uncaught Exception: Error in formating DateTime object. Expected DateTime, but instead given boolean in /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php:31 Stack trace: #0 /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php(164): eo_format_datetime(false, 'F j, Y g:i a') #1 /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-ajax.php(179): eo_format_event_occurrence(20043, 0, 'F j, Y ', 'g:i a', ' - ', false) #2 /wordpress/core/5.8.2/wp-includes/class-wp-hook.php(303): eventorganiser_public_fullcalendar('') #3 /wordpress/core/5.8.2/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters('', Array) #4 /wordpress/core/5.8.2/wp-includes/plugin.php(470): WP_Hook->do_action(Array) #5 /wordpress/core/5.8.2/wp-admin/admin-ajax.php(187): do_action('wp_ajax_eventor...') #6 {main} thrown in /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php on line 31
Can you please help?
Thanks,
Ben
Benjamine HeathNovember 30, 2021 at 10:48 pm #40592Hi Ben,
This generally happens if the event has no dates. In my experience it can happen if you have another events plug-in installed, or you if you have switched from another and you had some existing events from that plug-in.
In this instance I can see this line is being called with the occurrence ID set to 0. The event in question is
20043
. It may be worth checking theeo_events
table for any rows withpost_id
set to20043
.If it does then I would next check the query being run (this is an excellent plugin for that: https://wordpress.org/plugins/query-monitor/). It might be there is another plug-in interfering with the database query.
However, since you mentioned that clearing object cache seems to fix this issue, then its likely event queries are being cached, and I suspect the cached results are missing the occurrence ID. When required, the plug-in modifies database queries for events to join the event dates, but if the caching is being done before that, then its possible its caching a previous query which didn’t join the event dates. The plug-in then caches the calendar, so this would explain why it might work for a while.
I’m not sure how granular, but if you can disable the caching for a post type, you might find that resolves the issue. However, typically with object caching it works at the database query level.
Stephen HarrisDecember 1, 2021 at 3:48 pm #40595Hi Stephen,
Thanks so much for your detailed response—this is very helpful.
I installed Query Monitor and this is was the response from admin-ajax.php when it gave the latest 500 error:
Fatal error: Uncaught Exception: Error in formating DateTime object. Expected DateTime, but instead given boolean in /srv/htdocs/wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php on line 31 Call stack: eo_format_datetime() wp-content/plugins/event-organiser/includes/event-organiser-utility-functions.php:164 eo_format_event_occurrence() wp-content/plugins/event-organiser/includes/event-organiser-ajax.php:179 eventorganiser_public_fullcalendar() wp-includes/class-wp-hook.php:303 WP_Hook::apply_filters() wp-includes/class-wp-hook.php:327 WP_Hook::do_action() wp-includes/plugin.php:470 do_action() wp-admin/admin-ajax.php:187
I did a search in our DB for the latest post_id that returned the error, and I found these entries:
Is one of the event_occurrence’s supposed to be 0, and is that occurrence id throwing the error? If it is, it seems that occurrence id works fine normally….. but when it’s cached, 0 is read as a boolean? (shot in the dark, I’m a little out of my depth)
I spot checked a few other events, and many events have their event_occurrence as 0.
Thanks so much for your help,
Ben
Benjamine Heath -
AuthorPosts