Archive for August 5, 2008

Import classes from Education Edge into Moodle

Here are notes on my successful import of 200 classes into Moodle. This is part of a project to create a major assignments calendar for our upper school that calculates the number of major assignments by student rather than by grade, providing a more accurate view of potential conflicts before they happen.

First, I wrote a Perl script to export classes from Education Edge into a text file. I used the following SQL query and then formatted the results pretty.

SELECT DISTINCT
ea7classes.ea7classesid,
ea7courses.coursename,
deptentries.description as coursedept,
ea7courses.ea7coursesid,
ea7courses.courseid,
ea7classes.classsection,
periodstable.entryid as period,
ea7faculty.userdefinedid as facultyid,
ea7records.nickname,
ea7records.lastname,
ea7records.passportnumber as facultyusername,
ea7rooms.roomid
FROM
ea7courses
inner join schools on (schools.schoolsid = ea7courses.schoolsid)
inner join ea7classes on (ea7classes.ea7coursesid = ea7courses.ea7coursesid)
inner join ea7sessions on (ea7sessions.ea7sessionsid = ea7classes.ea7sessionsid)
inner join ea7academicyears on (ea7academicyears.ea7academicyearsid = ea7sessions.ea7academicyearsid)
inner join ea7classterms on (ea7classterms.ea7classesid = ea7classes.ea7classesid)
inner join ea7terms on (ea7terms.ea7termsid = ea7classterms.ea7termsid)
inner join tableentries as termstable on (termstable.tableentriesid = ea7terms.termid)
left outer join ea7coursefilters on (ea7coursefilters.parentid = ea7courses.ea7coursesid and ea7coursefilters.filtertype=163)
left outer join filtervalues7 on (filtervalues7.parentid = ea7coursefilters.filtersid and filtervalues7.recordtype = 1098)
left outer join tableentries as deptentries on (deptentries.tableentriesid= filtervalues7.filteridvalue1)
left outer join ea7classtermmeetings on (ea7classtermmeetings.ea7classtermsid = ea7classterms.ea7classtermsid)
left outer join ea7timetableentries on (ea7timetableentries.ea7timetableentriesid = ea7classtermmeetings.ea7timetableentriesid)
left outer join tableentries as periodstable on (periodstable.tableentriesid = ea7timetableentries.period)
left outer join ea7facultyclasstermmeetings on (ea7facultyclasstermmeetings.ea7classtermmeetingsid = ea7classtermmeetings.ea7classtermmeetingsid)
left outer join ea7rooms on (ea7rooms.ea7roomsid = ea7classtermmeetings.ea7roomsid)
left outer join ea7faculty on (ea7faculty.ea7facultyid = ea7facultyclasstermmeetings.ea7facultyid)
left outer join ea7records on (ea7records.ea7recordsid = ea7faculty.ea7recordsid)
WHERE
schools.schoolid = 'US'
and ea7academicyears.description = '2008-2009'
and ea7courses.ea7coursesid <> 404

ORDER BY
ea7classes.ea7classesid,
ea7classes.classsection

Then I installed and ran Moodle's Upload Courses contributed module. What a nice job the author did with this. Once I cleared all of the ambiguous teacher names, the courses imported in a flash.

upload results

I decided to create one Moodle class for each course/teacher combination. In other words, if one teacher teaches one section of ninth grade English, and a second teacher teaches two sections, I would create two Moodle courses. Teachers are pretty autonomous at our school, and this structure parallels what most teachers did with Moodle when I created courses only upon request. In cases where the teachers actually co-teach the course, I will need to remove one course and double up the teachers in the other remaining.

I embedded teacher initials in course IDs to distinguish them and provide a key for subsequent Education Edge searches based on this information, but will have to go back and embed them in the course fullnames as well -- the students can't currently tell the courses apart, because they only see the full names!

Rather than importing enrollments as well, I will allow students to enroll themselves on the first day of classes.

I edited config.php to show a limited set of default blocks for all the new courses. Unfortunately, the major assignments block I am working on did not show up, so I will have to add that subsequently with a script.

I am still working on a major assignments block for our Moodle that borrows concepts and SQL queries from Gary Anderson and pulls course enrollments from Education Edge. More on that later.

African connected

Catlin Gabel hosts one exchange student from Maru-a-Pula School in Botswana each year. Yesterday, our new student arrived in the States for the first time, but he had been in touch with his host family for weeks … through Facebook. He also asked where to pick up a SIM card for his phone. This is the first time I have welcomed such a well-connected student from Botswana to the States! Now, if only we could find him a Euro-to-U.S. power adapter …

Laptop maintenance underway

Our summer helpers have developed a killer room for the process of completing annual maintenance on our faculty and staff laptop computers. Note the ingenious use of the built-in projection system to get everyone through the long days!

Set Default Encoder in iTunes (Applescript)

I dug up this command today for a project, with the help of Doug’s Applescripts for iTunes.


tell application "iTunes"
set current encoder to encoder "MP3 Encoder"
end tell

We like to set the default encoder for importing, especially on shared computers, in order to facilitate the conversion of audio files captured using Olympus audio recorders and Windows computers.

I also learned how to show all of the supported Applescript commands for an application: Script Editor -> File menu -> Open Dictionary. Now why didn’t I know that two months ago?

Unfortunately, iTunes does not include support to show the Kind column in the items view, which I was hoping to script.

iPhoto Workshop

Class in progress

Catlin Gabel teachers hone their iPhoto skills.

I just finished teaching a successful two-day workshop in iPhoto. Like many of our classes, I was so pleased that eight teachers and staff members chose to spend some of their summer time developing new skills that they may use this year. Photo management software inspires a lot of energy from our colleagues, so visual and personal yet also connected to their work here at school. Notable, a few attended simply because they were longtime PC users at work who were about to purchase a Mac at home. In this project-based workshop, I also learned much about the print publishing options of iPhoto, such as the ability to drop photos into individual day cells in the calendar tool. One teacher placed 160 photos into one twelve-month family calendar! I also noted how quickly I found myself teaching the students Flickr, in order to fetch Creative Commons photos to import and manipulate, when many had forgotten their digital cameras. One staff member created an entire musical slideshow about trout. Amazing.