src/Controller/DefaultController.php line 51
- <?php
- namespace App\Controller;
- use App\Repository\CharacterRepository;
- use App\Repository\CourseRepository;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- class DefaultController extends AbstractController
- {
- private $projectDir;
- private $publicDir;
- private $dataCharRoute;
- private $pictureCharRoute;
- public function __construct(string $projectDir, string $publicDir, string $dataCharRoute, string $pictureCharRoute){
- $this->projectDir=$projectDir;
- $this->publicDir=$publicDir;
- $this->dataCharRoute=$dataCharRoute;
- $this->pictureCharRoute=$pictureCharRoute;
- }
- #[Route('/', name: 'homepage')]
- public function index(): Response
- {
- return $this->render('default/index.html.twig', [
- 'controller_name' => 'DefaultController',
- ]);
- } # END DEFAULT
- #[Route('/menu', name: 'app_menu')]
- public function menu(): Response
- {
- return $this->render('default/menu.html.twig', [
- ]);
- }
- #[Route('/game-policy', name: 'gamePolicy')]
- public function policy(): Response
- {
- return $this->render('default/confidantialPolicy.html.twig', [
- ]);
- } # END MENU
- #[Route('/learn', name: 'app_learn')]
- public function learn(CourseRepository $courseRepository): Response
- {
- $courses = $courseRepository->findAll();
- return $this->render('learn/learn.html.twig', [
- 'courses' => $courses,
- ]);
- } # END LEARN
- #[Route('/open-source', name: 'app_open-source')]
- public function openSource(): Response
- {
- return $this->render('default/open-source.html.twig', [
- ]);
- }
- #[Route('/multilinguisme', name: 'app_multilinguisme')]
- public function multilinguisme(): Response
- {
- return $this->render('default/multilinguisme.html.twig', [
- ]);
- }
- #[Route('/game-policy', name: 'app_game-policy')]
- public function game_policy(): Response
- {
- return $this->render('default/confidantialPolicy.html.twig', [
- ]);
- }
- #[Route('/learn/dictionary/page/{page}', name: 'app_dictionary', requirements: ['page'=>'\d+'], defaults:['page'=>1], priority: 3)]
- public function dictionary(CharacterRepository $characterRepository, int $page): Response
- {
- $nbpages = ceil($characterRepository->count(criteria: []) / 10);
- if ($nbpages<$page){
- return $this->redirectToRoute('app_dictionary',['page'=>$nbpages]);
- } elseif ($page == 0){
- return $this->redirectToRoute('app_dictionary',['page'=>1]);
- }
- $characters = $characterRepository->findBy(criteria: [] ,limit: 10 , offset: ($page*10)-10);
- return $this->render('learn/dictionary.html.twig', [
- 'characters' => $characters,
- 'page'=>$page,
- 'nbpages'=>$nbpages,
- ]);
- } # END DICTIONARY VIEW
- #[Route('/learn/dictionary/course/{course}/page/{page}', name: 'app_course', requirements: ['page'=>'\d+'], defaults:['page'=>1], priority: 2)]
- public function course(CharacterRepository $characterRepository, int $page, string $course): Response
- {
- $nbpages = ceil($characterRepository->count(criteria: ["course"=> $course]) / 10);
- if ($nbpages<$page){
- return $this->redirectToRoute('app_course',['page'=>$nbpages,'course'=>$course]);
- } elseif ($page == 0){
- return $this->redirectToRoute('app_course',['page'=>1,'course'=>$course]);
- }
- $characters = $characterRepository->findBy(criteria: ["course"=> $course], orderBy: ["placeInCourse" => "ASC"], limit: 10, offset: ($page*10)-10);
- return $this->render('learn/dictionary.html.twig', [
- 'characters' => $characters,
- 'page'=>$page,
- 'nbpages'=>$nbpages,
- 'course'=>$course,
- ]);
- } # END COURSE
- #[Route('/learn/course/{course}/page/{page}', name: 'app_course_view')]
- public function courseView(CourseRepository $courseRepository, CharacterRepository $characterRepository, int $page, string $course): Response
- {
- if(!$course){
- return $this->redirectToRoute('app_course_view',['page'=>1,'course'=>"01"]);
- }
- $courseObject = $courseRepository->find($course);
- if (!$courseObject->getTitle()){
- return $this->redirectToRoute('app_course_view',['page'=>1,'course'=>"01"]);
- }
- if (!$page){
- return $this->redirectToRoute('app_course_view',['page'=>1,'course'=>"$course"]);
- }
- $nbpage = sizeof(array_values(array_diff(scandir($this->pictureCharRoute . $courseObject->getTitle() . "_png"),[".","..",".DS_Store"])));
- if($page>$nbpage) {
- return $this->redirectToRoute('app_course_view', ['page' => $nbpage, 'course' => $course]);
- }
- $character = $characterRepository->findBy(["course" => $course, "placeInCourse" => $page ]);
- if ($character){
- $character = $character[0];
- } else {
- $character = null;
- }
- //dd($character);
- return $this->render('learn/courseView.html.twig', [
- 'numberOfPagesAvailable' => $nbpage,
- 'course'=>$courseObject,
- 'numberOfPage'=>$page,
- 'character'=>$character,
- ]);
- } # END COURSE VIEW
- #[Route('/keyboard-policy', name: 'keyboardPolicy')]
- public function keyboard_policy(): Response
- {
- return $this->render('default/keyboardCGU.html.twig', [
- ]);
- }
- #[Route('/information', name: 'app_information')]
- public function information(): Response
- {
- return $this->render('default/information.html.twig', [
- ]);
- }
- }