## General plugins (Local): Course recompletion

local_recompletion
Maintained by Dan Marsden, Catalyst IT
This plugin adds course level settings for recompletion - clearing all course and activity completion for a user based on the duration set notifying the student they need to return to the course and recomplete it.
130 sites
22 fans

This plugin adds course level settings for recompletion - clearing all course and activity completion for a user based on the duration set notifying the student they need to return to the course and recomplete it.

This plugin could be used to facilitate annual re-certification.

This plugin deletes existing course completion and activity completion data based on the schedule set by the teacher including the ability to delete Quiz and SCORM attempts within the course. You can also choose to retain the quiz and SCORM attempts within archive tables within the recompletion plugin (You will have to write your own reports to view this archived data though - no reports are currently included in this plugin.)

The following information is cleared from the course during recompletion:

• All activity grades cleared (and saved to standard grade history tables.)
• All activity completion and course completion flags removed. (with the option to archive this information)

The following activities have extra support:

1. Quiz - You can choose to delete all existing quiz attempt data with the option to archive the information or, you can keep the existing attempts and give the student the ability to add new attempts.

2. SCORM - You can choose to delete all existing SCORM attempt data with the option to archive the information.

3. Assignment - You can choose to give the student another attempt (if the assignment is configured to allow reopening and the maximum number of attempts has not been reached.

Other activities that store user data will have the activity completion data reset, but may require manual intervention as they are not yet supported fully. Get in touch privately if you would like to fund support for other activities with user data.

https://github.com/danmarsden/moodle-local_recompletion/issues

### Awards

• Wed, 7 Nov 2018, 4:56 AM
Hi Carlos - that is not something currently supported but it could be an interesting feature to add. If you're interested in funding that work drop me a private message and I can provide information on our rates.
• Wed, 7 Nov 2018, 6:05 AM
• Wed, 7 Nov 2018, 7:48 AM
my firstname @catalyst.net.nz should work
• Mon, 19 Nov 2018, 12:22 PM
Hi Dan - great plugin. We've been using manual SQL reset scripts (against MDL2), which are likely fragile.

One thing we do do already is preserve existing SCORM attempts - instead of deleting existing ones / moving to another table, we simply insert a new 'cmi.core.lesson_status' entry for each user, with a higher attempt number than the last one. This successfully starts a new attempt, but preserves the old ones - here's the SQL we use (referencing '__userIDs' and '__courseIDs' temp tables containing the list of users and courses we wish to reset):

-- ATTEMPTS - for every existing attempt, insert a new incomplete one (leaving existing ones untouched)
INSERT INTO mdl_scorm_scoes_track (userid, scormid, scoid, attempt, element, value, timemodified)

SELECT st.userid, st.scormid, st.scoid, (st.attempt + 1), st.element, 'incomplete', UNIX_TIMESTAMP()
FROM mdl_scorm_scoes_track AS st
JOIN mdl_course_modules AS cm ON cm.instance = st.scormid
JOIN mdl_course AS c ON c.id = cm.course
JOIN mdl_user AS usr ON usr.id = st.userid

WHERE st.userid IN (SELECT id FROM __userIDs)
AND st.element = 'cmi.core.lesson_status'
AND st.attempt = (SELECT MAX(attempt) FROM mdl_scorm_scoes_track WHERE userid = st.userid AND scormid = st.scormid)
AND c.id IN (SELECT id FROM __courseIDs)
;
• Mon, 19 Nov 2018, 1:35 PM
thanks for the feedback - will keep this in mind for future versions.
• Tue, 8 Jan 2019, 3:06 PM
Hi Dan, wondering if this plugin is available for v3.2?
• Tue, 8 Jan 2019, 3:33 PM
@Sam - no it isn't, and tbh the only thing you should be focusing on is upgrading to a stable supported version of Moodrelle. 3.2 has been out of security patch support for 8 months. You shouldn't be thinking about adding further plugins until you deal with your core
• Thu, 17 Jan 2019, 6:08 PM
Hi Dan - when you archive completion data in the custom tables of this plugin, is there any GUI to actually browse the archived data to allow administrators to actually know what deletions have occurred?
• Thu, 24 Jan 2019, 6:38 AM
@Olli - there is no GUI for browsing archived data at this stage. You would be best to use one of the SQL reporting tools to obtain this data if needed. Pull requests/funding for improvements are always welcome.
• Wed, 27 Feb 2019, 10:36 PM
Hello -

Quick question about the plugin - Does the course get reset after the amount of days the admin says for it to do so on a course level? Or does the course recomplete for each individual student based on the number of days to recompletion after they have taken the course?

In short, does the course recomplete on an entire course level, or at an individual student level?
• Thu, 28 Feb 2019, 6:43 AM
@MAG II - It clears all course and activity completion for a "user" based on the duration set. thanks.
• Fri, 1 Mar 2019, 10:51 PM
@Dan Marsden - Thanks for the clarification!
• Tue, 5 Mar 2019, 11:15 PM
Dan, our students upload files as part of their Assignments. Does the recompletion plugin remove and archive the existing file uploads?
• Wed, 6 Mar 2019, 4:26 AM
@Teresa, probably best for you to install the plugin and test it. When setting up the recompletion you have a few different options on how to deal with assignments.
• Thu, 7 Mar 2019, 1:39 AM
Thanks! @Dan