Note:

This site is no longer used and is in read-only mode. Instead please go to our new Moodle Developer Resource site.

Cohorts: Difference between revisions

From MoodleDocs
No edit summary
This page will not be migrated to new devdocs
 
(37 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Template:WillNotMigrate}}
{{Work in progress}}
{{Work in progress}}
{{Infobox Project
{{Infobox Project
|name = Cohorts
|name = Cohorts
|state = Proposal
|state = Work in progress
|tracker = MDL-21781
|tracker = MDL-21781
|discussion = n/a
|discussion = n/a
Line 8: Line 10:
}}
}}
{{Moodle 2.0}}
{{Moodle 2.0}}
=Goals=
=Goals=
Site-wide groups (aka cohorts) is one of the most requested missing features.
Site-wide groups (aka cohorts) is one of the most requested missing features.
* Simplify manual enrolments - instead of enrolling students one by one, it would be possible to enrol a cohort with single click.
# Simplify manual enrolments - instead of enrolling students one by one, it would be possible to enrol a cohort with single click.
* Cohort enrolment plugin - new enrolment plugin synchronising users in cohort with enrolments in a course (including role assignment and group membership)
# Cohort enrolment plugin - new enrolment plugin synchronising users in cohort with enrolments in a course (including role assignment and group membership)
* Synchronisation with external systems - some external systems do not know the actual courses, they only contain some user groups, at present we do not have a simple way to reuse these groups in Moodle.
# Synchronisation with external systems - some external systems do not know the actual courses, they only contain some user groups, at present we do not have a simple way to reuse these groups in Moodle.
* Partially replace meta courses - metacourse is a confusing concept for many people, there are several unsolved problems and performance issues.
# Partially replace meta courses
* Partially replace category enrolments - category enrolments have major design issues and are not compatible with proposed enrolment changes.
# Replace category enrolments - category enrolments have major design issues and are not compatible with incoming enrolment changes.
 
=DB tables=
=DB tables=
Table ''cohort'' definition of site-wide groups (aka cohorts)
Table ''cohort'' definition of site-wide groups (aka cohorts)
 
{| class="wikitable"
{| class="nicetable"
! Field
! Field
! Type
! Type
Line 38: Line 36:
|-
|-
| name
| name
| char(255)
| char(254)
|
| human readable cohort name
|-
| '''idnumber'''
| char(100)
|  
|  
| name of cohort
| unique identifier of the cohort, can be used in external systems
|-
|-
| description
| description
Line 46: Line 49:
|  
|  
| longer description
| longer description
|-
| descriptionformat
| int(2)
|
| text format
|-
| component
| char(100)
|
| component name of a plugin responsible for assignment of users (ex: auth_ldap, etc.), NULL means manual assignments
|-
|-
| timecreated
| timecreated
Line 57: Line 70:
| timestamp, last modification
| timestamp, last modification
|}
|}
Context specified can be system or course category level, defining of cohort a course context would not make much sense.
Context specified can be system or course category level, defining of cohort a course context would not make much sense.




Table ''cohort_members'' stores cohort members
Table ''cohort_members'' stores cohort members
 
{| class="wikitable"
{| class="nicetable"
! Field
! Field
! Type
! Type
Line 89: Line 100:
| timestamp, when added
| timestamp, when added
|}
|}
=New capabilities=
=New capabilities=
* moodle/cohort:assign (add/delete members)
* moodle/cohort:assign - add/delete members (only for manual assignment cohorts with source == null)
* moodle/cohort:manage (add/delete/move cohorts)
* moodle/cohort:manage -add/delete/move cohorts
* moodle/cohort:view (view membership and use cohort elsewhere)
* moodle/cohort:view - view membership and use cohort elsewhere
 
Context id defined in cohort table is used for access control only, the cohort may be actually used in any context (this may happen when moving courses, categories or cohorts).
=User interface=
# Cohort edit link in CONTEXT_SYSTEM and each CONTEXT_COURSECAT- most probably from the settings block
# Option for manual cohort enrolment - part of new enrolment UI
# New UI in cohort enrolment plugin
# New options in group creation UI
# New options for sync with external groups in auth or enrol plugins
=Implementation steps=
# add db tables and cohort membership UI
# add option to assign role to all cohort users (one time only, no sync)
# enrolment rewrite
# cohort enrolment plugin
=Upgrade=
Cohorts are designed to replace course category enrolments because the new enrolment plugin is not compatible with this.
=See also=
=See also=
* [[Enrolment rewrite and role tweaks proposal]]
* [[Enrolment rewrite and role tweaks proposal]]
* [[New permissions evaluation in 2.0]]
* [[New permissions evaluation in 2.0]]
* [[New permission overriding UI]]
* [[New permission overriding UI]]
 
* [[New enrolments in 2.0]]
[[Category:Roles]]
[[Category:Roles]]

Latest revision as of 07:59, 10 February 2025


Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.


Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.

Cohorts
Project state Work in progress
Tracker issue MDL-21781
Discussion n/a
Assignee Petr Škoda (škoďák)

Moodle 2.0


Goals

Site-wide groups (aka cohorts) is one of the most requested missing features.

  1. Simplify manual enrolments - instead of enrolling students one by one, it would be possible to enrol a cohort with single click.
  2. Cohort enrolment plugin - new enrolment plugin synchronising users in cohort with enrolments in a course (including role assignment and group membership)
  3. Synchronisation with external systems - some external systems do not know the actual courses, they only contain some user groups, at present we do not have a simple way to reuse these groups in Moodle.
  4. Partially replace meta courses
  5. Replace category enrolments - category enrolments have major design issues and are not compatible with incoming enrolment changes.

DB tables

Table cohort definition of site-wide groups (aka cohorts)

Field Type Default Description
id int(10) auto-incrementing
contextid int(10) foreign key, references context.id
name char(254) human readable cohort name
idnumber char(100) unique identifier of the cohort, can be used in external systems
description text longer description
descriptionformat int(2) text format
component char(100) component name of a plugin responsible for assignment of users (ex: auth_ldap, etc.), NULL means manual assignments
timecreated int(10) timestamp, creation date
timemodified int(10) timestamp, last modification

Context specified can be system or course category level, defining of cohort a course context would not make much sense.


Table cohort_members stores cohort members

Field Type Default Description
id int(10) auto-incrementing
cohortid int(10) foreign key, references cohort.id
userid int(10) foreign key, references user.id
timeadded int(10) timestamp, when added

New capabilities

  • moodle/cohort:assign - add/delete members (only for manual assignment cohorts with source == null)
  • moodle/cohort:manage -add/delete/move cohorts
  • moodle/cohort:view - view membership and use cohort elsewhere

Context id defined in cohort table is used for access control only, the cohort may be actually used in any context (this may happen when moving courses, categories or cohorts).

User interface

  1. Cohort edit link in CONTEXT_SYSTEM and each CONTEXT_COURSECAT- most probably from the settings block
  2. Option for manual cohort enrolment - part of new enrolment UI
  3. New UI in cohort enrolment plugin
  4. New options in group creation UI
  5. New options for sync with external groups in auth or enrol plugins

Implementation steps

  1. add db tables and cohort membership UI
  2. add option to assign role to all cohort users (one time only, no sync)
  3. enrolment rewrite
  4. cohort enrolment plugin

Upgrade

Cohorts are designed to replace course category enrolments because the new enrolment plugin is not compatible with this.

See also