public function DatabaseFileUsageBackend::delete in Drupal 9
Same name and namespace in other branches
- 8 core/modules/file/src/FileUsage/DatabaseFileUsageBackend.php \Drupal\file\FileUsage\DatabaseFileUsageBackend::delete()
Removes a record to indicate that a module is no longer using a file.
Parameters
\Drupal\file\FileInterface $file: A file entity.
string $module: The name of the module using the file.
string $type: (optional) The type of the object that contains the referenced file. May be omitted if all module references to a file are being deleted. Defaults to NULL.
string $id: (optional) The unique ID of the object containing the referenced file. May be omitted if all module references to a file are being deleted. Defaults to NULL.
int $count: (optional) The number of references to delete from the object. Defaults to 1. Zero may be specified to delete all references to the file within a specific object.
Overrides FileUsageBase::delete
File
- core/
modules/ file/ src/ FileUsage/ DatabaseFileUsageBackend.php, line 66
Class
- DatabaseFileUsageBackend
- Defines the database file usage backend. This is the default Drupal backend.
Namespace
Drupal\file\FileUsageCode
public function delete(FileInterface $file, $module, $type = NULL, $id = NULL, $count = 1) {
// Delete rows that have an exact or less value to prevent empty rows.
$query = $this->connection
->delete($this->tableName)
->condition('module', $module)
->condition('fid', $file
->id());
if ($type && $id) {
$query
->condition('type', $type)
->condition('id', $id);
}
if ($count) {
$query
->condition('count', $count, '<=');
}
$result = $query
->execute();
// If the row has more than the specified count decrement it by that number.
if (!$result && $count > 0) {
$query = $this->connection
->update($this->tableName)
->condition('module', $module)
->condition('fid', $file
->id());
if ($type && $id) {
$query
->condition('type', $type)
->condition('id', $id);
}
$query
->expression('count', '[count] - :count', [
':count' => $count,
]);
$query
->execute();
}
parent::delete($file, $module, $type, $id, $count);
}