function print_whole_category_list_enrolment($category = NULL, $displaylist = NULL, $parentslist = NULL, $depth = -1, $showcourses = true)
{
    global $CFG;
    // maxcategorydepth == 0 meant no limit
    if (!empty($CFG->maxcategorydepth) && $depth >= $CFG->maxcategorydepth) {
        return;
    }
    if (!$displaylist) {
        make_categories_list($displaylist, $parentslist);
    }
    if ($category) {
        if ($category->visible or has_capability('moodle/category:viewhiddencategories', get_context_instance(CONTEXT_SYSTEM))) {
            print_category_info_enrolment_popper($category, $depth, $showcourses);
        } else {
            return;
            // Don't bother printing children of invisible categories
        }
    } else {
        $category->id = "0";
    }
    if ($categories = get_child_categories($category->id)) {
        // Print all the children recursively
        $countcats = count($categories);
        $count = 0;
        $first = true;
        $last = false;
        foreach ($categories as $cat) {
            $count++;
            if ($count == $countcats) {
                $last = true;
            }
            $up = $first ? false : true;
            $down = $last ? false : true;
            $first = false;
            print_whole_category_list_enrolment($cat, $displaylist, $parentslist, $depth + 1, $showcourses);
        }
    }
}
/// Unless it's an editing admin, just print the regular listing of courses/categories
if (!$adminediting) {
    /// Print form for creating new categories
    $countcategories = $DB->count_records('course_categories');
    if ($countcategories > 1 || $countcategories == 1 && $DB->count_records('course') > 200) {
        $strcourses = get_string('courses');
        $strcategories = 'Materias';
        $PAGE->navbar->add($strcategories);
        $PAGE->set_title("{$site->shortname}: {$strcategories}");
        $PAGE->set_heading($COURSE->fullname);
        $PAGE->set_button(update_category_button());
        echo $OUTPUT->header();
        echo $OUTPUT->heading($strcategories);
        echo $OUTPUT->skip_link_target();
        echo $OUTPUT->box_start('categorybox');
        print_whole_category_list_enrolment();
        echo $OUTPUT->box_end();
        print_course_search();
    } else {
        $PAGE->navbar->add($strfulllistofcourses);
        $PAGE->set_title("{$site->shortname}: {$strfulllistofcourses}");
        $PAGE->set_heading($COURSE->fullname);
        $PAGE->set_button(update_category_button());
        echo $OUTPUT->header();
        echo $OUTPUT->skip_link_target();
        echo $OUTPUT->box_start('courseboxes');
        print_courses(0);
        echo $OUTPUT->box_end();
    }
    echo $OUTPUT->container_start('buttons');
    if (has_capability('moodle/course:create', $systemcontext)) {