|  |  | @ -220,15 +220,20 @@ class UserMountCache implements IUserMountCache { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param int $numericStorageId | 
			
		
	
		
			
				
					|  |  |  | 	 * @param string|null $user limit the results to a single user | 
			
		
	
		
			
				
					|  |  |  | 	 * @return CachedMountInfo[] | 
			
		
	
		
			
				
					|  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  | 	public function getMountsForStorageId($numericStorageId) { | 
			
		
	
		
			
				
					|  |  |  | 	public function getMountsForStorageId($numericStorageId, $user = null) { | 
			
		
	
		
			
				
					|  |  |  | 		$builder = $this->connection->getQueryBuilder(); | 
			
		
	
		
			
				
					|  |  |  | 		$query = $builder->select('storage_id', 'root_id', 'user_id', 'mount_point', 'mount_id', 'f.path') | 
			
		
	
		
			
				
					|  |  |  | 			->from('mounts', 'm') | 
			
		
	
		
			
				
					|  |  |  | 			->innerJoin('m', 'filecache', 'f' , $builder->expr()->eq('m.root_id', 'f.fileid')) | 
			
		
	
		
			
				
					|  |  |  | 			->where($builder->expr()->eq('storage_id', $builder->createPositionalParameter($numericStorageId, IQueryBuilder::PARAM_INT))); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		if ($user) { | 
			
		
	
		
			
				
					|  |  |  | 			$query->andWhere($builder->expr()->eq('user_id', $builder->createPositionalParameter($user))); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		$rows = $query->execute()->fetchAll(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		return array_filter(array_map([$this, 'dbRowToMountInfo'], $rows)); | 
			
		
	
	
		
			
				
					|  |  | @ -278,16 +283,17 @@ class UserMountCache implements IUserMountCache { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param int $fileId | 
			
		
	
		
			
				
					|  |  |  | 	 * @param string|null $user optionally restrict the results to a single user | 
			
		
	
		
			
				
					|  |  |  | 	 * @return ICachedMountInfo[] | 
			
		
	
		
			
				
					|  |  |  | 	 * @since 9.0.0 | 
			
		
	
		
			
				
					|  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  | 	public function getMountsForFileId($fileId) { | 
			
		
	
		
			
				
					|  |  |  | 	public function getMountsForFileId($fileId, $user = null) { | 
			
		
	
		
			
				
					|  |  |  | 		try { | 
			
		
	
		
			
				
					|  |  |  | 			list($storageId, $internalPath) = $this->getCacheInfoFromFileId($fileId); | 
			
		
	
		
			
				
					|  |  |  | 		} catch (NotFoundException $e) { | 
			
		
	
		
			
				
					|  |  |  | 			return []; | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		$mountsForStorage = $this->getMountsForStorageId($storageId); | 
			
		
	
		
			
				
					|  |  |  | 		$mountsForStorage = $this->getMountsForStorageId($storageId, $user); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 		// filter mounts that are from the same storage but a different directory
 | 
			
		
	
		
			
				
					|  |  |  | 		return array_filter($mountsForStorage, function (ICachedMountInfo $mount) use ($internalPath, $fileId) { | 
			
		
	
	
		
			
				
					|  |  | 
 |