Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Groups: Difference between revisions

From MoodleDocs
m (Added 'See also' + Category:Developer)
Line 61: Line 61:
==Needed time==
==Needed time==
1 month for implementation and testing.
1 month for implementation and testing.
== See also ==
* [[Groupings and Groups|Enrique Castro group specification]].
* [[Groupings OU|Open University group specification]].

Revision as of 14:53, 27 November 2007

Improving the Groups design in Moodle 1.9

Summary of problems:

  • Groupings not implemented in modules
  • Concept of orphaned groups
  • Not integrated into Moodle core
  • Potential group sharing problems

Other proposals

Change groups/groupings relationship

At present both groups and groupings are not linked strictly to one 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 could be/is a source of bugs in code.

Solution: Each group and grouping would link the course id directly. Groupings would be only limiting the number of usable groups in activities. This allows free sharing of groups in groupings inside course without potential problems. This idea was proposed by Enrique. See attached db schema.

groupsdb.png

course

  • groupingid - default grouping used in course (new activities, etc.)

course_modules

  • groupingid - grouping used in activity
  • grouponly - limit access to and visibility of activity based on group membership - if user is not member of at least one group in grouping, the activity is invisible for them; this needs a new shared option in course/moodleform_mod.php

groupings

renamed table

  • exclusivegroups - hint for UI group distribution tools - non overlapping groups requested
  • maxgroupsize - hint for UI group distribution tools - requested number of users in each group

groupings_groups

renamed table

groups

reverted to pre 1.8 state (with the password exception)

Benefits

  • fewer tables
  • normalized
  • simpler SQL
  • easier backup/restore implementation
  • more compatible with old group implementation in 1.7

Linked groups

Maybe in future - it would allow synchronizing of group membership from different courses; the idea is to have linkid in groups table and synchronize the groups membership in group functions for adding/removing of members for groups with the same linkid.

Group/grouping cloning

Cloning or duplicating is UI feature only, it helps to prefill new groups/groupings with existing data. In theory it could also copy existing grouping setups from other courses too.

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.


See also