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 - ruby: restore by url
- python: restore by url - python: restore by url
- php-laravel: restore by url
- php: restore by url - php: restore by url
- java-spring: restore by url - java-spring: restore by url
- java: restore by url - java: restore by url

View File

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

View File

@ -8,6 +8,7 @@ use App\Models\VersionInfo;
use App\Repositories\FileRepository; use App\Repositories\FileRepository;
use App\Repositories\UserRepository; use App\Repositories\UserRepository;
use App\Repositories\VersionRepository; use App\Repositories\VersionRepository;
use App\Services\ServerConfig;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class ChangeDocumentVersionCommand class ChangeDocumentVersionCommand
@ -16,6 +17,7 @@ class ChangeDocumentVersionCommand
private FileRepository $fileRepository, private FileRepository $fileRepository,
private VersionRepository $versionRepository, private VersionRepository $versionRepository,
private UserRepository $userRepository, private UserRepository $userRepository,
private ServerConfig $serverConfig,
) {} ) {}
public function __invoke(ChangeDocumentVersionRequest $request): void public function __invoke(ChangeDocumentVersionRequest $request): void
@ -28,7 +30,19 @@ class ChangeDocumentVersionCommand
$currentVersion = $this->versionRepository->current($filePath); $currentVersion = $this->versionRepository->current($filePath);
$versionFile = $this->versionRepository->file($filePath, $request->version); $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( $versionInfo = VersionInfo::create(
Str::uuid(), Str::uuid(),

View File

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

View File

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