Skip to content

Commit

Permalink
Merge pull request #36893 from nextcloud/fix/avoid-file-events-on-nul…
Browse files Browse the repository at this point in the history
…l-path

Make sure to never trigger files hooks on a null path
  • Loading branch information
come-nc authored May 9, 2023
2 parents 20edd4b + 6034cc6 commit 185fe53
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 9 deletions.
18 changes: 10 additions & 8 deletions apps/dav/lib/Connector/Sabre/File.php
Original file line number Diff line number Diff line change
Expand Up @@ -422,14 +422,15 @@ private function getPartFileBasePath($path) {
}
}

/**
* @param string $path
*/
private function emitPreHooks($exists, $path = null) {
private function emitPreHooks(bool $exists, ?string $path = null): bool {
if (is_null($path)) {
$path = $this->path;
}
$hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path));
if ($hookPath === null) {
// We only trigger hooks from inside default view
return true;
}
$run = true;

if (!$exists) {
Expand All @@ -450,14 +451,15 @@ private function emitPreHooks($exists, $path = null) {
return $run;
}

/**
* @param string $path
*/
private function emitPostHooks($exists, $path = null) {
private function emitPostHooks(bool $exists, ?string $path = null): void {
if (is_null($path)) {
$path = $this->path;
}
$hookPath = Filesystem::getView()->getRelativePath($this->fileView->getAbsolutePath($path));
if ($hookPath === null) {
// We only trigger hooks from inside default view
return;
}
if (!$exists) {
\OC_Hook::emit(\OC\Files\Filesystem::CLASSNAME, \OC\Files\Filesystem::signal_post_create, [
\OC\Files\Filesystem::signal_param_path => $hookPath
Expand Down
5 changes: 4 additions & 1 deletion lib/private/Files/Node/HookConnector.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<?php

declare(strict_types=1);

/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
Expand Down Expand Up @@ -223,7 +226,7 @@ public function read($arguments) {
$this->dispatcher->dispatchTyped($event);
}

private function getNodeForPath($path) {
private function getNodeForPath(string $path): Node {
$info = Filesystem::getView()->getFileInfo($path);
if (!$info) {
$fullPath = Filesystem::getView()->getAbsolutePath($path);
Expand Down

0 comments on commit 185fe53

Please sign in to comment.