fix(vikon): use getFileByIdentityInfo dir_name for correct file paths
This commit is contained in:
@@ -99,34 +99,44 @@ class UpdateCoreAction
|
|||||||
$accessToken,
|
$accessToken,
|
||||||
'filemanager'
|
'filemanager'
|
||||||
);
|
);
|
||||||
$targetDir = $filesDir;
|
|
||||||
} else {
|
} else {
|
||||||
$response = $this->http->getWithToken(
|
$response = $this->http->getWithToken(
|
||||||
"sync/getFileNamesFromSubDirectoryByModule?dir={$dirId}&moduleId={$moduleId}",
|
"sync/getFileNamesFromSubDirectoryByModule?dir={$dirId}&moduleId={$moduleId}",
|
||||||
$accessToken,
|
$accessToken,
|
||||||
'filemanager'
|
'filemanager'
|
||||||
);
|
);
|
||||||
$targetDir = $filesDir . '/' . $dirId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$files = $response->json()['files'] ?? [];
|
$files = $response->json()['files'] ?? [];
|
||||||
if (empty($files)) return 0;
|
if (empty($files)) return 0;
|
||||||
|
|
||||||
File::makeDirectory($targetDir, 0755, true, true);
|
|
||||||
|
|
||||||
$synced = 0;
|
$synced = 0;
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
$name = $file['n'] ?? null;
|
|
||||||
$identity = $file['i'] ?? null;
|
$identity = $file['i'] ?? null;
|
||||||
if (!$name || !$identity) continue;
|
if (!$identity) continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
$infoResp = $this->http->getWithToken(
|
||||||
|
"sync/getFileByIdentityInfo?identity={$identity}",
|
||||||
|
$accessToken,
|
||||||
|
'filemanager'
|
||||||
|
);
|
||||||
|
$info = $infoResp->json();
|
||||||
|
|
||||||
|
$filename = $info['file_name'] ?? $file['n'] ?? null;
|
||||||
|
$dirName = $info['dir_name'] ?? null;
|
||||||
|
|
||||||
|
if (!$filename) continue;
|
||||||
|
|
||||||
|
$targetDir = $dirName ? $filesDir . '/' . $dirName : $filesDir;
|
||||||
|
File::makeDirectory($targetDir, 0755, true, true);
|
||||||
|
|
||||||
$content = $this->http->downloadWithToken(
|
$content = $this->http->downloadWithToken(
|
||||||
"sync/downloadFileBinaryForSync?identity={$identity}&moduleId={$moduleId}",
|
"sync/downloadFileBinaryForSync?identity={$identity}&moduleId={$moduleId}",
|
||||||
$accessToken,
|
$accessToken,
|
||||||
'filemanager'
|
'filemanager'
|
||||||
);
|
);
|
||||||
file_put_contents($targetDir . '/' . $name, $content);
|
file_put_contents($targetDir . '/' . $filename, $content);
|
||||||
$synced++;
|
$synced++;
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
Log::warning('Vikon FM: download failed', ['identity' => $identity, 'error' => $e->getMessage()]);
|
Log::warning('Vikon FM: download failed', ['identity' => $identity, 'error' => $e->getMessage()]);
|
||||||
|
|||||||
Reference in New Issue
Block a user