Major progression oversight in Opigno Quiz App?

tkiehne
Forums
Greetings, We are using the current version of Opigno 1 with opigno_quiz_app 7.x-1.18 and either I am missing something or there is a major issue with how the module routes the user when resuming a class (via /node/[nid]/resume). The setup: We have a class with 12 courses in a specified order; each course is dependent on the previous as a required course, and each course has multiple lessons, all included in the list of lessons required for course validation. The last lesson in each course is a graded quiz with a pass rate of 70% and unlimited attempts while the rest are "theory" lessons with a pass rate of 0%. The situation: Users are presented with each course in the correct order so long as each course's graded quiz is passed; when a graded quiz is failed, however, the user is still passed on to the next course even though, technically, the user didn't pass the course which is a requirement for the next course. Expected outcome: If the user fails an end-of-course graded quiz, they should have to retake the quiz before progressing to the next course. Discussion: I've looked in detail at the opigno_quiz_app_module's opigno_quiz_app_course_resume() function and it is apparent that the passed status of a course is not considered when determining which course to continue. At most, the subroutine in opigno_quiz_app_course_resume_get_path() checks to see if the last lesson in the course was finished, not whether it was passed. I could hack this function to use some of the existing helpers to determine the passing state and direct accordingly, but I understand that there is a level of complexity that comes with determining how many attempts a user has left and what should happen when they run out, etc. It appears that setting a required course has no effect on the class progression... What am I missing?
tkiehne

I figured it out...

There is a default rule in Opigno called "Activate membership when required course is passed" that does a check after a quiz is passed that will check to see if the current course is completed and grant access to the dependent course(s). So I understand the mechanism now, but... The student account I was testing with must have already been a member of the subsequent course (OG member status != "pending") and so the user was passed through by the resume function whereas had it not been a full member would have been prevented from moving forward because the user would not have been granted access to the next course. This does present another problem for which I may open a separate thread.