Development:Groups: Difference between revisions
Line 41: | Line 41: | ||
*rewrite UI in /group/ | *rewrite UI in /group/ | ||
*implement module and course groupings support, fix all mods to use it (course edit form, mod edit form, etc.) | *implement module and course groupings support, fix all mods to use it (course edit form, mod edit form, etc.) | ||
*fix legacy functions | *fix legacy functions | ||
*documentation | *documentation | ||
==Needed time== | ==Needed time== | ||
1 month for implementation and testing. | 1 month for implementation and testing. |
Revision as of 08:14, 17 July 2007
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
- 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)
Competing proposals
Change groups/groupings relationship
At present both groups and groupings may belong to course, you could use one group in several courses and groupings at the same time. This loose relationship of groups and groupings adds too much complexity and is a source of bugs in code.
Solution: Each group should be attached to exactly one grouping. The groups would not be shared in groupings anymore, instead groups could be linked using linkid. See attached db schema.
Benefits:
- fewer tables
- normalized
- simpler SQL
- faster
- much easier backup/restore implementation
- more compatible with old group implementation in 1.7
Linked groups
TODO
Group/grouping cloning
TODO
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
- rewrite UI in /group/
- 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.