You are here

function opigno_quiz_app_course_resume_get_path in Opigno Quiz App 7

1 call to opigno_quiz_app_course_resume_get_path()
opigno_quiz_app_course_resume in ./opigno_quiz_app.module
Page callback for resuming a course.

File

./opigno_quiz_app.module, line 132
Module file. Defines module hooks.

Code

function opigno_quiz_app_course_resume_get_path($course_nid) {
  global $user;
  $last_viewed_lesson_in_course = opigno_quiz_app_course_get_last_viewed($course_nid, $user->uid);

  // If the user has not viewed any quiz yet, go to the first one.
  if (!$last_viewed_lesson_in_course) {
    $lessons = opigno_quiz_app_course_lessons($course_nid);

    // If there is at least one lesson redirect to the first lesson.
    if (isset($lessons[$course_nid])) {
      $first_lesson = key($lessons[$course_nid]);
      return 'node/' . $first_lesson . '/take';
    }
    else {

      // If there is no lesson, redirect to front page.
      return '<front>';
    }
  }
  else {
    $last_viewed_lesson_in_course_result = $last_viewed_lesson_in_course['result_id'];
    $last_viewed_lesson_in_course = $last_viewed_lesson_in_course['quiz_nid'];

    // If the user has not finished the latest lesson he was in redirect him to that lesson.
    $lesson_to_go = 0;
    if (!opigno_quiz_app_user_finished_quiz_result($last_viewed_lesson_in_course, $last_viewed_lesson_in_course_result, $user->uid)) {
      $lesson_to_go = $last_viewed_lesson_in_course;
    }
    else {

      // If the user has finished the latest lesson he was in, try to go to the next one.
      $lessons = opigno_quiz_app_course_lessons($course_nid);
      if (isset($lessons[$course_nid])) {
        $current_position = array_search($last_viewed_lesson_in_course, array_keys($lessons[$course_nid]));

        // If the lesson he just finished was the last one, go to the first one.
        if ($current_position == count($lessons[$course_nid]) - 1) {

          // If it's the last course of the class, go back to the first lesson.
          //  Else, return <front> so other function can check the next course of the class.
          //          if ($is_last_course) {
          //            $first_lesson = key($lessons[$course_nid]);
          //            return 'node/' . $first_lesson . '/take';
          //          }
          //          else {
          return 'node/' . $course_nid;

          //          }
        }
        else {

          // Go to the next lesson.
          $keys = array_keys($lessons[$course_nid]);
          $next_lesson = $keys[array_search($last_viewed_lesson_in_course, $keys) + 1];
          $lesson_to_go = $next_lesson;
        }
      }
    }
    if ($lesson_to_go) {

      // Make sure the lesson still exists otherwise user will never go to the course.
      $lesson_node = node_load($lesson_to_go);
      if ($lesson_node) {
        return 'node/' . $lesson_to_go . '/take';
      }
      else {
        $lessons = opigno_quiz_app_course_lessons($course_nid);

        // If there is at least one lesson redirect to the first lesson.
        if (isset($lessons[$course_nid])) {
          $first_lesson = key($lessons[$course_nid]);
          return 'node/' . $first_lesson . '/take';
        }
        else {

          // If there is no lesson, redirect to front page.
          return '<front>';
        }
      }
    }
  }
}