src/Twig/Runtime/Scholar/ScholarNavigationRuntime.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Twig\Runtime\Scholar;
  3. use App\Entity\Exercise\Exercise;
  4. use App\Entity\Exercise\User\ExerciseResult;
  5. use App\Entity\Scholar\Chapter\Chapter;
  6. use App\Entity\Scholar\Lesson\Lesson;
  7. use App\Entity\Scholar\Module\Module;
  8. use App\Entity\Scholar\Training\Training;
  9. use App\Service\Scholar\ScholarNavigationSecurityService;
  10. use App\Service\Scholar\ScholarNavigationService;
  11. use Twig\Extension\RuntimeExtensionInterface;
  12. class ScholarNavigationRuntime implements RuntimeExtensionInterface
  13. {
  14.     public function __construct(
  15.         private ScholarNavigationService         $scholarNavigationService,
  16.         private ScholarNavigationSecurityService $scholarNavigationSecurityService,
  17.     )
  18.     {
  19.     }
  20.     public function getNavigationLink(?string $labelbool $active false, ?string $path nullstring $additionalClasses ''): string
  21.     {
  22.         if ($label === null) {
  23.             return '';
  24.         }
  25.         $classes 'w-100 menu-lesson-item';
  26.         if ($additionalClasses) {
  27.             $classes .= ' ' $additionalClasses;
  28.         }
  29.         if ($active) {
  30.             $classes .= ' active';
  31.         }
  32.         if ($path) {
  33.             return '<a href="' $path '" class="' $classes '">' $label '</a>';
  34.         }
  35.         $classes .= ' disabled';
  36.         return '<span class="' $classes '">' $label '</span>';
  37.     }
  38.     public function getNextInformationsLessonSummary(Training $trainingModule $moduleLesson $lesson): array|null
  39.     {
  40.         return $this->scholarNavigationService->getAfterLessonSummary($training$module$lesson);
  41.     }
  42.     public function getNextInformationsChapter(Training $trainingModule $moduleLesson $lessonChapter $chapter): array|null
  43.     {
  44.         return $this->scholarNavigationService->getAfterChapter($training$module$lesson$chapter);
  45.     }
  46.     public function getNextInformationsExerciseResult(Training $trainingModule $moduleLesson $lesson, ?ExerciseResult $exerciseResult): array|null
  47.     {
  48.         return $this->scholarNavigationService->getAfterExerciseResult($training$module$lesson$exerciseResult);
  49.     }
  50.     public function getNextInformationsLessonReview(Training $trainingModule $moduleLesson $lesson): array|null
  51.     {
  52.         return $this->scholarNavigationService->getAfterLessonReview($training$module$lesson);
  53.     }
  54.     public function getPreviousInformationsLessonSummary(Training $trainingModule $moduleLesson $lesson): array|null
  55.     {
  56.         return $this->scholarNavigationService->getBeforeLessonSummary($training$module$lesson);
  57.     }
  58.     public function getPreviousInformationsExercise(Training $trainingModule $moduleLesson $lessonExercise $exercise): array|null
  59.     {
  60.         return $this->scholarNavigationService->getBeforeExercise($training$module$lesson$exercise);
  61.     }
  62.     public function getPreviousInformationsChapter(Training $trainingModule $moduleLesson $lessonChapter $chapter): array|null
  63.     {
  64.         return $this->scholarNavigationService->getBeforeChapter($training$module$lesson$chapter);
  65.     }
  66.     public function getPreviousInformationsLessonReview(Training $trainingModule $moduleLesson $lesson): array|null
  67.     {
  68.         return $this->scholarNavigationService->getBeforeLessonReview($training$module$lesson);
  69.     }
  70.     public function getLessonBlockedReason(Training $trainingModule $moduleLesson $lesson): int
  71.     {
  72.         return $this->scholarNavigationSecurityService->lessonBlockedReason($training$module$lesson);
  73.     }
  74. }