Compare commits

..

261 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) d09dc52b0a Moodle release 3.6.1 2018-12-04 17:42:58 +01:00
Eloy Lafuente (stronk7) 6e19850f6e weekly release 3.6+ 2018-12-04 13:06:09 +01:00
Bas Brands 5d30474242 MDL-63223 theme_boost: flexbox for login pagin footer 2018-12-04 12:06:49 +08:00
Jun Pataleta 1b972c31ac Merge branch 'MDL-64307_36' of git://github.com/markn86/moodle into MOODLE_36_STABLE 2018-12-04 12:03:08 +08:00
Mark Nelson 29b6ac23e9 MDL-64307 core_message: do not include disabled conversations in count 2018-12-04 11:48:54 +08:00
Mark Nelson 44b6ffb68c MDL-64307 core: set all individual conversations to enabled 2018-12-04 11:44:59 +08:00
Jun Pataleta 79abbd9adc Merge branch 'MDL-64206_36' of git://github.com/markn86/moodle into MOODLE_36_STABLE 2018-12-04 11:13:37 +08:00
Tim Hunt 270524858e MDL-64286 qtype_gapselect: removed unneeded line of code
The extended Behat test show the qtype works fine without it.
2018-12-04 11:12:52 +08:00
Damyon Wiese 60f9a401a9 Merge branch 'MDL-64155-master' of git://github.com/vmdef/moodle into MOODLE_36_STABLE 2018-12-03 15:26:56 +08:00
Tim Hunt ac0b8201a9 MDL-63459 qtype_calculatedmulti: fix incorrect hint object type 2018-12-03 14:25:41 +08:00
Tim Hunt be27fc0fe3 MDL-63459 qtype_calculatedmulti: unit test should test this qtype
This also demonstrates the bug to be fixed
2018-12-03 14:25:17 +08:00
Mark Nelson ebd104448f MDL-64206 core: updated FB logo URL 2018-12-03 12:23:47 +08:00
Andrew Nicols c69f425a7a Merge branch 'MDL-64300_36' of git://github.com/stronk7/moodle into MOODLE_36_STABLE 2018-12-03 08:35:32 +08:00
Eloy Lafuente (stronk7) e38e718441 MDL-64300 upgrade: add 3.6.0 separation line to all upgrade scripts 2018-12-02 18:37:59 +01:00
Eloy Lafuente (stronk7) cb628a9a08 Moodle release 3.6 2018-12-02 00:18:46 +01:00
Eloy Lafuente (stronk7) 0cbcd08946 NOBUG: Change travis.yml to MOODLE_36_STABLE 2018-12-02 00:18:45 +01:00
Eloy Lafuente (stronk7) 5ff115743c Moodle release 3.6rc3 2018-11-30 18:02:17 +01:00
Eloy Lafuente (stronk7) ea8c34da48 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2018-11-30 18:02:15 +01:00
David Monllao 823fc75421 Merge branch 'MDL-64282' of git://github.com/stronk7/moodle 2018-11-30 13:02:47 +01:00
Jun Pataleta b5e4b37aae Merge branch 'MDL-64000-master' of git://github.com/andrewnicols/moodle 2018-11-30 16:13:38 +08:00
Andrew Nicols 84dad5bffa MDL-64000 usertours: Add final step to new tours
AMOS BEGIN
  CPY [tour_2_title_end,tool_usertours],[tour_final_step_title,tool_usertours]
AMOS END
2018-11-30 16:04:33 +08:00
Jun Pataleta 9101a01fb8 Merge branch 'MDL-64000-master' of git://github.com/andrewnicols/moodle 2018-11-30 13:46:09 +08:00
Elizabeth Dalton fbb219617b MDL-64000 usertours: Add tours for key 3.6 features
Tours originally written by Elizabeth Dalton, Mangled a little by Andrew
Nicols and Sander Bangma, and language tweaks by Helen Foster.

AMOS BEGIN
 CPY [pluginname,block_recentlyaccessedcourses],[tour3_title_recentcourses,tool_usertours]
 CPY [pluginname,block_myoverview],[tour3_title_overview,tool_usertours]
 CPY [groupmessages,core_message],[tour4_title_groupconvo,tool_usertours]
 CPY [favourites,moodle,core_message],[tour4_title_starred,tool_usertours]
