<?php namespace BookStack\Http\Controllers;
use BookStack\Exceptions\ImageUploadException;
+use BookStack\Exceptions\NotFoundException;
use BookStack\Repos\EntityRepo;
use BookStack\Repos\ImageRepo;
use Illuminate\Filesystem\Filesystem as File;
parent::__construct();
}
+ /**
+ * Provide an image file from storage.
+ * @param string $path
+ * @return mixed
+ */
+ public function showImage(string $path)
+ {
+ $path = storage_path('uploads/images/' . $path);
+ if (!file_exists($path)) {
+ abort(404);
+ }
+
+ return response()->file($path);
+ }
+
/**
* Get all images for a specific type, Paginated
* @param string $type
* @param Request $request
* @return mixed
*/
- public function searchByType($type, $page = 0, Request $request)
+ public function searchByType(Request $request, $type, $page = 0)
{
$this->validate($request, [
'term' => 'required|string'
]);
$searchTerm = $request->get('term');
- $imgData = $this->imageRepo->searchPaginatedByType($type, $page, 24, $searchTerm);
+ $imgData = $this->imageRepo->searchPaginatedByType($type, $searchTerm, $page, 24);
return response()->json($imgData);
}
* @param Request $request
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response
*/
- public function getGalleryFiltered($filter, $page = 0, Request $request)
+ public function getGalleryFiltered(Request $request, $filter, $page = 0)
{
$this->validate($request, [
'page_id' => 'required|integer'
]);
$validFilters = collect(['page', 'book']);
- if (!$validFilters->contains($filter)) return response('Invalid filter', 500);
+ if (!$validFilters->contains($filter)) {
+ return response('Invalid filter', 500);
+ }
$pageId = $request->get('page_id');
- $imgData = $this->imageRepo->getGalleryFiltered($page, 24, strtolower($filter), $pageId);
+ $imgData = $this->imageRepo->getGalleryFiltered(strtolower($filter), $pageId, $page, 24);
return response()->json($imgData);
}
$this->validate($request, [
'file' => 'is_image'
]);
- // TODO - Restrict & validate types
+
+ if (!$this->imageRepo->isValidType($type)) {
+ return $this->jsonError(trans('errors.image_upload_type_error'));
+ }
$imageUpload = $request->file('file');
return response($e->getMessage(), 500);
}
+
return response()->json($image);
}
$this->imageRepo->destroyImage($image);
return response()->json(trans('components.images_deleted'));
}
-
-
}