Same name in this branch
- 10 core/modules/file/src/Entity/File.php \Drupal\file\Entity\File
- 10 core/lib/Drupal/Core/Render/Element/File.php \Drupal\Core\Render\Element\File
- 10 core/modules/file/src/Plugin/views/field/File.php \Drupal\file\Plugin\views\field\File
- 10 core/modules/file/src/Plugin/views/wizard/File.php \Drupal\file\Plugin\views\wizard\File
- 10 core/modules/media/src/Plugin/media/Source/File.php \Drupal\media\Plugin\media\Source\File
- 10 core/modules/file/src/Plugin/migrate/source/d6/File.php \Drupal\file\Plugin\migrate\source\d6\File
- 10 core/modules/file/src/Plugin/migrate/source/d7/File.php \Drupal\file\Plugin\migrate\source\d7\File
Same name and namespace in other branches
- 8.9.x core/modules/file/src/Entity/File.php \Drupal\file\Entity\File
- 9 core/modules/file/src/Entity/File.php \Drupal\file\Entity\File
Defines the file entity class.
Plugin annotation
@ContentEntityType(
id = "file",
label = @Translation("File"),
label_collection = @Translation("Files"),
label_singular = @Translation("file"),
label_plural = @Translation("files"),
label_count = @PluralTranslation(
singular = "@count file",
plural = "@count files",
),
handlers = {
"storage" = "Drupal\file\FileStorage",
"storage_schema" = "Drupal\file\FileStorageSchema",
"access" = "Drupal\file\FileAccessControlHandler",
"views_data" = "Drupal\file\FileViewsData",
"list_builder" = "Drupal\Core\Entity\EntityListBuilder",
"form" = {
"delete" = "Drupal\Core\Entity\ContentEntityDeleteForm",
},
"route_provider" = {
"html" = "Drupal\file\Entity\FileRouteProvider",
},
},
base_table = "file_managed",
entity_keys = {
"id" = "fid",
"label" = "filename",
"langcode" = "langcode",
"uuid" = "uuid",
"owner" = "uid",
},
links = {
"delete-form" = "/file/{file}/delete",
}
)
Hierarchy
- class \Drupal\file\Entity\File extends \Drupal\Core\Entity\ContentEntityBase implements FileInterface uses EntityChangedTrait, EntityOwnerTrait
Expanded class hierarchy of File
Related topics
95 files declare their use of File
- AccessTest.php in core/
modules/ file/ tests/ src/ Kernel/ AccessTest.php - CKEditor5Test.php in core/
modules/ ckeditor5/ tests/ src/ FunctionalJavascript/ CKEditor5Test.php - ContentEntityTest.php in core/
modules/ migrate_drupal/ tests/ src/ Kernel/ Plugin/ migrate/ source/ ContentEntityTest.php - ContentModerationTest.php in core/
modules/ media_library/ tests/ src/ FunctionalJavascript/ ContentModerationTest.php - ContentTranslationFieldSyncRevisionTest.php in core/
modules/ content_translation/ tests/ src/ Kernel/ ContentTranslationFieldSyncRevisionTest.php
16 string references to 'File'
- ConfigTest::provideGetMessageText in core/
tests/ Drupal/ Tests/ Composer/ Plugin/ ProjectMessage/ ConfigTest.php - file.info.yml in core/
modules/ file/ file.info.yml - core/modules/file/file.info.yml
- file.views.schema.yml in core/
modules/ file/ config/ schema/ file.views.schema.yml - core/modules/file/config/schema/file.views.schema.yml
- FileViewsData::getViewsData in core/
modules/ file/ src/ FileViewsData.php - Returns views data for the entity type.
- FormTestDisabledElementsForm::buildForm in core/
modules/ system/ tests/ modules/ form_test/ src/ Form/ FormTestDisabledElementsForm.php - Form constructor.
File
- core/
modules/ file/ src/ Entity/ File.php, line 56
Namespace
Drupal\file\EntityView source
class File extends ContentEntityBase implements FileInterface {
use EntityChangedTrait;
use EntityOwnerTrait;
/**
* {@inheritdoc}
*/
public function getFilename() {
return $this
->get('filename')->value;
}
/**
* {@inheritdoc}
*/
public function setFilename($filename) {
$this
->get('filename')->value = $filename;
}
/**
* {@inheritdoc}
*/
public function getFileUri() {
return $this
->get('uri')->value;
}
/**
* {@inheritdoc}
*/
public function setFileUri($uri) {
$this
->get('uri')->value = $uri;
}
/**
* {@inheritdoc}
*/
public function createFileUrl($relative = TRUE) {
/** @var \Drupal\Core\File\FileUrlGeneratorInterface $file_url_generator */
$file_url_generator = \Drupal::service('file_url_generator');
return $relative ? $file_url_generator
->generateString($this
->getFileUri()) : $file_url_generator
->generateAbsoluteString($this
->getFileUri());
}
/**
* {@inheritdoc}
*/
public function getMimeType() {
return $this
->get('filemime')->value;
}
/**
* {@inheritdoc}
*/
public function setMimeType($mime) {
$this
->get('filemime')->value = $mime;
}
/**
* {@inheritdoc}
*/
public function getSize() {
$filesize = $this
->get('filesize')->value;
return isset($filesize) ? (int) $filesize : NULL;
}
/**
* {@inheritdoc}
*/
public function setSize($size) {
$this
->get('filesize')->value = $size;
}
/**
* {@inheritdoc}
*/
public function getCreatedTime() {
$created = $this
->get('created')->value;
return isset($created) ? (int) $created : NULL;
}
/**
* {@inheritdoc}
*/
public function isPermanent() {
return $this
->get('status')->value == static::STATUS_PERMANENT;
}
/**
* {@inheritdoc}
*/
public function isTemporary() {
return $this
->get('status')->value == 0;
}
/**
* {@inheritdoc}
*/
public function setPermanent() {
$this
->get('status')->value = static::STATUS_PERMANENT;
}
/**
* {@inheritdoc}
*/
public function setTemporary() {
$this
->get('status')->value = 0;
}
/**
* {@inheritdoc}
*/
public static function preCreate(EntityStorageInterface $storage, array &$values) {
// Automatically detect filename if not set.
if (!isset($values['filename']) && isset($values['uri'])) {
$values['filename'] = \Drupal::service('file_system')
->basename($values['uri']);
}
// Automatically detect filemime if not set.
if (!isset($values['filemime']) && isset($values['uri'])) {
$values['filemime'] = \Drupal::service('file.mime_type.guesser')
->guessMimeType($values['uri']);
}
}
/**
* {@inheritdoc}
*/
public function preSave(EntityStorageInterface $storage) {
parent::preSave($storage);
// The file itself might not exist or be available right now.
$uri = $this
->getFileUri();
$size = @filesize($uri);
// Set size unless there was an error.
if ($size !== FALSE) {
$this
->setSize($size);
}
}
/**
* {@inheritdoc}
*/
public static function preDelete(EntityStorageInterface $storage, array $entities) {
parent::preDelete($storage, $entities);
foreach ($entities as $entity) {
// Delete all remaining references to this file.
$file_usage = \Drupal::service('file.usage')
->listUsage($entity);
if (!empty($file_usage)) {
foreach ($file_usage as $module => $usage) {
\Drupal::service('file.usage')
->delete($entity, $module);
}
}
// Delete the actual file. Failures due to invalid files and files that
// were already deleted are logged to watchdog but ignored, the
// corresponding file entity will be deleted.
try {
\Drupal::service('file_system')
->delete($entity
->getFileUri());
} catch (FileException $e) {
// Ignore and continue.
}
}
}
/**
* {@inheritdoc}
*/
public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
/** @var \Drupal\Core\Field\BaseFieldDefinition[] $fields */
$fields = parent::baseFieldDefinitions($entity_type);
$fields += static::ownerBaseFieldDefinitions($entity_type);
$fields['fid']
->setLabel(t('File ID'))
->setDescription(t('The file ID.'));
$fields['uuid']
->setDescription(t('The file UUID.'));
$fields['langcode']
->setLabel(t('Language code'))
->setDescription(t('The file language code.'));
$fields['uid']
->setDescription(t('The user ID of the file.'));
$fields['filename'] = BaseFieldDefinition::create('string')
->setLabel(t('Filename'))
->setDescription(t('Name of the file with no path components.'));
$fields['uri'] = BaseFieldDefinition::create('file_uri')
->setLabel(t('URI'))
->setDescription(t('The URI to access the file (either local or remote).'))
->setSetting('max_length', 255)
->setSetting('case_sensitive', TRUE)
->addConstraint('FileUriUnique');
$fields['filemime'] = BaseFieldDefinition::create('string')
->setLabel(t('File MIME type'))
->setSetting('is_ascii', TRUE)
->setDescription(t("The file's MIME type."));
$fields['filesize'] = BaseFieldDefinition::create('integer')
->setLabel(t('File size'))
->setDescription(t('The size of the file in bytes.'))
->setSetting('unsigned', TRUE)
->setSetting('size', 'big');
$fields['status'] = BaseFieldDefinition::create('boolean')
->setLabel(t('Status'))
->setDescription(t('The status of the file, temporary (FALSE) and permanent (TRUE).'))
->setDefaultValue(FALSE);
$fields['created'] = BaseFieldDefinition::create('created')
->setLabel(t('Created'))
->setDescription(t('The timestamp that the file was created.'));
$fields['changed'] = BaseFieldDefinition::create('changed')
->setLabel(t('Changed'))
->setDescription(t('The timestamp that the file was last changed.'));
return $fields;
}
/**
* {@inheritdoc}
*/
public static function getDefaultEntityOwner() {
return NULL;
}
/**
* {@inheritdoc}
*/
protected function invalidateTagsOnSave($update) {
$tags = $this
->getListCacheTagsToInvalidate();
// Always invalidate the 404 or 403 response cache because while files do
// not have a canonical URL as such, they may be served via routes such as
// private files.
// Creating or updating an entity may change a cached 403 or 404 response.
$tags = Cache::mergeTags($tags, [
'4xx-response',
]);
if ($update) {
$tags = Cache::mergeTags($tags, $this
->getCacheTagsToInvalidate());
}
Cache::invalidateTags($tags);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AccessibleInterface:: |
public | function | Checks data value access. | 6 |
CacheableDependencyInterface:: |
public | function | The cache contexts associated with this object. | 21 |
CacheableDependencyInterface:: |
public | function | The maximum age for which this object may be cached. | 21 |
CacheableDependencyInterface:: |
public | function | The cache tags associated with this object. | 14 |
EntityChangedTrait:: |
public | function | Gets the timestamp of the last entity change for the current translation. | |
EntityChangedTrait:: |
public | function | Returns the timestamp of the last entity change across all translations. | |
EntityChangedTrait:: |
public | function | Sets the timestamp of the last entity change for the current translation. | |
EntityInterface:: |
public | function | Gets the bundle of the entity. | 1 |
EntityInterface:: |
public static | function | Constructs a new entity object, without permanently saving it. | 1 |
EntityInterface:: |
public | function | Creates a duplicate of the entity. | 2 |
EntityInterface:: |
public | function | Deletes an entity permanently. | 1 |
EntityInterface:: |
public | function | Enforces an entity to be new. | 1 |
EntityInterface:: |
public | function | Returns the cache tags that should be used to invalidate caches. | 3 |
EntityInterface:: |
public | function | Gets the key that is used to store configuration dependencies. | 1 |
EntityInterface:: |
public | function | Gets the configuration dependency name. | 1 |
EntityInterface:: |
public | function | Gets the configuration target identifier for the entity. | 1 |
EntityInterface:: |
public | function | Gets the entity type definition. | 1 |
EntityInterface:: |
public | function | Gets the ID of the type of the entity. | 1 |
EntityInterface:: |
public | function | Gets the original ID. | 1 |
EntityInterface:: |
public | function | Gets a typed data object for this entity object. | 1 |
EntityInterface:: |
public | function | Indicates if a link template exists for a given key. | 1 |
EntityInterface:: |
public | function | Gets the identifier. | 1 |
EntityInterface:: |
public | function | Determines whether the entity is new. | 1 |
EntityInterface:: |
public | function | Gets the label of the entity. | 3 |
EntityInterface:: |
public | function | Gets the language of the entity. | 1 |
EntityInterface:: |
public static | function | Loads an entity. | 1 |
EntityInterface:: |
public static | function | Loads one or more entities. | 1 |
EntityInterface:: |
public | function | Acts on a created entity before hooks are invoked. | 1 |
EntityInterface:: |
public static | function | Acts on deleted entities before the delete hook is invoked. | 7 |
EntityInterface:: |
public static | function | Acts on loaded entities. | 2 |
EntityInterface:: |
public | function | Acts on a saved entity before the insert or update hook is invoked. | 8 |
EntityInterface:: |
public | function | Gets a list of entities referenced by this entity. | 2 |
EntityInterface:: |
public | function | Saves an entity permanently. | 3 |
EntityInterface:: |
public | function | Sets the original ID. | 1 |
EntityInterface:: |
public | function | Generates the HTML for a link to this entity. | 1 |
EntityInterface:: |
public | function | Gets the URL object for the entity. | 1 |
EntityInterface:: |
public | function | Gets a list of URI relationships supported by this entity. | 1 |
EntityInterface:: |
public | function | Gets the entity UUID (Universally Unique Identifier). | 1 |
EntityOwnerTrait:: |
public | function | 1 | |
EntityOwnerTrait:: |
public | function | ||
EntityOwnerTrait:: |
public static | function | Returns an array of base field definitions for entity owners. | |
EntityOwnerTrait:: |
public | function | ||
EntityOwnerTrait:: |
public | function | ||
FieldableEntityInterface:: |
public static | function | Provides field definitions for a specific bundle. | 2 |
FieldableEntityInterface:: |
public | function | Gets a field item list. | |
FieldableEntityInterface:: |
public | function | Gets the definition of a contained field. | |
FieldableEntityInterface:: |
public | function | Gets an array of field definitions of all contained fields. | |
FieldableEntityInterface:: |
public | function | Gets an array of all field item lists. | |
FieldableEntityInterface:: |
public | function | Gets an array of field item lists for translatable fields. | |
FieldableEntityInterface:: |
public | function | Determines whether the entity has a field with the given name. | |
FieldableEntityInterface:: |
public | function | Checks whether entity validation is required before saving the entity. | |
FieldableEntityInterface:: |
public | function | Reacts to changes to a field. | |
FieldableEntityInterface:: |
public | function | Sets a field value. | |
FieldableEntityInterface:: |
public | function | Sets whether entity validation is required before saving the entity. | |
FieldableEntityInterface:: |
public | function |
Gets an array of all field values. Overrides EntityInterface:: |
|
FieldableEntityInterface:: |
public | function | Validates the currently set values. | 1 |
File:: |
public static | function |
Provides base field definitions for an entity type. Overrides FieldableEntityInterface:: |
|
File:: |
public | function |
Creates a file URL for the URI of this file. Overrides FileInterface:: |
|
File:: |
public | function |
Returns the file entity creation timestamp. Overrides FileInterface:: |
|
File:: |
public static | function |
Default value callback for 'owner' base field. Overrides EntityOwnerTrait:: |
|
File:: |
public | function |
Returns the name of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Returns the URI of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Returns the MIME type of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Returns the size of the file. Overrides FileInterface:: |
|
File:: |
protected | function | ||
File:: |
public | function |
Returns TRUE if the file is permanent. Overrides FileInterface:: |
|
File:: |
public | function |
Returns TRUE if the file is temporary. Overrides FileInterface:: |
|
File:: |
public static | function |
Changes the values of an entity before it is created. Overrides EntityInterface:: |
|
File:: |
public static | function |
Acts on entities before they are deleted and before hooks are invoked. Overrides EntityInterface:: |
|
File:: |
public | function |
Acts on an entity before the presave hook is invoked. Overrides EntityInterface:: |
|
File:: |
public | function |
Sets the name of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Sets the URI of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Sets the MIME type of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Sets the file status to permanent. Overrides FileInterface:: |
|
File:: |
public | function |
Sets the size of the file. Overrides FileInterface:: |
|
File:: |
public | function |
Sets the file status to temporary. Overrides FileInterface:: |
|
FileInterface:: |
constant | Indicates that the file is permanent and should not be deleted. | ||
RefinableCacheableDependencyInterface:: |
public | function | Adds a dependency on an object: merges its cacheability metadata. | |
RefinableCacheableDependencyInterface:: |
public | function | Adds cache contexts. | |
RefinableCacheableDependencyInterface:: |
public | function | Adds cache tags. | |
RefinableCacheableDependencyInterface:: |
public | function | Merges the maximum age (in seconds) with the existing maximum age. | |
RevisionableInterface:: |
public | function | Gets the loaded Revision ID of the entity. | |
RevisionableInterface:: |
public | function | Gets the revision identifier of the entity. | |
RevisionableInterface:: |
public | function | Checks if this entity is the default revision. | |
RevisionableInterface:: |
public | function | Checks if this entity is the latest revision. | |
RevisionableInterface:: |
public | function | Determines whether a new revision should be created on save. | |
RevisionableInterface:: |
public | function | Acts on a revision before it gets saved. | 3 |
RevisionableInterface:: |
public | function | Enforces an entity to be saved as a new revision. | |
RevisionableInterface:: |
public | function | Updates the loaded Revision ID with the revision ID. | |
RevisionableInterface:: |
public | function | Checks whether the entity object was a default revision when it was saved. | |
SynchronizableInterface:: |
public | function | Returns whether this entity is being changed as part of a synchronization. | |
SynchronizableInterface:: |
public | function | Sets the status of the synchronization flag. | |
TranslatableInterface:: |
public | function | Adds a new translation to the translatable object. | |
TranslatableInterface:: |
public | function | Gets a translation of the data. | |
TranslatableInterface:: |
public | function | Returns the languages the data is translated to. | |
TranslatableInterface:: |
public | function | Returns the translatable object in the language it was created. | |
TranslatableInterface:: |
public | function | Checks there is a translation for the given language code. | |
TranslatableInterface:: |
public | function | Determines if the current translation of the entity has unsaved changes. | |
TranslatableInterface:: |
public | function | Checks whether the translation is the default one. | |
TranslatableInterface:: |
public | function | Checks whether the translation is new. | |
TranslatableInterface:: |
public | function | Returns the translation support status. | |
TranslatableInterface:: |
public | function | Removes the translation identified by the given language code. | |
TranslatableRevisionableInterface:: |
public | function | Checks if untranslatable fields should affect only the default translation. | |
TranslatableRevisionableInterface:: |
public | function | Checks whether this is the latest revision affecting this translation. | |
TranslatableRevisionableInterface:: |
public | function | Checks whether the current translation is affected by the current revision. | |
TranslatableRevisionableInterface:: |
public | function | Checks if the revision translation affected flag value has been enforced. | |
TranslatableRevisionableInterface:: |
public | function | Marks the current revision translation as affected. | |
TranslatableRevisionableInterface:: |
public | function | Enforces the revision translation affected flag value. |