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

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 $label, bool $active = false, ?string $path = null, string $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 $training, Module $module, Lesson $lesson): array|null
  39. {
  40. return $this->scholarNavigationService->getAfterLessonSummary($training, $module, $lesson);
  41. }
  42. public function getNextInformationsChapter(Training $training, Module $module, Lesson $lesson, Chapter $chapter): array|null
  43. {
  44. return $this->scholarNavigationService->getAfterChapter($training, $module, $lesson, $chapter);
  45. }
  46. public function getNextInformationsExerciseResult(Training $training, Module $module, Lesson $lesson, ?ExerciseResult $exerciseResult): array|null
  47. {
  48. return $this->scholarNavigationService->getAfterExerciseResult($training, $module, $lesson, $exerciseResult);
  49. }
  50. public function getNextInformationsLessonReview(Training $training, Module $module, Lesson $lesson): array|null
  51. {
  52. return $this->scholarNavigationService->getAfterLessonReview($training, $module, $lesson);
  53. }
  54. public function getPreviousInformationsLessonSummary(Training $training, Module $module, Lesson $lesson): array|null
  55. {
  56. return $this->scholarNavigationService->getBeforeLessonSummary($training, $module, $lesson);
  57. }
  58. public function getPreviousInformationsExercise(Training $training, Module $module, Lesson $lesson, Exercise $exercise): array|null
  59. {
  60. return $this->scholarNavigationService->getBeforeExercise($training, $module, $lesson, $exercise);
  61. }
  62. public function getPreviousInformationsChapter(Training $training, Module $module, Lesson $lesson, Chapter $chapter): array|null
  63. {
  64. return $this->scholarNavigationService->getBeforeChapter($training, $module, $lesson, $chapter);
  65. }
  66. public function getPreviousInformationsLessonReview(Training $training, Module $module, Lesson $lesson): array|null
  67. {
  68. return $this->scholarNavigationService->getBeforeLessonReview($training, $module, $lesson);
  69. }
  70. public function getLessonBlockedReason(Training $training, Module $module, Lesson $lesson): int
  71. {
  72. return $this->scholarNavigationSecurityService->lessonBlockedReason($training, $module, $lesson);
  73. }
  74. }