Skip to content

Commit 6565ac0

Browse files
committed
correctly set directories last modified date
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
1 parent e27a330 commit 6565ac0

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

lib/Service/GoogleDriveAPIService.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)