FileUsageBase.php

Same filename in other branches
  1. 9 core/modules/file/src/FileUsage/FileUsageBase.php
  2. 8.9.x core/modules/file/src/FileUsage/FileUsageBase.php
  3. 11.x core/modules/file/src/FileUsage/FileUsageBase.php

Namespace

Drupal\file\FileUsage

File

core/modules/file/src/FileUsage/FileUsageBase.php

View source
<?php

namespace Drupal\file\FileUsage;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\file\FileInterface;

/**
 * Defines the base class for database file usage backend.
 */
abstract class FileUsageBase implements FileUsageInterface {
    
    /**
     * The config factory.
     *
     * @var \Drupal\Core\Config\ConfigFactoryInterface
     */
    protected $configFactory;
    
    /**
     * Creates a FileUsageBase object.
     *
     * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
     *   The config factory.
     */
    public function __construct(ConfigFactoryInterface $config_factory) {
        $this->configFactory = $config_factory;
    }
    
    /**
     * {@inheritdoc}
     */
    public function add(FileInterface $file, $module, $type, $id, $count = 1) {
        // Make sure that a used file is permanent.
        if (!$file->isPermanent()) {
            $file->setPermanent();
            $file->save();
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function delete(FileInterface $file, $module, $type = NULL, $id = NULL, $count = 1) {
        // Do not actually mark files as temporary when the behavior is disabled.
        if (!$this->configFactory
            ->get('file.settings')
            ->get('make_unused_managed_files_temporary')) {
            return;
        }
        // If there are no more remaining usages of this file, mark it as temporary,
        // which result in a delete through system_cron().
        $usage = \Drupal::service('file.usage')->listUsage($file);
        if (empty($usage)) {
            $file->setTemporary();
            $file->save();
        }
    }

}

Classes

Title Deprecated Summary
FileUsageBase Defines the base class for database file usage backend.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.