diff --git a/src/Plugin/Action/DeleteMediaAndMultifiles.php b/src/Plugin/Action/DeleteMediaAndMultifiles.php new file mode 100644 index 00000000..841c0978 --- /dev/null +++ b/src/Plugin/Action/DeleteMediaAndMultifiles.php @@ -0,0 +1,80 @@ +setEntityFieldManager($container->get('entity_field.manager')); + return $instance; + + } + + /** + * Sets entity field manager. + */ + public function setEntityFieldManager(EntityFieldManagerInterface $entity_field_manager) { + $this->entity_field_manager = $entity_field_manager; + } + + public function execute($entity = NULL) { + if (!$entity) { + return; + } + + $delete = FALSE; + $fields = $this->entity_field_manager->getFieldDefinitions('media', $entity->bundle()); + $files = []; + foreach ($fields as $field) { + $type = $field->getType(); + if ($type == 'file' || $type == 'image') { + $files[] = $field->getName(); + } + } + foreach ($files as $field) { + $target_id = $entity->get($field)->target_id; + $file = File::load($target_id); + if ($file) { + $file->delete(); + $delete = TRUE; + } + } + if($delete) { + $entity->delete(); + } + } + + /** + * {@inheritdoc} + */ + public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { + return $object->access('delete', $account, $return_as_object); + } +}