PHP8 fix - Ensure data retention settings are respected #19869
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
On PHP 8, the settings if log and report data should be deleted might not be respected correctly.
The reason for this is, that the API converts the setting to a boolean e.g. here:
matomo/plugins/PrivacyManager/API.php
Line 295 in 6cc7236
But as the value is then stored in an option in the database, it gets converted to a string again.
So the resulting database value is either
1
(string value oftrue
) or an empty string (string value offalse
).When the value is later checked in the task this is done this way:
matomo/plugins/PrivacyManager/PrivacyManager.php
Line 523 in 2ea1411
That used to work smoothly for PHP 7. But for PHP 8 the result of that compare changed. The result of comparing an empty string against
0
changed. See https://3v4l.org/v4p2UThat means that removing log and report data is actually always enabled on PHP 8 once the settings in the UI had been saved.
Review