markshust / magento2-module-simpledata

The SimpleData module simplifies calling Magento data structures.
MIT License
94 stars 7 forks source link

Try to update a `is_active=0` cms page #12

Open convenient opened 2 years ago

convenient commented 2 years ago

Saw this ages ago and forgot to report, i do believe that its still valid but I have not checked sorry 🙈

But I do remember the issue pretty well I think.

  1. Create a cms page some-page
  2. Set it as is_active=0
  3. Use this tool to try and change some of the content on a store view

The real life scenario was some page was temporarily disabled on production until the automated script could fix it, but the script couldn't fix it because it was is_active=0 and thus could not be loaded for being updated.

This tool uses the GetPageByIdentifier to load https://github.com/markshust/magento2-module-simpledata/blob/ef6db3be09643e39d24d6a919153b086f3a28818/Api/Cms/SimplePage.php#L85-L88

That uses the page resource model https://github.com/magento/magento2/blob/5a022f69ada01effe32a207000a2391e1c918625/app/code/Magento/Cms/Model/GetPageByIdentifier.php#L43-L47

That uses a function to getPageId https://github.com/magento/magento2/blob/5a022f69ada01effe32a207000a2391e1c918625/app/code/Magento/Cms/Model/ResourceModel/Page.php#L173-L176

That uses _getLoadSelect https://github.com/magento/magento2/blob/5a022f69ada01effe32a207000a2391e1c918625/app/code/Magento/Cms/Model/ResourceModel/Page.php#L143-L155

getLoadSelect has hard coded filtering for is_active=1 https://github.com/magento/magento2/blob/5a022f69ada01effe32a207000a2391e1c918625/app/code/Magento/Cms/Model/ResourceModel/Page.php#L190-L207

If the store is set to is_active=0 it could never be loaded in this manner so this tool tries to create a new one, as it thinks it doesn't exist.

I think I had to work around this by using a collection to load the entity, but it was a while ago .

markshust commented 2 years ago

Thanks for the report, I'll test out to see if I can replicate.

convenient commented 2 years ago

Thanks @markshust

Looking at the code I believe it should be an issue, but it was so long ago on a project that is no longer active. Thought i'd raise it in the offchance it's still valid.

I wouldn't lose sleep over it if its not reproducible