mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Dispatch event for all remove entry
Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
parent
3ff568342b
commit
2830eeac7e
1 changed files with 19 additions and 1 deletions
|
|
@ -573,7 +573,7 @@ class Cache implements ICache {
|
|||
}
|
||||
|
||||
/**
|
||||
* Recursively remove all children of a folder
|
||||
* Remove all children of a folder
|
||||
*
|
||||
* @param ICacheEntry $entry the cache entry of the folder to remove the children of
|
||||
* @throws \OC\DatabaseException
|
||||
|
|
@ -581,6 +581,8 @@ class Cache implements ICache {
|
|||
private function removeChildren(ICacheEntry $entry) {
|
||||
$parentIds = [$entry->getId()];
|
||||
$queue = [$entry->getId()];
|
||||
$deletedIds = [];
|
||||
$deletedPaths = [];
|
||||
|
||||
// we walk depth first through the file tree, removing all filecache_extended attributes while we walk
|
||||
// and collecting all folder ids to later use to delete the filecache entries
|
||||
|
|
@ -589,6 +591,12 @@ class Cache implements ICache {
|
|||
$childIds = array_map(function (ICacheEntry $cacheEntry) {
|
||||
return $cacheEntry->getId();
|
||||
}, $children);
|
||||
$childPaths = array_map(function (ICacheEntry $cacheEntry) {
|
||||
return $cacheEntry->getPath();
|
||||
}, $children);
|
||||
|
||||
$deletedIds = array_merge($deletedIds, $childIds);
|
||||
$deletedPaths = array_merge($deletedPaths, $childPaths);
|
||||
|
||||
$query = $this->getQueryBuilder();
|
||||
$query->delete('filecache_extended')
|
||||
|
|
@ -617,6 +625,16 @@ class Cache implements ICache {
|
|||
$query->setParameter('parentIds', $parentIdChunk, IQueryBuilder::PARAM_INT_ARRAY);
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
foreach (array_combine($deletedIds, $deletedPaths) as $fileId => $filePath) {
|
||||
$cacheEntryRemovedEvent = new CacheEntryRemovedEvent(
|
||||
$this->storage,
|
||||
$filePath,
|
||||
$fileId,
|
||||
$this->getNumericStorageId()
|
||||
);
|
||||
$this->eventDispatcher->dispatchTyped($cacheEntryRemovedEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue