function salesforce_mapping_entity_delete in Salesforce Suite 8.4
Same name and namespace in other branches
- 8.3 modules/salesforce_mapping/salesforce_mapping.module \salesforce_mapping_entity_delete()
- 7.3 modules/salesforce_mapping/salesforce_mapping.module \salesforce_mapping_entity_delete()
- 5.0.x modules/salesforce_mapping/salesforce_mapping.module \salesforce_mapping_entity_delete()
Implements hook_entity_delete().
Delete any corresponding Mapped Objects when an entity is deleted.
File
- modules/
salesforce_mapping/ salesforce_mapping.module, line 43 - Manages Salesforce object and Drupal entity mappings.
Code
function salesforce_mapping_entity_delete(EntityInterface $entity) {
$storage = \Drupal::entityTypeManager()
->getStorage('salesforce_mapped_object');
if (\Drupal::moduleHandler()
->moduleExists('salesforce_push') && \Drupal::database()
->schema()
->tableExists('salesforce_push_queue')) {
$mapped_objects = $storage
->loadByEntity($entity);
if (!$mapped_objects) {
return;
}
foreach ($mapped_objects as $mapped_object) {
$mapping = $mapped_object
->getMapping();
$queued_items = \Drupal::database()
->select('salesforce_push_queue', 'spq')
->fields('spq', [
'item_id',
])
->condition('entity_id', $entity
->id())
->condition('name', $mapping
->id())
->condition('op', 'push_delete')
->execute();
// If this was queued to be deleted, don't delete the mapping yet, defer
// to salesforce_push.
if (!$queued_items
->fetch()) {
$mapped_object
->delete();
}
}
}
else {
$storage
->delete($storage
->loadByEntity($entity));
}
}