We were busy most of the month doing emergency updates for our clients since Joomla had several critical updates in a row. Most updates went smoothly, but several didn’t. One update, for example, caused the following error to display on the homepage:
DateTime::__construct(): Failed to parse time string (Never) at position 0 (N): The timezone could not be found in the database
We tracked down the problem and we discovered that it had do with a change in a core file called calendar.php located under the libraries/joomla/form/fields folder. That change was incompatible with several 3rd party extensions (including the Mosets Tree extension, which was used by this particular website).
So, in order to fix the problem, we had to modify the calendar.php file the following way:
Just before the following line:
if (strtoupper($this->value) == 'NOW')
We added the following code:
if (empty($this->value) || $this->value == 'Never') $this->value = 'now';
And that fixed the problem!
But isn’t it a better to fix the problem in the affected 3rd party extension(s)?
Yes – it is better to do so. But we wanted to offer a generic solution in this post that will fix the problem on all extensions – instead of writing on how to fix the problem in every affected extension (and most likely we won’t cover all the affected extensions). And yes – we know – this is a core modification, but it is a quick and efficient modification (or at least we think it is!).
If you have the same problem on your website, then try modifying the calendar.php file as described above. If you want to fix the problem at the extension level, then please contact us. We’ll do it for you in not time and for a very reasonable fee!