@@ -66,17 +66,35 @@ public function useBackendForStorage(IStorage $storage): bool {
6666
6767 public function getVersionsForFile (IUser $ user , FileInfo $ file ): array {
6868 $ storage = $ file ->getStorage ();
69+
6970 if ($ storage ->instanceOfStorage (SharedStorage::class)) {
7071 $ owner = $ storage ->getOwner ('' );
7172 $ user = $ this ->userManager ->get ($ owner );
7273
74+ $ fileId = $ file ->getId ();
75+ if ($ fileId === null ) {
76+ throw new NotFoundException ("File not found ( $ fileId) " );
77+ }
78+
79+ if ($ user === null ) {
80+ throw new NotFoundException ("User $ owner not found for $ fileId " );
81+ }
82+
7383 $ userFolder = $ this ->rootFolder ->getUserFolder ($ user ->getUID ());
74- $ nodes = $ userFolder ->getById ($ file ->getId ());
84+
85+ $ nodes = $ userFolder ->getById ($ fileId );
7586 $ file = array_pop ($ nodes );
7687
7788 if (!$ file ) {
7889 throw new NotFoundException ("version file not found for share owner " );
7990 }
91+ } else {
92+ $ userFolder = $ this ->rootFolder ->getUserFolder ($ user ->getUID ());
93+ }
94+
95+ $ fileId = $ file ->getId ();
96+ if ($ fileId === null ) {
97+ throw new NotFoundException ("File not found ( $ fileId) " );
8098 }
8199
82100 $ versions = $ this ->getVersionsForFileFromDB ($ file , $ user );
@@ -87,18 +105,23 @@ public function getVersionsForFile(IUser $user, FileInfo $file): array {
87105
88106 // Insert the entry in the DB for the current version.
89107 $ versionEntity = new VersionEntity ();
90- $ versionEntity ->setFileId ($ file -> getId () );
108+ $ versionEntity ->setFileId ($ fileId );
91109 $ versionEntity ->setTimestamp ($ file ->getMTime ());
92110 $ versionEntity ->setSize ($ file ->getSize ());
93111 $ versionEntity ->setMimetype ($ this ->mimeTypeLoader ->getId ($ file ->getMimetype ()));
94112 $ versionEntity ->setMetadata ([]);
95113 $ this ->versionsMapper ->insert ($ versionEntity );
96114
97115 // Insert entries in the DB for existing versions.
98- $ versionsOnFS = Storage::getVersions ($ user ->getUID (), $ userFolder ->getRelativePath ($ file ->getPath ()));
116+ $ relativePath = $ userFolder ->getRelativePath ($ file ->getPath ());
117+ if ($ relativePath === null ) {
118+ throw new NotFoundException ("Relative path not found for file $ fileId ( " . $ file ->getPath () . ') ' );
119+ }
120+
121+ $ versionsOnFS = Storage::getVersions ($ user ->getUID (), $ relativePath );
99122 foreach ($ versionsOnFS as $ version ) {
100123 $ versionEntity = new VersionEntity ();
101- $ versionEntity ->setFileId ($ file -> getId () );
124+ $ versionEntity ->setFileId ($ fileId );
102125 $ versionEntity ->setTimestamp ((int )$ version ['version ' ]);
103126 $ versionEntity ->setSize ((int )$ version ['size ' ]);
104127 $ versionEntity ->setMimetype ($ this ->mimeTypeLoader ->getId ($ version ['mimetype ' ]));
0 commit comments