diff --git a/lib/FilesHooks.php b/lib/FilesHooks.php index db42a7660..0739b68c8 100755 --- a/lib/FilesHooks.php +++ b/lib/FilesHooks.php @@ -233,18 +233,7 @@ protected function addNotificationsForFileAction($filePath, $activityType, $subj $this->generateRemoteActivity($accessList['remotes'], $activityType, time(), $this->currentUser->getCloudId(), $accessList['ownerPath']); } - if ($this->config->getSystemValueBool('activity_use_cached_mountpoints', false)) { - $mountsForFile = $this->userMountCache->getMountsForFileId($fileId); - $affectedUserIds = array_map(function (ICachedMountInfo $mount) { - return $mount->getUser()->getUID(); - }, $mountsForFile); - $affectedPaths = array_map(function (ICachedMountFileInfo $mount) { - return $this->getVisiblePath($mount->getPath()); - }, $mountsForFile); - $affectedUsers = array_combine($affectedUserIds, $affectedPaths); - } else { - $affectedUsers = $accessList['users']; - } + $affectedUsers = $this->getAffectedUsers($accessList['users'], $fileId); [$filteredEmailUsers, $filteredNotificationUsers] = $this->getFileChangeActivitySettings($fileId, array_keys($affectedUsers)); @@ -361,6 +350,7 @@ public function fileMove($oldPath, $newPath) { return; } $this->oldAccessList = $this->getUserPathsFromPath($this->oldParentPath, $this->oldParentOwner); + $this->oldAccessList['users'] = $this->getAffectedUsers($this->oldAccessList['users'], $this->oldParentId); } @@ -420,7 +410,7 @@ protected function fileRenaming($oldPath, $newPath) { } $this->generateRemoteActivity($renameRemotes, Files::TYPE_FILE_CHANGED, time(), $this->currentUser->getCloudId()); - $affectedUsers = $accessList['users']; + $affectedUsers = $this->getAffectedUsers($accessList['users'], $fileId); [$filteredEmailUsers, $filteredNotificationUsers] = $this->getFileChangeActivitySettings($fileId, array_keys($affectedUsers)); foreach ($affectedUsers as $user => $path) { @@ -467,7 +457,7 @@ protected function fileMoving($oldPath, $newPath) { return; } $accessList = $this->getUserPathsFromPath($parentPath, $parentOwner); - $affectedUsers = $accessList['users']; + $affectedUsers = $this->getAffectedUsers($accessList['users'], $fileId); $oldUsers = $this->oldAccessList['users']; $beforeUsers = array_keys($oldUsers); @@ -1197,4 +1187,26 @@ protected function addNotificationsForUser($user, $subject, $subjectParams, $fil $this->activityData->storeMail($event, $latestSend); } } + + /** + * Gets an array of the users that should be notified for a path + * + * @param $defaultUsers + * @param $fileId + * @return array|mixed + */ + protected function getAffectedUsers($defaultUsers, $fileId) { + if ($this->config->getSystemValueBool('activity_use_cached_mountpoints', false)) { + $mountsForFile = $this->userMountCache->getMountsForFileId($fileId); + $affectedUserIds = array_map(function (ICachedMountInfo $mount) { + return $mount->getUser()->getUID(); + }, $mountsForFile); + $affectedPaths = array_map(function (ICachedMountFileInfo $mount) { + return $this->getVisiblePath($mount->getPath()); + }, $mountsForFile); + return array_combine($affectedUserIds, $affectedPaths); + } + + return $defaultUsers; + } }