diff --git a/core/modules/file/src/Element/ManagedFile.php b/core/modules/file/src/Element/ManagedFile.php index a42c37c..cf8ec65 100644 --- a/core/modules/file/src/Element/ManagedFile.php +++ b/core/modules/file/src/Element/ManagedFile.php @@ -398,18 +398,22 @@ public static function preRenderManagedFile($element) { * Render API callback: Validates the managed_file element. */ public static function validateManagedFile(&$element, FormStateInterface $form_state, &$complete_form) { - // If referencing an existing file, only allow if there are existing - // references. This prevents unmanaged files from being deleted if this - // item were to be deleted. $clicked_button = end($form_state->getTriggeringElement()['#parents']); if ($clicked_button != 'remove_button' && !empty($element['fids']['#value'])) { $fids = $element['fids']['#value']; foreach ($fids as $fid) { if ($file = File::load($fid)) { - // Issue @link https://www.drupal.org/node/2896480 @endlink disabled - // unused, but permanent, files from being garbage collected. We - // need to check the status here to see if we should check the - // reference count. + // If referencing an existing file, only allow if there are existing + // references. This prevents unmanaged files from being deleted if + // this item were to be deleted. When files that are no longer in use + // are automatically marked as temporary (now disabled by default), + // it is not safe to reference a permanent file without usage. Adding + // removing it again would delete the file, but it is unknown if and + // where it is currently referenced. However, when files are not + // marked temporary (and then removed) automatically, it is safe to + // add and remove usages, as it would simply return to the current + // state. + // @see https://www.drupal.org/node/2891902 if ($file->isPermanent() && \Drupal::config('file.settings')->get('make_unused_managed_files_temporary')) { $references = static::fileUsage()->listUsage($file); if (empty($references)) {