96 Commits

Author SHA1 Message Date
Safat
ae8cae6d9a MDL-78551 core_group: Add hooks api for group and membership 2024-03-26 13:53:39 +11:00
Tomo Tsuyuki
d8a4cc9533 MDL-67186 group: add custom fields 2023-08-09 11:02:49 +10:00
Matthew Hilton
912bd8ad27 MDL-76270 group: Add bulk messaging actions
Added two new buttons to the group page to bulk enable or disable the
selected groups messaging settings.

Supporting Javascript modules were also added to disable/enable the
buttons depending on the groups selected in the picker.
2023-04-20 12:23:01 +10:00
Marina Glancy
8fc1486d36 MDL-77164 various: fix incorrect phpdocs 2023-04-13 11:35:06 +01:00
Mark Johnson
958da5b67e MDL-68093 groups: Add visibility and participation settings
These new settings are designed to enchance user privacy surrounding
groups. They allow groups to be configured so that users outside the
group cannot see the group, so that users in the group cannot see each
other, or so that users cannot see the group at all, even if they are in
it. This avoids issues where a group may be assigned based on sensitive
personal information (such as a person requiring special arrangements
due to a disability).

By default, groups are visible to all and available for participation in
activities, which maintains the current behaviour.

For performance, a new cache has been added to track the number of
groups on a course that are not visible to non-members. This allows us
to revert to the existing behaviour if the new features are not being
used at all on a course, and only apply the new visibility conditions if
they are.

Users who have the moodle/course:viewhiddengroups capability should be
concious of exposing hidden groups when showing their screen to other
users. The "Switch role to..." feature can be used to show a course page
on screen without exposing private availability conditions, for example.

The changes cover several specific areas:
* grouplib functions, which most code should use to get lists of groups
  and members (this includes the participants page).
* Activities supporting group overrides will not allow overrides for
  groups that are hidden from all users.
* Activities supporting separate/visible groups modes will only allow
  groups with the new "participation" flag enabled to be selected.
* Group messaging will be disabled for groups where members cannot see
  each other, or cannot see the group at all.
2023-03-14 08:52:25 +00:00
Katie Ransom
d916cd77ca MDL-71186 core_user: show custom user fields in group management screens 2021-04-15 15:28:17 +01:00
sam marshall
5e72715e4f MDL-71099 Lib: Move new user_fields class from core to core_user
This class would belong more appropriately within the 'user' API
(core_user) instead of within the 'core' API, since it is
directly related to user data.

Since the class has only just been added to Moodle, now is a good
time to move it.
2021-03-25 13:47:23 +00:00
sam marshall
558cc1b85e MDL-45242 Lib: Replace calls to deprecated functions
In all cases changes have been kept to a minimum while not making
the code completely horrible. For example, there are many instances
where it would probably be better to rewrite a query entirely, but
I have not done that (in order to reduce the risk of changes).
2021-03-10 10:57:10 +00:00
Paul Holden
21253ed622 MDL-67245 group: display user identity fields for group members. 2020-01-17 12:41:10 +00:00
Mark Nelson
7e0c4bde11 MDL-64568 core_group: delete conversation and members on group deletion 2019-03-13 15:42:03 +08:00
cescobedo
9eba829ae3 MDL-63281 core_message: Sync course group members with conversations 2018-10-26 10:55:59 +08:00
Mark Nelson
76540bec52 MDL-63280 core: removed 'message_conversation_area' table
These new fields have been added to the 'message_conversations'
table.
2018-10-25 18:05:20 +08:00
Mark Nelson
5571af1614 MDL-63280 core_message: added constants for enabled/disabled 2018-10-25 17:51:34 +08:00
Mark Nelson
f0e137c539 MDL-63280 core: minor changes after review
- Fixed reference to non-existent column 'timeread'.
- Fixed alignment issues.
- Fixed inconsistencies between upgrade.php and install.xml.
- Cleaned unit tests of unnecessary DB calls.
- Renamed 'get_does_conversation_area_enabled' to
  'is_conversation_area_enabled' and moved to api.php.
- Replaced "$mform->elementExists('enablemessaging')"
  check with a capability check.
