This comes from Joomla's email cloak content plugin, not our code. See the path to the file in the error message: plugins/content/emailcloak/emailcloak.php
Open this file and you will see it's part of Joomla, namely https://github.com/joomla/joomla-cms/blob/4.2-dev/plugins/content/emailcloak/emailcloak.php
The core plugin is badly written. It assumes there is a property called text
in all content objects, regardless of which extension they belong to, and it tries to cloak any emails in them. Since this is triggered onContentPrepared it executes literally everywhere. It doesn't matter if you have an article, Joomla contact object, a banner, a product in an e-commerce extension or a ticket in a helpdesk extension. It will stupidly try to do something with the very likely non-existent property text
.
Since the ticket object is not a dumb stdClass object but a concrete object which implements a magic __get method, PHP complains that trying to pass it by reference (see line 86 of the plugin) will not have any effect which is a very correct warning.
The simple solution is that the Joomla email cloaking plugin should actually check there is something to do before trying to do it. Line 53 should read:
if (is_object($row) && property_exists($row, 'text')) {
You can report this bug to the Joomla project on Joomla's GitHub repository and at-mention me (@nikosdion) so I can provide the confirmation of the issue and the Pull Request to fix it. If I report it myself it's unlikely anyone will spend the 20 seconds it takes to look at the core code and go “oh, crap, it's been broken for 17 years!”.
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!