$app->get('/level/:level/:lesson/exercise', function ($level, $lesson) use($app, $user) { if (!$user->isLessonAvailable($level, $lesson)) { $app->redirect('/level/' . $user->getLevel()); } $lessonData = \PTA\App::getLesson($level, $lesson); # Get the preceding and following lessons for back/next style buttons $prev_lesson = $user->getPreviousLesson($level, $lesson); $next_lesson = $user->getNextLesson($level, $lesson); if ($prev_lesson !== null) { $prev_lesson = '/level/' . $prev_lesson[0] . '/' . $prev_lesson[1] . '/exercise'; } if ($next_lesson !== null) { $next_lesson = '/level/' . $next_lesson[0] . '/' . $next_lesson[1] . '/exercise'; } $bgImage = $user->getBackgroundImage(); $app->render('lesson-exercise.twig', ['pjax' => array_key_exists('X-PJAX', getallheaders()), 'bgImage' => $bgImage, 'lesson' => $lesson, 'level' => $level, 'movie' => "//ptaexercise.s3.amazonaws.com/flash/{$level}/{$lesson}/movie.swf", 'neturl' => \PTA\App::getNetConnectionUrl(), 'next_lesson' => $next_lesson, 'prev_lesson' => $prev_lesson, 'title_ar' => $lessonData['title_ar'], 'title_en' => $lessonData['title_en'], 'url' => \PTA\App::getExerciseURL($level, $lesson), 'user_id' => $user->getUserId()]); }); $app->get('/level/:level/:lesson/review', function ($level, $lesson) use($app, $user) { if (!$user->isLessonAvailable($level, $lesson)) { $app->redirect('/level/' . $user->getLevel()); } $app->render('lesson-review.twig', ['level' => $level, 'lesson' => $lesson, 'movie' => "//ptaexercise.s3.amazonaws.com/flash/{$level}/Content_review/{$lesson}/movie.swf"]); }); # Display exam for given level/lesson tuple $app->get('/level/:level/:lesson/exam', function ($level, $lesson) use($app, $user) { if (!$user->isLessonAvailable($level, $lesson)) { $app->redirect('/level/' . $user->getLevel()); } $lessonData = \PTA\App::getLesson($level, $lesson); $bgImage = $user->getBackgroundImage(); # Get the preceding and following lessons for back/next style buttons