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>';
}
}
}
}
}