mirror of
https://github.com/ONLYOFFICE/document-server-integration.git
synced 2026-04-07 14:06:11 +08:00
feat(php-laravel): restore file by url
This commit is contained in:
@ -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
|
||||||
|
|||||||
@ -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,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|||||||
@ -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(),
|
||||||
|
|||||||
@ -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,
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user