- Removed the change of [] to array() in unrelated to upgrade code.
- Updated conversation 'timemodified' field when updating name.
- Bumped version based on latest master.
2018-10-25 17:51:04 +08:00
cescobedo
e7f467143f MDL-63280 core_message: Create group conversation from group edit page
Allows linking of course groups with conversations when group messaging feature is enabled.
2018-10-25 12:20:00 +08:00
Ankit Agarwal
50587d71a5 MDL-41312 groups: Remove old bulk events 2017-12-28 11:57:34 +05:30
Andrew Hancox
a63cd3e2ca MDL-50666 core: Add function get_viewable_roles to set role visibility 2017-12-19 13:53:23 +13:00
Damyon Wiese
bdb157653b Merge branch 'MDL-60174-master' of https://github.com/sammarshallou/moodle 2017-11-28 11:38:40 +08:00
sam marshall
a938e4096c MDL-60174 core_dml: fix miscellaneous incorrect recordset usage
The new recordset support for Postgres requires transactions and
will cause errors if recordsets are not closed correctly. This
commit fixes problems that were identified during unit tests, and
via some basic code analysis, across all core code. Most of these
are incorrect usage of recordset (forgetting to close them).
2017-11-27 11:10:33 +00:00
Shamim Rezaie
0897d6588e MDL-60188 groups: cache user's groups and groupings
The function groups_get_user_groups is called too often both before rendering the page and after the page is rendered (using ajax).
The function was executing a query joining 3 tables in each call. The plementation of the function has now modified to store the
query result in a request cache.
2017-11-27 10:46:35 +08:00
Damyon Wiese
f3ecea3af4 MDL-59368 groups: Peer review fixes
* Fix coalesce on postgres.
* The edit icon's alt shows the HTML entities causing
* enrol/tests/behat/add_to_group.feature Contains a '@doit' tag which I assume is there from testing.
* group/classes/output/user_groups_editable.php
** Missing MOODLE_INTERNAL check.
** Unused variables context_system and moodle_exception.
** The PHPDocs for the constructors are wrong.
** export_for_template() returns an array, not stdClass (according to parent docs).
** Change moodle_exception to coding_exception at the beginning.
* group/lib.php
** Missing docs for core_group_inplace_editable().
* user/classes/participants_table.php
** The docs for the class variables $groups, $course and $context need a '\' beforehand as they are in a namespace.
** I would prefer $this->context = $context; and $this->groups = ... to be done at the end of the constructor with the other class variable assignments.
** You could get rid of the class variable courseid if we are setting course and use $this->course->id instead.
** The function col_groups has @param \stdclass $row but it should be $data
* lib/amd/src/form-autocomplete.js and lib/amd/src/inplace_editable.js
** Some issues here CiBot has pointed out.
* lib/classes/output/inplace_editable.php
** @see should be on a new line.
2017-07-12 10:09:09 +08:00
Damyon Wiese
2fa35b8d16 MDL-59368 groups: Inplace editing for users groups 2017-07-12 10:07:57 +08:00
Vadim Dvorovenko
dd399f51ab MDL-45835 group: events for groupings assign/unassign 2016-03-24 10:59:35 +08:00
Mark Nelson
3ee812fab4 MDL-53072 group: minor changes to existing code
1) Tidied up conditional check and put additional variable on new line.
2) Prevented change of the default behaviour for 'groups_get_potential_members()'.
3) Added another behat test.
2016-02-26 11:42:14 +08:00
Niclas Tollstorff
7b96ffb044 MDL-53072 group: added 'only active' option when auto-creating groups 2016-02-26 11:42:14 +08:00
Dan Poltawski
53a2405c9c MDL-50357 groups: remove pointless option of groups_delete_group_members 2015-12-30 09:19:22 +00:00
Mark Nelson
04503c5cde MDL-50357 core_group: tidy up the function groups_delete_group_members 2015-12-30 09:27:05 +08:00
Marina Glancy
9c1561ef83 MDL-17929 groups: function to sync groups with enrolments 2015-04-22 14:36:38 +08:00
Frederic Massart
d996c620a9 MDL-46416 group: Allow group pictures to be deleted 2014-11-25 11:58:13 +08:00
Frederic Massart
21449d01b7 MDL-46416 group: Use a revision number for group pictures 2014-11-25 11:58:13 +08:00
Tony Butler
f84b9e65e4 MDL-46792 core_group: Check that $data->name is set before trimming
Signed-off-by: Tony Butler <tonyjbutler@gmail.com>
2014-08-15 09:43:36 +01:00
Gregory Faller
e4ebf7ef0f MDL-46524: Auto-create groups from existing group or grouping membership 2014-08-06 10:50:14 +09:30
Syxton
55c9a15041 MDL-45991 groups: Auto-create ignore grouped users
MDL-45991 groups: Auto-create groups with ungrouped users only

When using auto-create groups, sometimes it is needed to only create
groups with users that are not already inside a course group.  This
patch creates a checkbox that will ignore users that are in already
existing groups.  It alters the groups_get_potential_members function so
that the eligible users are retrieved entirely though sql.
2014-07-10 15:44:21 -04:00
Marina Glancy
24c32bdf2f MDL-44403 events: added public method to get eventdata 2014-03-04 15:16:15 +08:00
Adrian Greeve
60f55a2f72 MDL-42238 - Groups: Alternate name sql update to groups_get_potential_members(). 2013-10-10 14:05:53 +08:00
Frederic Massart
861b0510e5 MDL-39959: Replace Legacy events - Groups
This combines the following changes:

