La solución actualizada para Moodle 2.x
$ahora = time();
//si obtiene cursos candidatos a ser cerrados
if ($cursos = $DB->get_records_select('courses',"fecha_fin < $ahora")){
foreach($cursos as $curso){
//si aun esta visible, se oculta el curso
if (! $DB->set_field("course", "visible", 0, array("id"=>$course->id))) {
//si no se ha podido, mostramos mensaje de error
print_error("error: no se ha podido ocultar el curso ".$curso->shortname);
}
//ocultamos todas las secciones
if (! $DB->set_field("course", "hiddensections", 1, array("id"=>$course->id))) {
//si no se ha podido, mostramos mensaje de error
print_error("error: no se han podido ocultar las secciones - ".$curso->shortname);
}
}
}
No cambia mucho, solo hay que incluir el $DB para consultas y poner los parámetros en distinto formato.