pimcore
pimcore copied to clipboard
[Bug]: setUserModification in SimpleBackendSearchBundle does not accept null values
Pimcore version
11.2.2
Steps to reproduce
If backend user gets deleted userModification and or userOwner is nulled in elements. The Backendsearch crashes if there is a null value in items.
Actual Behavior
This happens in Pimcore\Bundle\SimpleBackendSearchBundle\Model\Search\Backend\Data:setUserModification / setUserOwner which accepts only integer values.
Same happens with object folders when you try to save them. In this case it happens in Pimcore\Bundle\AdminBundle\Controller\Admin\DataObject\DataObjectController:saveFolderAction when setValues is called. The null value of the userModification /userOwner is included and crashes in AbstractElement because it does not accept null values as well.
Expected Behavior
Method should accept null values as well or typecasting before setting it.
@gfemorris I created a PR https://github.com/pimcore/pimcore/pull/16970
@blankse thx. That should fix the search case. The issue with the object folder is still open though. Should i create a new issue for that so we can close this one?
@gfemorris I can't reproduce this. In my setup the timestamps are set:
How can this values null?
@blankse The browser sends null if there is no userModification set
And then it crashes
@gfemorris Thank you. I changed the 4 attributes in the db to null. Than I can't save the folder. I added a commit to the PR to fix this.
Hi @blankse @gfemorris just for my understanding, can it actually happen that all 4 values
- userModification
- userOwner
- creationDate
- modificationDate are null?
Because in your example you are mentioning only userModification. Thank you.
The db columns are nullable. So it is possible. Maybe not via admin interface. But via php script.
@blankse if we change the setters to accept the null values then yes, these fields will be null-able via script. However, then this means we have empty data in the DB.
I will discuss with my colleagues this topic, for me the better solution would be to either assign system user when this happens and introduce some mechanism to assign system user on deleting of existing users.
@lukmzig The null value could be exists from a earlier pimcore version without this type hints (Pimcore < 11) or someone set it directly in the db table via sql.
So if you decide to make it not nullable, the db schema should be changed and the data should be migrated.
I think there should be a difference between system user and deleted user. The system user is for changes of pimcore itself (via maintenance cronjob for example). For the created and modified dates I don't know a reason to be empty. So there we could change the db shema to not nullable and default to current time when empty it is a problem for you.
@blankse I agree with you, the DB schema should not change here. This issue with the folder is bit strange and we will need to have a deeper look
@gfemorris can you please create a separate issue for the folder this? Thank you very much!
@gfemorris @lukmzig I created a new issue: https://github.com/pimcore/pimcore/issues/17019
The SimpleBackenSearchBundle part was fixed by https://github.com/pimcore/pimcore/pull/16970 The folder part will be solved in separate issue
@lukmzig agreed. It's better to have a separate issue for this. Thx @blankse for creating the issue. I am not really sure why we have folders with null values in userModification. My guess was that the client deleted the user that was in there so it went to null. Maybe that happened in an older version. Nonetheless it makes sense to fix that so that people will not have problems if they migrate to pimcore11.