1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-28 17:02:04 +03:00

Zip Exports: Added attachment/image link resolving & JSON null handling

This commit is contained in:
Dan Brown
2024-10-21 12:13:41 +01:00
parent 7c39dd5cba
commit 06ffd8ee72
9 changed files with 79 additions and 10 deletions

View File

@ -0,0 +1,33 @@
<?php
namespace BookStack\References\ModelResolvers;
use BookStack\Uploads\Image;
class ImageModelResolver implements CrossLinkModelResolver
{
public function resolve(string $link): ?Image
{
$pattern = '/^' . preg_quote(url('/uploads/images'), '/') . '\/(.+)/';
$matches = [];
$match = preg_match($pattern, $link, $matches);
if (!$match) {
return null;
}
$path = $matches[1];
// Strip thumbnail element from path if existing
$originalPathSplit = array_filter(explode('/', $path), function (string $part) {
$resizedDir = (str_starts_with($part, 'thumbs-') || str_starts_with($part, 'scaled-'));
$missingExtension = !str_contains($part, '.');
return !($resizedDir && $missingExtension);
});
// Build a database-format image path and search for the image entry
$fullPath = '/uploads/images/' . ltrim(implode('/', $originalPathSplit), '/');
return Image::query()->where('path', '=', $fullPath)->first();
}
}