+ public function getAllByType(Request $request, $type, $page = 0)
+ {
+ $uploadedToFilter = $request->get('uploaded_to', null);
+
+ // For user profile request, check access to user images
+ if ($type === 'user') {
+ $this->checkPermissionOrCurrentUser('users-manage', $uploadedToFilter ?? 0);
+ }
+
+ $imgData = $this->imageRepo->getPaginatedByType($type, $page, 24, $uploadedToFilter);
+ return response()->json($imgData);
+ }
+
+ /**
+ * Search through images within a particular type.
+ * @param $type
+ * @param int $page
+ * @param Request $request
+ * @return mixed
+ */
+ public function searchByType(Request $request, $type, $page = 0)
+ {
+ $this->validate($request, [
+ 'term' => 'required|string'
+ ]);
+
+ $searchTerm = $request->get('term');
+ $imgData = $this->imageRepo->searchPaginatedByType($type, $searchTerm, $page, 24);
+ return response()->json($imgData);
+ }
+
+ /**
+ * Get gallery images with a specific filter such as book or page
+ * @param $filter
+ * @param int $page
+ * @param Request $request
+ * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response
+ */
+ public function getGalleryFiltered(Request $request, $filter, $page = 0)