Releases: jeanlucio/moodle-mod_playergroup
Releases · jeanlucio/moodle-mod_playergroup
Release list
v1.3.3
Fixed
- Activity icon on the course page and activity chooser is no longer recoloured to a flat purpose colour, so it now shows its own authored colour on both Moodle 4.5 and 5.x
- Action buttons (invite/edit/leave) on a group's card no longer wrap across rows and detach the participant-count button from the card's bottom edge when all three appear together
v1.3.2
Security
- The password field in the join, create, and edit group modals no longer offers to autofill the browser's saved site password
Fixed
- Pressing Enter in the join/create/edit group password field no longer crashes the page; it now submits exactly like clicking Save
v1.3.1
Added
- Declared the activity's chooser purpose (collaboration + assessment), so it now appears under its category tabs in "Add an activity or resource" instead of only under "All"
v1.3.0
Added
- Students can view the full member list of any group in the activity, not just their own, through a "View Members" button on each group card; mirrored in the Moodle mobile app, with the leader marked
- Teacher "Groups and Members" composition report: one row per member across every group (group, privacy, role, member name), with its own CSV/Excel export, alongside the existing activity-log report
- Member lists (web and mobile) now show the group leader first, then the rest alphabetically, instead of join order
Security
- Invite picker (web and mobile) and the
send_inviteweb service now consistently gate onmoodle/course:viewparticipantsand exclude suspended/expired enrolments, so a professor who hid the course participant list from students can no longer be bypassed by calling the service directly - Group join, create, and accept-invite operations are now serialised per activity instance with a lock, closing a race that could let a student join two groups at once or push a group over its member cap
join_group,accept_invite, andcreate_groupnow check the return value of Moodle'sgroups_add_member()instead of assuming success; a caller who is not actually enrolled in the course no longer receives a grade, completion state, or a group with no real member- Group descriptions rendered in the mobile app now go through the same sanitisation as the web view
- Group name is no longer used unsanitised as the "View Members" modal title
- Export format is now validated against installed dataformat plugins instead of being passed straight through
- Deleting the activity no longer destroys groups that already existed in the same grouping before the activity was added to the course
Changed
- Simplified the plugin icon SVG
- Failed group actions (join, leave, edit, create, invite) now show a plain message instead of Moodle's generic developer error dialog with a stack trace
- Edit Group and Leave Group buttons now show their label next to the icon instead of icon-only
Fixed
playergroup_cm_info_view()no longer queries the database on every course page render; the activity's opening/closing time now travels in the modinfo cache
v1.2.4
Added
- New public API method
group_info::get_badges_for_groups()returns the badge of several groups in a single query, letting other plugins (e.g. block_playerhud) display group badges in a list without per-group queries. Groups managed by PlayerGroup but without a configured badge fall back to the default shield emoji, matchingget_player_group_in_course()
v1.2.3
Security
send_invitenow verifies the recipient is enrolled in the course before creating the invite and sending the notification, preventing cross-context notification spam- Activity open/close window is now enforced in
create_group,edit_group, andaccept_invite(previously onlyjoin_groupenforced it)
Fixed
- Group name and description no longer double-encode HTML entities on edit;
rawname/rawdescriptionnow pass the raw database value and let Mustache handle the single HTML-attribute escaping, preventing progressive corruption of names containing&,<,>,", or' - Export now streams log entries row-by-row via a recordset instead of loading the full result into memory, preventing potential memory spikes on large activity logs
- Password column (
playergroup_meta.password) widened fromchar(64)tochar(255)so future PHPPASSWORD_DEFAULTalgorithm changes cannot silently truncate stored hashes
Removed
- Dropped the legacy
playergroup_get_completion_state()callback (dead code since Moodle no longer invokes it on 4.5+); completion is handled solely by thecustom_completionclass, whose coverage moved to a dedicated test