diff --git a/lib/FilesHooks.php b/lib/FilesHooks.php index f29def7d1..9b3eed01b 100755 --- a/lib/FilesHooks.php +++ b/lib/FilesHooks.php @@ -226,18 +226,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)); @@ -354,6 +343,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); } @@ -413,7 +403,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) { @@ -461,7 +451,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); @@ -1193,4 +1183,26 @@ protected function addNotificationsForUser($user, $subject, $subjectParams, $fil $this->activityData->storeMail($event, $latestSend); } } + + /** + * @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); + $affectedUsers = array_combine($affectedUserIds, $affectedPaths); + } else { + $affectedUsers = $defaultUsers; + } + + return $affectedUsers; + } }