diff --git a/CHANGELOG.md b/CHANGELOG.md index a854a83b..d26d3b4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/web/documentserver-example/php-laravel/app/Http/Controllers/API/Files/VersionController.php b/web/documentserver-example/php-laravel/app/Http/Controllers/API/Files/VersionController.php index 333d2f74..2e55a305 100644 --- a/web/documentserver-example/php-laravel/app/Http/Controllers/API/Files/VersionController.php +++ b/web/documentserver-example/php-laravel/app/Http/Controllers/API/Files/VersionController.php @@ -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, )); diff --git a/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionCommand.php b/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionCommand.php index 31a8280f..ce93fee3 100644 --- a/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionCommand.php +++ b/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionCommand.php @@ -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(), diff --git a/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionRequest.php b/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionRequest.php index e8d8d2e1..0982206e 100644 --- a/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionRequest.php +++ b/web/documentserver-example/php-laravel/app/UseCases/Document/Update/ChangeDocumentVersionRequest.php @@ -9,6 +9,7 @@ class ChangeDocumentVersionRequest public string $userDirectory, public string $fileType, public string $version, + public ?string $url, public string $userId, ) {} } diff --git a/web/documentserver-example/php-laravel/resources/views/editor.blade.php b/web/documentserver-example/php-laravel/resources/views/editor.blade.php index b6d2691c..84f03452 100644 --- a/web/documentserver-example/php-laravel/resources/views/editor.blade.php +++ b/web/documentserver-example/php-laravel/resources/views/editor.blade.php @@ -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()