Problem/Motivation
After adding a tag to the contact and then removing it, we receive an error.
AssertionError: Cannot load the "civicrm_entity_tag" entity with NULL ID. in assert() (line 261 of core/lib/Drupal/Core/Entity/EntityStorageBase.php).
Drupal\Core\Entity\EntityStorageBase->load(NULL) (Line: 488)
civicrm_entity_civicrm_pre('delete', 'EntityTag', NULL, Array) (Line: 284)
CRM_Utils_Hook->runHooks(Array, 'civicrm_pre', 4, 'delete', 'EntityTag', 6, Array, NULL, NULL) (Line: 73)
CRM_Utils_Hook_DrupalBase->invokeViaUF(4, 'delete', 'EntityTag', 6, Array, NULL, NULL, 'civicrm_pre') (Line: 322)
Steps to reproduce
1. Add contact in CiviCRM.
2. Add tag to contact.
3. Save contact.
4. Edit contact and remove tag.
5. An error occurs.
Proposed resolution
To fix that, we need to make changes in civicrm_entity.module file in line 480 from:
if ($objectName == 'EntityTag') {
$id = $storage->getEntityTagEntityId($params[0][0], $params[1]);
}
To:
if ($objectName == 'EntityTag') {
$id = $storage->getEntityTagEntityId($params['entity_id'], $params['entity_table']);
}
Or with saved back compatibility:
if (isset($params['entity_id']) && isset($params['entity_table'])) {
$id = $storage->getEntityTagEntityId($params['entity_id'], $params['entity_table']);
}
else {
$id = $storage->getEntityTagEntityId($params[0][0], $params[1]);
}