diff --git a/src/CoreBundle/Controller/ResourceController.php b/src/CoreBundle/Controller/ResourceController.php index 39190a17a5..3166baf8ae 100644 --- a/src/CoreBundle/Controller/ResourceController.php +++ b/src/CoreBundle/Controller/ResourceController.php @@ -463,6 +463,37 @@ class ResourceController extends BaseController implements CourseControllerInter return $this->render('@ChamiloCore/Resource/info.html.twig', $params); } + /** + * @param Request $request + * @param CDocumentRepository $documentRepo + * @param Glide $glide + * + * @return Response + * @throws \League\Flysystem\FileNotFoundException + */ + public function getDocumentAction(Request $request, CDocumentRepository $documentRepo, Glide $glide): Response + { + $file = $request->get('file'); + $type = $request->get('type'); + // see list of filters in config/services.yaml + $filter = $request->get('filter'); + $type = !empty($type) ? $type : 'show'; + $criteria = [ + 'path' => "/$file", + 'course' => $this->getCourse(), + ]; + + $document = $documentRepo->findOneBy($criteria); + + if (null === $document) { + throw new NotFoundHttpException(); + } + /** @var ResourceNode $resourceNode */ + $resourceNode = $document->getResourceNode(); + + return $this->showFile($request, $resourceNode, $glide, $type, $filter); + } + /** * @param Request $request * diff --git a/src/CourseBundle/Resources/config/routing.yml b/src/CourseBundle/Resources/config/routing.yml index 68e1e0ca68..614da3556c 100644 --- a/src/CourseBundle/Resources/config/routing.yml +++ b/src/CourseBundle/Resources/config/routing.yml @@ -21,7 +21,6 @@ resources_list: requirements: file: .+ # allow "/" in {file} - resources_get_file: path: /resources/file/{id} defaults: @@ -32,7 +31,7 @@ resources_get_file: resources_document_get_file: path: /courses/{course}/document/{file} defaults: - _controller: Chamilo\CoreBundle\Controller\ResourceController::showAction + _controller: Chamilo\CoreBundle\Controller\ResourceController::getDocumentAction requirements: file: .+ # allow "/" in {file}