X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/80865b30a5d6a82e86d21e272ae58977d4430a64..refs/pull/236/head:/app/Http/Controllers/ImageController.php diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index 48e89ee41..621c23e85 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -1,14 +1,9 @@ -json($imgData); } + /** + * Search through images within a particular type. + * @param $type + * @param int $page + * @param Request $request + * @return mixed + */ + public function searchByType($type, $page = 0, Request $request) + { + $this->validate($request, [ + 'term' => 'required|string' + ]); + + $searchTerm = $request->get('term'); + $imgData = $this->imageRepo->searchPaginatedByType($type, $page, 24, $searchTerm); + return response()->json($imgData); + } + /** * Get all images for a user. * @param int $page @@ -55,10 +68,30 @@ class ImageController extends Controller return response()->json($imgData); } + /** + * Get gallery images with a specific filter such as book or page + * @param $filter + * @param int $page + * @param Request $request + */ + public function getGalleryFiltered($filter, $page = 0, Request $request) + { + $this->validate($request, [ + 'page_id' => 'required|integer' + ]); + + $validFilters = collect(['page', 'book']); + if (!$validFilters->contains($filter)) return response('Invalid filter', 500); + + $pageId = $request->get('page_id'); + $imgData = $this->imageRepo->getGalleryFiltered($page, 24, strtolower($filter), $pageId); + + return response()->json($imgData); + } /** * Handles image uploads for use on pages. - * @param string $type + * @param string $type * @param Request $request * @return \Illuminate\Http\JsonResponse */ @@ -66,13 +99,14 @@ class ImageController extends Controller { $this->checkPermission('image-create-all'); $this->validate($request, [ - 'file' => 'image|mimes:jpeg,gif,png' + 'file' => 'is_image' ]); $imageUpload = $request->file('file'); try { - $image = $this->imageRepo->saveNew($imageUpload, $type); + $uploadedTo = $request->has('uploaded_to') ? $request->get('uploaded_to') : 0; + $image = $this->imageRepo->saveNew($imageUpload, $type, $uploadedTo); } catch (ImageUploadException $e) { return response($e->getMessage(), 500); } @@ -98,7 +132,7 @@ class ImageController extends Controller /** * Update image details - * @param $imageId + * @param integer $imageId * @param Request $request * @return \Illuminate\Http\JsonResponse */ @@ -113,12 +147,11 @@ class ImageController extends Controller return response()->json($image); } - /** * Deletes an image and all thumbnail/image files * @param PageRepo $pageRepo - * @param Request $request - * @param int $id + * @param Request $request + * @param int $id * @return \Illuminate\Http\JsonResponse */ public function destroy(PageRepo $pageRepo, Request $request, $id)