/** * Update the cache for changes to $path * * @param string $path * @param array $cachedData */ public function update($path, $cachedData) { parent::update($path, $cachedData); // since parent::update() has already updated the size of the subdirs, // only apply the update to the owner's parent dirs // find last parent before reaching the shared storage root, // which is the actual shared dir from the owner $sepPos = strpos($path, '/'); if ($sepPos > 0) { $baseDir = substr($path, 0, $sepPos); } else { $baseDir = $path; } // find the path relative to the data dir $file = $this->storage->getFile($baseDir); $view = new \OC\Files\View('/' . $file['fileOwner']); // find the owner's storage and path /** @var \OC\Files\Storage\Storage $storage */ list($storage, $internalPath) = $view->resolvePath($file['path']); // update the parent dirs' sizes in the owner's cache $storage->getCache()->correctFolderSize(dirname($internalPath)); }