Groups
Improving the Groups design in Moodle 1.9
Summary of problems:
- Can not define groupings at site level
- Groupings not implemented in modules
- Concept of orphaned groups
- Separate from metacourses
- Not integrated into Moodle core
- Unfinished and partially broken code
It would be very hard to improve current code without major refactoring and design changes. --Petr Škoda (škoďák) 02:37, 10 April 2007 (CDT)
Change groups/groupings relationship
At present both groups and groupings may belong to course – this only adds unneeded complexity and is a source of bugs in code. Each group to be in one and only one grouping. See proposed db structure.
Benefits:
- fewer tables
- normalized
- simpler SQL
- faster
Global groupings x Course groupings
Separate global and course groupings, add global tag to grouping table. Each global grouping has world wide unique identifier. Benefits:
- allows implementation of access control – local course groupings editable by course teachers, special capability in CONTEXT_SYSTEM for managing of global groupings
- easier backup/restore implementation – local groupings (+groups) always backed up, global groupings handled differently
- no need for orphaned groups anymore
Metacourses and enrolments
Global groupings can fully replace the metacourses. Global groupings should allow:
- automatic or manual sync of enrolments – reuse code from metacourses
- setting of default sync role id with possible exception for teachers, tutors, etc.
- import/export of grouping definitions
- mapping global groupings during course restore (course groupings always backed/restored)
Other code cleanup
Current group code does not follow Moodle coding guide, has several unfinished/broken/obsoleted parts, is not integrated into core, etc. To do:
- integrate setup and upgrade into main lib/db/*.*
- remove columns from groupings table that can be replaced by permissions
- reduce the number of functions, rewrite or fix them, move them into lib/grouplib.php
- split GUI in /group/ – global groupings definition form and course grouping setup
- implement module and course groupings support, fix all mods to use it (course edit form, mod edit form, etc.)
- fix legacy functions
- documentation
Needed time
1 month for implementation and testing.