Commit graph

169 commits

Author SHA1 Message Date
Paul Holden
ca02422d66 MDL-69214 user: correct participant table forced group SQL. 2020-07-07 14:31:31 +01:00
Andrew Nicols
8bcf74e9bc MDL-69026 user: Wrap sub-query in brackets
It is perfectly valid to have a query like:

Match None of the following:
- Role is ANY of the following:
-- 'Teacher'
-- 'Editing teacher'
-- 'Manager'; AND
- Keyword is NONE of the following:
-- 'Kevin'

However, due to the way in which the query is constructed, this leads to
a query which includes

    WHERE NOT ef.id IS NOT NULL
    AND NOT
        u.id IN (SELECT userid FROM {role_assignments} WHERE roleid IN (...) AND contextid IN (...))
    AND NOT
        NOT (u.firstname || ' ' || u.lastname LIKE '%Kevin%')

The use of NOT NOT is valid in Postgres, MariaDB, MySQL, and MSSQL, but
not in Oracle.

To counter this when the outer jointype is of type NONE, we must wrap
each of the inner WHERE clauses in a set of brackets, which makes the
query:

    WHERE NOT ef.id IS NOT NULL
    AND NOT
        (u.id IN (SELECT userid FROM {role_assignments} WHERE roleid IN (...) AND contextid IN (...)))
    AND NOT
        (NOT (u.firstname || ' ' || u.lastname LIKE '%Kevin%'))

Whilst Oracle does not support the use of `AND NOT NOT ...`, it does support
`AND NOT (NOT ...)`
2020-06-12 10:03:06 +08:00
Jun Pataleta
15823a94c1 Merge branch 'MDL-68989-master' of git://github.com/mickhawkins/moodle 2020-06-11 00:03:54 +08:00
Michael Hawkins
f2972e1dcb MDL-68989 user: Apply none filterset join correctly on keyword filter
Also improved behat coverage for filterset joins and keyword filtering.
2020-06-09 15:49:31 +08:00
Michael Hawkins
8ddfc963b9 MDL-68984 user: Ensure first/last name filtering is always applied
This ensures the firstname and surname filtering is applied in addition
to any other filtering, rather than using the filterset join type.
2020-06-09 12:36:11 +08:00
Jun Pataleta
618b13e1f5 Merge branch 'MDL-67883-squash' of https://github.com/Chocolate-lightning/moodle 2020-06-05 11:52:36 +08:00
Mathew May
16d77f1884 MDL-67883 core: Make core ready for MoodleNet. 2020-06-05 11:47:42 +08:00
Michael Hawkins
3d60881d5d MDL-68612 user: Participants filter row accessibility improvements
More clearly defining each filter row and its ability to remove
filter selections for screen readers.
2020-05-29 12:18:39 +08:00
Michael Hawkins
03cb6064ea MDL-68612 user: Unified filter deprecations - renderer and renderable 2020-05-29 12:18:39 +08:00
Michael Hawkins
d85315ee8c MDL-68612 user: Update participants group filtering to enforce groups
This is required to ensure regardless of user applied filters, only
members of groups visible to the user are ever fetched. This also
includes a fix to remove the groups filter option where no groups
mode is applied.
2020-05-29 10:10:33 +08:00
Michael Hawkins
a4bd55725b MDL-68829 user: Update participants SQL for Oracle/MSSQL compatibility
This refactors the SQL to join on a distinct list of users, removing
the need for GROUP BY statements, and fixing the related errors in
Oracle/MSSQL
2020-05-28 00:28:34 +02:00
Andrew Nicols
028ec17c94 MDL-68169 user: Add keyword filter
Part of MDL-67743
2020-05-27 10:49:44 +08:00
Andrew Nicols
fbcc657713 MDL-68169 user: Add accesssince filter
Part of MDL-67743
2020-05-27 10:49:43 +08:00
Andrew Nicols
fa3d57fe7e MDL-68169 user: Add enrolment instance filter
Part of MDL-67743
2020-05-27 10:49:43 +08:00
Andrew Nicols
de83d4357f MDL-68169 user: Add groups filter
Part of MDL-67743
2020-05-27 10:49:43 +08:00
Andrew Nicols
ffc933ad46 MDL-68169 user: Add roles filter
Part of MDL-67743
2020-05-27 10:49:43 +08:00
Andrew Nicols
77ba77f10a MDL-67917 user: Add skeleton for new participants filter
Part of MDL-67743

AMOS BEGIN
  CPY [select,core],[selectfiltertype,core_user]
