Monday, August 13, 2012

Updating moodle course attributes en masse....

We have two third party k12 vendors that we use to provide most of our course material. This year, I set up a separate moodle instance to serve as a content server, with the intention of letting the vendors upload their content to the server.  One of the vendors ended up giving me access to the courses via their FTP server.  I ended up downloading course "shells" from their FTP server in the form of backed up files, .MBZ format and restoring them to our content server.  The other vendor came directly to our content server, I provided them with an account that was set up with course creator rights.

In the end, we had about 150 courses between the two vendors.  Then we meet with our customer to go over the courses and identify what changes we wanted to make to our master copies of the courses.  The idea is to update the masters on the content server and then restore them to our production version of moodle.  The list of changes that we wanted to make to every course was not trivial.  I immediately set off to see how much of the updating I could do "en masse", across every course.

This is a list of the changes for every course
  1. - turn on completion tracking
  2. - turn on student completion functionality for every section except the first
  3. - to move all course related documents,information or policy to the general section of each course.  The general section is the top section.  No student tracking active on any of the content in the general section.
  4. - to change the section navigation from topic to the topic name.
  5. Add an enrollment method of manual to the course.

Adding an enrollment method for the course

Must be that the vendor supplying the course did not specify an enrollment method, making us explicitly add that to each course, Course Admin | Users | Enrollment methods - then choose the type you want, in our case, manual.

I use MySQL Workbench for tasks like these, I find it more helpful than phpmyadmin.  Using workbench, I created the following couple of queries to help with this repetition of these tasks

1 - turn on completion tracking and activate tracking upon enrollment

UPDATE mdl_course
set completiontracking = 1, completionstartonenrol = 1

WHERE id BETWEEN xx AND xx

you could also use id IN(xx,xx,xx,xx) in the where clause.

2 - Update the display option for all course URLs to embedded

UPDATE mdl_url

set display = 1 //where 1 = embedded

WHERE course BETWEEN xx AND xx

3 - Find the section id of the first section in each course, so I could say to skip it when updating the rest of the course activity for completion tracking

SELECT m.course,m.section
FROM mdl_course_modules m
JOIN mdl_course_sections s on s.id = m.section
WHERE course = xx
ORDER BY s.section

4 - Then, using the course # and the first section # in the above query in the query below.

UPDATE mdl_course_modules
SET completion = 1, completionview = 1
WHERE course = xx AND section <> xx

We still had to go into each course and do a little work, like copying and pasting some boilerplate text in the course general section, but these updates helped alot!


No comments:

Post a Comment