feat(php-laravel): restore file by url

This commit is contained in:
sshakndr
2025-01-27 12:39:31 +07:00
parent 63d9a4fb56
commit 6e624a1e2a
5 changed files with 20 additions and 1 deletions

View File

@ -2,6 +2,7 @@
- ruby: restore by url
- python: restore by url
- php-laravel: restore by url
- php: restore by url
- java-spring: restore by url
- java: restore by url

View File

@ -14,6 +14,7 @@ class VersionController extends Controller
$request->validate([
'filename' => 'required|string',
'version' => 'required|int',
'url' => 'nullable|string',
'fileType' => 'required|string',
'userId' => 'required|string',
]);
@ -24,6 +25,7 @@ class VersionController extends Controller
userDirectory: $request->ip(),
fileType: $request->fileType,
version: $request->version,
url: $request->url,
userId: $request->userId,
));

View File

@ -8,6 +8,7 @@ use App\Models\VersionInfo;
use App\Repositories\FileRepository;
use App\Repositories\UserRepository;
use App\Repositories\VersionRepository;
use App\Services\ServerConfig;
use Illuminate\Support\Str;
class ChangeDocumentVersionCommand
@ -16,6 +17,7 @@ class ChangeDocumentVersionCommand
private FileRepository $fileRepository,
private VersionRepository $versionRepository,
private UserRepository $userRepository,
private ServerConfig $serverConfig,
) {}
public function __invoke(ChangeDocumentVersionRequest $request): void
@ -28,7 +30,19 @@ class ChangeDocumentVersionCommand
$currentVersion = $this->versionRepository->current($filePath);
$versionFile = $this->versionRepository->file($filePath, $request->version);
copy($versionFile['path'], $absFilePath);
if ($request->url) {
$data = file_get_contents(
str_replace(
$this->serverConfig->get('url.public'),
$this->serverConfig->get('url.private'),
$request->url),
false,
stream_context_create(['http' => ['timeout' => 5]])
);
file_put_contents($absFilePath, $data, LOCK_EX);
} else {
copy($versionFile['path'], $absFilePath);
}
$versionInfo = VersionInfo::create(
Str::uuid(),

View File

@ -9,6 +9,7 @@ class ChangeDocumentVersionRequest
public string $userDirectory,
public string $fileType,
public string $version,
public ?string $url,
public string $userId,
) {}
}

View File

@ -342,6 +342,7 @@
filename: query.get('fileID'),
fileType: event.data.fileType,
version: event.data.version,
url: event.data.url,
userId: query.get('user') || config.editorConfig.user.id
}
const request = new XMLHttpRequest()