AMOS END

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
Co-authored-by: Sander Bangma <sander@moodle.com>
Co-authored-by: Helen Foster <helen@moodle.org>
2018-11-30 13:23:53 +08:00
Jun Pataleta dad4bcf90c Merge branch 'MDL-64214-master' of git://github.com/junpataleta/moodle 2018-11-30 09:53:34 +08:00
Jun Pataleta 85354cb79e MDL-64214 calendar: Populate the groups select box on page load 2018-11-30 09:25:42 +08:00
AMOS bot 74afdef07d Automatically generated installer lang files 2018-11-30 00:07:31 +00:00
Eloy Lafuente (stronk7) bcd85def5c MDL-64282 versions: main version bump 2018-11-29 18:28:33 +01:00
Eloy Lafuente (stronk7) 085353b315 MDL-64282 versions: bump all versions and requires near release
version = 2018120300 release version
requires= 2018112800 current rc2 (week7roll1) version
2018-11-29 18:24:08 +01:00
Víctor Déniz Falcón 0eac5cf446 MDL-64155 block_recentlyaccessedcourses: considering enrolment status 2018-11-29 15:37:17 +00:00
Victor Deniz fdf2abf871 MDL-64155 core: get_recent_courses considers enrolment status 2018-11-29 15:37:17 +00:00
Víctor Déniz Falcón 87173da483 MDL-64155 core: use favourite API to generate SQL 2018-11-29 15:37:17 +00:00
Jun Pataleta 98fada12c4 Merge branch 'MDL-64228-master' of git://github.com/jleyva/moodle 2018-11-29 20:51:52 +08:00
Damyon Wiese 1a368ec351 Merge branch 'MDL-64264_master' of git://github.com/markn86/moodle 2018-11-29 14:46:55 +08:00
Jun Pataleta d71865419b Merge branch 'MDL-64227-master' of git://github.com/damyon/moodle 2018-11-29 14:07:26 +08:00
Simey Lameze 9cf58f070d MDL-64214 calendar: fix failing unit tests 2018-11-29 13:59:36 +08:00
Simey Lameze b13fe83adb MDL-64214 core_calendar: fix event types form element handling 2018-11-29 13:59:32 +08:00
Mark Nelson 44b92ecdfc MDL-64264 core_message: use non-deprecated WS for deletion
Also fixed typo in function name.
2018-11-29 12:41:57 +08:00
Damyon Wiese dda38f91ab Merge branch 'MDL-64245-master-fix-1' of git://github.com/ryanwyllie/moodle 2018-11-29 11:04:38 +08:00
Ryan Wyllie 9aaf61346f MDL-64245 message: fix scrollback for conversation loaded via contact 2018-11-29 10:46:13 +08:00
Jun Pataleta 7d82e35e39 MDL-64245 message: Ditch sender+lastmessage lang string for simplicity
Passing the last message (which can virtually contain any character) as
a parameter for the {{#str}} mustache helper can break the JSON parsing
which eventually leads to the breakage of the messaging UI.
So for simplicity, revert the addition of the 'conversationlastmessage'
language string and render the sender and the last message as separate
elements.
2018-11-29 10:45:22 +08:00
Ryan Wyllie 030f164ecc MDL-64245 message: fix contacts list height on Safari 10 2018-11-29 10:45:22 +08:00
Ryan Wyllie b154e2bf7b MDL-64245 message: fix loading convo by id with lots of messages 2018-11-29 10:45:22 +08:00
AMOS bot 0a83e9f713 Automatically generated installer lang files 2018-11-29 00:08:12 +00:00
Andrew Nicols cb14e3bc08 Merge branch 'MDL-63988-master' of git://github.com/bmbrands/moodle 2018-11-29 07:26:45 +08:00
Bas Brands d996eb941f MDL-63988 core_my: always honour showshortname and summary heading
* make the summaryview heading semantically correct for boost where titles
are h5 and headings within the blocks should have h6
* style the heading to use h5
* add clean theme .h5 class for dashboard blocks
2018-11-28 17:36:21 +01:00
Bas Brands f87181fdaf MDL-63988 core_my: add course shortname to dashboard blocks …
* all dashboard card templates moved to /course/templates/
* added aria labels for course short name
* removed ":" from other course aria strings to improve screenreader output
2018-11-28 17:36:20 +01:00
David Monllao df6d0b6d45 Moodle release 3.6rc2 2018-11-28 11:23:40 +01:00
David Monllao c8527895b0 NOBUG: Fixed SVG browser compatibility 2018-11-28 11:23:38 +01:00
Juan Leyva 676545bc66 MDL-64228 nextcloud: Handle the offline parameter in send_file
This will neew a follow-up issue.
This patch is just preventing downloading the HTML popup code when a file is not found.
Ideally, we should be able to serve the original file using the system OAuth.
2018-11-28 10:21:27 +01:00
Jun Pataleta 5aba38cbc1 Merge branch 'MDL-64223-master' of https://github.com/snake/moodle 2018-11-28 13:59:50 +08:00
Damyon Wiese da868a1e32 MDL-64227 nextcloud: Small layout for login links
When we need to show a login link, we don't want the normal page layout because we are in an iframe
already. Use the embedded layout to reduce the clutter of the page.
2018-11-28 12:51:31 +08:00
Andrew Nicols b1e01063a8 Merge branch 'MDL-64224-master' of https://github.com/snake/moodle 2018-11-28 12:02:34 +08:00
Andrew Nicols 3dd518b7d2 Merge branch 'MDL-64217-master' of git://github.com/ryanwyllie/moodle 2018-11-28 11:08:22 +08:00
Andrew Nicols c7891de160 Merge branch 'MDL-64207-master' of git://github.com/mihailges/moodle 2018-11-28 10:39:38 +08:00
Ryan Wyllie c337741524 MDL-64099 message: fix lazy load list overflow 2018-11-28 10:25:29 +08:00
Damyon Wiese 2a9e70a818 Merge branch 'MDL-64099-master-fix' of git://github.com/junpataleta/moodle 2018-11-28 10:15:35 +08:00
Jun Pataleta 494575bc55 MDL-64099 message: Show last message for individual messages 2018-11-28 09:27:06 +08:00
Jake Dallimore e412548506 MDL-64224 core_message: fix for isfavourite in api::get_conversation() 2018-11-28 09:09:07 +08:00
Eloy Lafuente (stronk7) d67e734678 Merge branch 'MDL-64220-master' of git://github.com/damyon/moodle 2018-11-27 16:47:10 +01:00
Bas Brands f3194f39bb MDL-64099 message: group conversation heading html
* Fix for IE11 group conversation header image sticking to group name
2018-11-27 13:15:22 +01:00
Bas Brands 4d446b8814 MDL-64099 message: last message container minimum size
* empty last message containers should have a minimum size
to ensure list-group-item element are in the right place.
2018-11-27 12:44:43 +01:00
Jake Dallimore 236f56d906 MDL-64223 libraries: PHP7.1 compatibility fixes for Jabber lib 2018-11-27 16:40:35 +08:00
Andrew Nicols d9c72b7df9 Merge branch 'MDL-64161-master' of git://github.com/abgreeve/moodle 2018-11-27 15:13:16 +08:00
Damyon Wiese ff015b5f7a MDL-64220 privacy: Clean path params
We need to consistently clean the path params before we use them. This
shows a difference on windows where dir separators are different.
2018-11-27 15:01:41 +08:00
Adrian Greeve 5c9bc966eb MDL-64161 gradereport_singleview: Single updates reported correctly.
If there is an error with the update of individual entries this is
also correctly displayed as not being updated.
2018-11-27 15:01:33 +08:00
Jun Pataleta 79182e7ae5 Merge branch 'MDL-64181-master-fix' of git://github.com/andrewnicols/moodle 2018-11-27 14:44:30 +08:00
Andrew Nicols 23e347bb32 MDL-64181 core: Ensure that self is included in parentage 2018-11-27 14:42:40 +08:00
Ryan Wyllie 5f79d8f314 MDL-64217 bootstrapbase: add icon-size- class to undo.less 2018-11-27 13:51:22 +08:00
Andrew Nicols 1add1cd644 Merge branch 'MDL-64047-master' of https://github.com/snake/moodle 2018-11-27 11:51:48 +08:00
Jun Pataleta e8eae37607 Merge branch 'MDL-64181-master' of git://github.com/damyon/moodle 2018-11-27 11:47:15 +08:00
Andrew Nicols c45d11de06 Merge branch 'MDL-64161-master' of git://github.com/abgreeve/moodle 2018-11-27 11:36:42 +08:00
Andrew Nicols 3bf11f7335 Merge branch 'MDL-64170-master-fix' of git://github.com/junpataleta/moodle 2018-11-27 11:07:13 +08:00
Jun Pataleta d82cc9f297 MDL-64170 block_myoverview: Behat fix 2018-11-27 10:58:04 +08:00
Jun Pataleta a75af1d053 Merge branch 'MDL-64099-master' of git://github.com/ryanwyllie/moodle 2018-11-27 10:53:04 +08:00
Ryan Wyllie 12d238100d MDL-64099 message: fix last message and date in group conversations 2018-11-27 10:51:39 +08:00
Bas Brands 99cbd6197a MDL-64099 message: correct dropdown container html
in the bootstrapbase overridden template <ul> should
be used for the dropdown container
2018-11-27 10:51:04 +08:00
Bas Brands 4631749c5a MDL-64099 message: Hide scrollbar on section collapsing 2018-11-27 10:51:04 +08:00
Bas Brands 347fb901a7 MDL-64099 message: Highlight the collapsible header on hover 2018-11-27 10:51:04 +08:00
Bas Brands dfd6eec2b4 MDL-64099 message: Make collapsible headers bold 2018-11-27 10:51:04 +08:00
Bas Brands 986d1a20f6 MDL-64099 message: Move timestamps all the way to the right 2018-11-27 10:48:52 +08:00
Bas Brands e2cf9af22d MDL-64099 message: conversation long sender names truncate 2018-11-27 10:48:52 +08:00
Bas Brands 2edfbf880a MDL-64099 message: Align group image to container top 2018-11-27 10:48:52 +08:00
Bas Brands e677e0e53b MDL-64099 message: Replace badge with rectangular shape 2018-11-27 10:48:52 +08:00
Bas Brands 051c675fd2 MDL-64099 message: Add a border in between messages and contacts 2018-11-27 10:48:52 +08:00
Bas Brands 71b13a84a4 MDL-64099 message: Add sender name to conversation preview in overview 2018-11-27 10:48:52 +08:00
Ryan Wyllie 302586a5bc MDL-64099 message: Change icons for select and selected messages 2018-11-27 10:47:59 +08:00
Ryan Wyllie 41cc9fbb57 MDL-64099 message: move delete messages icon to the right 2018-11-27 10:47:59 +08:00
Ryan Wyllie 2809ab7b52 MDL-64099 message: Align the icons and avatar at the top of the header 2018-11-27 10:47:59 +08:00
Ryan Wyllie c483a8eee7 MDL-64099 message: remove conversation name link underline 2018-11-27 10:47:59 +08:00
Ryan Wyllie a009ce6014 MDL-64099 message: de-emphasize participant count in group conversation 2018-11-27 10:47:59 +08:00
Ryan Wyllie a471607457 MDL-64099 message: increase margins between messages in conversations 2018-11-27 10:47:59 +08:00
Ryan Wyllie af3cfc7729 MDL-64099 message: bold senders name in message 2018-11-27 10:47:59 +08:00
Andrew Nicols 999030766b Merge branch 'MDL-64139-master' of git://github.com/ryanwyllie/moodle 2018-11-27 09:17:18 +08:00
Jake Dallimore e4088b7582 MDL-64047 core_message: test get_contact_requests() with blocked users 2018-11-27 08:55:35 +08:00
Jake Dallimore e492a5540d MDL-64047 core_message: contact request count must exclude blocked users 2018-11-27 08:46:25 +08:00
Damyon Wiese a2cb00b655 MDL-64181 javascript: Recursive template fix
This change prevents template rendering from waiting for itself, but does
allow it to wait for another async call to render.
2018-11-27 08:44:36 +08:00
David Monllao b14ad6e17d Merge branch 'MDL-64205-master-sarunconfirmeduser' of git://github.com/mudrd8mz/moodle 2018-11-26 15:42:26 +01:00
David Mudrák 87bb5954eb MDL-64205 privacy: Delete orphaned data request records on upgrade
As a result of the bug, some requests can be orphaned - the linked user
record may not exist any more. This is a cleanup of such records.
2018-11-26 14:17:04 +01:00
David Monllao 65c6723681 Merge branch 'MDL-64140-master' of https://github.com/snake/moodle 2018-11-26 13:27:24 +01:00
Ryan Wyllie 3528c86c12 MDL-64139 message: load conversation counts async 2018-11-26 14:36:35 +08:00
David Monllao 9f61908ccd MDL-64170 block_myoverview: Extend fix to aria label 2018-11-26 05:44:00 +01:00
David Monllao 5cd2cd385c Merge branch 'MDL-64170-master' of git://github.com/bmbrands/moodle 2018-11-26 05:43:02 +01:00
David Monllao bb63b48bcb Merge branch 'MDL-64173-master' of git://github.com/bmbrands/moodle 2018-11-26 05:36:57 +01:00
David Monllao 4bcdf02c5f Merge branch 'MDL-64172-master' of git://github.com/bmbrands/moodle 2018-11-26 04:52:34 +01:00
Adrian Greeve 3e2b8b21c6 MDL-64161 gradereport_singleview: Behat test for out of bounds grade. 2018-11-26 11:44:26 +08:00
Adrian Greeve f2462522f6 MDL-64161 gradereport_singleview: Stop updating grades with errors. 2018-11-26 11:44:26 +08:00
Jake Dallimore 36fabf72c0 MDL-64140 core_message: test unread counts with dataprovider in api
The 3 methods used to test this function are superceded by the cases in
the dataprovider, so let's remove these and use the provider instead.
2018-11-26 10:54:29 +08:00
Jake Dallimore b402a163e3 MDL-64140 core_message: add get_unread_conversation_counts() web service 2018-11-26 10:54:18 +08:00
Mihail Geshoski bde5947d13 MDL-64207 gradebook: Fix grader report misalignment 2018-11-26 10:43:25 +08:00
Andrew Nicols 8dbaf173b9 Merge branch 'MDL-64167-master-2' of https://github.com/snake/moodle 2018-11-26 09:07:38 +08:00
Jake Dallimore 7f6f45c460 MDL-64167 core_message: fix counts to exclude 'self' conversations 2018-11-26 08:52:55 +08:00
Jake Dallimore 425f5adcca MDL-64167 core_message: get_conversations() excludes self conversations
The UI can't handle these, so for now, let's not return them.
2018-11-26 08:52:55 +08:00
Jake Dallimore cb38961988 MDL-64167 core_message: get_conversations() handles self conversations
Those individual conversations created with one's self (via admin user
bulk actions) are now supported in get_conversations(). These had two
records with the same userid in the message_conversation_members table.
The following adjustments have been made to accomodate these:
- Member count adjusted to read 1, not 2 for 'self' conversations.
- Member information for the current user now returned for 'self'
conversations.
- The method now tracks 'self' conversations via $selfconversations.
2018-11-26 08:52:54 +08:00
Jake Dallimore ad5de40c49 MDL-64167 core_message: fix for sending bulk messages from site admin
This ensures the following:
- An admin/manager can send a message to all users, including themself,
without any errors.
2018-11-26 08:52:53 +08:00
Bas Brands 02383d7119 MDL-64173 block_myoverview: remove heading class from course title
Using <h4> on the course name titles is symantically incorrect
To align with the other views the heading tag has been removed.
2018-11-25 13:44:35 +01:00
Bas Brands ecefd2d5b5 MDL-64172 block_myoverview: use .text-primary to colour star icons
Using the .text-primary class allows colour to be overridden easily
This will back the dashboard icons look consistent with the messaging icons.
2018-11-25 12:44:04 +01:00
Bas Brands 224567a0f2 MDL-64170 block myoverview: change title string to course
change language string for Sort by "Title" to "Course"
2018-11-25 11:36:14 +01:00
Eloy Lafuente (stronk7) 599703e83d Moodle release 3.6rc1 2018-11-25 10:50:38 +01:00
David Mudrák 8b52601b1a MDL-64205 users: Do not delete the actual records of unconfirmed users
There is an automatic data privacy request created to get rid of all the
personal data upon the user deletion. With the actual user record
absent, the data privacy requests page throws an error. Let's do here
same as we do in `delete_incomplete_users_task` and let us not delete
the actual user record.
2018-11-25 06:55:23 +01:00
Eloy Lafuente (stronk7) 12008f51e2 Merge branch 'MDL-64186-master-enfix' of git://github.com/mudrd8mz/moodle 2018-11-24 00:26:18 +01:00
Eloy Lafuente (stronk7) 69f2118621 on-demand release 3.6beta+ 2018-11-23 16:36:55 +01:00
Eloy Lafuente (stronk7) 1b8caf1970 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2018-11-23 16:36:53 +01:00
Helen Foster 414da8c0be MDL-64186 lang: Import fixed English strings (en_fix)
Significant string change:

* togglemessagemenu, core_message - messages menu -> messaging drawer
  (new functionality)
2018-11-23 14:39:54 +01:00
Jun Pataleta beb7083381 Merge branch 'MDL-64057-master' of https://github.com/snake/moodle 2018-11-23 14:47:00 +08:00
Jake Dallimore c296c48f66 MDL-64057 core_message: fix bug with favourite count aggregation 2018-11-23 14:42:33 +08:00
Damyon Wiese 35889e23b7 Merge branch 'MDL-64180_master' of git://github.com/markn86/moodle 2018-11-23 12:21:13 +08:00
Mark Nelson 7d678923b3 MDL-64180 core_message: added new WS for contact request count 2018-11-23 11:34:55 +08:00
Mark Nelson 720cc99331 MDL-64180 core_message: change stdClass to int for count requests param
This will be used by a new web service and we do not want to fetch
the user unnecessarily in the call.

Also renamed the method for consistency.
2018-11-23 11:34:40 +08:00
Jun Pataleta 252f0e16ea Merge branch 'MDL-64057-master' of https://github.com/snake/moodle 2018-11-23 11:24:58 +08:00
Jun Pataleta 4fb38666b4 Merge branch 'MDL-64030-master' of git://github.com/andrewnicols/moodle 2018-11-23 11:14:57 +08:00
Jake Dallimore 0847aa120c MDL-64057 core_message: return conversations with soft-deleted users
Individual conversations with a soft-deleted user (including messages)
are now displayed in the conversation listing. This brings the behaviour
of individual conversations in line with group conversations, in that
the active user can still view messages.
2018-11-23 11:02:20 +08:00
Jake Dallimore b694b9b8e2 MDL-64057 core_message: use get_conversation_counts() during rendering 2018-11-23 11:02:20 +08:00
Jake Dallimore 28ff6ad1da MDL-64057 core_message: add get_conversation_counts() web service 2018-11-23 11:02:20 +08:00
Jake Dallimore 8e91aaabc9 MDL-64057 core_message: consolidate conversation counts into single call
Counts for types (individual, group) and favourites can be fetched with
a single API call.
2018-11-23 11:02:19 +08:00
Jake Dallimore 92bea7db2a MDL-64057 core_favourites: add get_join_sql_by_type() to service layer
This provides a way for external queries to include information about
favourited items.
2018-11-23 11:02:18 +08:00
AMOS bot 79a607eb3c Automatically generated installer lang files 2018-11-23 00:07:24 +00:00
Andrew Nicols 26ce2c0a81 MDL-64030 tool_dataprivacy: Process requests when system purpose not set 2018-11-23 07:54:22 +08:00
Eloy Lafuente (stronk7) 78fd9a2b53 Merge branch 'MDL-62988_master' of git://github.com/markn86/moodle 2018-11-22 23:15:54 +01:00
Jun Pataleta c039ba7341 Merge branch 'MDL-64119-master' of git://github.com/junpataleta/moodle 2018-11-22 20:34:06 +08:00
Sara Arjona 9ecc75d497 MDL-64119 output: Use context of renderer_base's page object 2018-11-22 20:33:27 +08:00
Jun Pataleta 1dcb2445c6 MDL-63571 grade_report_grader: Use correct context for capability check 2018-11-22 16:19:38 +08:00
Jun Pataleta 7c60fac9dc MDL-63571 grade_report_grader: Set correct type for the context variable 2018-11-22 16:19:38 +08:00
Jun Pataleta 5dfd0e63a0 Merge branch 'MDL-64142-master-1' of git://github.com/mihailges/moodle 2018-11-22 15:46:01 +08:00
Andrew Nicols 90015eff82 Merge branch 'MDL-64165_master' of git://github.com/markn86/moodle 2018-11-22 15:40:41 +08:00
Mark Nelson 2be9a4aecb MDL-64165 core_message: fixed contact requests web service structure 2018-11-22 14:51:59 +08:00
Mark Nelson 34b940f682 MDL-64165 core_message: removed unused params from WS helper method 2018-11-22 14:47:05 +08:00
Mihail Geshoski 30e89a5a9d MDL-64142 gradebook: Fix the left hand table column on scroll 2018-11-22 12:51:29 +08:00
Cory Buecker c30a2c9903 MDL-62988 LTI provider: fix missing info. for LTI 2.X tool provider
Fixes missing capabilities (user information) when membership service is called
from a LTI 2.X tool provider.
2018-11-22 12:26:22 +08:00
Andrew Nicols c746921e6e Merge branch 'MDL-64018_master' of git://github.com/markn86/moodle 2018-11-22 11:03:58 +08:00
Andrew Nicols a0a365fe43 Merge branch 'MDL-64092-master' of git://github.com/peterRd/moodle 2018-11-22 10:16:23 +08:00
Jun Pataleta 9946d0a5bf Merge branch 'MDL-64119-master' of git://github.com/sarjona/moodle 2018-11-22 09:52:56 +08:00
Eloy Lafuente (stronk7) a46a951e87 Merge branch 'MDL-63920-master' of git://github.com/damyon/moodle 2018-11-21 16:47:14 +01:00
Eloy Lafuente (stronk7) 9c8203cf14 Merge branch 'MDL-64129-master' of git://github.com/bmbrands/moodle 2018-11-21 16:18:56 +01:00
Eloy Lafuente (stronk7) cbd6122e27 Merge branch 'MDL-64149-master' of git://github.com/sarjona/moodle 2018-11-21 16:14:42 +01:00
Eloy Lafuente (stronk7) 70abb41263 Merge branch 'MDL-63798_assign_restore_groups' of git://github.com/davosmith/moodle 2018-11-21 16:05:32 +01:00
Jun Pataleta 69b6e2e9bc Merge branch 'MDL-64079-master' of https://github.com/Dagefoerde/moodle 2018-11-21 22:44:16 +08:00
Sara Arjona ae09cccf5a MDL-64149 core_badges: Remove and deprecate unused strings 2018-11-21 13:18:22 +01:00
Bas Brands eae1a1eda7 MDL-64129 messaging: messaging accordion
* fixes open / close chevron icons
* add 1 pixel content for Bootstrap 2 accordion Javascript to work
2018-11-21 11:06:27 +01:00
Jun Pataleta 2102625e09 MDL-64079 oauth2: Test access token expiration 2018-11-21 10:07:14 +01:00
Jan Dageförde 121fa4381e MDL-64079 oauth2: Set an arbitrary expiration date for eternal tokens
The oauth2 standard does not require access tokens to have an
expiration date. This assumes a default validity period of 7 days unless
an explicit expiration date is communicated by the server.
2018-11-21 10:07:14 +01:00
David Monllao ede77961aa Merge branch 'MDL-63591_master' of git://github.com/markn86/moodle 2018-11-21 09:40:59 +01:00
Mark Nelson b564a55153 MDL-63591 core_grades: updated privacy provider 2018-11-21 16:15:12 +08:00
Mark Nelson ac81c98648 MDL-63591 core_grades: delete files when grade object is deleted 2018-11-21 16:15:12 +08:00
Davo Smith b5f63b1e90 MDL-63798 mod_assign: fix restore when group is missing 2018-11-21 07:58:11 +00:00
Andrew Nicols 77295b2922 Merge branch 'MDL-64136-master' of git://github.com/ryanwyllie/moodle 2018-11-21 14:48:31 +08:00
Mark Nelson 4f95f92edc MDL-63591 assignfeedback_comments: fix privacy provider file URLs 2018-11-21 14:38:13 +08:00
Peter 495e1b5615 MDL-64092 block_timeline: Separate the activity view and submission link
* Reintroduce separate links similar to 35
* Hide submission links if not actionable
2018-11-21 14:26:38 +08:00
Ryan Wyllie 070d4819b2 MDL-64136 message: remove unused message_drawer_view_contacts_section.js 2018-11-21 14:11:29 +08:00
Andrew Nicols 1d163100ec Merge branch 'MDL-64128-master' of git://github.com/ryanwyllie/moodle 2018-11-21 14:04:27 +08:00
David Monllao 819cb2054b Merge branch 'MDL-64063-master' of git://github.com/abgreeve/moodle 2018-11-21 06:27:09 +01:00
Jun Pataleta f4aa71be50 Merge branch 'MDL-64091-master' of git://github.com/mickhawkins/moodle 2018-11-21 12:21:15 +08:00
Ryan Wyllie 6adee4a7b5 MDL-64128 message: fix exception when declining contact request 2018-11-21 11:45:24 +08:00
Jun Pataleta 2f22731a36 Merge branch 'MDL-64078-master' of https://github.com/Dagefoerde/moodle 2018-11-21 11:17:38 +08:00
Mark Nelson 00e103a7b4 MDL-64018 core_message: use new web service in UI 2018-11-21 11:09:55 +08:00
Mark Nelson c9b0f33f78 MDL-64018 core_message: added external::get_user_contacts
This is to replace usages of external::data_for_messagearea_contacts
in the new UI.
2018-11-21 11:09:55 +08:00
Mark Nelson 715c45aac9 MDL-64018 core_message: added api::get_user_contacts
This is to replace api::get_contacts when that gets deprecated.
2018-11-21 11:09:11 +08:00
Mark Nelson f89055372e MDL-64018 core_message: deprecated get_contacts web service 2018-11-21 11:09:11 +08:00
Michael Hawkins ef9f22a85c MDL-64091 theme_clean: Fix conflicting CSS for icon-size-* class 2018-11-21 10:54:53 +08:00
Damyon Wiese 730284fc16 Merge branch 'MDL-64054-master' of git://github.com/ryanwyllie/moodle 2018-11-21 10:07:42 +08:00
Andrew Nicols f83041790a Merge branch 'MDL-64045-master' of git://github.com/ryanwyllie/moodle 2018-11-21 09:58:50 +08:00
Adrian Greeve c84ee67864 MDL-64063 core_calendar: Unit test for suspended users. 2018-11-21 09:51:52 +08:00
Adrian Greeve 644ffbd332 MDL-64063 core_calendar: events by time considers enrolment status. 2018-11-21 09:51:52 +08:00
Ryan Wyllie b263491138 MDL-64045 message: stop favouriting null conversations
Don't show the controls to favourite a conversation until one has been
created.
2018-11-21 08:57:34 +08:00
Andrew Nicols 3c1d2a88c2 Merge branch 'MDL-64077-master' of git://github.com/vmdef/moodle 2018-11-21 08:10:59 +08:00
Sara Arjona 4ecb387d55 MDL-64119 user: Display full names consistently for teachers
Fix an error with users with the moodle/site:viewfullnames capability
in a course context (like teachers), to display properly the full
names in pages like the participants one.
2018-11-20 19:41:21 +01:00
David Monllao a78a876629 Merge branch 'MDL-63571-master' of git://github.com/peterRd/moodle 2018-11-20 17:19:11 +01:00
Jan Dageförde 3559677cb7 MDL-64078 oauth2: Google service relies on autodiscovery 2018-11-20 16:43:35 +01:00
Víctor Déniz Falcón d77efead0a MDL-64077 block_site_main: modify style to fix layout in boost theme 2018-11-20 13:08:13 +00:00
David Monllao 0225ad42ea on-demand release 3.6beta+ 2018-11-20 12:55:28 +01:00
Damyon Wiese dcb35b721c MDL-63920 backup: Email string improvement
Change from semicolon to colon in email.
2018-11-20 16:14:35 +08:00
Jun Pataleta bc7195fa02 Merge branch 'MDL-63692-master-fix' of git://github.com/junpataleta/moodle 2018-11-20 14:48:08 +08:00
Jun Pataleta 918776482a MDL-63692 message: Set canonicalize to true for array comparison 2018-11-20 14:41:40 +08:00
Andrew Nicols 43f6899289 MDL-63692 message: Correct favourite fetch 2018-11-20 14:40:39 +08:00
Andrew Nicols ffd303146f MDL-63692 message: Fix unit test assumption
Contact requests do not cause notifications.
2018-11-20 14:40:39 +08:00
Peter 727d3d70e1 MDL-63571 gradebook: Display the name header based on config setting 2018-11-20 14:06:31 +08:00
Jun Pataleta 60e265e76f Merge branch 'MDL-63921-master' of git://github.com/andrewnicols/moodle 2018-11-20 13:54:14 +08:00
Andrew Nicols b20a6a4af6 Merge branch 'MDL-64024-master' of git://github.com/snake/moodle 2018-11-20 12:26:09 +08:00
Jun Pataleta a7ca299373 Merge branch 'MDL-63663-master' of git://github.com/bmbrands/moodle 2018-11-20 11:59:29 +08:00
Jun Pataleta 1cc37dc523 Merge branch 'MDL-63817-master' of git://github.com/peterRd/moodle 2018-11-20 11:20:23 +08:00
Sara Arjona 4f97ea8856 MDL-64024 message: Fix lib::get_messages to get only individual messages
From 3.6 users can have also group conversations, so it's needed to review
the messages_get_messages function to make sure only returns the
individual messages between 2 users.
2018-11-20 10:44:27 +08:00
Andrew Nicols 04e83dcf10 Merge branch 'MDL-64058-master' of https://github.com/snake/moodle 2018-11-20 10:22:41 +08:00
Andrew Nicols 2f7076ebf2 MDL-63692 message: Resolve bad merge conflict 2018-11-20 09:04:53 +08:00
Peter eb2fe63ef1 MDL-63817 block_timeline: Fixed behat test and clean template 2018-11-20 09:00:44 +08:00
Jake Dallimore 4283291889 MDL-64058 core_message: fix logic driving conversation section expansion
Unread conversations should be given priority over read. If one or more
sections have unread conversations, prioritise favourites over group and
group over individual. The same applies if all conversations are read.
2018-11-20 08:56:37 +08:00
Andrew Nicols 08cd15658a Merge branch 'MDL-63692-master' of git://github.com/sarjona/moodle 2018-11-20 07:51:40 +08:00
Eloy Lafuente (stronk7) b2cb05a8c7 Merge branch 'MDL-64049-master' of git://github.com/andrewnicols/moodle 2018-11-20 00:26:09 +01:00
Eloy Lafuente (stronk7) 16d4f75b26 Merge branch 'MDL-63976-master-enfix' of git://github.com/mudrd8mz/moodle 2018-11-19 22:17:44 +01:00
Sara Arjona 16913e60b3 MDL-63692 core_message: Add favourite conversations to Privacy API 2018-11-19 22:09:13 +01:00
Sara Arjona 6b036d04cf MDL-63692 core_message: Fix the context for favourite conversations
The converation favourites were previously set in the system context
which is not right, as they should be stored:
- In the conversation context when defined.
- In the user context, when contextid is null (that means is an
individual conversation).
2018-11-19 22:08:28 +01:00
Sara Arjona c752cce7dd MDL-63692 core_group: Add group conversation messages to Privacy API 2018-11-19 22:08:28 +01:00
Sara Arjona 201cebeae5 MDL-63692 core_message: Add conversation support to Privacy API 2018-11-19 22:08:22 +01:00
David Monllao 9af8b0aef1 Merge branch 'MDL-63394-master' of git://github.com/jleyva/moodle 2018-11-19 19:42:06 +01:00
David Mudrák 94693027e0 MDL-63976 lang: Update the Behat scenarios with the new strings 2018-11-19 19:18:53 +01:00
Helen Foster cd492e2ea5 MDL-63976 lang: Merge English strings from the en_fix language pack
Significant string changes:

* courseoverviewfiles, courseoverviewfiles_help, courseoverviewfilesext
  in core, configcourseoverviewfilesext, configcourseoverviewfileslimit
  in core_admin, areacourseoverviewfiles in core_repository - renaming
  of 'Course summary files' to 'Course image'
2018-11-19 19:17:52 +01:00
Adrian Greeve 674c00edb2 MDL-64008 badges: Stop displaying empty fields in badge display. 2018-11-19 18:42:49 +01:00
David Monllao 892356acaa MDL-64060 message: Replace error code by language str 2018-11-19 11:18:39 +01:00
David Monllao a6c4e6f0a6 Merge branch 'MDL-64060-master' of git://github.com/jleyva/moodle 2018-11-19 11:16:09 +01:00
David Monllao dd2d82e55c Merge branch 'MDL-64010-master' of git://github.com/abgreeve/moodle 2018-11-19 11:12:09 +01:00
David Monllao c47fea4e75 MDL-63817 block_timeline: Consistent activities limit default 2018-11-19 10:57:13 +01:00
David Monllao 94db315b50 Merge branch 'MDL-63817-master' of git://github.com/peterRd/moodle 2018-11-19 10:49:15 +01:00
Damyon Wiese a356db0db2 Merge branch 'MDL-63973-master' of https://github.com/snake/moodle 2018-11-19 16:28:13 +08:00
Jun Pataleta 31cc108654 Merge branch 'MDL-63994-master-castoken' of git://github.com/mudrd8mz/moodle 2018-11-19 15:51:38 +08:00
Andrew Nicols 90a4438139 Merge branch 'MDL-64035-master' of https://github.com/snake/moodle 2018-11-19 15:08:22 +08:00
David Monllao 9b2d10e522 Merge branch 'MDL-63487-master' of https://github.com/lucaboesch/moodle 2018-11-19 08:07:05 +01:00
Andrew Nicols 237786f159 Merge branch 'MDL-63913-master' of https://github.com/snake/moodle 2018-11-19 14:59:39 +08:00
Ryan Wyllie 08ae9a7362 MDL-64054 message: add all processors to message settings
Changed the settings page in the message drawer to display all message
notification processors (e.g. email, mobile, jabber) for the user to
configure based on which processors are enabled on the site.
2018-11-19 14:53:38 +08:00
Peter 2044a53946 MDL-63817 block_timeline: Persist page limits when sorting by dates
* Included privacy provider for new pref with unit test
* JS changes
2018-11-19 14:52:56 +08:00
Damyon Wiese 365dce5fad Merge branch 'MDL-63696-master' of https://github.com/Dagefoerde/moodle 2018-11-19 14:51:46 +08:00
Jake Dallimore da714be155 MDL-64058 core_message: add unread counts to the conversations view 2018-11-19 13:55:18 +08:00
Jake Dallimore a54115355a MDL-63913 core_message: fix to ensure favourites is exclusive
If a conversation is included in the favourites unread count, it
cannot be included in any other type-based counts.
2018-11-19 13:51:40 +08:00
David Monllao b46c7d5d9f Merge branch 'MDL-63768-master' of https://github.com/lucaboesch/moodle 2018-11-19 06:06:20 +01:00
Jun Pataleta 8699a985bc Merge branch 'MDL-64034-master' of https://github.com/snake/moodle 2018-11-19 12:59:22 +08:00
Andrew Nicols 18b947671b Merge branch 'MDL-63969-master-4' of git://github.com/mihailges/moodle 2018-11-19 12:27:37 +08:00
Andrew Nicols 8cba8d1a58 MDL-64049 core: Cache prefs for current user
We were already caching these preferences when a user object is provided
to get_user_preferences, or when $USER is provided.

This changee swaps get_user_preferences to use the global USER object
when the USER->id matches the userid supplied to the function.
2018-11-19 11:23:59 +08:00
Jake Dallimore 810da68e14 MDL-63973 core_badges: exclude related badges when adding related badges
The form which allows a user to add related badges should exclude any
related badges, regardless of the direction of the relationship.
2018-11-19 11:19:12 +08:00
Jake Dallimore c660772600 MDL-63973 core_badges: fix related badges count in the badges tabs
If A is related to B, this should show a 1 count for either A or B.
2018-11-19 11:10:14 +08:00
Jake Dallimore 1dee827c39 MDL-63973 core_badges: related badges query now works both ways
If A is related to B, then we should be able to view this relationship
from both badge A and badge B. The following badge methods were updated:
- get_related_badges()
- has_related()
- delete_related_badge()
2018-11-19 11:08:00 +08:00
Andrew Nicols de79a81f5b Merge branch 'MDL-63468-master-v1' of git://github.com/lameze/moodle 2018-11-19 10:33:23 +08:00
Jake Dallimore d2708759d8 MDL-64034 core_message: return conversationid in search_messages() 2018-11-19 10:23:15 +08:00
Simey Lameze 62b6e6f20d MDL-63468 mod_quiz: fix stats report visual style 2018-11-19 10:16:16 +08:00
Andrew Nicols ff85fe3e53 Merge branch 'MDL-63793-master' of git://github.com/peterRd/moodle 2018-11-19 09:57:50 +08:00
Andrew Nicols 73fda8faeb Merge branch 'MDL-63913-master' of https://github.com/snake/moodle 2018-11-19 09:56:48 +08:00
Jake Dallimore 33022ee1d5 MDL-63913 core_message: add method to get unread conversation counts 2018-11-19 09:48:58 +08:00
Peter 11988d74b4 MDL-63793 block_myoverview: Persist the user's paging limit preference
* providers for paging preferences
* Moved the user pref persistence to the factory
* Added client defined namespace in config
* Define custom client events in the client instead of passing to the
  factory
2018-11-19 09:43:00 +08:00
Luca Bösch 104cc0e3b1 MDL-63768 atto_link: dialog auto width. 2018-11-16 17:29:28 +01:00
Luca Bösch 2e477f03cc MDL-63487 badges: Style "◀ Award badge" and "Revoke badge ▶" buttons 2018-11-16 17:29:17 +01:00
Juan Leyva 904c37c6c8 MDL-63394 mod_quiz: Do not fail overdue if there is a grace period 2018-11-16 16:56:40 +01:00
Juan Leyva a28c222e63 MDL-64060 message: Use error string identifier instead full message
The conversationdoesntexist string does not exists but it is better to use an error string catchable by an external client.
2018-11-16 13:20:11 +01:00
Jan Dageförde f11a7d6a05 MDL-63696 oauth2: Store system account access tokens in DB 2018-11-16 11:43:16 +01:00
Mihail Geshoski 329f1f23ff MDL-63969 core_course: Store favourite courses in the course context
The course favourites were previously set in the system context which
is not right as they should be stored in the course context.
2018-11-16 12:20:17 +08:00
Mihail Geshoski 214696b04f MDL-63969 core_course: Update course privacy provider unit tests 2018-11-16 12:19:46 +08:00
Mihail Geshoski 4f8c9232f1 MDL-63969 core_course: Include core_favourites subsystem in provider 2018-11-16 12:18:58 +08:00
Mihail Geshoski 61fafe8127 MDL-63969 core_favourites: Add support for removal of context users 2018-11-16 12:18:22 +08:00
Jake Dallimore 18550c0afb MDL-64035 core_message: get_conversations() excludes disabled chats
Linked conversations which have been disabled must be excluded from
the results.
2018-11-16 12:04:24 +08:00
Adrian Greeve 347b771a4b MDL-64010 badges: Validate URL form fields. 2018-11-16 10:28:09 +08:00
David Mudrák c7d33da305 MDL-63994 auth_cas: Include the login token in the simulated login form
The CAS login process relies on the standard authenticate_user_login()
call to set up the user. So we need to inject the login token to pass
the validation.
2018-11-15 21:19:50 +01:00
David Mudrák e4a97a7a01 MDL-63994 login: Improve the logintoken param input
The logintoken is supposed to arrive as a part of the login form ($frm)
together with the username and password. So it should be handled the
same way - including the opportunity for the auth plugins to provide the
form data via the loginpage_hook().

This also implies that only logintoken coming as a part of the POST
request are taken into account, which is a good thing and another thin
layer in this security mechanism.
2018-11-15 21:19:50 +01:00
David Mudrák 667f564b4d MDL-63994 login: Clarify inline comments on loginpage_hook() usage
While working on the issue, I found these inline comments outdated and
confusing. The auth plugin types can implement a loginpage_hook()
method, the purpose of which is to inject the $user and/or $frm into
this login/index.php script. The new comments should make it more clear.

Note the second comment mentioned a prelogin_hook() which was an old
name of what is now called loginpage_hook(). It had nothing to do with
the existing pre_loginpage_hook() and was only confusing.
2018-11-15 21:19:50 +01:00
Luca Bösch b08e7312c3 MDL-63571 grades: switch firstname/lastname order in title row 2018-11-13 18:18:23 +01:00
Andrew Nicols 9f12dd7a2f MDL-63921 privacy: Add unit test to prove userlist compliance 2018-11-13 11:41:02 +08:00
Bas Brands 356bfb698f MDL-63663 core_my: prevent page jumps on load
equal size loading placeholders
added list view and summary view placeholders for myoverview
2018-11-12 15:44:37 +01:00
773 changed files with 10388 additions and 2948 deletions
+1 -1
View File
@@ -207,7 +207,7 @@ before_script:
# We need the official upstream for comparison
git remote add upstream https://github.com/moodle/moodle.git;
git fetch upstream master;
git fetch upstream MOODLE_36_STABLE;
export GIT_PREVIOUS_COMMIT="`git merge-base FETCH_HEAD $TRAVIS_COMMIT`";
export GIT_COMMIT="$TRAVIS_COMMIT";
export UPSTREAM_FETCH_HEAD=`git rev-parse FETCH_HEAD`
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_analytics'; // Full name of the plugin (used for diagnostics).
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_availabilityconditions';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_behat'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_capability'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_cohortroles'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
+3
View File
@@ -41,5 +41,8 @@ function xmldb_tool_customlang_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_customlang'; // Full name of the plugin (used for diagnostics)
+5 -1
View File
@@ -1087,12 +1087,16 @@ class api {
// Create the approved contextlist collection object.
$approvedcollection = new contextlist_collection($collection->get_userid());
$isconfigured = data_registry::defaults_set();
foreach ($collection as $contextlist) {
$contextids = [];
foreach ($contextlist as $context) {
if (self::DATAREQUEST_TYPE_DELETE == $type) {
if ($isconfigured && self::DATAREQUEST_TYPE_DELETE == $type) {
// Data can only be deleted from it if the context is either expired, or unprotected.
// Note: We can only check whether a context is expired or unprotected if the site is configured and
// defaults are set appropriately. If they are not, we treat all contexts as though they are
// unprotected.
$purpose = static::get_effective_context_purpose($context);
if (!expired_contexts_manager::is_context_expired_or_unprotected_for_user($context, $foruser)) {
continue;
@@ -74,11 +74,9 @@ class process_data_request_task extends adhoc_task {
return;
}
// If no site purpose is defined, reject requests since they cannot be processed.
if (!\tool_dataprivacy\data_registry::defaults_set()) {
api::update_request_status($requestid, api::DATAREQUEST_STATUS_REJECTED);
mtrace('No site purpose defined. Request ' . $requestid . ' rejected.');
return;
// Warn if no site purpose is defined.
mtrace('Warning: No purpose is defined at the system level. Deletion will delete all.');
}
// Grab the manager.
+4
View File
@@ -38,6 +38,10 @@ $title = get_string('datarequests', 'tool_dataprivacy');
echo $OUTPUT->header();
echo $OUTPUT->heading($title);
if (!\tool_dataprivacy\data_registry::defaults_set()) {
\core\notification::error(get_string('systemconfignotsetwarning', 'tool_dataprivacy'));
}
if (\tool_dataprivacy\api::is_site_dpo($USER->id)) {
$filtersapplied = optional_param_array('request-filters', [-1], PARAM_NOTAGS);
$filterscleared = optional_param('filters-cleared', 0, PARAM_INT);
+17
View File
@@ -299,5 +299,22 @@ function xmldb_tool_dataprivacy_upgrade($oldversion) {
upgrade_plugin_savepoint(true, 2018110700, 'tool', 'dataprivacy');
}
if ($oldversion < 2018112500) {
// Delete orphaned data privacy requests.
$sql = "SELECT r.id
FROM {tool_dataprivacy_request} r LEFT JOIN {user} u ON r.userid = u.id
WHERE u.id IS NULL";
$orphaned = $DB->get_fieldset_sql($sql);
if ($orphaned) {
$DB->delete_records_list('tool_dataprivacy_request', 'id', $orphaned);
}
upgrade_plugin_savepoint(true, 2018112500, 'tool', 'dataprivacy');
}
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
@@ -33,7 +33,7 @@ $string['addpurpose'] = 'Add purpose';
$string['approve'] = 'Approve';
$string['approverequest'] = 'Approve request';
$string['automaticdeletionrequests'] = 'Create automatic data deletion requests';
$string['automaticdeletionrequests_desc'] = 'If enabled, automatic delete data request will be created upon user deletion or for each existing deleted user which data was not fully deleted.';
$string['automaticdeletionrequests_desc'] = 'If enabled, a data deletion request will be created automatically for any user accounts deleted manually.';
$string['bulkapproverequests'] = 'Approve requests';
$string['bulkdenyrequests'] = 'Deny requests';
$string['cachedef_purpose'] = 'Data purposes';
@@ -292,7 +292,7 @@ $string['sensitivedatareasons'] = 'Sensitive personal data processing reasons';
$string['sensitivedatareasons_help'] = 'Select one or more applicable reasons that exempts the prohibition of processing sensitive personal data tied to this purpose. For more information, please see <a href="https://gdpr-info.eu/art-9-gdpr/" target="_blank">GDPR Art. 9.2</a>';
$string['setdefaults'] = 'Set defaults';
$string['showdataretentionsummary'] = 'Show data retention summary';
$string['showdataretentionsummary_desc'] = 'If enabled, a link to the data retention summary is shown in the page footer and in the user profile page.';
$string['showdataretentionsummary_desc'] = 'If enabled, a link to the data retention summary is displayed in the page footer and in users\' profiles.';
$string['statusapproved'] = 'Approved';
$string['statusawaitingapproval'] = 'Awaiting approval';
$string['statuscancelled'] = 'Cancelled';
@@ -307,6 +307,7 @@ $string['statusrejected'] = 'Rejected';
$string['subjectscope'] = 'Subject scope';
$string['subjectscope_help'] = 'The subject scope lists the roles which may be assigned in this context.';
$string['summary'] = 'Registry configuration summary';
$string['systemconfignotsetwarning'] = 'A site purpose and category have not been defined. When these are not defined, all data will be removed when processing deletion requests.';
$string['user'] = 'User';
$string['userlistnoncompliant'] = 'Userlist provider missing';
$string['userlistexplanation'] = 'This plugin has the base provider but should also implement the userlist provider for full support of privacy functionality.';
+42
View File
@@ -1635,6 +1635,48 @@ class tool_dataprivacy_api_testcase extends advanced_testcase {
];
}
/**
* Test that delete requests do not filter out protected purpose contexts if the the site is properly configured.
*/
public function test_get_approved_contextlist_collection_for_collection_delete_course_no_site_config() {
$this->resetAfterTest();
$user = $this->getDataGenerator()->create_user();
$course = $this->getDataGenerator()->create_course(['startdate' => time() - YEARSECS, 'enddate' => time() - YEARSECS]);
$coursecontext = \context_course::instance($course->id);
$forum = $this->getDataGenerator()->create_module('forum', ['course' => $course->id]);
list(, $forumcm) = get_course_and_cm_from_instance($forum->id, 'forum');
$contextforum = \context_module::instance($forumcm->id);
$this->getDataGenerator()->enrol_user($user->id, $course->id, 'student');
// Create the initial contextlist.
$initialcollection = new \core_privacy\local\request\contextlist_collection($user->id);
$contextlist = new \core_privacy\local\request\contextlist();
$contextlist->add_from_sql('SELECT id FROM {context} WHERE id = :contextid', ['contextid' => $coursecontext->id]);
$contextlist->set_component('tool_dataprivacy');
$initialcollection->add_contextlist($contextlist);
$contextlist = new \core_privacy\local\request\contextlist();
$contextlist->add_from_sql('SELECT id FROM {context} WHERE id = :contextid', ['contextid' => $contextforum->id]);
$contextlist->set_component('mod_forum');
$initialcollection->add_contextlist($contextlist);
$collection = api::get_approved_contextlist_collection_for_collection(
$initialcollection, $user, api::DATAREQUEST_TYPE_DELETE);
$this->assertCount(2, $collection);
$list = $collection->get_contextlist_for_component('tool_dataprivacy');
$this->assertCount(1, $list);
$list = $collection->get_contextlist_for_component('mod_forum');
$this->assertCount(1, $list);
}
/**
* Test that delete requests do not filter out protected purpose contexts if they are already expired.
*/
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2018110900;
$plugin->requires = 2018050800; // Moodle 3.5dev (Build 2018031600) and upwards.
$plugin->version = 2018120300;
$plugin->requires = 2018112800; // Moodle 3.5dev (Build 2018031600) and upwards.
$plugin->component = 'tool_dataprivacy';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_dbtransfer'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_filetypes';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_generator';
+2 -2
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_health'; // Full name of the plugin (used for diagnostics)
$plugin->maturity = MATURITY_ALPHA; // this version's maturity level
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_httpsreplace'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_innodb'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_installaddon';
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->maturity = MATURITY_STABLE;
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -45,5 +45,8 @@ function xmldb_tool_log_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
@@ -39,5 +39,8 @@ function xmldb_logstore_database_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'logstore_database'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'logstore_legacy'; // Full name of the plugin (used for diagnostics).
@@ -39,5 +39,8 @@ function xmldb_logstore_standard_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'logstore_standard'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051401; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_log'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_lp'; // Full name of the plugin (used for diagnostics).
+3 -3
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_lpimportcsv'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array('tool_lp' => 2018050800);
$plugin->dependencies = array('tool_lp' => 2018112800);
+2 -2
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_lpmigrate'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
'tool_lp' => ANY_VERSION
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_messageinbound';
+3 -3
View File
@@ -23,9 +23,9 @@
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_mobile'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
'webservice_rest' => 2018050800
'webservice_rest' => 2018112800
);
+3
View File
@@ -79,5 +79,8 @@ function xmldb_tool_monitor_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -26,6 +26,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_monitor'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_multilangupgrade'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_oauth2'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_phpunit'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -60,5 +60,8 @@ function xmldb_tool_policy_upgrade($oldversion) {
upgrade_plugin_savepoint(true, 2018091800, 'tool', 'policy');
}
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018100100; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_policy'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_profiling'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_recyclebin'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_replace'; // Full name of the plugin (used for diagnostics)
$plugin->maturity = MATURITY_ALPHA; // this version's maturity level
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'tool_spamcleaner'; // Full name of the plugin (used for diagnostics)
+1 -1
View File
@@ -25,7 +25,7 @@
$string['asap'] = 'ASAP';
$string['backtoscheduledtasks'] = 'Back to scheduled tasks';
$string['blocking'] = 'Blocking';
$string['cannotfindthepathtothecli'] = 'Cannot find the path to the PHP CLI executable so task execution aborted. Set the "Path to PHP CLI" setting in "Site administration / Server / System paths"';
$string['cannotfindthepathtothecli'] = 'Cannot find the path to the PHP CLI executable so task execution aborted. Set the \'Path to PHP CLI\' setting in Site administration / Server / System paths.';
$string['clearfaildelay_confirm'] = 'Are you sure you want to clear the fail delay for task \'{$a}\'? After clearing the delay, the task will run according to its normal schedule.';
$string['component'] = 'Component';
$string['corecomponent'] = 'Core';
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_task'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -21,6 +21,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_templatelibrary'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_unsuproles'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_uploadcourse'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_uploaduser'; // Full name of the plugin (used for diagnostics)
+35 -5
View File
@@ -697,7 +697,7 @@ class manager {
}
/**
* Move a tour up or down.
* Move a tour up or down and redirect once complete.
*
* @param int $id The tour to move.
*/
@@ -707,6 +707,19 @@ class manager {
$direction = required_param('direction', PARAM_INT);
$tour = tour::instance($id);
self::_move_tour($tour, $direction);
redirect(helper::get_list_tour_link());
}
/**
* Move a tour up or down.
*
* @param tour $tour The tour to move.
*
* @param int $direction
*/
protected static function _move_tour(tour $tour, $direction) {
$currentsortorder = $tour->get_sortorder();
$targetsortorder = $currentsortorder + $direction;
@@ -722,8 +735,6 @@ class manager {
$tour->set_sortorder($targetsortorder);
$tour->persist();
redirect(helper::get_list_tour_link());
}
/**
@@ -785,6 +796,13 @@ class manager {
// the format filename => version. The version value needs to
// be increased if the tour has been updated.
$shippedtours = [
'36_dashboard.json' => 3,
'36_messaging.json' => 3,
];
// These are tours that we used to ship but don't ship any longer.
// We do not remove them, but we do disable them.
$unshippedtours = [
'boost_administrator.json' => 1,
'boost_course_view.json' => 1,
];
@@ -813,12 +831,19 @@ class manager {
unset($shippedtours[$filename]);
}
}
if (isset($unshippedtours[$filename])) {
if ($version <= $unshippedtours[$filename]) {
$tour = tour::instance($tour->get_id());
$tour->set_enabled(tour::DISABLED);
$tour->persist();
}
}
}
}
$existingtourrecords->close();
foreach ($shippedtours as $filename => $version) {
foreach (array_reverse($shippedtours) as $filename => $version) {
$filepath = $CFG->dirroot . "/{$CFG->admin}/tool/usertours/tours/" . $filename;
$tourjson = file_get_contents($filepath);
$tour = self::import_tour_from_json($tourjson);
@@ -829,6 +854,11 @@ class manager {
$tour->set_config(self::CONFIG_SHIPPED_FILENAME, $filename);
$tour->set_config(self::CONFIG_SHIPPED_VERSION, $version);
// Bump new tours to the top of the list.
while ($tour->get_sortorder() > 0) {
self::_move_tour($tour, helper::MOVE_UP);
}
if (defined('BEHAT_SITE_RUNNING') || (defined('PHPUNIT_TEST') && PHPUNIT_TEST)) {
// Disable this tour if this is behat or phpunit.
$tour->set_enabled(false);
+10 -7
View File
@@ -35,13 +35,6 @@ use tool_usertours\manager;
function xmldb_tool_usertours_upgrade($oldversion) {
global $CFG, $DB;
if ($oldversion < 2016120501) {
// Update the tours shipped with Moodle.
manager::update_shipped_tours();
upgrade_plugin_savepoint(true, 2016120501, 'tool', 'usertours');
}
// Automatically generated Moodle v3.2.0 release upgrade line.
// Put any upgrade step following this.
@@ -54,5 +47,15 @@ function xmldb_tool_usertours_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2018113002) {
// Update the tours shipped with Moodle.
manager::update_shipped_tours();
upgrade_plugin_savepoint(true, 2018113002, 'tool', 'usertours');
}
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
@@ -179,3 +179,50 @@ $string['privacy:metadata:preference:requested'] = 'The time that a user last ma
$string['privacy:metadata:preference:completed'] = 'The time that a user last completed a user tour.';
$string['privacy:request:preference:requested'] = 'You last requested the "{$a->name}" user tour on {$a->time}';
$string['privacy:request:preference:completed'] = 'You last marked the "{$a->name}" user tour as completed on {$a->time}';
// 3.6 Dashboard tour.
$string['tour3_title_dashboard'] = 'Your Dashboard';
$string['tour3_content_dashboard'] = 'Your new Dashboard has many features to help you easily access the information most important to you.';
$string['tour3_title_timeline'] = 'Timeline block';
$string['tour3_content_timeline'] = 'The Timeline block shows your important upcoming events.
You can choose to show activities in the next week, month, or further into the future.
You can also show items which are overdue.';
$string['tour3_title_recentcourses'] = 'Recently accessed courses';
$string['tour3_content_recentcourses'] = 'The Recently accessed courses block shows the courses that you last visited, allowing you to jump straight back in.';
$string['tour3_title_overview'] = 'Course overview';
$string['tour3_content_overview'] = 'The Course overview block shows all of the courses that you are enrolled in.
You can choose to show courses currently in progress, or in the past or the future, or courses which you have starred.';
$string['tour3_title_starring'] = 'Starring and hiding courses';
$string['tour3_content_starring'] = 'You can choose to star a course to make it stand out, or hide a course which is no longer important to you.
These actions only affect your view.
You can also choose to display the courses in a list, or with summary information, or the default \'card\' view.';
$string['tour3_title_displayoptions'] = 'Display options';
$string['tour3_content_displayoptions'] = 'Courses may be sorted by course name or by last access date.
You can also choose to display the courses in a list, with summary information, or the default \'card\' view.';
// 3.6 Messaging tour.
$string['tour4_title_messaging'] = 'New messaging interface';
$string['tour4_content_messaging'] = 'Moodle 3.6 provides a new interface to messaging, ability for group messaging within a course, along with better control over who can message you.';
$string['tour4_title_icon'] = 'Messaging';
$string['tour4_content_icon'] = 'You can access your messages from any page using this icon.
If you have any unread messages, the number of unread messages will show here too.
Click on the icon to open the messaging drawer and continue the tour.';
$string['tour4_title_groupconvo'] = 'Group messages';
$string['tour4_content_groupconvo'] = 'If you are a member of a group with group messaging enabled, you\'ll see group conversations here.
Course group conversations allow you to interact with the others in your group in a private and convenient location.';
$string['tour4_title_starred'] = 'Starred';
$string['tour4_content_starred'] = 'You can choose to star particular conversations to make them easier to find.';
$string['tour4_title_settings'] = 'Messaging settings';
$string['tour4_content_settings'] = 'You can access your messaging settings via the cog icon. A new privacy setting allows you to restrict who can message you.';
$string['tour_final_step_title'] = 'End of tour';
$string['tour_final_step_content'] = 'This is the end of your user tour. It won\'t show again unless you reset it using the link in the footer.';
@@ -0,0 +1 @@
{"name":"Dashboard","description":"New dashboard features","pathmatch":"\/my\/%","enabled":"1","sortorder":"3","configdata":"{\"placement\":\"top\",\"orphan\":\"0\",\"backdrop\":\"0\",\"reflex\":\"0\",\"filtervalues\":{\"category\":[],\"course\":[\"0\"],\"courseformat\":[],\"role\":[],\"theme\":[]},\"majorupdatetime\":1543396938}","version":"2018051400","steps":[{"title":"tour3_title_dashboard,tool_usertours","content":"tour3_content_dashboard,tool_usertours","targettype":"2","targetvalue":"","sortorder":"0","configdata":"{\"backdrop\":\"1\"}"},{"title":"tour3_title_dashboard,tool_usertours","content":"tour3_content_timeline,tool_usertours","targettype":"1","targetvalue":"timeline","sortorder":"1","configdata":"{\"reflex\":\"0\"}"},{"title":"tour3_title_recentcourses,tool_usertours","content":"tour3_content_recentcourses,tool_usertours","targettype":"1","targetvalue":"recentlyaccessedcourses","sortorder":"2","configdata":"{\"placement\":\"top\",\"backdrop\":\"1\"}"},{"title":"tour3_title_overview,tool_usertours","content":"tour3_content_overview,tool_usertours","targettype":"1","targetvalue":"myoverview","sortorder":"3","configdata":"{}"},{"title":"tour3_title_starring,tool_usertours","content":"tour3_content_starring,tool_usertours","targettype":"0","targetvalue":".block-myoverview [data-display=\"cards\"] [data-region=\"course-content\"] .coursemenubtn","sortorder":"4","configdata":"{\"placement\":\"right\"}"},{"title":"tour3_title_starring,tool_usertours","content":"tour3_content_starring,tool_usertours","targettype":"0","targetvalue":".block-myoverview [data-display]:not([data-display=\"cards\"]) [data-region=\"course-content\"] .coursemenubtn","sortorder":"5","configdata":"{}"},{"title":"tour3_title_displayoptions,tool_usertours","content":"tour3_content_displayoptions,tool_usertours","targettype":"0","targetvalue":"#sortingdropdown","sortorder":"6","configdata":"{\"placement\":\"top\"}"},{"title":"tour_final_step_title,tool_usertours","content":"tour_final_step_content,tool_usertours","targettype":"2","targetvalue":"","sortorder":"7","configdata":"{}"}]}
@@ -0,0 +1 @@
{"name":"New Messaging System","description":"New messaging interface in Moodle 3.6","pathmatch":"\/course\/view.php%","enabled":"1","sortorder":"2","configdata":"{\"placement\":\"bottom\",\"orphan\":\"0\",\"backdrop\":\"0\",\"reflex\":\"0\",\"filtervalues\":{\"category\":[],\"course\":[\"0\"],\"courseformat\":[],\"role\":[],\"theme\":[]},\"majorupdatetime\":1543468823}","version":"2018051400","steps":[{"title":"tour4_title_messaging,tool_usertours","content":"tour4_content_messaging,tool_usertours","targettype":"2","targetvalue":"","sortorder":"0","configdata":"{\"backdrop\":\"1\"}"},{"title":"tour4_title_icon,tool_usertours","content":"tour4_content_icon,tool_usertours","targettype":"0","targetvalue":"[id^=message-drawer-toggle]","sortorder":"1","configdata":"{\"backdrop\":\"0\",\"reflex\":\"1\"}"},{"title":"tour4_title_groupconvo,tool_usertours","content":"tour4_content_groupconvo,tool_usertours","targettype":"0","targetvalue":".message-drawer:not(.hidden) [data-region=\"view-overview-group-messages\"]","sortorder":"2","configdata":"{\"placement\":\"left\"}"},{"title":"tour4_title_starred,tool_usertours","content":"tour4_content_starred,tool_usertours","targettype":"0","targetvalue":".message-drawer:not(.hidden) [data-region=\"view-overview-favourites\"]","sortorder":"3","configdata":"{\"placement\":\"left\"}"},{"title":"tour4_title_settings,tool_usertours","content":"tour4_content_settings,tool_usertours","targettype":"0","targetvalue":".message-drawer:not(.hidden) [data-route=\"view-settings\"]","sortorder":"4","configdata":"{\"reflex\":\"1\"}"},{"title":"tour_final_step_title,tool_usertours","content":"tour_final_step_content,tool_usertours","targettype":"2","targetvalue":"","sortorder":"5","configdata":"{}"}]}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current module version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current module version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'tool_usertours'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051401; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'tool_xmldb'; // Full name of the plugin (used for diagnostics)
+2
View File
@@ -154,6 +154,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
$frm = new stdClass();
$frm->username = phpCAS::getUser();
$frm->password = 'passwdCas';
$frm->logintoken = \core\session\manager::get_login_token();
// Redirect to a course if multi-auth is activated, authCAS is set to CAS and the courseid is specified.
if ($this->config->multiauth && !empty($courseid)) {
@@ -167,6 +168,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
$frm = new stdClass();
$frm->username = 'guest';
$frm->password = 'guest';
$frm->logintoken = \core\session\manager::get_login_token();
return;
}
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_cas_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+3 -3
View File
@@ -26,8 +26,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_cas'; // Full name of the plugin (used for diagnostics)
$plugin->dependencies = array('auth_ldap' => 2018050800);
$plugin->dependencies = array('auth_ldap' => 2018112800);
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_db_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_db'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_email_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_email'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -69,5 +69,8 @@ function xmldb_auth_ldap_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_ldap'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'auth_lti'; // Full name of the plugin (used for diagnostics).
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_manual_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_manual'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -50,5 +50,8 @@ function xmldb_auth_mnet_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_mnet'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_nologin'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_none_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_none'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -47,5 +47,8 @@ function xmldb_auth_oauth2_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'auth_oauth2'; // Full name of the plugin (used for diagnostics).
+3
View File
@@ -51,5 +51,8 @@ function xmldb_auth_shibboleth_upgrade($oldversion) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_shibboleth'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'auth_webservice'; // Full name of the plugin (used for diagnostics)
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_completion';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_date';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_grade';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_group';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_grouping';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400;
$plugin->requires = 2018050800;
$plugin->version = 2018120300;
$plugin->requires = 2018112800;
$plugin->component = 'availability_profile';
+1 -1
View File
@@ -136,7 +136,7 @@ abstract class backup implements checksumable {
* point is backup when some behavior/approach channged, in order to allow
* conditional coding based on it.
*/
const VERSION = 2018051400;
const VERSION = 2018120300;
/**
* Usually same than major release zero version, mainly for informative/historic purposes.
*/
@@ -234,13 +234,13 @@ abstract class backup_cron_automated_helper {
// Summary.
$message .= get_string('summary') . "\n";
$message .= "==================================================\n";
$message .= ' ' . get_string('courses') . '; ' . array_sum($count) . "\n";
$message .= ' ' . get_string('ok') . '; ' . $count[self::BACKUP_STATUS_OK] . "\n";
$message .= ' ' . get_string('skipped') . '; ' . $count[self::BACKUP_STATUS_SKIPPED] . "\n";
$message .= ' ' . get_string('error') . '; ' . $count[self::BACKUP_STATUS_ERROR] . "\n";
$message .= ' ' . get_string('unfinished') . '; ' . $count[self::BACKUP_STATUS_UNFINISHED] . "\n";
$message .= ' ' . get_string('warning') . '; ' . $count[self::BACKUP_STATUS_WARNING] . "\n";
$message .= ' ' . get_string('backupnotyetrun') . '; ' . $count[self::BACKUP_STATUS_NOTYETRUN]."\n\n";
$message .= ' ' . get_string('courses') . ': ' . array_sum($count) . "\n";
$message .= ' ' . get_string('ok') . ': ' . $count[self::BACKUP_STATUS_OK] . "\n";
$message .= ' ' . get_string('skipped') . ': ' . $count[self::BACKUP_STATUS_SKIPPED] . "\n";
$message .= ' ' . get_string('error') . ': ' . $count[self::BACKUP_STATUS_ERROR] . "\n";
$message .= ' ' . get_string('unfinished') . ': ' . $count[self::BACKUP_STATUS_UNFINISHED] . "\n";
$message .= ' ' . get_string('warning') . ': ' . $count[self::BACKUP_STATUS_WARNING] . "\n";
$message .= ' ' . get_string('backupnotyetrun') . ': ' . $count[self::BACKUP_STATUS_NOTYETRUN]."\n\n";
//Reference
if ($haserrors) {
+15
View File
@@ -76,4 +76,19 @@ class competency_alignment_form extends moodleform {
}
}
}
/**
* Validate the data from the form.
*
* @param array $data form data
* @param array $files form files
* @return array An array of error messages.
*/
public function validation($data, $files) {
$errors = parent::validation($data, $files);
if (!empty($data['targeturl']) && !preg_match('@^https?://.+@', $data['targeturl'])) {
$errors['targeturl'] = get_string('invalidurl', 'badges');
}
return $errors;
}
}
+4
View File
@@ -211,6 +211,10 @@ class edit_details_form extends moodleform {
$errors['name'] = get_string('error:duplicatename', 'badges');
}
if ($data['imageauthorurl'] && !preg_match('@^https?://.+@', $data['imageauthorurl'])) {
$errors['imageauthorurl'] = get_string('invalidurl', 'badges');
}
return $errors;
}
}
+6
View File
@@ -86,6 +86,12 @@ class endorsement_form extends moodleform {
if ($data['issueremail'] && !validate_email($data['issueremail'])) {
$errors['issueremail'] = get_string('invalidemail');
}
if ($data['issuerurl'] && !preg_match('@^https?://.+@', $data['issuerurl'])) {
$errors['issuerurl'] = get_string('invalidurl', 'badges');
}
if ($data['claimid'] && !preg_match('@^https?://.+@', $data['claimid'])) {
$errors['claimid'] = get_string('invalidurl', 'badges');
}
return $errors;
}
}
+6 -3
View File
@@ -82,9 +82,12 @@ class edit_relatedbadge_form extends moodleform {
$sql = "SELECT b.id, b.name, b.version, b.language, b.type
FROM {badge} b
WHERE b.id <> :badgeid
AND b.id NOT IN (SELECT br.relatedbadgeid
FROM {badge_related} br WHERE br.badgeid = :badgeid1)";
$params = array('badgeid' => $badge->id, 'badgeid1' => $badge->id);
AND b.id NOT IN (
SELECT DISTINCT b.id
FROM {badge_related} br
JOIN {badge} b ON (br.relatedbadgeid = b.id OR br.badgeid = b.id)
WHERE (br.badgeid = :badgeid2 OR br.relatedbadgeid = :badgeid3) AND b.id != :badgeid4)";
$params = ['badgeid' => $badge->id, 'badgeid2' => $badge->id, 'badgeid3' => $badge->id, 'badgeid4' => $badge->id];
if ($badge->type == BADGE_TYPE_COURSE) {
$sql .= " AND (b.courseid = :courseid OR b.type = :badgetype)";
$params['courseid'] = $badge->courseid;
+24 -12
View File
@@ -113,13 +113,13 @@ class core_badges_renderer extends plugin_renderer_base {
'type' => 'submit',
'name' => 'award',
'value' => $this->output->larrow() . ' ' . get_string('award', 'badges'),
'class' => 'actionbutton')
'class' => 'actionbutton btn btn-secondary')
);
$actioncell->text .= html_writer::empty_tag('input', array(
'type' => 'submit',
'name' => 'revoke',
'value' => get_string('revoke', 'badges') . ' ' . $this->output->rarrow(),
'class' => 'actionbutton')
'class' => 'actionbutton btn btn-secondary')
);
$actioncell->text .= html_writer::end_tag('div', array());
$actioncell->attributes['class'] = 'actions';
@@ -348,15 +348,25 @@ class core_badges_renderer extends plugin_renderer_base {
$output .= $this->output->heading(get_string('badgedetails', 'badges'), 3);
$dl = array();
$dl[get_string('name')] = $badge->name;
$dl[get_string('version', 'badges')] = $badge->version;
if (!empty($badge->version)) {
$dl[get_string('version', 'badges')] = $badge->version;
}
$dl[get_string('language')] = $languages[$badge->language];
$dl[get_string('description', 'badges')] = $badge->description;
$dl[get_string('imageauthorname', 'badges')] = $badge->imageauthorname;
$dl[get_string('imageauthoremail', 'badges')] =
html_writer::tag('a', $badge->imageauthoremail, array('href' => 'mailto:' . $badge->imageauthoremail));
$dl[get_string('imageauthorurl', 'badges')] =
html_writer::link($badge->imageauthorurl, $badge->imageauthorurl, array('target' => '_blank'));
$dl[get_string('imagecaption', 'badges')] = $badge->imagecaption;
if (!empty($badge->imageauthorname)) {
$dl[get_string('imageauthorname', 'badges')] = $badge->imageauthorname;
}
if (!empty($badge->imageauthoremail)) {
$dl[get_string('imageauthoremail', 'badges')] =
html_writer::tag('a', $badge->imageauthoremail, array('href' => 'mailto:' . $badge->imageauthoremail));
}
if (!empty($badge->imageauthorurl)) {
$dl[get_string('imageauthorurl', 'badges')] =
html_writer::link($badge->imageauthorurl, $badge->imageauthorurl, array('target' => '_blank'));
}
if (!empty($badge->imagecaption)) {
$dl[get_string('imagecaption', 'badges')] = $badge->imagecaption;
}
if ($badge->type == BADGE_TYPE_COURSE && isset($badge->courseid)) {
$coursename = $DB->get_field('course', 'fullname', array('id' => $badge->courseid));
@@ -722,8 +732,10 @@ class core_badges_renderer extends plugin_renderer_base {
}
if (has_capability('moodle/badges:configuredetails', $context)) {
$related = $DB->count_records_sql("SELECT COUNT(br.badgeid)
FROM {badge_related} br WHERE br.badgeid = :badgeid", array('badgeid' => $badgeid));
$sql = "SELECT COUNT(br.badgeid)
FROM {badge_related} br
WHERE (br.badgeid = :badgeid OR br.relatedbadgeid = :badgeid2)";
$related = $DB->count_records_sql($sql, ['badgeid' => $badgeid, 'badgeid2' => $badgeid]);
$row[] = new tabobject('brelated',
new moodle_url('/badges/related.php', array('id' => $badgeid)),
get_string('brelated', 'badges', $related)
@@ -1502,4 +1514,4 @@ class badge_competencies_alignment implements renderable
$this->alignments = $alignments;
$this->currentbadgeid = $currentbadgeid;
}
}
}
+8 -8
View File
@@ -82,7 +82,7 @@ Feature: Add badges to the system
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
And I press "Create badge"
And I follow "Related badges (0)"
And I should see "This badge does not have related badges."
And I should see "This badge does not have any related badges."
And I press "Add related badge"
And I follow "Related badges"
And I wait until the page is ready
@@ -109,11 +109,11 @@ Feature: Add badges to the system
And I should see "Endorsement"
And I follow "Endorsement"
And I set the following fields to these values:
| Name | Endorser |
| Endorser name | Endorser |
| Email | endorsement@example.com |
| Issuer URL | http://example.com |
| Claim URL | http://claimurl.example.com |
| Endorsement Comment | Test Endorsement Comment |
| Endorsement comment | Test Endorsement comment |
And I press "Save changes"
Then I should see "Changes saved"
@@ -134,13 +134,13 @@ Feature: Add badges to the system
Then I should see "Test Badge"
And I should see "Endorsement"
And I follow "Competencies (0)"
And I should see "This badge does not have a competencies alignment."
And I press "Add competency alignment"
And I follow "Competencies alignment"
And I should see "This badge does not have any competencies specified."
And I press "Add competency"
And I follow "Competency"
And I wait until the page is ready
And I follow "Competencies alignment"
And I follow "Competency"
And I set the following fields to these values:
| Name | Test Badge Competencies |
| Competency name | Test Badge Competencies |
| URL | https://competencies.example.com |
| Description | Test Badge Competencies description |
When I press "Save changes"
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'block_activity_modules'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'block_activity_results'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018050800; // Requires this Moodle version
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2018112800; // Requires this Moodle version
$plugin->component = 'block_admin_bookmarks'; // Full name of the plugin (used for diagnostics)
+3
View File
@@ -57,5 +57,8 @@ function xmldb_block_badges_upgrade($oldversion, $block) {
// Automatically generated Moodle v3.5.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.6.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2018051400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018050800; // Requires this Moodle version.
$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2018112800; // Requires this Moodle version.
$plugin->component = 'block_badges';

Some files were not shown because too many files have changed in this diff Show More