AMOS END
2020-05-27 10:49:43 +08:00
Michael Hawkins
6a54e58a8c MDL-68348 user: User filter match types support - enrol method & status
Completed support for all join types (any/all/none) for enrolment
method and status filtering. This includes handling forced status
filtering where a user does not have the capability to view suspended
users, as well as handling front page (whole site) participants page.
2020-05-25 18:35:08 +08:00
Michael Hawkins
03397c817b MDL-68348 lib: User filter match types support - groups
Updated groups_get_members_join to support different filter match types
2020-05-25 18:35:08 +08:00
Michael Hawkins
25d9dabdcf MDL-68348 user: User filter match types support - keywords/last access
The last access implementation also fixes an existing bug,
where it was assumed never accessed would be 0, when it also needed to
handle null to return correct results. Related userlib unit tests also
updated to reflect this, as well as some incorrect comment wording.
2020-05-25 18:35:08 +08:00
Michael Hawkins
25d5be444f MDL-68348 user: User filter match types support - filterset and roles 2020-05-25 18:10:53 +08:00
Andrew Nicols
07c9106476 MDL-68463 user: Remove old selectall attribute 2020-05-18 20:03:38 +08:00
Michael Hawkins
86e71acc0c MDL-68246 user: Adding the participants_search class
This class introduces support for multiple values per filter to the
participants page.
2020-05-14 15:47:34 +08:00
Andrew Nicols
5615a772a6 MDL-68454 table: Move guessing of base URL to flexible 2020-05-04 11:52:19 +08:00
Andrew Nicols
56143dd622 MDL-68454 table: Move filterset functionality to flexible_table 2020-05-04 11:52:19 +08:00
Andrew Nicols
c00552b3b0 MDL-68454 table: Move get_context from dynamic to flexible 2020-05-04 11:52:19 +08:00
Andrew Nicols
ff475522fb MDL-68454 table: Drop get_unique_id_from_argument fn requirement
This was originally intended to be a way for the calling code to specify
data as part of the table construction which could then be used as
appropriate. When the filterset was created the requirement for this
function no longer existed.

Removing this to simplify the API.
2020-05-04 11:52:19 +08:00
Andrew Nicols
478039f99a MDL-68442 user: Rewrite participant status to work with dynamic tables 2020-04-28 10:21:45 +08:00
Simey Lameze
bc6f5f23ea MDL-68341 core_user: move and rename participants_table class 2020-04-09 07:08:44 +08:00
Shamim Rezaie
8a805e03a4 MDL-68148 core_user: set the fullname column as the header column
ref: https://www.w3.org/WAI/tutorials/tables/
2020-04-08 11:22:34 +10:00
Simey Lameze
1592c3c498 MDL-67914 core_table: implement dynamic table sorting 2020-04-01 15:13:31 +08:00
Simey Lameze
8146335ff4 MDL-67913 core_user: refactor participants page to use new filter API 2020-03-16 11:44:31 +08:00
Andrew Nicols
c43bdf5e13 MDL-67913 user: Add participants table filterset 2020-03-16 11:44:31 +08:00
Andrew Zito
1e67849c1f MDL-63316 participants: lastname sort for participants table 2020-02-28 14:34:18 -05:00
Eloy Lafuente (stronk7)
ee439d017e MDL-67115 core: php74 params order for implode()/join()
Passing parameters to implode() in reverse order is deprecated, use
implode($glue, $parts) instead of implode($parts, $glue).

This commit corresponds to phpunit and manual detections, core files.
2020-01-19 18:47:07 +01:00
Bas Brands
55193f70d8 MDL-66999 theme_boost: @extend remove extends for users 2019-12-12 11:27:59 +01:00
Jake Dallimore
b663c71560 Merge branch 'MDL-66804' of https://github.com/paulholden/moodle 2019-10-11 11:16:17 +08:00
Paul Holden
8208292f65 MDL-66804 user: consistent user access times in privacy export. 2019-09-30 23:02:50 +01:00
David Monllaó
386d109172 MDL-62191 analytics: Support for bulk actions 2019-09-27 14:13:52 +08:00
David Monllaó
16cb4f32a0 MDL-66536 analytics: Indicators can add extra data for targets 2019-09-18 13:07:21 +08:00
David Monllaó
486e797c5f MDL-66091 analytics: Targets choose if there should be a report or not 2019-09-17 13:58:55 +08:00
Jun Pataleta
1cac0870b8 MDL-65950 core_user: Add hidden labels for the user checkboxes
* And update Behat tests accordingly and nuke the steps that are using
xpath.
2019-08-13 16:02:02 +08:00
Jun Pataleta
df92be9d67 MDL-65950 core_user: Use new core/checkbox-toggleall 2019-08-13 15:21:34 +08:00
Paul Holden
719f76313c MDL-57208 user: select default homepage from user preferences page. 2019-07-30 08:53:18 +01:00
David Monllaó
3cb0aaaa8c MDL-65633 analytics: New interfaces for time-splitting methods 2019-07-18 18:38:13 +02:00
Eloy Lafuente (stronk7)
3df9c60390 MDL-65248 core_user: Move some upcoming_activities_due strings
From course lang files to user lang files (where the target belongs to)

AMOS BEGIN
    MOV [target:upcomingactivitiesdue,core_course],[target:upcomingactivitiesdue,core_user]
    MOV [target:upcomingactivitiesdue_help,core_course],[target:upcomingactivitiesdue_help,core_user]
AMOS END
2019-04-23 13:53:42 +02:00
David Monllaó
982fef46f4 MDL-64783 analytics: Activities due insight forwards to calendar
The patch includes changes applied after the peer review.
2019-04-09 00:29:57 +02:00
David Monllaó
fccc728fcc MDL-64783 analytics: Performance improvements
- Removed redundant query to analytics_predict_samples
- Analysers API now uses recordsets to iterate through the analysable
  elements. They take the last analysed time into account.
- New method for targets so there is no need to always update the last
  analysis time. Useful for lightweight targets.
2019-04-09 00:29:57 +02:00
David Monllaó
20d7f527b0 MDL-64783 analytics: Discern prediction actions on insights generation 2019-04-09 00:29:51 +02:00
David Monllaó
bb7dccdb8e MDL-64783 analytics: Insights generation logic out of the target 2019-04-09 00:26:39 +02:00