* Event for group member added
* Event for group member removed
* Event for group created
* Event for grouping created
* Event for group updated
* Event for grouping updated
* Event for group deleted
* Event for grouping deleted
* Adding tests for deleting functions
* Bulk remove of members uses low-level API

    The reason for this is that a bulk event has no value from a logging
    perspective as it is not granular. So now, the API is a bit slower,
    but the information the events contain makes sense, beside this is
    not (and should not be) used very often.

    The reason why the events_trigger_legacy() is kept is because we
    cannot create a new event for this, as we don't encourage developers
    to created bulk events, for the reasons mentioned above.

    I removed the call that gets the user record from the function
    groups_remove_member() as it was not required and only appeared
    to check if the user existed. It appears to be safe not to do
    this check as nothing would fail down the line.

* Bulk unassign of groupings uses low-level API

    As the previous commit, we keep the legacy event for now as it would
    be wrong to create a new event to replace it.

    Also, the code has been changed to call the low-level API to unassign
    groups from groupins, even though at the moment there are no
    events for that function.

* Bulk deletion of groups uses low-level API

    Again, we keep the legacy event because replacing it would force
    us to create a new event that does not make sense. See MDL-41312.

* Bulk deleting of groupings uses low-level API
* Asserting legacy event name in unit tests
* Minor SQL query and code improvements
2013-08-26 15:03:17 +08:00
Damyon Wiese
74df2951d1 Revert "MDL-39876 Change get_record('course') calls to get_course"
This reverts commit ab7632b74c331540c90229bf03d13aa2e6bdd9be.
2013-08-21 13:42:30 +08:00
sam marshall
ab7632b74c MDL-39876 Change get_record('course') calls to get_course 2013-08-15 11:31:20 +01:00
Mark Nelson
4e829d48d1 MDL-40468 libraries: removed usages of get_related_contexts_string() in core
Also tidied up the functions by removing unused parameters.
2013-07-19 15:17:50 +08:00
Petr Škoda
b0d1d941c9 MDL-40220 use new core_component::get_component_directory() 2013-07-16 22:42:37 +02:00
Petr Škoda
689096bc26 MDL-38654 do not test $CFG->gdversion
GD PHP extension is now required. Add-ons need to remove $CFG->gdversion tests. The worst case regression is that add-on will think GD is not available.
2013-03-22 16:57:55 +01:00
Dan Poltawski
f6623fe130 Merge branch 'MDL-27164-master' of git://github.com/micaherne/moodle 2013-01-22 12:51:51 +08:00
Sam Hemelryk
e17dbeeb1a MDL-34398 groups: implemented caching of group information. 2013-01-17 09:24:58 +13:00
Adrian Greeve
51e8d287f9 MDL-30797 - backup groups: Added a parameter to the groups_assign_grouping function.
$timeadded has now been included so that the backup / restore functions can now use
this API rather than duplicating the code.
2013-01-14 10:24:37 +08:00
Michael Aherne
d6af3d847f MDL-27164 groups Do not show multiple instances of the same role as multiple 2013-01-11 11:12:33 +00:00
Eloy Lafuente (stronk7)
c740703c18 Merge branch 'w40_MDL-31437_m24_cohortsync' of git://github.com/skodak/moodle
Conflicts:
	lib/upgrade.txt
2012-10-02 22:00:12 +02:00
Eloy Lafuente (stronk7)
8614cd72f0 Merge branch 'MDL-34657' of git://github.com/timhunt/moodle 2012-10-01 23:22:39 +02:00
Petr Škoda
7881024ec4 MDL-31437 add group sync option to enrol_cohort
This patch includes following changes and new features:
* Group sync in enrol_cohort plugin.
* Option for editing of role in existing cohort sync instance.
* Group memberships are now restored after enrolments.
* New enrol method for restore of protected group membership.
* New component callback 'restore_group_member' for restore of general plugin group membership.
* New component callback 'restore_role_assignment' for restore of general plugin role assignments.
* Implemented group membership protection in enrolment UI.
* Other minor fixes and cleanup.

Notes:
* The YUI base enrolment page is not reimplemented yet - see MDL-35618.
2012-09-28 21:00:00 +02:00
Tim Hunt
9695ff811b MDL-34657 user sorting: consistent sorting everywhere.
This commit coverts everything in the codebase to use the new
users_order_by_sql function when sorting lists of users. More details in
the bug.

Note that this does not change places where users are displayed in a
sortable table, and the sort order comes from the table.
2012-09-27 12:41:42 +01:00
Mark Nelson
5a45b936bf MDL-35637 group: Fix form submission error that occurs when GD version is not set. 2012-09-27 12:00:02 +08:00