Skip to content

[5.4] Fix deprecated direct property access of model state #45704

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

Open
wants to merge 5 commits into
base: 5.4-dev
Choose a base branch
from

Conversation

heelc29
Copy link
Contributor

@heelc29 heelc29 commented Jul 7, 2025

Summary of Changes

Remove direct property access of model state
Change API model state also to State|Registery (missed in #39663)

Testing Instructions

Enable Log Deprecated API in Global Configuration
image

Visit different views

  • open existing banner for editing in backend
  • open existing banner for editing in backend (EDIT: banner client)
  • open existing contact for editing in backend
  • open existing article for editing in backend
  • open saved versions of banner/contact/article
  • open search terms (smart search) in backend
  • open existing newsfeed for editing in backend
  • open existing tag for editing in backend
  • open existing user note for editing in backend
  • open user contact form in frontend
  • open content archive view in frontend
  • open content category/categories view in frontend
  • open featured articles view in frontend
  • open archived articles view in frontend
  • open create article view in frontend
  • open privacy request/remind/confirm view in frontend
  • open tag/tags view in frontend
  • open user remind/reset view in frontend

Check log file logs/deprecated.php

Actual result BEFORE applying this Pull Request

direct property access of model state
deprecated Direct property access will not be supported in 7.0 in Joomla\CMS\MVC\Model\State::__get::Joomla\CMS\MVC\Model\State. - [ROOT]\libraries\src\MVC\Model\State.php - Line 94

Expected result AFTER applying this Pull Request

no direct property access of model state

Link to documentations

Please select:

  • No documentation changes for docs.joomla.org needed
  • Pull Request link for manual.joomla.org: TBD

@heelc29 heelc29 changed the title [5.4] Remove direct property access of model state [5.4] Fix deprecated direct property access of model state Jul 24, 2025
@heelc29 heelc29 marked this pull request as ready for review July 31, 2025 15:19
@exlemor
Copy link

exlemor commented Aug 2, 2025

I have tested this item ✅ successfully on cdeadcf

I have successfully tested this PR. Thanks @heelc29 for the hard work.

1 comment/inquiry (I apologize in advance if my inquiry is stupid: while the messages Direct property access will not be supported in 7.0 in Joomla\CMS\MVC\Model\State:: etc are no longer in the deprecated.php log :D, I am noticing one quite similar (I understand it is different) and out of doubt, I prefer mentioning it in case it mattered:

deprecated Instead of an empty value, the default value will be returned in 7.0 in Joomla\CMS\MVC\Model\State::get::Joomla\CMS\MVC\Model\State. - [ROOT]/libraries/src/MVC/Model/State.php - Line 56

(I am seeing a LOT of those as well)

Is that a side-effect of this PR, or completely irrelevant/unrelated? Sorry, again for the dumb question.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45704.

@heelc29
Copy link
Contributor Author

heelc29 commented Aug 5, 2025

deprecated Instead of an empty value, the default value will be returned in 7.0 in Joomla\CMS\MVC\Model\State::get::Joomla\CMS\MVC\Model\State. - [ROOT]/libraries/src/MVC/Model/State.php - Line 56

(I am seeing a LOT of those as well)

Is that a side-effect of this PR, or completely irrelevant/unrelated? Sorry, again for the dumb question.

@exlemor No worries at all - it's a valid question! In this case, it's not relevant to this PR, so no need to worry about it here.

But it looks like the code does not match the registry class. It compares against null and an empty string, while the deprecation message uses PHP’s empty() function, which also returns true for 0 (int/float) and empty arrays. @laoneo, should a PR be created?

public function get($path, $default = null)
{
if (isset($this->data->$path) && empty($this->data->$path)) {
@trigger_error(
\sprintf('Instead of an empty value, the default value will be returned in 7.0 in %s::%s.', __METHOD__, __CLASS__),
E_USER_DEPRECATED
);
return $this->data->$path;
}
return parent::get($path, $default);
}

https://github.com/joomla-framework/registry/blob/4452de9c66abfec59b535e27c62af3528a539311/src/Registry.php#L207-L209

@laoneo
Copy link
Member

laoneo commented Aug 5, 2025

If I 'm not wrong, then made it like that because of bc reasons.

@richard67
Copy link
Member

@heelc29 In your testing instructions you wrote:

  • open existing banner for editing in backend
  • open existing banner for editing in backend

I assume the 2nd one should be "banner client", is that right?

If so, could you update the instructions?

@exlemor Have you tested banner client, too?

@exlemor
Copy link

exlemor commented Aug 9, 2025

@heelc29 In your testing instructions you wrote:

  • open existing banner for editing in backend
  • open existing banner for editing in backend

I assume the 2nd one should be "banner client", is that right?

If so, could you update the instructions?

@exlemor Have you tested banner client, too?

Hello @richard67, I had followed instruction and stupid me I assumed it was a mistake (the double line) and I had not but I JUST did a second ago and validate that the message goes away with this PR which I just redownloaded as a Download Package so all good :).

@heelc29
Copy link
Contributor Author

heelc29 commented Aug 9, 2025

I assume the 2nd one should be "banner client", is that right?

Yes your right

@richard67
Copy link
Member

I have tested this item ✅ successfully on 9aa1341


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45704.

@richard67
Copy link
Member

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/45704.

@joomla-cms-bot joomla-cms-bot added the RTC This Pull Request is Ready To Commit label Aug 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR-5.4-dev RTC This Pull Request is Ready To Commit
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants