@@ -248,10 +248,10 @@ public function importFiles(string $userId, string $targetPath,
248248 // create root folder
249249 $ userFolder = $ this ->root ->getUserFolder ($ userId );
250250 if (!$ userFolder ->nodeExists ($ targetPath )) {
251- $ folder = $ userFolder ->newFolder ($ targetPath );
251+ $ rootImportFolder = $ userFolder ->newFolder ($ targetPath );
252252 } else {
253- $ folder = $ userFolder ->get ($ targetPath );
254- if (!($ folder instanceof Folder)) {
253+ $ rootImportFolder = $ userFolder ->get ($ targetPath );
254+ if (!($ rootImportFolder instanceof Folder)) {
255255 return ['error ' => 'Impossible to create ' . '<redacted> ' . ' folder ' ];
256256 }
257257 }
@@ -276,6 +276,7 @@ public function importFiles(string $userId, string $targetPath,
276276 $ directoriesById [$ dir ['id ' ]] = [
277277 'name ' => preg_replace ('/\// ' , '-slash- ' , $ dir ['name ' ]),
278278 'parent ' => (isset ($ dir ['parents ' ]) && count ($ dir ['parents ' ]) > 0 ) ? $ dir ['parents ' ][0 ] : null ,
279+ 'modifiedTime ' => $ dir ['modifiedTime ' ] ?? null ,
279280 ];
280281 // what we should explore
281282 if (!array_key_exists ($ dir ['id ' ], $ directoryProgress )) {
@@ -291,7 +292,7 @@ public function importFiles(string $userId, string $targetPath,
291292 }
292293
293294 // create directories (recursive powa)
294- if (!$ this ->createDirsUnder ($ directoriesById , $ folder )) {
295+ if (!$ this ->createDirsUnder ($ directoriesById , $ rootImportFolder )) {
295296 return ['error ' => 'Impossible to create Drive directories ' ];
296297 }
297298
@@ -334,7 +335,7 @@ public function importFiles(string $userId, string $targetPath,
334335 && isset ($ directoriesById [$ fileItem ['parents ' ][0 ]], $ directoriesById [$ fileItem ['parents ' ][0 ]]['node ' ])) {
335336 $ saveFolder = $ directoriesById [$ fileItem ['parents ' ][0 ]]['node ' ];
336337 } else {
337- $ saveFolder = $ folder ;
338+ $ saveFolder = $ rootImportFolder ;
338339 }
339340
340341 $ fileName = $ this ->getFileName ($ fileItem , $ userId , in_array ($ fileItem ['id ' ], $ conflictingIds ));
@@ -369,13 +370,14 @@ public function importFiles(string $userId, string $targetPath,
369370 }
370371 } elseif (!$ saveFolder ->nodeExists ($ fileName )) {
371372 $ filePathInDrive = $ dirId === 'root ' ? '/ ' . $ fileItem ['name ' ] : $ directoriesById [$ dirId ]['name ' ] . '/ ' . $ fileItem ['name ' ];
372- $ this ->logFailedDownloadsForUser ($ folder , $ filePathInDrive );
373+ $ this ->logFailedDownloadsForUser ($ rootImportFolder , $ filePathInDrive );
373374 }
374375 }
375376 $ params ['pageToken ' ] = $ result ['nextPageToken ' ] ?? '' ;
376377 } while (isset ($ result ['nextPageToken ' ]));
377378 // this dir was fully imported
378379 $ directoryProgress [$ dirId ] = 1 ;
380+ $ this ->touchFolder ($ directoriesById [$ dirId ]);
379381 }
380382
381383 return [
@@ -385,6 +387,14 @@ public function importFiles(string $userId, string $targetPath,
385387 ];
386388 }
387389
390+ private function touchFolder (array $ dirInfo ): void {
391+ if (isset ($ dirInfo ['modifiedTime ' ]) && $ dirInfo ['modifiedTime ' ] !== null ) {
392+ $ d = new Datetime ($ dirInfo ['modifiedTime ' ]);
393+ $ ts = $ d ->getTimestamp ();
394+ $ dirInfo ['node ' ]->touch ($ ts );
395+ }
396+ }
397+
388398 /**
389399 * @param string $userId
390400 * @param string $dirId
0 commit comments