joomla-cms
joomla-cms copied to clipboard
Incorrect UCM Asset Tracking
Steps to reproduce the issue
- Create Joomla article
- Add Tag
Expected result
- A) New row (e.g. id 43) in database table
#__assets
with namecom_content.article.X
(X = id of article) created. - B) New row (e.g. id 44) in database table
#__assets
with name#__ucm_content.X
(X = id of article) created. - C) In database table
#__content
a new row withid
X (article id) is created andasset_id
has row value of A (e.g. id 43) - D) In database table
#__ucm_content
a new row withcore_content_id
X (article ID) is created andasset_id
has row value of B (e.g. id 44)
Actual result
- A) New row (e.g. id 43) in database table
#__assets
with namecom_content.article.X
(X = id of article) created. - B) New row (e.g. id 44) in database table
#__assets
with name#__ucm_content.X
(X = id of article) created. - C) In database table
#__content
a new row withid
X (article id) is created andasset_id
has row value of A (e.g. id 43) - D) In database table
#__ucm_content
a new row withcore_content_id
X (article ID) is created andasset_id
has row value of A (e.g. id 43)
So the new row in #__content
and #__ucm_content
both link to the same asset_id
and the #__ucm_content.X
asset has no relation in other tables. This is not correct.
Additional comments
This behavior is introduced with PR #39165 which sets the flag $this->_trackAssets = false;
for the UCM content table. This indeed reduces useless assets rows. However this change did not take into account the fact that a new UCM content row is created when tags are added.
The incorrect asset_id
store is also mentioned in the comment of the PR: https://github.com/joomla/joomla-cms/pull/39165#issuecomment-1367194172
As long as data is created in the #__ucm_content
the $this->_trackAssets = false;
should be removed. Or the asset_id
in #__ucm_content
should not be set at all and the column can be removed as the asset for #__ucm_content
does nothing.