Compare commits

...

2606 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 665c3ac59c Moodle release 3.4 2017-11-11 19:31:19 +01:00
Eloy Lafuente (stronk7) 07c0bb10fb NOBUG: Change travis.yml to MOODLE_34_STABLE 2017-11-11 19:31:18 +01:00
Eloy Lafuente (stronk7) cf57ee9285 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-11-11 19:31:14 +01:00
Eloy Lafuente (stronk7) d334aea208 Merge branch 'MDL-60779-master' of git://github.com/junpataleta/moodle 2017-11-11 13:03:54 +01:00
Jun Pataleta 0cf288757d MDL-60779 calendar: Pass correct parameters for get_calendar_X_view() 2017-11-11 22:28:38 +13:00
AMOS bot 695cd06817 Automatically generated installer lang files 2017-11-11 00:05:36 +00:00
David Monllao ab9936962e Moodle release 3.4rc3 2017-11-10 15:15:37 +01:00
David Monllao d39fcc420e Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-11-10 15:15:35 +01:00
David Monllao 08641175b3 Merge branch 'MDL-60764' of git://github.com/stronk7/moodle 2017-11-10 10:20:25 +01:00
Eloy Lafuente (stronk7) 66aee746e3 MDL-60764 versions: remove some outdated releases in requires 2017-11-10 09:45:56 +01:00
Damyon Wiese f738fc8efd Merge branch 'MDL-60763-master' of git://github.com/andrewnicols/moodle 2017-11-10 13:57:04 +08:00
Andrew Nicols 27973b545c MDL-60763 calendar: Use PHP concat, not JS 2017-11-10 13:56:39 +08:00
Damyon Wiese 3192438075 Merge branch 'MDL-60763-master' of git://github.com/andrewnicols/moodle 2017-11-10 13:47:05 +08:00
Andrew Nicols 41b7375c07 MDL-60763 core_calendar: Deprecate calendar_get_upcoming 2017-11-10 13:45:32 +08:00
Jun Pataleta cb04dcf4ce Merge branch 'MDL-60771-master' of git://github.com/lameze/moodle 2017-11-10 18:03:49 +13:00
Jun Pataleta c3925187ed Merge branch 'MDL-60758_master' of git://github.com/dmonllao/moodle 2017-11-10 17:21:15 +13:00
Damyon Wiese 4ceece6ea1 Merge branch 'MDL-60749-master' of git://github.com/sarjona/moodle 2017-11-10 12:05:46 +08:00
Jun Pataleta cfbc820e1b Merge branch 'MDL-60766-master' of git://github.com/ryanwyllie/moodle 2017-11-10 17:02:41 +13:00
Simey Lameze fbbcf45ef2 MDL-60771 mod_scorm: typecast score to integer 2017-11-10 12:00:17 +08:00
Andrew Nicols 6e2d8c121b Merge branch 'MDL-52838-master' of git://github.com/damyon/moodle 2017-11-10 11:38:13 +08:00
Damyon Wiese 6b2a9a6fb8 Merge branch 'MDL-60765-master' of git://github.com/andrewnicols/moodle 2017-11-10 10:55:09 +08:00
Andrew Nicols fb5bbf1424 MDL-60765 theme: Make inplace-autocomplete rule more specific
This change was intended to fix an issue with the autocomplete in RTL,
but was applied to all inplace-editables.
2017-11-10 10:29:11 +08:00
Damyon Wiese ce225e1c5e MDL-52838 workshop: Each criterion > 0 levels
Add validation to the edit assessment form so each criterion in a rubric requires at least one level.
2017-11-10 10:22:27 +08:00
Ryan Wyllie 08b7558483 MDL-60766 block_calendar_upcoming: stop summary modal not logged in
Stopped the JS from running on the block when the user is not logged in
because it attempts to load a summary modal when an event is clicked on
which results in a failed call to a webservice.
2017-11-10 02:20:32 +00:00
Andrew Nicols 9dead25fd5 MDL-60763 core_calendar: Revert removal of calendar_get_upcoming
This reverts part of commit 522b84be04.
2017-11-10 10:11:42 +08:00
Ryan Wyllie eac88b955f MDL-60766 block_calendar_month: hide nav when not logged in 2017-11-10 02:07:50 +00:00
Eloy Lafuente (stronk7) 438c98cc98 MDL-60764 versions: main version bump 2017-11-10 02:56:14 +01:00
Eloy Lafuente (stronk7) ba854606e6 MDL-60764 versions: bump all versions and requires near release
version = 2017111300 release version
requires= 2017110800 current rc2 version
2017-11-10 02:52:53 +01:00
Jake Dallimore f5b63fc829 Merge branch 'MDL-60760_master' of git://github.com/dmonllao/moodle 2017-11-10 09:32:17 +08:00
Andrew Nicols 6996fbaa0e MDL-60763 core_calendar: Revert removal of calendar_get_upcoming
Revert "MDL-60092 core_calendar: remove unused calendar_get_upcoming method"

This reverts commit 4259387ebb.
2017-11-10 08:11:36 +08:00
David Monllao 20305a8a8f MDL-60758 tool_analytics: Skip guess start if higher than guess end 2017-11-09 17:11:34 +01:00
David Monllao 5da020169e MDL-60760 tool_analytics: No onlycli link for managers 2017-11-09 17:05:08 +01:00
Sara Arjona 2f673d8b6a MDL-60749 scorm: Remove   from files when downloading 2017-11-09 10:15:03 +01:00
Sara Arjona 4bcb0a9a1d MDL-60550 user: Add more restrictions in keyword searches
Original patch provided by Tim Schroeder.
2017-11-09 16:29:29 +08:00
David Monllao a4e0b7468c Merge branch 'MDL-60718-master' of git://github.com/sarjona/moodle 2017-11-09 09:27:01 +01:00
David Monllao 7fdcdc04ff Merge branch 'MDL-60615-master' of git://github.com/damyon/moodle 2017-11-09 08:48:48 +01:00
Damyon Wiese bef5a8ca10 Merge branch 'MDL-60752-master' of git://github.com/andrewnicols/moodle 2017-11-09 15:08:11 +08:00
Damyon Wiese 246698e779 MDL-60615 imscc: string to array fix
Sloppy typing in the imscc converter is causing errors on php7.1

Variable is initialised as a string and then used as an array.
2017-11-09 15:05:36 +08:00
Jake Dallimore 4f3262fede Merge branch 'MDL-60753_master' of git://github.com/markn86/moodle 2017-11-09 14:47:23 +08:00
Andrew Nicols f169f4fd21 MDL-60752 lti: Compare text in types_config properly 2017-11-09 14:25:51 +08:00
Mark Nelson d48d1ba19a MDL-60753 report_competency: fixed dialogue failing to show 2017-11-09 14:11:24 +08:00
Jun Pataleta 7a571b813a Merge branch 'MDL-60628-master' of git://github.com/lameze/moodle 2017-11-09 17:08:46 +13:00
Simey Lameze 754016ab33 MDL-60628 calendar: amend web service unit test 2017-11-09 11:43:49 +08:00
Simey Lameze 10c17dcc10 MDL-60628 calendar: support category events on get_calendar_events ws 2017-11-09 11:29:07 +08:00
Andrew Nicols 5518a32de5 Merge branch 'MDL-60579-master-fix2' of https://github.com/damyon/moodle 2017-11-09 11:18:14 +08:00
Damyon Wiese 56f05f23c6 MDL-60579 user: Don't lose text filters
When replacing a group filter with a different group filter - don't forget all the current text filters that have
been applied.
2017-11-09 11:06:30 +08:00
Damyon Wiese bb869f05e8 MDL-60579 user: Move defines into library
Entry page user/index.php was defining constants that were used by the renderer.
This means the renderer was tied to user/index.php.
2017-11-09 11:06:30 +08:00
Andrew Nicols 7cf4331a6f MDL-60579 user: Correct PARAM type for filters
Damyon pointed out during the integration of this fixset, that the
PARAM type is incorrect.
2017-11-09 10:07:13 +08:00
Andrew Nicols 762f8dc1db MDL-60579 user: Add missing case breaks 2017-11-09 09:07:34 +08:00
Andrew Nicols a997dc9da5 MDL-60579 user: Correct search for strings 2017-11-09 09:07:21 +08:00
Andrew Nicols 446b21b512 MDL-60579 user: Check filter strings have correct part count 2017-11-09 09:07:02 +08:00
Andrew Nicols 3968d2ca7e MDL-60579 user: Prevent behat from interacting til setup complete 2017-11-09 09:05:22 +08:00
AMOS bot 68c580c903 Automatically generated installer lang files 2017-11-09 00:05:00 +00:00
Sara Arjona 0c0d460e8b MDL-60718 analytics: Avoid duplicates for users with 2 enrolments 2017-11-08 19:12:59 +01:00
David Monllao ed0e2cea00 Merge branch 'MDL-60732-master' of git://github.com/damyon/moodle 2017-11-08 17:48:07 +01:00
David Monllao 7effd6dd79 Merge branch 'MDL-60720-master' of https://github.com/sammarshallou/moodle 2017-11-08 17:27:15 +01:00
David Monllao 29adfbc3c8 Merge branch 'MDL-58699-master' of git://github.com/damyon/moodle 2017-11-08 15:56:25 +01:00
David Monllao 4e73acf3cf Merge branch 'MDL-60579-master' of https://github.com/mihailges/moodle 2017-11-08 12:16:20 +01:00
David Monllao fcafb22c22 MDL-60733 oauth: Remove outdated comment 2017-11-08 12:04:31 +01:00
David Monllao 6463a047a2 Merge branch 'MDL-60733-master' of git://github.com/damyon/moodle 2017-11-08 12:03:43 +01:00
David Monllao ccf7578373 Moodle release 3.4rc2 2017-11-08 09:47:39 +01:00
David Monllao 68ba214c65 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-11-08 09:47:38 +01:00
Damyon Wiese a471bc4971 MDL-60732 core_user: Show group filters
Always show the group filters, even if the course is in NO_GROUPS mode.
2017-11-08 16:45:42 +08:00
Damyon Wiese b6319f70bd Merge branch 'MDL-60590-master' of git://github.com/andrewnicols/moodle 2017-11-08 15:46:44 +08:00
Damyon Wiese d3882ea4a3 MDL-60733 core: B/C for google_oauth
The google_oauth class extends oauth2client which was modified to send "Accept" headers.

The "Accept" headers break picasa and could break any other plugin that was using google_oauth.
2017-11-08 15:41:53 +08:00
Andrew Nicols e759c9ed83 MDL-60590 enrol_manual: Fix for race condition in button calculation 2017-11-08 15:31:10 +08:00
Jun Pataleta c9f995872f Merge branch 'MDL-60700-master-fix' of git://github.com/andrewnicols/moodle 2017-11-08 15:17:25 +13:00
Andrew Nicols 2e36c42625 MDL-60700 calendar: Update behat test or new normal 2017-11-08 10:13:20 +08:00
Jun Pataleta 7a2300fd82 Merge branch 'MDL-60717-master-enfix' of git://github.com/mudrd8mz/moodle 2017-11-08 14:43:15 +13:00
AMOS bot f3342e1010 Automatically generated installer lang files 2017-11-08 00:05:03 +00:00
David Mudrák ea90412944 MDL-60717 lang: Reflect the string change in behat scenario file 2017-11-07 21:49:18 +01:00
Helen Foster 8d64443452 MDL-60717 lang: Merge English strings from the en_fix language pack
Significant string changes:

- needbcmath,auth_ldap - 'grace logins' changed to 'expired password
  checking'
2017-11-07 21:30:14 +01:00
sam marshall 4b0facc984 MDL-60720 core_search: Indexing halts on failed get_document
The recordsets used for search indexing sometimes return results
which are invalid (e.g. cannot be found in database). When this
happens, the result in the iterator for the recordset will be
false. Due to a bug, the iterator used to stop when it encountered
a false value, which prevented indexing from getting past the
problematic record.

In addition, the iterator that skips future data resulted in the
current() function of its parent indicator being called twice per
entry, which meant that search indexing called get_document()
twice as many times.
2017-11-07 16:36:37 +00:00
David Monllao d6d2cec4a0 Merge branch 'MDL-59758_notes-fix' of git://github.com/dmonllao/moodle 2017-11-07 14:01:35 +01:00
David Monllao 57c9b7fc37 MDL-59758 user: Notes publish state adapted to ws 2017-11-07 13:53:21 +01:00
David Monllao cae37299f3 Merge branch 'MDL-59758-master' of git://github.com/damyon/moodle 2017-11-07 12:37:30 +01:00
Mihail Geshoski c835126185 MDL-60579 enrolments: Applied filters lost on certain actions
AMOS BEGIN
    CPY [invalidrequest,enrol_lti],[invalidrequest,enrol]
AMOS END
2017-11-07 16:17:00 +08:00
Jake Dallimore 5243e93661 Merge branch 'MDL-59256_master' of git://github.com/dmonllao/moodle 2017-11-07 16:03:43 +08:00
Jake Dallimore b135c42a17 Merge branch 'MDL-60700-int-fix-1' of github.com:ryanwyllie/moodle 2017-11-07 15:44:12 +08:00
Ryan Wyllie ec8f488f30 MDL-60700 clean: add course link to activity event summary modal 2017-11-07 07:36:49 +00:00
David Monllao aa30dc8860 MDL-59256 analytics: Respect activities specific access conditions 2017-11-07 08:14:53 +01:00
David Monllao 76f98c3bd5 MDL-59256 analytics: Move get_activities method to CoI scope
CoI = community of inquiry model
2017-11-07 08:14:49 +01:00
Jake Dallimore 7783fd0ec1 Merge branch 'MDL-57772-master' of git://github.com/damyon/moodle 2017-11-07 15:01:31 +08:00
Damyon Wiese a6943ebb59 MDL-59758 core_user: Pluralise bulk actions
Don't say 1 people.
2017-11-07 14:39:04 +08:00
Jake Dallimore eaa43a132c Merge branch 'MDL-60700-master' of git://github.com/ryanwyllie/moodle 2017-11-07 14:23:50 +08:00
Damyon Wiese 81aa5e196f MDL-59758 core_user: Clean up user renderer
These functions are not used anywhere by anything.
2017-11-07 14:18:54 +08:00
Damyon Wiese b5b81de3d6 MDL-59758 core_user: Replace old bulk actions
The participants page has some clunky multi page forms for bulk actions. Replaces it with an ajax alternative.
2017-11-07 14:18:49 +08:00
Ryan Wyllie f0fc8a194a MDL-60700 calendar: remove bottom margin for description in summary 2017-11-07 06:03:01 +00:00
Andrew Nicols 03561ea899 Merge branch 'MDL-60062-master-2' of git://github.com/ryanwyllie/moodle 2017-11-07 13:49:47 +08:00
Ryan Wyllie 6688ae2ba2 MDL-60062 calendar: prevent drag and drop of override events 2017-11-07 05:47:18 +00:00
Jake Dallimore b44bc9bf6c Merge branch 'MDL-60686-master' of git://github.com/damyon/moodle 2017-11-07 13:39:33 +08:00
Damyon Wiese 65c52e05d1 MDL-58699 mod_quiz: Require javascript for popup
If any of the access rules require the attempt to open in a new window, assume we
require javascript to attempt the quiz. This makes it harder to bypass the javascript
pseudo security restrictions.
2017-11-07 12:48:21 +08:00
Damyon Wiese 1ccc9f1953 Merge branch 'MDL-60590_master-fix' of git://github.com/markn86/moodle 2017-11-07 11:59:49 +08:00
Damyon Wiese efe2681894 MDL-57772 chat: BEEP is back baby! 2017-11-07 11:25:02 +08:00
Mark Nelson e3a6d44845 MDL-60590 core_enrol: fixed failing Behat scenarios 2017-11-07 11:24:34 +08:00
Damyon Wiese 8aa01fcf61 Merge branch 'MDL-60671-master' of https://github.com/sammarshallou/moodle 2017-11-07 11:05:43 +08:00
Jake Dallimore 8072eb1384 Merge branch 'MDL-60705-master' of https://github.com/sammarshallou/moodle 2017-11-07 10:50:53 +08:00
Damyon Wiese b9ae53f86b MDL-59758 js: auto_rows module easier to use
Allow passing the direct text area, or a container.
Trigger change events on the text area, not the container.
Properly handle starting with rows > 1
2017-11-07 10:36:13 +08:00
Damyon Wiese 5616a31987 MDL-60686 core_users: Reorder filters by utility
Order the list of filters on the participant page from most useful to least useful.
2017-11-07 10:12:45 +08:00
Ryan Wyllie 8926030555 MDL-60700 calendar: normalise event type in summmary modal render 2017-11-07 02:08:00 +00:00
Jun Pataleta 13b19e40cb Merge branch 'wip-MDL-60391-master' of git://github.com/marinaglancy/moodle 2017-11-07 14:30:58 +13:00
Ryan Wyllie 478b1d194f MDL-60062 calendar: remove validate_event_timestart callback 2017-11-07 01:25:33 +00:00
Ryan Wyllie 9aac9f7074 MDL-60062 quiz: add support for drag drop of calendar events 2017-11-07 01:25:32 +00:00
Jun Pataleta 3a0951f027 Merge branch 'MDL-60361-master' of git://github.com/andrewnicols/moodle 2017-11-07 13:37:52 +13:00
Andrew Nicols 7d416f9c2c MDL-60361 calendar: Update behat test lang 2017-11-07 08:36:29 +08:00
Jun Pataleta 589b602be3 Merge branch 'MDL-60611-master-fix' of git://github.com/junpataleta/moodle 2017-11-07 11:31:45 +13:00
Jun Pataleta 8001199766 MDL-60611 calendar: Remove usage of deprecated setExpectedException() 2017-11-07 11:21:29 +13:00
Jun Pataleta a56833d49d Merge branch 'MDL-60611' of git://github.com/stronk7/moodle 2017-11-07 10:14:24 +13:00
David Monllao be88f0993d Merge branch 'MDL-60638-master' of git://github.com/lameze/moodle 2017-11-06 21:45:14 +01:00
sam marshall 11e60032be MDL-60671 core_search: Cron output should use mtrace
The mtrace function is preferable for plain text logging/progress
output because it can be redirected if necessary. By convention it
is normally used in cron and can be used in CLI tasks if required.

This change makes the text_progress_trace class use mtrace instead
of echo and then flush. (Default behaviour of mtrace is to do
exactly that, but it can be redirected too.)

Before this change, if anybody is relying on mtrace behaviour to
redirect logs of cron output, this will fail for some parts of the
search cron output (and some other places like auth plugins).
2017-11-06 11:55:29 +00:00
sam marshall 401710883b MDL-60705 core_search: Unit tests get time wrong by factor 1 million 2017-11-06 11:50:43 +00:00
Damyon Wiese 40f05d2312 Merge branch 'MDL-60590_master' of git://github.com/markn86/moodle 2017-11-06 14:18:40 +08:00
Andrew Nicols 3602df58b2 Merge branch 'MDL-60667_master' of git://github.com/dmonllao/moodle 2017-11-06 13:27:11 +08:00
Andrew Nicols f3743b3041 Merge branch 'MDL-60626-master' of git://github.com/damyon/moodle 2017-11-06 12:43:24 +08:00
Mark Nelson e2d635bbaf MDL-60590 core_user: added Behat test for cohort list presence 2017-11-06 12:39:31 +08:00
Mark Nelson a764855641 MDL-60590 core_cohort: removed unused variables from search_cohorts() 2017-11-06 12:39:31 +08:00
Mark Nelson 9b0f29239b MDL-60590 enrol_manual: button title depends on cohort list existence
Also added a SELECTORS object to tidy the code by keeping the
selectors in a central location.
2017-11-06 12:35:05 +08:00
Mark Nelson 8ce86ebba3 MDL-60590 enrol_manual: check cohorts exist before displaying select 2017-11-06 12:35:05 +08:00
Damyon Wiese 30890c2971 MDL-60626 calendar: Fix for overrides
Override events do not have the courseid so we need to get it from the module instance.
2017-11-06 12:21:27 +08:00
Mark Nelson 1bd70073c5 MDL-60590 enrol_manual: only show cohorts with necessary capabilities 2017-11-06 11:22:45 +08:00
Damyon Wiese 9e0884d410 MDL-60626 calendar: Unit tests for capabilities
Check various calendar external functions for capabilities.
2017-11-06 11:11:28 +08:00
Damyon Wiese af25b8fc7f MDL-60626 calendar: Check capabilities for api
All external functions must check all capabilities before returning data.
The calendar API itself does not check capabilities (I wish it did), so we must be
careful exposing these functions to webservices.
2017-11-06 11:11:28 +08:00
Damyon Wiese ef29782f31 Merge branch 'MDL-59858-master' of git://github.com/junpataleta/moodle 2017-11-06 10:45:34 +08:00
Damyon Wiese 1ada616c56 Merge branch 'MDL-60596_master' of git://github.com/dmonllao/moodle 2017-11-06 10:19:10 +08:00
Damyon Wiese 8443b88995 Merge branch 'MDL-60437-multilang-html-block-titles' of https://github.com/lucaboesch/moodle 2017-11-06 10:09:08 +08:00
Jake Dallimore eb354bdefa Merge branch 'MDL-60361-master' of git://github.com/andrewnicols/moodle 2017-11-06 09:29:46 +08:00
Jun Pataleta 4cd3927c4f MDL-59858 amd: Focus on the element that actually triggers the modal 2017-11-06 13:18:03 +13:00
Jun Pataleta 6a973d261a Merge branch 'MDL-60598_master' of git://github.com/dmonllao/moodle 2017-11-06 10:18:46 +13:00
Eloy Lafuente (stronk7) 796e48a58b MDL-60611 phpunit: remove deprecated stuff and other minor fixes
Thanks @scara for MDL-60611 phpunit: improved redis skipping reasons
2017-11-05 01:45:04 +01:00
AMOS bot 496b39974f Automatically generated installer lang files 2017-11-05 00:05:09 +00:00
Luca Bösch 6586118e0f MDL-60437 blocks: HTML block title multilang 2017-11-03 16:35:59 +01:00
David Monllao 4a145a8ae5 MDL-60598 analytics: Info message for predictions based on data 2017-11-03 12:45:40 +01:00
David Monllao da8a0c97f0 MDL-60596 analytics: Check cm completion if available
Previous code was restricted to course modules origin.
2017-11-03 12:44:21 +01:00
David Monllao 20b2565c38 MDL-60667 mlbackend_python: Bump to non-linear neural net version 2017-11-03 12:43:52 +01:00
David Monllao 36e84e96fc MDL-59256 analytics: Move get_activities test scope 2017-11-03 12:42:20 +01:00
David Monllao 159b4e5d8c Moodle release 3.4rc1 2017-11-03 10:26:18 +01:00
Jake Dallimore aa95085969 Merge branch 'MDL-58047-master-fix1' of http://github.com/damyon/moodle 2017-11-03 16:09:29 +08:00
Damyon Wiese 79ea89fea2 MDL-58047 assign: submission sorting
Only exclude new submission records from the sorting, draft and reopened submission are valid.
2017-11-03 15:55:10 +08:00
Jun Pataleta 928bcb02d6 Merge branch 'MDL-60657-int-fix-1' of github.com:ryanwyllie/moodle 2017-11-03 16:51:24 +13:00
Andrew Nicols b9fd516407 MDL-60361 calendar: Support all event types for calendar subs 2017-11-03 11:27:40 +08:00
Ryan Wyllie c2502375ff MDL-60657 boost: fix styles when extending modal components
I've wrapped the custom modal styling in the .modal class. This prevents
those custom styles from being pulled in when the SCSS @extend
functionality is used to extend the modal components.
2017-11-03 03:18:02 +00:00
Simey Lameze 20a5056df6 MDL-60638 calendar: fix event subscription variable names 2017-11-03 10:03:17 +08:00
Jake Dallimore 4071a2b6fe Merge branch 'MDL-60587-master-4' of git://github.com/andrewnicols/moodle 2017-11-03 09:14:52 +08:00
Andrew Nicols 6630b38c95 MDL-60587 calendar: Adjust use of time() in unit tests 2017-11-03 09:04:10 +08:00
Jake Dallimore b974b5d05d Merge branch 'MDL-60587-master-4' of git://github.com/andrewnicols/moodle 2017-11-03 08:37:31 +08:00
Andrew Nicols 1ab858314a MDL-60587 block: Correct courseid/categoryid check
pagelib uses magic getters for both the course, and category.
It does not define the magic __isset function though.
2017-11-03 08:14:56 +08:00
Eloy Lafuente (stronk7) 6be1923d81 MDL-60611 phpunit: ignore risky (empty) unit tests
At some point we should review them, removing or moving stuff.
2017-11-02 23:45:35 +01:00
Eloy Lafuente (stronk7) 801a372dad MDL-60611 phpunit: switch to namespaced phunit classes 2017-11-02 23:45:34 +01:00
Eloy Lafuente (stronk7) 1322351b92 MDL-60611 phpunit: Bump phpunit to 6.4 and travis to use PHP72 2017-11-02 23:45:21 +01:00
David Monllao bb2071ca17 Merge branch 'MDL-58047-34-sortbysubmission' of https://github.com/roperto/moodle 2017-11-02 16:57:03 +01:00
David Monllao be713b7144 Merge branch 'MDL-51945-master' of git://github.com/jleyva/moodle 2017-11-02 16:54:34 +01:00
Andrew Nicols e20752c4f5 MDL-60587 calendar: Fix un-validated params 2017-11-02 21:49:28 +08:00
Andrew Nicols 30ff29dc9f MDL-60587 calendar: Improve link params for calendar buttons 2017-11-02 21:49:28 +08:00
Andrew Nicols 6607c5ffb6 MDL-60587 calendar: Switch WS to use new helper 2017-11-02 21:49:28 +08:00
Andrew Nicols 7f14def230 MDL-60587 calendar: Add missing categoryid in upcoming WS 2017-11-02 21:49:28 +08:00
Andrew Nicols 39e364515f MDL-60587 calendar: Switch to new helper in main view 2017-11-02 21:49:28 +08:00
Andrew Nicols 557d8528eb MDL-60587 block_calendar_upcoming: Setup calendar using new helper 2017-11-02 21:49:28 +08:00
Andrew Nicols 0bd6039f40 MDL-60587 block_calendar_month: Setup calendar using new helper 2017-11-02 21:49:28 +08:00
Andrew Nicols 57e8c9f748 MDL-60587 calendar: Correct category subscription in information 2017-11-02 21:49:28 +08:00
Andrew Nicols 7b7bf31d4c MDL-60587 calendar: Add helper to setup the calendar_information 2017-11-02 21:49:28 +08:00
David Monllao 59aff5f949 Merge branch 'MDL-60634-master' of git://github.com/jleyva/moodle 2017-11-02 13:24:58 +01:00
Eloy Lafuente (stronk7) f816ea9a67 Merge branch 'MDL-60659-master' of git://github.com/junpataleta/moodle 2017-11-02 12:45:22 +01:00
David Monllao 6e3314f044 Merge branch 'MDL-60633-master' of git://github.com/andrewnicols/moodle 2017-11-02 12:04:07 +01:00
David Monllao 2a542d0265 Merge branch 'MDL-60657-master' of git://github.com/ryanwyllie/moodle 2017-11-02 11:59:30 +01:00
Damyon Wiese f18fb611c9 Merge branch 'MDL-60558-master' of git://github.com/andrewnicols/moodle 2017-11-02 15:46:42 +08:00
Andrew Nicols 43caf0217f MDL-60558 block_calendar_upcoming: Render the template when no events 2017-11-02 15:43:17 +08:00
David Monllao 7b03092121 Merge branch 'MDL-53501-master' of git://github.com/jleyva/moodle 2017-11-02 08:30:24 +01:00
Damyon Wiese 5dbd051502 Merge branch 'MDL-59950_master' of git://github.com/dmonllao/moodle 2017-11-02 14:39:32 +08:00
Jun Pataleta c39a22f600 MDL-60659 mod_forum: Use PHP EOL for line breaks in expected values 2017-11-02 19:11:00 +13:00
Ryan Wyllie f0f38bf1d3 MDL-60657 core: fix upgrade notice modal header padding 2017-11-02 06:07:00 +00:00
Damyon Wiese 41080050b0 Merge branch 'MDL-60558-master' of git://github.com/andrewnicols/moodle 2017-11-02 13:03:35 +08:00
Damyon Wiese ae348e78a0 Merge branch 'MDL-59982_master' of git://github.com/markn86/moodle 2017-11-02 12:21:39 +08:00
Damyon Wiese 71fc06aae5 Merge branch 'MDL-60645-master' of git://github.com/andrewnicols/moodle 2017-11-02 12:10:04 +08:00
Andrew Nicols e3491a093a MDL-60558 calendar: Upcoming block should use the right template 2017-11-02 11:55:49 +08:00
Andrew Nicols a0a78199b8 MDL-60558 calendar: Add event metadata to upcoming template 2017-11-02 11:55:49 +08:00
Andrew Nicols d523cbcb26 MDL-60558 calendar: Upcoming should support categories 2017-11-02 11:54:43 +08:00
Andrew Nicols 5c9acb8164 MDL-60558 calendar: Adjust URL change
The URL change belongs in the calendar_view, not the view_manager.
The view_manager is responsibe for updating the view, not for the
resultant actions from it.

This also changes to use pushState so as not to overwrite the current
location in history.
2017-11-02 11:54:13 +08:00
Andrew Nicols 8242027da3 MDL-60558 calendar: Move edit event to CRUD 2017-11-02 11:53:52 +08:00
Andrew Nicols fd2f1ae146 MDL-60558 calendar: Remove old SELECTORS 2017-11-02 11:53:49 +08:00
Andrew Nicols c8419f87c0 MDL-60558 calendar: Harden event link detection 2017-11-02 11:53:26 +08:00
Damyon Wiese 4837fea0aa Merge branch 'MDL-60619-master' of https://github.com/snake/moodle 2017-11-02 11:51:35 +08:00
Damyon Wiese 671440d708 Merge branch 'MDL-60576-master' of git://github.com/andrewnicols/moodle 2017-11-02 11:38:57 +08:00
Andrew Nicols 6c3f463dbd MDL-60558 calendar: Move the summary modal to view_manager 2017-11-02 10:56:00 +08:00
Damyon Wiese fca7e60c81 Merge branch 'MDL-60655-master' of git://github.com/junpataleta/moodle 2017-11-02 10:45:07 +08:00
Jake Dallimore 1e83eec993 Merge branch 'MDL-60555-master' of https://github.com/sammarshallou/moodle 2017-11-02 10:40:43 +08:00
Jake Dallimore 216bb33940 Merge branch 'master_MDL-60007' of https://github.com/CengageEng/moodle 2017-11-02 08:50:42 +08:00
Andrew Nicols 58280ae0b8 Merge branch 'wip-MDL-60515-master' of git://github.com/abgreeve/moodle 2017-11-02 08:47:17 +08:00
Andrew Nicols 0df5c743ad MDL-60361 calendar: Make eventtype functionality a trait 2017-11-02 07:57:44 +08:00
Jun Pataleta e8da33d86e MDL-60655 tool_httpsreplace: Use \core_text string functions 2017-11-02 10:42:33 +13:00
Jun Pataleta 02331dcd48 MDL-60655 tool_httpsreplace: Use appropriate classes for PHPDocs params 2017-11-02 10:42:33 +13:00
Eloy Lafuente (stronk7) c8e7777766 on-demand release 3.4beta+ 2017-11-01 13:40:07 +01:00
Eloy Lafuente (stronk7) d25f1c3c3c Merge branch 'MDL-60503-master' of git://github.com/damyon/moodle 2017-11-01 10:41:48 +01:00
Adrian Greeve ab2095fb0f MDL-60515 groups: Behat test for viewing the group description. 2017-11-01 15:24:38 +08:00
Adrian Greeve 6b839f3222 MDL-60515 groups: Group details template change.
The group details template has been changed to be
simpler and is styled a bit nicer.
2017-11-01 15:24:38 +08:00
Damyon Wiese 66242b95e0 MDL-60503 npm: Lock required node 8.9.x (LTS) 2017-11-01 14:52:16 +08:00
Mark Nelson 9a428ae012 MDL-59982 core_user: allow user to use filters from same category 2017-11-01 12:55:17 +08:00
Daniel Thee Roperto b8243e4164 MDL-58047 gradebook: fix sort by submission order. 2017-11-01 15:12:48 +11:00
Damyon Wiese 14a1672cff Merge branch 'MDL-52037-master-fix' of https://github.com/andrewnicols/moodle 2017-11-01 11:14:50 +08:00
Andrew Nicols 89cf38c6d9 MDL-52037 theme: Correct question feedback width
This relates to the cloze question answer when hovered.
2017-11-01 11:12:16 +08:00
Andrew Nicols 43a1e9a2a5 MDL-60645 calendar: Add missing clean classes 2017-11-01 09:36:15 +08:00
sam marshall 82735dec4d MDL-60555 core_search: Change unit tests to use fake time
Using real time caused rare failures. I've changed it to use fake
measurement for the indexing timeouts, which were unit-tested.
2017-10-31 14:48:09 +00:00
Vervoort, Claude 76f11421a4 MDL-60007 mod lti: allow delete without content-type 2017-10-31 09:57:38 -04:00
Juan Leyva 1b0978abf3 MDL-60433 mod_data: Fix strict check for groupid 2017-10-31 13:24:07 +01:00
Juan Leyva 098b16fb13 MDL-60634 tool_mobile: Change page used for https test
We need to do the HTTPS check using a page that:
- Does not redirect (login/index.php may redirect because of auth
plugins)
- Does not return moodle exceptions (some custom exceptions handlers
may launch custom HTTP errors)
2017-10-31 11:57:25 +01:00
David Monllao 4916c9bb66 MDL-52037 theme: Update compiled css 2017-10-31 11:00:59 +01:00
Luca Bösch 8fcb479246 MDL-52037 questions: „Whether correct“-feedback marks adaptive width 2017-10-31 10:42:49 +01:00
Jun Pataleta 73ec9b4778 Merge branch 'MDL-60635-master' of git://github.com/andrewnicols/moodle 2017-10-31 21:30:01 +13:00
Jake Dallimore 9cca2db570 Merge branch 'MDL-60472_master' of git://github.com/markn86/moodle 2017-10-31 15:18:37 +08:00
Jake Dallimore 9daa5874a0 Merge branch 'MDL-60607' of git://github.com/timhunt/moodle 2017-10-31 12:57:36 +08:00
Andrew Nicols 60829fbe6d Merge branch 'MDL-60631_master' of git://github.com/dmonllao/moodle 2017-10-31 12:08:01 +08:00
Mark Nelson 9f33d5ac6e MDL-60472 core_user: filter by group id when specified in URL 2017-10-31 12:05:13 +08:00
Jun Pataleta 1cc7a14ce4 Merge branch 'MDL-59936-int-fix-1' of github.com:ryanwyllie/moodle 2017-10-31 16:02:50 +13:00
Jun Pataleta 958c9c17ca Merge branch 'MDL-57560-master' of git://github.com/damyon/moodle 2017-10-31 15:40:19 +13:00
Ryan Wyllie 4397da0c4d MDL-59936 boost: improve focus outline on modal header 2017-10-31 02:38:29 +00:00
Andrew Nicols d8966238dd Merge branch 'wip-MDL-60569-master' of git://github.com/marinaglancy/moodle 2017-10-31 10:15:56 +08:00
Andrew Nicols 065a754111 Merge branch 'MDL-60575-master' of https://github.com/snake/moodle 2017-10-31 10:05:38 +08:00
Andrew Nicols 3e4de62607 Merge branch 'MDL-60139' of git://github.com/timhunt/moodle 2017-10-31 09:14:32 +08:00
Andrew Nicols a37faf9c70 MDL-60635 calendar: Fix end of month issue with previous/next month
This reverts to the previous way in which this was calculated.
2017-10-31 08:51:50 +08:00
Andrew Nicols aba60237cd Merge branch 'MDL-60522-master' of https://github.com/Kathrin84/moodle 2017-10-31 08:12:31 +08:00
Jake Dallimore 5836baf593 MDL-60619 core: fix autocomplete suggestions css for RTL 2017-10-31 07:44:05 +08:00
Jake Dallimore ed44df22a8 MDL-60575 lang: Change registration string to html from markdown 2017-10-31 07:30:33 +08:00
Andrew Nicols 314b8093e7 MDL-60633 core: Add pendingjs checks for inplace editable 2017-10-31 07:03:13 +08:00
Tim Hunt ade8dd5d08 MDL-60607 quiz reports: catch separate groups & user has no group case 2017-10-30 17:57:30 +00:00
David Monllao 28196427a2 Merge branch 'MDL-60528-m' of https://github.com/micaherne/moodle 2017-10-30 17:58:39 +01:00
Juan Leyva 8c4d7cee79 MDL-51945 core_user: Prevent duplicated emails in update_users WS 2017-10-30 17:42:03 +01:00
David Monllao 64476c520e Merge branch 'MDL-52037-cloze-whether-correct-feedback-width' of https://github.com/lucaboesch/moodle 2017-10-30 15:58:39 +01:00
Juan Leyva c851ee5ddb MDL-53501 webservice: Avoid values higher than PHP_INT_MAX
Integers coming from site settings needs casting to int to avoid
returning values higher than PHP_INT_MAX.
2017-10-30 15:55:49 +01:00
David Monllao 860d33c90a Merge branch 'MDL-60348-master' of git://github.com/jleyva/moodle 2017-10-30 15:53:53 +01:00
Tim Hunt eefa2c88e0 MDL-60607 quiz reports: move duplicate code to superclass method 2017-10-30 13:43:36 +00:00
Tim Hunt 284c795d23 MDL-60139 question manual grading: move code to reduce confusion
Move the variable definition closer to where it is used.
2017-10-30 12:55:11 +00:00
Tim Hunt 808b68835b MDL-60139 question manual grading: redisplay mark as typed if editing
When the teacher is upgrading a previously entered grade, we re-display
exactly what they typed before if possible, rather than displaying with
a set number of decimal places.
2017-10-30 12:52:02 +00:00
Tim Hunt 46a3753424 MDL-60139 phpunit: Make assertTag verify attribute values with ===
I had a test that cared about the difference between value="5.0" and value="5".
2017-10-30 12:52:00 +00:00
Juan Leyva 7336f854e6 MDL-60348 mod_workshop: Add parameters checks in evaluate_assessment WS 2017-10-30 13:50:57 +01:00
David Monllao 6065875eac Merge branch 'MDL-60433-master' of git://github.com/jleyva/moodle 2017-10-30 13:23:35 +01:00
David Monllao 3fdecc2841 Merge branch 'MDL-60377-master' of git://github.com/jleyva/moodle 2017-10-30 11:42:11 +01:00
Luca Bösch 8c00d189f4 MDL-52037 questions: „Whether correct“-feedback marks adaptive width 2017-10-30 10:34:09 +00:00
David Monllao 8c7db03a56 MDL-60631 analytics: Pass evaluation analysables filters as objects 2017-10-30 10:54:07 +01:00
Adrian Greeve c550fd0e11 MDL-60515 groups: Update to weblib group function.
Added a new function to get the url for the group picture.
2017-10-30 16:43:19 +08:00
Adrian Greeve 349b705d31 MDL-60515 groups: Display group information on the participants page. 2017-10-30 16:43:18 +08:00
Kathrin Osswald 9cc55074d5 MDL-60522 message: Removed additional tooltips
I removed the additional tooltips because I think that they are just used
in the notifications and messages context and duplicate the all over used
title tag that gives the same information when hovering. So the whole system
stays more consistently.
2017-10-30 08:01:10 +01:00
Damyon Wiese 4fab795ac9 MDL-57560 boost: File upload progress
Copy / adapt some styles from the bootstrap progress widget to match the DOM used for file upload progress.

Bootstrap changed this alot in the current beta so I opted to do a minimal change (affect the scss for boost only), rather
than adapt the HTML to something that will change again anyway when we upgrade to the release version of bootstrap 4.
2017-10-30 13:12:05 +08:00
Jake Dallimore 51af04ab2f Merge branch 'MDL-59606' of git://github.com/timhunt/moodle 2017-10-30 11:23:18 +08:00
Andrew Nicols 9e6d1a3884 Merge branch 'MDL-60605_filetree-spacing' of https://github.com/dvdcastro/moodle 2017-10-30 10:50:26 +08:00
Jun Pataleta 391ea5b7de Merge branch 'MDL-59936-master' of git://github.com/andrewnicols/moodle 2017-10-30 14:34:58 +13:00
Andrew Nicols 9d0e1fca5a Merge branch 'MDL-60360_enable_file_indexing_retroactively' of https://github.com/mattporritt/moodle 2017-10-30 09:17:13 +08:00
Ryan Wyllie 8f730872a7 MDL-59936 calendar: use event colour in summary modal header 2017-10-30 08:34:26 +08:00
Ryan Wyllie 4febb36efe MDL-59936 calendar: use icons in event summary modal 2017-10-30 08:33:54 +08:00
Ryan Wyllie 368832d51c MDL-59936 javascript: hide modal footer without content 2017-10-30 08:33:54 +08:00
Jun Pataleta cc80554892 Merge branch 'MDL-60608-master' of git://github.com/lameze/moodle 2017-10-30 11:47:54 +13:00
Jun Pataleta e905b656f5 Merge branch 'MDL-60570-master' of git://github.com/andrewnicols/moodle 2017-10-30 11:00:44 +13:00
Jun Pataleta 526d354991 Merge branch 'MDL-60572-master' of git://github.com/jleyva/moodle 2017-10-30 10:10:34 +13:00
Andrew Nicols eb3b38f04c MDL-60570 calendar: Correct course filter label in day view 2017-10-29 21:05:55 +08:00
Andrew Nicols a1b696f943 MDL-60576 calendar: Remove underline between icons and text 2017-10-29 21:01:40 +08:00
David Castro 4e52eb8eb0 MDL-60605 assignment: Added some styles to fix spacing in YUI file tree 2017-10-27 11:06:25 -05:00
Tim Hunt dae0ccfc45 MDL-59606 quiz responses: fix edge cases in the report
This patch conbines valuable contributions from Kashmira Nagwekar and
Luca Bösch. Many thanks to them. However, the final form of the fix,
and hence the blame, falls to me -- Tim.

There were several issues here:

* The load_questions_usages_by_activity method in
  question/engine/datalib.php was incorrectly treating the case
  when no data was returned. (Looks like a historic copy-pase from
  other methods that fetch one item by unique id, which therefore
  must exist.)

* The report was not correctly handling the display when the 'Which
  tries' was set to 'with, and without, attempts'.

* It was possible to select the 'All tries' option when also saying
  'Users without attempts'. This combination makes not sense, so
  a disabledIf rule was added to the form.
2017-10-27 16:57:01 +01:00
David Monllao 40f1801c4b on-demand release 3.4beta+ 2017-10-27 12:49:10 +02:00
Juan Leyva 6078d420bf MDL-60572 admin: Enforce URLs in forgottenpasswordurl setting
Also display warnings for admins.
2017-10-27 11:15:01 +02:00
Juan Leyva 2479a7c446 MDL-60572 admin: Fix forgottenpasswordurl for WS
We should expect URLs in that field.
The tool_mobile change is to not break the WS response if
forgottenpasswordurl does not contain a URL.
2017-10-27 11:12:32 +02:00
David Monllao ef9f60a635 MDL-59950 analytics: Use cognitive depth and social breadth constants 2017-10-27 10:48:42 +02:00
David Monllao db9d745c7b MDL-59950 analytics: Add constants for cognitive and social levels 2017-10-27 10:48:38 +02:00
Simey Lameze 0d049757c0 MDL-60608 calendar: change eventdefaultcontext default to 0 2017-10-27 14:19:16 +08:00
Matt Porritt 0f56f6e6da MDL-60360 Global Search: Enable file indexing message update.
If you have Global Search set up on a site without file
indexing enabled, then at a later date you enable file indexing
files associated with existing objects are not added.

The only way to have files for existing objects indexed is to
run a reindex of all content.

This patches updates the file indexing language string in the
solr search settings of Global Search to make this clear
to the site administrator.
2017-10-27 11:11:12 +11:00
David Monllao ff340a0afa Merge branch 'wip-MDL-57055-master' of git://github.com/abgreeve/moodle 2017-10-26 19:17:28 +02:00
David Monllao 62a38a4ece Merge branch 'MDL-60559-master' of git://github.com/andrewnicols/moodle 2017-10-26 19:15:44 +02:00
David Monllao a272c25649 Merge branch 'MDL-60600_master' of https://github.com/marxjohnson/moodle 2017-10-26 18:33:49 +02:00
Mark Johnson a9ca3fa167 MDL-60600 core_output: Clear static icon system cache between unit tests 2017-10-26 14:59:35 +01:00
David Monllao 7ec04e0e09 Merge branch 'MDL-60430-master' of https://github.com/mihailges/moodle 2017-10-26 10:27:34 +02:00
Jun Pataleta 1fc642324a Merge branch 'MDL-59909-master' of git://github.com/damyon/moodle 2017-10-26 21:09:12 +13:00
Damyon Wiese 7f91fb036b Merge branch 'MDL-60366_feedback_upgrade' of git://github.com/davosmith/moodle 2017-10-26 16:02:13 +08:00
David Monllao fd39db29e2 Merge branch 'MDL-59973-master' of git://github.com/damyon/moodle 2017-10-26 09:47:22 +02:00
David Monllao 341505e5de Merge branch 'MDL-60458-master' of git://github.com/damyon/moodle 2017-10-26 09:41:09 +02:00
Damyon Wiese ef7df2ae0a Merge branch 'MDL-60564_master' of git://github.com/markn86/moodle 2017-10-26 14:43:39 +08:00
Damyon Wiese ed6d81c9f7 MDL-59973 calendar: Remove duplication
The function calendar_get_default_courses is responsible for loading all variants of calendar
course lists.

1 the list of courses that the current user will see events for in the site calendar.
2 the list of courses the current user will see when they are looking at a specific course calendar.
3 the list of course calendars the current user can create / edit events in.
2017-10-26 14:39:35 +08:00
Damyon Wiese 01ed53df0f MDL-59973 calendar: Only load required fields
When loading courses for the course filter on the calendar, we only need the id and shortname.
2017-10-26 14:21:29 +08:00
Andrew Nicols 4d03dbf13d Merge branch 'wip-MDL-60543-master' of git://github.com/marinaglancy/moodle 2017-10-26 14:19:43 +08:00
Andrew Nicols 4cc469b2cc Merge branch 'MDL-60162' of git://github.com/timhunt/moodle 2017-10-26 14:04:45 +08:00
Damyon Wiese 1b7d75f19f MDL-59973 calendar: Improve help for admin setting 2017-10-26 13:28:01 +08:00
Damyon Wiese 4dc645d64d MDL-59973 calendar: Unittest calendar_get_default_courses 2017-10-26 13:28:01 +08:00
Damyon Wiese a5327e449d MDL-59973 calendar: Admin calendar course lists
Consolidate the logic for the list of courses an admin will see in the calendar.

They will see all courses if calendar_admincanseeall is enabled.

They will see only courses they are enrolled in of calendar_admincanseeall is not enabled.

They will also see the current course, if they are admin and it is not already in the list.

This applies to the course selector and the create and update event forms.

The calendar link in the navigation block has also been changed to link to the current course calendar instead of the global
one.
2017-10-26 13:28:00 +08:00
Andrew Nicols 4d4b8ae6bf Merge branch 'MDL-60535-questionbank-button-styled' of https://github.com/lucaboesch/moodle 2017-10-26 13:17:56 +08:00
Jake Dallimore 1e67827131 Merge branch 'MDL-60434_master' of git://github.com/dmonllao/moodle 2017-10-26 13:11:46 +08:00
Damyon Wiese 7dfc9ea6b3 Merge branch 'wip-MDL-60390-fix' of https://github.com/marinaglancy/moodle 2017-10-26 12:52:11 +08:00
Marina Glancy 69e89f4a82 MDL-60390 tool_messageinboud: not strict index comparision
This is something that changed in the upgraded Horde library. structure->findBody() returns string but structure->contentTypeMap is indexed with ints
2017-10-26 12:44:51 +08:00
Andrew Nicols b799cde890 Merge branch 'wip-MDL-60104-m34' of git://github.com/amygroshek/moodle 2017-10-26 11:32:54 +08:00
Andrew Nicols 9fd91f8eec Merge branch 'master-MDL-51892' of https://github.com/fwsl/moodle 2017-10-26 11:08:50 +08:00
Jake Dallimore 6e186498fd Merge branch 'MDL-59686-master' of git://github.com/lameze/moodle 2017-10-26 10:16:21 +08:00
Simey Lameze 3c2b703e00 MDL-59686 form: fix autosave support for editor field 2017-10-26 09:03:31 +08:00
Adrian Greeve e6ccfad242 MDL-57055 mod_label: Add label administration for boost.
This patch adds the label adminstration settings to the
label edit page.
2017-10-26 08:41:33 +08:00
Jun Pataleta 75909e3c92 Merge branch 'MDL-59938-master' of git://github.com/andrewnicols/moodle 2017-10-26 11:22:30 +13:00
Jun Pataleta 2a1f7a4442 Merge branch 'MDL-60571-manualgrading-savegotonextpage-styled' of https://github.com/lucaboesch/moodle 2017-10-26 10:02:27 +13:00
David Monllao 7851132177 Merge branch 'MDL-60516-master' of git://github.com/andrewnicols/moodle 2017-10-25 15:16:21 +02:00
David Monllao 4f7a80341e Merge branch 'MDL-59942-master' of git://github.com/andrewnicols/moodle 2017-10-25 15:14:54 +02:00
David Monllao 3b4e9a9fc8 Merge branch 'wip_MDL-60250_master' of git://github.com/gjb2048/moodle 2017-10-25 15:12:23 +02:00
David Monllao 507335e2de Merge branch 'MDL-60538-master' of https://github.com/mihailges/moodle 2017-10-25 15:08:49 +02:00
David Monllao 5b93dc8539 Merge branch 'MDL-60560-master' of git://github.com/andrewnicols/moodle 2017-10-25 15:06:49 +02:00
David Monllao 3a89d0b541 MDL-60434 analytics: Analysables lazy loading 2017-10-25 14:16:35 +02:00
David Monllao cc4d7ce61b MDL-60434 analytics: Missing dependency
Sneaking it in...
2017-10-25 14:13:53 +02:00
David Monllao b8bb8fe8de MDL-60434 analytics: Remove legacy is_valid method
This method was used when the API was tied to students at risk model,
this method does not make sense any more as it is up to each target
to define what is a valid course.
2017-10-25 12:47:12 +02:00
David Monllao d12e409784 Moodle release 3.4beta 2017-10-25 11:14:22 +02:00
David Monllao b34460c669 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-10-25 11:14:20 +02:00
Damyon Wiese a66de3ca70 MDL-59909 calendar: Try hard not to fail the adhoc task.
Triggering a fatal error in an adhoc task is bad. It will be retried indefinitely.
Even though we are not sure how to get a module instance without a course module record,
it is possible and should not kill the Moodle site.
2017-10-25 15:42:14 +08:00
Marina Glancy 13e7626834 MDL-60569 registration: fix bug with showing email in the form 2017-10-25 15:12:43 +08:00
Mihail Geshoski 6a633d36c2 MDL-60430 assignment: Assignment save and show next for 1 user 2017-10-25 14:18:16 +08:00
Andrew Nicols 2600f32927 Merge branch 'MDL-60506-master-fix1' of git://github.com/lameze/moodle 2017-10-25 12:45:56 +08:00
Andrew Nicols 8ef00034f5 Merge branch 'MDL-36580' of https://github.com/stronk7/moodle 2017-10-25 12:45:55 +08:00
Jake Dallimore 19fa690c3f MDL-60429 calendar: fix for updating event course and group
The property courseid and groupid might not be set, so if updating,
use the existing value if a new value wasn't specified.
2017-10-25 12:45:54 +08:00
Jake Dallimore e3a247849b Merge branch 'MDL-60561-master' of git://github.com/andrewnicols/moodle 2017-10-25 12:45:53 +08:00
Jake Dallimore c00e73dfe0 Merge branch 'MDL-60545_master' of git://github.com/markn86/moodle 2017-10-25 12:45:52 +08:00
Jake Dallimore bbb9e17133 Merge branch 'MDL-60429-master' of git://github.com/lameze/moodle 2017-10-25 12:45:52 +08:00
Andrew Nicols 6ee00de11b Merge branch 'MDL-36580' of https://github.com/stronk7/moodle 2017-10-25 12:45:51 +08:00
Damyon Wiese 7b18365be7 MDL-60458 javascript: MathJax Workaround
Mathjax currently has a bug in an upstream library that is incorrectly
loading 'process' because it things it's running under Node.js.

We don't load modules by shortname - so it should be fine to map process to
something else.

Because of the syntax they used we need to map it to something that is already loaded
and evaluates to null (Their code will then assume the module could not be loaded and continue).

We have a handy module that is guaranteed to be loaded first and evaluates to null -> core/first.

We should remove this workaround when MathJax releases a fixed version on their CDN and update the docs.
2017-10-25 12:30:21 +08:00
Damyon Wiese 89ceede3bf MDL-60458 Mathjax: Restore the accessible config
Undo the changes to the accessible config that were introduced by the previous library upgrade.
2017-10-25 12:30:14 +08:00
Mark Nelson 8e85371800 MDL-60564 calendar: removed duplication of exporter properties 2017-10-25 12:06:26 +08:00
Marina Glancy 786d9cd3a1 MDL-60543 env: Moodle 3.2 and 3.3 do no support PHP7.2 2017-10-25 09:02:22 +08:00
Mihail Geshoski 994ccb7845 MDL-60538 lesson: check if max attempts exceeded, use new lang string 2017-10-25 09:00:20 +08:00
Eloy Lafuente (stronk7) 984470d8a1 MDL-36580 backup: Avoid PHP notice restoring old backups
Before this implementation, both resourcekey and password
were not being included in the backups, so old backups are
missing them. To keep upwards compatibility and avoid a PHP
Notice (undefined property), existence is checked via isset(),
that is the usual way all over the restore process.
2017-10-24 22:49:10 +02:00
Tim Hunt c282157fc3 MDL-60162 quiz reports: refactor duplicated code into the base class
This is needed to fix the unit test in the last commit.
2017-10-24 18:06:46 +01:00
Tim Hunt ff456b59ea MDL-60162 quiz reports: too many rows fetched on download
This happened if one user had multiple enrolments in a course, and was
quite inefficient.
2017-10-24 18:06:44 +01:00
AMOS bot 809babbbd4 Automatically generated installer lang files 2017-10-25 00:05:34 +08:00
Amy Groshek 88924ff772 MDL-60104 mod_scorm: Fix scorm description display overflow 2017-10-24 10:42:23 -05:00
Luca Bösch 57f4e9608d MDL-60535 quiz: question bank button styled 2017-10-24 16:08:17 +01:00
Luca Bösch 1003e7e57e MDL-60571 quiz: Manual grading Save and go to next page button styled 2017-10-24 12:11:51 +01:00
Mark Nelson 429f78412d MDL-60564 calendar: removed unnecessary get_new_event_button() 2017-10-24 17:49:28 +08:00
Mark Nelson d2065abd0b MDL-60564 calendar: removed unnecessary get_course_filter_selector() 2017-10-24 17:49:26 +08:00
Grzegorz Ziółek 5fd7c11d17 MDL-51892 logging: Proper description of login errors. 2017-10-24 11:00:05 +02:00
Andrew Nicols acd146fe7c MDL-59938 calendar: Only show repeat information if repeating event 2017-10-24 16:00:36 +08:00
Andrew Nicols 79dff18711 MDL-59942 calendar: Add missing attribute to narrow day link 2017-10-24 15:35:31 +08:00
Andrew Nicols 9da0be8c46 MDL-60559 calendar: Upcoming block should respect type filter 2017-10-24 15:25:34 +08:00
Simey Lameze 6428642adb MDL-60429 calendar: update group and course id for repeated events 2017-10-24 13:46:40 +08:00
Andrew Nicols 349d379616 MDL-60561 calendar: Increase event limit for calendar
It's quite common to have more than 50 events in a calendar month, but
we do not want to change the default value when the API is called in
other ways.
2017-10-24 13:31:05 +08:00
Simey Lameze 7a963e924c MDL-60506 enrol: remove unwanted hidden elements 2017-10-24 13:18:58 +08:00
Mark Nelson 05ce018002 MDL-60545 core_calendar: ensure 'All courses' shows accurate data 2017-10-24 13:17:14 +08:00
Andrew Nicols 80e4426aeb MDL-60516 calendar: Update mini calendar on course change 2017-10-24 10:43:01 +08:00
Andrew Nicols 9eced5050b MDL-60560 calendar: Correct type of JS event on update 2017-10-24 09:45:27 +08:00
Andrew Nicols 2a31e628f1 MDL-57477 session: Comment tidyup 2017-10-24 08:12:02 +08:00
Andrew Nicols 79d3a1bc1e Merge branch 'MDL-57477' of https://github.com/appalachianstate/moodle 2017-10-24 08:04:54 +08:00
Fred Woolard bd035b98fd MDL-57477 core: If memcached 3.x mimic 2.2.0 lock acquisition behavior 2017-10-23 13:45:47 -04:00
David Monllao bd3824519b Merge branch 'MDL-60422_master' of git://github.com/markn86/moodle 2017-10-23 17:42:06 +02:00
David Monllao fc4e7883fb Merge branch 'MDL-60527-action-menu-links-missing-spaces-attributes' of https://github.com/lucaboesch/moodle 2017-10-23 16:55:35 +02:00
Andrew Nicols 4c250a5b79 MDL-60489 javascript: Add missing promise fails 2017-10-23 20:26:57 +08:00
Andrew Nicols 44317628a7 Merge branch 'MDL-60489-master' of git://github.com/ryanwyllie/moodle 2017-10-23 20:07:33 +08:00
Gareth J Barnard 6d5f9d1218 MDL-60250 theme_bootstrapbase: Calendar popover misplaced in RTL langs. 2017-10-23 11:15:25 +01:00
Eloy Lafuente (stronk7) 47d9736445 Merge branch 'm34_MDL-59100_MySQL8_INFORMATION_SCHEMAs_Need_Lowercasing' of https://github.com/scara/moodle 2017-10-23 12:10:25 +02:00
Mark Nelson 72c4cacfa3 MDL-60422 core_calendar: do not lose track of the selected course 2017-10-23 17:18:28 +08:00
Ryan Wyllie 946f9d0a4e MDL-60489 javascript: add animations to modal setBody 2017-10-23 07:57:03 +00:00
Jake Dallimore ab94608ffb Merge branch 'MDL-60537-master' of git://github.com/andrewnicols/moodle 2017-10-23 14:28:51 +08:00
Andrew Nicols 2f5284f5fb Merge branch 'MDL-60506-master' of git://github.com/lameze/moodle 2017-10-23 13:37:09 +08:00
Jake Dallimore 141c4adbb6 Merge branch 'MDL-42834_master' of git://github.com/markn86/moodle 2017-10-23 13:25:35 +08:00
Damyon Wiese 032bda879c Merge branch 'MDL-52653-master' of http://github.com/damyon/moodle 2017-10-23 13:14:03 +08:00
Simey Lameze 92109e732d MDL-60506 enrol: use optional_param_array to handle cohorts array 2017-10-23 12:54:09 +08:00
Simey Lameze b5a1ef52e0 MDL-60506 enrol: use optional_param_array to handle users array 2017-10-23 12:48:11 +08:00
John Okely 7eb50b3290 MDL-42834 admin: Remove wwwroot if used with moodle_url 2017-10-23 12:25:36 +08:00
John Okely 672f483670 MDL-42834 admin: Removal of httpswwwroot 2017-10-23 12:25:36 +08:00
John Okely cd1eb7ce9c MDL-42834 admin: Upgrade script and warning for loginhttps sites 2017-10-23 12:25:36 +08:00
John Okely ebc11ab3c6 MDL-42834 admin: Cleanup logic of login page only needed for loginhttps 2017-10-23 12:25:36 +08:00
John Okely 4b501ec96b MDL-42834 admin: Deprecate https_required and verify_https_required 2017-10-23 12:25:35 +08:00
John Okely b58764ff99 MDL-42834 admin: Remove loginhttps 2017-10-23 12:25:35 +08:00
Damyon Wiese 01df2313c0 Merge branch 'MDL-60517_master' of git://github.com/dmonllao/moodle 2017-10-23 12:10:04 +08:00
Damyon Wiese 65db838650 Merge branch 'MDL-58605-master' of git://github.com/andrewnicols/moodle 2017-10-23 11:13:32 +08:00
Damyon Wiese e93112a7ca Merge branch 'wip-MDL-60390-master-full' of git://github.com/marinaglancy/moodle 2017-10-23 11:11:14 +08:00
Marina Glancy 0b821239ea MDL-60390 libraries: annonate horde upgrade to 2.30.2 2017-10-23 10:22:49 +08:00
Marina Glancy 22793af105 MDL-60390 libraries: upgrade horde to 2.30.2 2017-10-23 10:16:54 +08:00
Andrew Nicols b01232671e Merge branch 'MDL-60388_master' of git://github.com/dmonllao/moodle 2017-10-23 10:00:41 +08:00
Andrew Nicols 345f23c984 MDL-60537 calendar: Fix behat following string changes 2017-10-23 08:26:24 +08:00
Andrew Nicols d743dd70cc MDL-60537 tool_httpsreplace: Fix behat following langstring 2017-10-23 08:25:55 +08:00
Andrew Nicols 455b2c4b9f MDL-58605 mod_scorm: Simplify feature
The singlescobasic_missingorg.zip file includes a modified version of
the javascript which deliberately breaks content.

We need it to have different file names to not break other similar copies
of the file.
2017-10-23 07:56:10 +08:00
Luca Bösch 09dd58a504 MDL-60527 templates: missing spaces round attribute and aria-labelledby 2017-10-22 22:08:10 +01:00
Matteo Scaramuccia 500d8650d2 MDL-59100 dml: Lower the case of INFORMATION_SCHEMA.* fields. 2017-10-21 14:30:38 +02:00
Eloy Lafuente (stronk7) 849405177f on-demand release 3.4dev+ 2017-10-20 23:55:42 +02:00
Eloy Lafuente (stronk7) b3f41c084d MDL-60485 modgrade: Change string expectation in related test 2017-10-20 18:57:31 +02:00
Michael Aherne 71826ac268 MDL-60528 grading: Accurate class names in PHPDoc 2017-10-20 14:13:19 +01:00
David Monllao 6e98bca0ba MDL-60388 analytics: Any write action looking at all contexts below course 2017-10-20 13:20:46 +02:00
David Monllao c17fae4bf8 MDL-60517 mlbackend_python: Use 0.0.4 moodlemlbackend package
0.0.4 update fixes an incorrectly specified tensorflow dependency
2017-10-20 11:22:35 +02:00
Marina Glancy 690168cb4a MDL-60108 registration: do not offer registration in behat tests 2017-10-20 14:35:31 +08:00
Jun Pataleta eed0bc36e1 Merge branch 'MDL-60072-master' of git://github.com/andrewnicols/moodle 2017-10-20 16:49:54 +13:00
Andrew Nicols fac5051624 MDL-60072 mod_lesson: Add missing name attribute 2017-10-20 11:43:15 +08:00
David Monllao 12514bd573 Merge branch 'wip-MDL-60485-master' of git://github.com/abgreeve/moodle 2017-10-20 04:43:19 +02:00
David Monllao 50a5feff05 Merge branch 'MDL-60406-master' of git://github.com/lameze/moodle 2017-10-20 04:38:06 +02:00
Simey Lameze 5a11e7f5f3 MDL-60406 core_calendar: proper calendar dates calculation 2017-10-20 10:32:41 +08:00
Andrew Nicols d9b6f810ea Merge branch 'MDL-60456-master' of git://github.com/damyon/moodle 2017-10-20 10:27:20 +08:00
David Monllao 202221f934 Merge branch 'MDL-60123-master' of https://github.com/snake/moodle 2017-10-20 02:22:11 +02:00
Jun Pataleta f04825d2b1 MDL-60072 course: Apply correct event name for assign due date 2017-10-20 11:35:17 +13:00
Eloy Lafuente (stronk7) df4095ca6c Merge branch 'MDL-60342-master' of https://github.com/patkira/moodle 2017-10-19 23:23:49 +02:00
Eloy Lafuente (stronk7) c1321a9a02 Merge branch 'wip-MDL-60314-master' of git://github.com/marinaglancy/moodle 2017-10-19 23:17:26 +02:00
Eloy Lafuente (stronk7) 9b46afd7c3 Merge branch 'wip-MDL-60313-master' of git://github.com/marinaglancy/moodle 2017-10-19 22:48:40 +02:00
Eloy Lafuente (stronk7) 6b7194a7cf Merge branch 'MDL-60072-master' of git://github.com/andrewnicols/moodle 2017-10-19 22:30:08 +02:00
Eloy Lafuente (stronk7) ecb4a05cc2 Merge branch 'MDL-60449-master-enfix' of git://github.com/mudrd8mz/moodle 2017-10-19 22:20:01 +02:00
David Mudrák 2e86fdb0a2 MDL-60449 lang: Properly replace the generic string with a specific one
The general string 'Publish' has been used in sense of publishing a
course on a hub - as such, it is better to keep that string together
with other related strings in the core_hub component. All these are
being reworded to 'Share'.

As this has been the only meaning of the string in the core, I am
deprecating it now. Third party plugins should better come with their
own variant of the string, should they need it.
2017-10-19 17:35:06 +02:00
Helen Foster 89db57ca6d MDL-60449 lang: Merge English strings from the en_fix language pack
Significant string changes:

* multiple strings in core_hub - 'Publish' changed to 'Share' plus other
  wording improvements to avoid misunderstandings
* errorretrievingkey in message_airnotifier - improved wording and
  removing reference to Moodle.org
* enddate_help and courseduration_desc in core - clearer wording
  explaining what the date actually does
* restore:viewautomatedfilearea in core_role - changing wording to match
  the behaviour
* dropzones_help in qtype_ddmarker - improved wording
* autologinkeygenerationlockout in tool_mobile - updated error message
* configallowemailaddresses in core_admin - clearer description
* subscriptionmode_helpin mod_forum - removing misleading sentence about
  subscription mode changes not affecting existing users
2017-10-19 17:19:08 +02:00
David Monllao 3c0805b7c0 Merge branch 'master-MDL-60116' of https://github.com/fwsl/moodle 2017-10-19 15:54:23 +02:00
David Monllao 7c31ef2a27 Merge branch 'wip-MDL-58915-master' of git://github.com/marinaglancy/moodle 2017-10-19 15:44:07 +02:00
David Monllao f2732541e8 Merge branch 'MDL-60444-master' of git://github.com/andrewnicols/moodle 2017-10-19 15:41:56 +02:00
David Monllao 43b8618b40 Merge branch 'MDL-60179_master' of git://github.com/markn86/moodle 2017-10-19 15:26:27 +02:00
David Monllao 23892d0843 Merge branch 'MDL-60378-master' of git://github.com/jleyva/moodle 2017-10-19 14:06:26 +02:00
David Monllao eef0ce917b Merge branch 'MDL-60233-master' of git://github.com/jleyva/moodle 2017-10-19 13:49:23 +02:00
David Monllao 254c19e26f Merge branch 'MDL-60182_master' of https://github.com/nadavkav/moodle 2017-10-19 13:29:52 +02:00
Jun Pataleta b469834ac9 Merge branch 'MDL-60375_master' of git://github.com/dmonllao/moodle 2017-10-19 22:03:56 +13:00
Jun Pataleta a0245c6aa0 Merge branch 'MDL-60410_master' of git://github.com/dmonllao/moodle 2017-10-19 22:01:21 +13:00
David Monllao 0a1a56307b Merge branch 'MDL-60469-master' of git://github.com/andrewnicols/moodle 2017-10-19 10:51:59 +02:00
David Monllao a0b417da49 MDL-60247 block_glossary_random: Skip rendundant value assign 2017-10-19 10:36:25 +02:00
David Monllao d07a4f9872 Merge branch 'MDL-60247-multilang-html-glossary-block-titles' of https://github.com/lucaboesch/moodle 2017-10-19 10:31:08 +02:00
David Monllao 28a5791db4 Merge branch 'MDL-60153-master' of git://github.com/junpataleta/moodle 2017-10-19 10:18:23 +02:00
Eloy Lafuente (stronk7) 059079e945 MDL-36580 backup: Apply the decrypt() method to lti "secrets" 2017-10-19 10:11:47 +02:00
Eloy Lafuente (stronk7) 00e557a15d MDL-36580 backup: General support for decrypted contents in restore
- Uses site generated (on backup) key.
- Can be applied potentially everywhere in the restore process.
- Covered with unit tests.
- Authentication / integrity aware so can be used between any 2 servers
  (just requires matching key).
2017-10-19 10:11:47 +02:00
Eloy Lafuente (stronk7) 4a7afd2bb9 MDL-36580 backup: Use the encrypted_final_element for lti "secrets" 2017-10-19 10:11:47 +02:00
Eloy Lafuente (stronk7) 872e957415 MDL-36580 backup: General support for encrypted contents in backups
- Built using standard backup custom fields.
- Can be applied potentially everywhere.
- Automatically addded 'encrypted' attribute.
- Defaults to site generated key.
- Enforces key robutness / provides authentication (hmac integrity)
- Covered with unit tests.
2017-10-19 10:11:39 +02:00
David Monllao b6b299ddae Merge branch 'wip-MDL-60108-master' of git://github.com/marinaglancy/moodle 2017-10-19 09:12:34 +02:00
David Monllao c1c7cb9c42 Merge branch 'MDL-60175-master' of git://github.com/andrewnicols/moodle 2017-10-19 09:07:05 +02:00
Damyon Wiese b233630c93 MDL-52653 scorm: Comment for cms.completion_status 2017-10-19 14:58:07 +08:00
Christian Lawson-Perfect 5d1ad088ea MDL-52653 SCORM: fix scorm_check_mode on v1.3
SCORM 2004 uses the element 'cmi.completion_status' to store the
completion status of a SCO, not 'cmi.core.lesson_status'.

This amends scorm_check_mode so that the right element is looked up.

When scorm_version_check returns false, SCORM 1.2 is assumed.
2017-10-19 14:58:07 +08:00
Mark Nelson af835c24b2 MDL-60179 core: make it clear what enrolment instance is being edited 2017-10-19 14:57:23 +08:00
David Monllao 28c97d1b76 MDL-60375 analytics: Fix incorrect var reference 2017-10-19 08:48:11 +02:00
Andrew Nicols a0d3a28abb Merge branch 'wip-MDL-60211-master' of https://github.com/Beedell/moodle 2017-10-19 14:22:30 +08:00
Damyon Wiese ecb9c82b06 MDL-60456 javascript: Rebuild npm-shrinkwrap
Build npm-shrinkwrap with the latest node version and only test the latest node version on travis.
2017-10-19 13:16:52 +08:00
Damyon Wiese 022dccf2a7 Merge branch 'MDL-60001_gzopen' of https://github.com/mrmark/moodle 2017-10-19 13:00:13 +08:00
Damyon Wiese 4a21bf89c9 MDL-58388 course: bump version
Add a version bump for new admin setting
2017-10-19 12:54:27 +08:00
Damyon Wiese 96f1440b7a Merge branch 'MDL-58388-master' of https://github.com/abias/moodle 2017-10-19 12:47:18 +08:00
Andrew Nicols f9095b66f2 Merge branch 'MDL-60319-master-google-converter-bug' of https://github.com/mspall/moodle 2017-10-19 11:27:42 +08:00
Adrian Greeve 749af21bd4 MDL-60485 modgrade: Update to mod settings form.
The message for changing the max grade in the module form
was inaccurate for modules that can not rescale.
2017-10-19 10:42:02 +08:00
Jun Pataleta ebc993b8c5 Merge branch 'wip-MDL-60335-master' of git://github.com/marinaglancy/moodle 2017-10-19 15:39:56 +13:00
Andrew Nicols de316e8e3b MDL-60469 behat: Replace I press with I click on 2017-10-19 10:37:59 +08:00
Andrew Nicols fd5e793cce Merge branch 'MDL-60468-master' of git://github.com/lameze/moodle 2017-10-19 10:23:57 +08:00
Jun Pataleta 4ee428fbe2 Merge branch 'MDL-60372-master' of git://github.com/lameze/moodle 2017-10-19 15:20:39 +13:00
Simey Lameze 28b77ce6c7 MDL-60372 pix: add new icons for event types 2017-10-19 09:22:41 +08:00
Simey Lameze cbc6794d02 MDL-60372 calendar: fix font awesome event type icons 2017-10-19 09:06:25 +08:00
Andrew Nicols ff7081150b Merge branch 'MDL-59063_master' of git://github.com/dmonllao/moodle 2017-10-19 09:01:58 +08:00
Jun Pataleta 2fbb83f6ad Merge branch 'mdl59843-master' of https://github.com/tlock/moodle 2017-10-19 13:22:01 +13:00
Eloy Lafuente (stronk7) 9644c0e87a on-demand release 3.4dev+ 2017-10-19 00:11:40 +02:00
Eloy Lafuente (stronk7) d56fa02487 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-10-19 00:11:39 +02:00
David Mudrák 91f015171f MDL-46269 tool_httpsreplace: Fix incorrect sorting 2017-10-18 19:46:26 +02:00
Jake Dallimore bc22db02fb Merge branch 'MDL-57455_master-fix' of https://github.com/markn86/moodle 2017-10-18 16:36:10 +08:00
Mark Nelson 3dfd48ba9c MDL-57455 mod_data: moved export tag checkbox and set default
Also capitalised string 'tags'.

AMOS BEGIN
 CPY [tags,core],[tags,mod_data]
AMOS END
2017-10-18 16:03:17 +08:00
Simey Lameze 05187c589d MDL-60468 calendar: fix event type defaults logic 2017-10-18 15:41:05 +08:00
Andrew Nicols ffbe92bffb Merge branch 'MDL-59988_master-fix' of git://github.com/dmonllao/moodle 2017-10-18 14:16:12 +08:00
David Monllao 0af2421acd MDL-59988 analytics: Reset trained status on clear 2017-10-18 07:02:23 +02:00
Andrew Nicols f150071901 Merge branch 'MDL-60022_master' of git://github.com/dmonllao/moodle 2017-10-18 12:36:00 +08:00
Andrew Nicols a1a39eda7d Merge branch 'MDL-59987_master-fix' of git://github.com/dmonllao/moodle 2017-10-18 11:47:45 +08:00
David Monllao 70dc5e0ab7 MDL-59987 analytics: Language string refinements
All credit goes to Helen Foster.
2017-10-18 05:37:07 +02:00
Pat Kira 5a97f26be9 MDL-60342 test: Reset user agent after tests
- Add a test that proves this useragent is not being reset after a test
- Reset user agent
2017-10-18 14:03:24 +11:00
Juan Leyva fe7b3e7e51 MDL-60378 mod_workshop: Add missing dimensions info
We need additional info from the dimensions used like the scale items
(if used).
2017-10-17 15:40:39 +02:00
David Monllao 71339af8c6 MDL-59063 analytics: No need to load timesplitting method 2017-10-17 14:05:40 +02:00
David Monllao fefa34120a MDL-59063 analytics: Finished courses can't be used for prediction 2017-10-17 14:05:40 +02:00
David Monllao 019ad9c7a8 MDL-59063 tool_analytics: New invalid analysables report 2017-10-17 14:05:38 +02:00
David Monllao b0fb8ef59f MDL-59063 analytics: Expand analysable API to provide a name 2017-10-17 14:04:47 +02:00
David Monllao b1a9a6a19a Merge branch 'wip-MDL-60281-master' of git://github.com/marinaglancy/moodle 2017-10-17 09:45:44 +02:00
David Monllao 6bc6e460cd Merge branch 'wip-MDL-60285-master' of git://github.com/abgreeve/moodle 2017-10-17 09:42:25 +02:00
David Monllao 8816022df7 MDL-60022 analytics: Clear model predictions in UI 2017-10-17 09:10:08 +02:00
Marina Glancy 1095afa4f7 MDL-60108 registration: Redirect to registration form
- when first installed
- when manual update of registration information is required
2017-10-17 15:00:17 +08:00
Marina Glancy af925a541d MDL-60108 registration: Simplify, add commnews and separate emails 2017-10-17 15:00:14 +08:00
Jake Dallimore 0d3bdbe4af Merge branch 'wip-MDL-46269-master' of git://github.com/marinaglancy/moodle 2017-10-17 14:27:31 +08:00
Marina Glancy bd39ef2422 MDL-60335 admin: fix encoding of nonlatin site names in blocked hosts 2017-10-17 12:44:13 +08:00
Damyon Wiese b35b588f00 Merge branch 'MDL-60058-int-fix-1' of github.com:ryanwyllie/moodle 2017-10-17 12:04:23 +08:00
Andrew Nicols 0b53be9056 Merge branch 'MDL-59987_master' of git://github.com/dmonllao/moodle 2017-10-17 12:00:51 +08:00
Jun Pataleta ae8353a0ba Merge branch 'MDL-60063-master-2' of git://github.com/ryanwyllie/moodle 2017-10-17 11:56:53 +08:00
Ryan Wyllie 83d4635d99 MDL-60063 feedback: add drag and drop of open close events 2017-10-17 03:54:24 +00:00
Ryan Wyllie f2c3818b39 MDL-60063 feedback: show feedback events on calendar for teacher 2017-10-17 03:54:23 +00:00
Ryan Wyllie dbe537fb50 MDL-60058 assign: add missing locallib require_once calls 2017-10-17 03:04:47 +00:00
Jake Dallimore 21bb56fd96 Merge branch 'MDL-59254-master' of git://github.com/jleyva/moodle 2017-10-17 10:33:41 +08:00
Adrian Greeve c32220b750 MDL-60285 lib: Update to Moodle changes to loglevel. 2017-10-17 10:22:00 +08:00
Adrian Greeve 07cf908e6c MDL-60285 lib: Update loglevel to 1.5.1 2017-10-17 10:21:05 +08:00
Jake Dallimore f66ab6e4f7 Merge branch 'MDL-58713-master-fix' of git://github.com/junpataleta/moodle 2017-10-17 09:50:49 +08:00
Jun Pataleta 52f6f4879a MDL-58713 phpunit: Add core_filter test suite 2017-10-17 09:20:31 +08:00
Jun Pataleta 4f53f3f571 Merge branch 'MDL-58713-master' of git://github.com/jleyva/moodle 2017-10-17 09:03:08 +08:00
Eloy Lafuente (stronk7) a9f816744b Merge branch 'MDL-59984-master' of git://github.com/junpataleta/moodle 2017-10-17 00:37:47 +02:00
Eloy Lafuente (stronk7) d355cb54ab Merge branch 'MDL-60365-master' of git://github.com/jleyva/moodle 2017-10-17 00:23:38 +02:00
Eloy Lafuente (stronk7) b86f988bcb Merge branch 'MDL-60171' of https://github.com/cbluesprl/moodle 2017-10-17 00:13:25 +02:00
Eloy Lafuente (stronk7) 39dce3073f Merge branch 'MDL-60320' of git://github.com/aolley/moodle 2017-10-17 00:05:54 +02:00
David Monllao 7152d2ff7a Merge branch 'MDL-60176-master' of git://github.com/andrewnicols/moodle 2017-10-16 20:02:03 +02:00
David Monllao 75820fb3ec Merge branch 'wip-MDL-60284-master' of git://github.com/abgreeve/moodle 2017-10-16 19:41:36 +02:00
David Monllao 23e5b74954 Merge branch 'MDL-57455' of https://github.com/stronk7/moodle 2017-10-16 19:33:37 +02:00
Eloy Lafuente (stronk7) 76feb5ac9b MDL-57455 mod_data: table aliases cannot use AS for crossdb 2017-10-16 19:16:17 +02:00
David Monllao 7f1f78d23e Merge branch 'MDL-60373-master' of git://github.com/andrewnicols/moodle 2017-10-16 18:28:47 +02:00
David Monllao 5d5ebedf56 Merge branch 'MDL-60374-master' of git://github.com/andrewnicols/moodle 2017-10-16 18:26:55 +02:00
David Monllao 2350745d82 Merge branch 'wip-MDL-60280-master' of git://github.com/marinaglancy/moodle 2017-10-16 13:46:19 +02:00
David Monllao dde2ba7634 Merge branch 'wip-MDL-60237-master' of git://github.com/marinaglancy/moodle 2017-10-16 12:37:55 +02:00
Juan Leyva 66ef16d364 MDL-58713 filters: New WS core_filters_get_available_in_context 2017-10-16 11:16:20 +02:00
Marina Glancy 84a9f58b67 MDL-46269 tool_httpsreplace: minor fixes
- don't call curl() from unittests
- make sure we don't replace links to http:// urls when the embedded contents from the same domain is present
- convert only text or long varchar columns
- improve searching performance, use case-insensitive regex/like instead of LOWER
- add unittests for the above and also for international domains
2017-10-16 16:53:49 +08:00
Marina Glancy 109fbd5a15 MDL-46269 dml: Add casesensitive argument to sql_regex() 2017-10-16 16:53:46 +08:00
Juan Leyva dc78f150fa MDL-58713 filters: Support auto-loading in the filters component 2017-10-16 10:25:17 +02:00
John Okely 16d5ec55c9 MDL-46269 tool_httpsreplace: Combine CLI scripts 2017-10-16 16:11:15 +08:00
John Okely 55b1d231ed MDL-46269 tool_httpsreplace: Add multiple steps 2017-10-16 16:11:15 +08:00
John Okely 4b86dd7ba6 MDL-46269 tool_httpsreplace: Make param search case insensitive 2017-10-16 16:11:15 +08:00
John Okely 6163651e76 MDL-46269 tool_httpsreplace: Support DBs with no regex (oracle & mssql) 2017-10-16 16:11:15 +08:00
John Okely c74748c6bd MDL-46269 tool_httpsreplace: Add more info and warnings about the tool 2017-10-16 16:11:15 +08:00
John Okely f7e6fb04db MDL-46269 tool_httpsreplace: Make standard plugin & add to settings 2017-10-16 16:11:14 +08:00
John Okely e3b853a79f MDL-46269 tool_httpsreplace: Add progress bar support 2017-10-16 16:11:14 +08:00
John Okely 2533959982 MDL-46269 tool_httpsreplace: Add behat tests 2017-10-16 16:11:14 +08:00
John Okely 7821d93aa6 MDL-46269 tool_httpsreplace: Make tool ready for core
Remove known domains add config for renames
Fix coding style
Add capability checks
Add page setters
Match moodle string style
Disable form change checker for form
Add todo issue
Fix docs
Bump version
2017-10-16 16:11:14 +08:00
John Okely 836226c4ad MDL-46269 tool_httpsreplace: Use data providers in unit tests 2017-10-16 16:11:14 +08:00
John Okely eca2b34cb0 MDL-46269 tool_httpsreplace: Add tool_httpsreplace to core 2017-10-16 16:11:13 +08:00
Juan Leyva 695b8712f6 MDL-59254 mod_workshop: Implement check_updates_since callback 2017-10-16 09:41:51 +02:00
Andrew Nicols ebb4244bf4 Merge branch 'wip-MDL-60337-master' of git://github.com/marinaglancy/moodle 2017-10-16 15:40:44 +08:00
Jake Dallimore 1841d169c8 Merge branch 'wip-MDL-60033-master' of git://github.com/marinaglancy/moodle 2017-10-16 15:36:29 +08:00
Jun Pataleta bcecb89976 Merge branch 'MDL-58547-master-bennulib' of git://github.com/mudrd8mz/moodle 2017-10-16 15:34:06 +08:00
Jake Dallimore dbb54d10ab Merge branch 'wip-MDL-60091-master' of git://github.com/marinaglancy/moodle 2017-10-16 15:32:21 +08:00
Jun Pataleta dc9b510180 Merge branch 'MDL-59166-master' of git://github.com/andrewnicols/moodle 2017-10-16 15:26:36 +08:00
Andrew Nicols 9693821d9d MDL-59166 admin: Add moodle mobile configuration warning 2017-10-16 15:00:28 +08:00
Marina Glancy 2c1080ef77 MDL-60091 webservice: enhancements to WS test client 2017-10-16 14:59:51 +08:00
Andrew Nicols f10721d6b9 MDL-60072 mod: Fix bad event naming 2017-10-16 14:47:09 +08:00
Jun Pataleta 177c0a36ec Merge branch 'MDL-60124-master' of https://github.com/snake/moodle 2017-10-16 14:33:53 +08:00
Andrew Nicols 6af34eb5bf Merge branch 'wip-MDL-60194-master' of git://github.com/abgreeve/moodle 2017-10-16 14:10:18 +08:00
Jun Pataleta 274e19dbda Merge branch 'MDL-60150' of git://github.com/stronk7/moodle 2017-10-16 14:04:55 +08:00
Andrew Nicols 4b526af5fe Merge branch 'wip-MDL-60286-master' of git://github.com/abgreeve/moodle 2017-10-16 13:49:50 +08:00
Jun Pataleta 55b5133595 Merge branch 'MDL-60307-master' of git://github.com/lameze/moodle 2017-10-16 13:43:22 +08:00
Simey Lameze 166cd10aa7 MDL-60307 core_calendar: rename subscriptions name and url 2017-10-16 12:58:48 +08:00
Damyon Wiese 6dc633fd93 Merge branch 'MDL-60058-master-4' of git://github.com/ryanwyllie/moodle 2017-10-16 12:28:59 +08:00
Jun Pataleta 5be8c8daa6 Merge branch 'MDL-45730_master' of git://github.com/markn86/moodle 2017-10-16 12:10:51 +08:00
Jake Dallimore 6b76e041f4 Merge branch 'MDL-57455_master' of git://github.com/markn86/moodle 2017-10-16 10:34:01 +08:00
Andrew Nicols 4e84059e8f MDL-60444 calendar: Correct variable name 2017-10-16 10:19:14 +08:00
Jun Pataleta a3bfb41cdd MDL-59984 enrol: Apply more filters to multiple filters scenario 2017-10-16 09:47:39 +08:00
Marina Glancy 78da366b56 MDL-60281 general: various strict corrections for PHP7.2
- count() can only be called on arrays or Countable, it can not be called on null
- recordset is neither so iterator_count() should be used
- instanceof or get_class() can not be applied to non-objects
- class methods must have the same arguments as methods in parent class
2017-10-16 09:37:20 +08:00
Marina Glancy d28eb51ddc MDL-60281 general: remove class object() completely
This class was deprecated under MDL-52471 and was showing debugging notice from Moodle 3.0.1
In PHP7.2 the class declaration fails with fatal error even if it's not used anywhere
2017-10-16 09:37:20 +08:00
Marina Glancy e3e3e0abb7 MDL-60281 forms: PHP7.2 deprecations in PEAR 2017-10-16 09:37:20 +08:00
Marina Glancy 33683bc80c MDL-60281 general: function each() is deprecated in PHP7.2 2017-10-16 09:37:20 +08:00
Marina Glancy 484b43f456 MDL-60281 general: create_function is deprecated in PHP7.2 2017-10-16 09:37:19 +08:00
Marina Glancy 2abb1e888c MDL-60281 behat: remove unnecessary pre-check
These variables are strings, calling count() on string causes warning in PHP7.2
2017-10-16 09:37:19 +08:00
Jun Pataleta d1b55a33e6 MDL-59984 enrol: Fix parameter naming for enrol conditions sql
* The character "." can't be used for sql named parameters.
2017-10-16 09:31:25 +08:00
Jake Dallimore ee9d4a77ea MDL-60124 assign: comment annotation now auto reduces in size on delete 2017-10-16 08:49:36 +08:00
Jake Dallimore 324debc34b MDL-60123 assign: Allow teachers to deselect pdf annotations in editpdf
Clicking a blank area of the canvas will now deselect any currently
selected annotation.
2017-10-16 08:41:51 +08:00
Andrew Nicols dd178011b4 Merge branch 'MDL-59988_master' of git://github.com/dmonllao/moodle 2017-10-16 08:19:06 +08:00
John Beedell 77d2e46c4f MDL-60211 User tours: New filters for User Tours 2017-10-13 17:14:15 +01:00
AMOS bot e2df6b93bf Automatically generated installer lang files 2017-10-14 00:08:10 +08:00
Grzegorz Ziółek 57bdf3b02d MDL-60116 lang: Add username in emailpasswordchangeinfo 2017-10-13 14:19:09 +02:00
Luca Bösch da755cb442 MDL-60247 blocks: Multilang in Random glossary and in HTML block titles. 2017-10-13 13:52:00 +02:00
David Monllao c5705b3a0f MDL-60410 analytics: Whitelist pathtopython for testing 2017-10-13 13:44:47 +02:00
Juan Leyva 21824a9325 MDL-60433 mod_data: Fix groups in Web Services 2017-10-13 12:42:10 +02:00
David Monllao 2dca133916 MDL-59988 analytics: Process pending training and prediction files 2017-10-13 12:29:21 +02:00
David Monllao 325b3bdd8e MDL-59988 analytics: Files marked as used only if valid
- Basic unit test for minimum machine learning backends requirements
- Warning return messages now include not enough data
- Clear models when the predictions processor is changed
- Refined the name of a couple of constants / methods
2017-10-13 12:24:17 +02:00
Marina Glancy 9016f772ce MDL-60391 libraries: patch bennu for php 7.2 2017-10-13 16:42:34 +08:00
Ryan Wyllie 7ec6d873e1 MDL-60058 assign: stop teacher from seeing due date event on dashboard
Thanks to Damyon Wiese for the patch.
2017-10-13 06:38:03 +00:00
Andrew Nicols 028fa14436 MDL-60058 assign: Updating gradingduedate on drag/drop 2017-10-13 06:38:02 +00:00
Ryan Wyllie a4f949442c MDL-60058 calendar: fix event context issue in month_detailed 2017-10-13 06:38:02 +00:00
Ryan Wyllie 8c4b939cfe MDL-60058 choice: implement timestart range callback for calendar UI 2017-10-13 06:38:02 +00:00
Jake Dallimore 9a316f3367 weekly release 3.4dev 2017-10-13 14:33:08 +08:00
Jake Dallimore 20b5ea16b7 NOBUG: Fixed file access permissions 2017-10-13 14:33:08 +08:00
Jake Dallimore 6e74f41b41 NOBUG: Fixed SVG browser compatibility 2017-10-13 14:33:08 +08:00
Jake Dallimore 5bcd7317d1 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-10-13 14:33:07 +08:00
Ryan Wyllie c56dd950eb MDL-60058 calendar: add visual indicator to UI for valid drop zones 2017-10-13 06:18:44 +00:00
Ryan Wyllie f4c2156189 MDL-60058 assign: allow update of assign calendar action events 2017-10-13 06:18:43 +00:00
Marina Glancy 402a8e7a7a MDL-58915 search_solr: connection to solr can use blocked hosts 2017-10-13 12:17:32 +08:00
Jake Dallimore 1799dd9e0c Merge branch 'MDL-60357-master-fix' of https://github.com/andrewnicols/moodle 2017-10-13 11:40:05 +08:00
Mark Nelson 0f09368cbb MDL-57455 mod_data: extended Behat test to cover searching names
Merged two Behat files that were doing similar things.
2017-10-13 11:01:42 +08:00
Jake Dallimore 2fe80946bc Merge branch 'MDL-60029-master-fix' of git://github.com/junpataleta/moodle 2017-10-13 10:49:32 +08:00
Jun Pataleta 5a3f03b2a8 MDL-60029 profile: Replace table alias with non-reserve word
* The table alias 'uid' is a reserved word in oracle. Replaced it with
something a little more safe.
2017-10-13 10:38:00 +08:00
Andrew Nicols 0049244893 MDL-60357 search: Ensure that the document is valid
We were previously testing tha the parent is valid, which it was, and
then fetching the current record, before fetching data from it.

However, the way in which the recordset walk works, the valid function
checks whether the _record_ itself is valid, whilst the current allows
for a callback to be applied.

In this instance, the data-entry was failing because the count of
indexfields was < 2. The recordset data itself was valid, but the view
was not, and as a result, the current() function returned false.

This false was not previously handled.

I've changed the logic so that we handle this case, and have removed a
double-negative in the process.
2017-10-13 09:41:59 +08:00
Damyon Wiese 14de134454 Merge branch 'MDL-60002-master' of https://github.com/snake/moodle 2017-10-13 09:20:18 +08:00
Jake Dallimore 41be91c00b MDL-60002 assign: Fixed validation on save and save and show next. 2017-10-13 09:04:08 +08:00
Andrew Nicols 122b8aa73b Merge branch 'MDL-60046-master' of https://github.com/snake/moodle 2017-10-13 08:32:57 +08:00
Jake Dallimore eae71c8553 MDL-60046 participants: Fix for groups behat feature. 2017-10-13 08:26:42 +08:00
Eloy Lafuente (stronk7) f088e261f7 Merge branch 'MDL-60209-master-mathjaxlib' of git://github.com/mudrd8mz/moodle 2017-10-12 22:51:59 +02:00
David Mudrák 9e6df843a0 MDL-60209 mathjax: Do not load broken accessibility extensions
The Accessible.js config loads accessibility-menu extension which in
turn loads mathjax-sre.js library. There is a bug in this library
https://github.com/zorkow/speech-rule-engine/issues/182 that makes it
fail in RequireJS environments. This has been reported upstream as
https://github.com/mathjax/MathJax/issues/1854

As an immediate solution for now, this patch changes the default MathJax
configuration so that it does not load accessibility extensions at all.
2017-10-12 22:11:45 +02:00
Juan Leyva 66a159f8db MDL-60365 tool_mobile: Extra configuration checks 2017-10-12 11:46:18 +02:00
Mark Nelson 822b3346ce MDL-57455 mod_data: added 'Manage standard tags' link 2017-10-12 16:59:16 +08:00
Mark Nelson 80effa0faa MDL-57455 mod_data: added reset tags functionality 2017-10-12 16:59:16 +08:00
Mark Nelson 5623d18784 MDL-57455 mod_data: performance improvement for tags backup/restore 2017-10-12 16:59:16 +08:00
Mark Nelson a783cf701c MDL-57455 mod_data: allow tags to be removed from search criteria 2017-10-12 16:59:16 +08:00
Mark Nelson f7a12344cb MDL-57455 mod_data: added missing accessibility check 2017-10-12 16:59:15 +08:00
Andrew Hancox ee9a2706b3 MDL-57455 mod_data: Added PHPUnit tests 2017-10-12 16:59:15 +08:00
Andrew Hancox f4c5328c2b MDL-57455 mod_data: Added Behat tests to cover tagging 2017-10-12 16:59:15 +08:00
Andrew Hancox 04f7b079bc MDL-57455 mod_data: Import and export tags 2017-10-12 16:59:15 +08:00
Andrew Hancox d45c7a6823 MDL-57455 mod_data: Extend advanced search to cover tags
Also removed redundant code as $advtables, $advwhere etc.
are only used below when constructing $fromsql which is
only used if advanced is empty.
2017-10-12 16:59:15 +08:00
Andrew Hancox ca5f3e0a2e MDL-57455 mod_data: Implement tagging 2017-10-12 16:59:14 +08:00
Jun Pataleta dab702d394 Merge branch 'wip-MDL-60029-master' of git://github.com/marinaglancy/moodle 2017-10-12 16:16:42 +08:00
Andrew Nicols 42c7270eb1 Merge branch 'MDL-55356-master-fix' of git://github.com/junpataleta/moodle 2017-10-12 15:49:25 +08:00
Jun Pataleta 098f37c942 MDL-55356 search: Remove unnecessary var_dump call 2017-10-12 15:45:52 +08:00
Jake Dallimore 131e60741a Merge branch 'MDL-55356-master-fix' of https://github.com/andrewnicols/moodle 2017-10-12 15:00:11 +08:00
Andrew Nicols 77b2662ffb MDL-55356 backup: Correct variable name 2017-10-12 14:53:16 +08:00
Andrew Nicols f3a4164dac Merge branch 'MDL-60288-master' of git://github.com/ankitagarwal/moodle 2017-10-12 14:48:59 +08:00
Andrew Nicols 6fa6e63129 Merge branch 'wip-MDL-60195-master' of git://github.com/abgreeve/moodle 2017-10-12 14:34:05 +08:00
Damyon Wiese 2962f0fa51 Merge branch 'MDL-60092-master-fix2' of git://github.com/lameze/moodle 2017-10-12 14:31:17 +08:00
Ankit Agarwal de6ad82f2c MDL-60288 libraries: Upgrade spout to 2.7.3 2017-10-12 11:32:15 +05:30
Andrew Nicols da419adfb0 MDL-60268 tool_usertours: Switch to Template.append 2017-10-12 13:54:09 +08:00
Andrew Nicols 19c0da47e0 Merge branch 'wip-MDL-60268-master' of https://github.com/Beedell/moodle 2017-10-12 13:44:16 +08:00
Simey Lameze 9adc10955e MDL-60092 calendar: fix no events message message logic 2017-10-12 13:39:35 +08:00
Jake Dallimore 7f1b75ba04 MDL-59106 analytics: whitespace fixes 2017-10-12 12:31:56 +08:00
Jun Pataleta 458d9e084f Merge branch 'MDL-59854-master' of git://github.com/junpataleta/moodle 2017-10-12 12:27:34 +08:00
Tobias Reischmann 05f9380cbc MDL-59854 forum: Created unique db key for forum_subscriptions
Due to race conditions in the function subscribe_user
it was possible to create duplicate forum subscriptions.
This lead to error messages, when displaying the list of
all subscriptions.
This patch removes all existing duplicate entries and
creates a unique db key to prevent this from happening in
the future.
2017-10-12 12:24:03 +08:00
Andrew Nicols c1c6ed1b67 MDL-55356 search: Merge conflict fix 2017-10-12 11:54:04 +08:00
Andrew Nicols ed15e64a3d MDL-55356 search: Insert non-empty default data in block fixture data 2017-10-12 11:53:06 +08:00
Andrew Nicols afc8d59c35 MDL-55356 backup: Check setting exists before checking value 2017-10-12 11:37:05 +08:00
Andrew Nicols e61ad18e70 Merge branch 'MDL-55356-master' of https://github.com/sammarshallou/moodle 2017-10-12 11:28:04 +08:00
Jake Dallimore c36907bf5a Merge branch 'MDL-59106_master-fix2' of git://github.com/dmonllao/moodle 2017-10-12 10:54:47 +08:00
Jake Dallimore cb9a803d80 Merge branch 'MDL-59106_master-fix' of git://github.com/dmonllao/moodle 2017-10-12 10:54:25 +08:00
Jake Dallimore 0ce9026307 Merge branch 'MDL-59106_master' of git://github.com/markn86/moodle 2017-10-12 10:53:20 +08:00
Jun Pataleta 5bc84e9f17 Merge branch 'MDL-59921-master-fix2' of git://github.com/lameze/moodle 2017-10-12 09:49:49 +08:00
Simey Lameze 2ab3787e18 MDL-59921 calendar: remove disabledIf from group select 2017-10-12 09:19:43 +08:00
Eloy Lafuente (stronk7) b43a99ad92 Merge branch 'MDL-60209-master-mathjaxlib' of git://github.com/mudrd8mz/moodle 2017-10-12 01:52:47 +02:00
Eloy Lafuente (stronk7) 9ead15b629 MDL-60291 libraries: bump readme to actual versions 2017-10-12 00:47:22 +02:00
Eloy Lafuente (stronk7) 5fab66aad8 Merge branch 'MDL-60291-master' of git://github.com/ankitagarwal/moodle 2017-10-12 00:42:57 +02:00
Eloy Lafuente (stronk7) ae2ae5f46f Merge branch 'MDL-60301-master' of git://github.com/ankitagarwal/moodle 2017-10-12 00:37:11 +02:00
Eloy Lafuente (stronk7) a9d3910d70 Merge branch 'MDL-60302-master' of git://github.com/jleyva/moodle 2017-10-11 21:14:54 +02:00
Eloy Lafuente (stronk7) e9802809f4 Merge branch 'MDL-60357-master' of https://github.com/sammarshallou/moodle 2017-10-11 20:49:01 +02:00
sam marshall 74b7a42d0d MDL-55356 core_search: Make indexing task/CLI do context requests 2017-10-11 17:17:10 +01:00
sam marshall 4ba11aa907 MDL-55356 core_search: New manager API index_context
New function which uses the get_document_recordset function in
search areas to support full and partial indexing of a given
context.
2017-10-11 17:17:10 +01:00
sam marshall 66e3702680 MDL-55356 core_search: Change existing search areas to new API
This change considers all existing search areas in Moodle and makes
necessary changes.

Custom change to course search, supported by helper in base.php:

* course/classes/search/mycourse.php

Custom change to message search:

* message/classes/search/message_received.php
* message/classes/search/message_sent.php

Custom change to user search:

* user/classes/search/user.php

Custom changes to module areas, supported by helper in base_mod.php:

* mod/book/classes/search/chapter.php
* mod/data/classes/search/entry.php
* mod/forum/classes/search/post.php
* mod/glossary/classes/search/entry.php
* mod/survey/classes/search/activity.php
* mod/wiki/classes/search/collaborative_page.php

(Note: the unit tests do not exhaustively check every context type
for these, given that's mainly handled by the helper function
which was already tested in the base_activity test.)

Handled by block base class (no change):

* blocks/html/classes/search/content.php

Handled by activity base class (no change):

* mod/assign/classes/search/activity.php
* mod/book/classes/search/activity.php
* mod/chat/classes/search/activity.php
* mod/choice/classes/search/activity.php
* mod/data/classes/search/activity.php
* mod/feedback/classes/search/activity.php
* mod/folder/classes/search/activity.php
* mod/forum/classes/search/activity.php
* mod/glossary/classes/search/activity.php
* mod/imscp/classes/search/activity.php
* mod/label/classes/search/activity.php
* mod/lesson/classes/search/activity.php
* mod/lti/classes/search/activity.php
* mod/page/classes/search/activity.php
* mod/quiz/classes/search/activity.php
* mod/resource/classes/search/activity.php
* mod/scorm/classes/search/activity.php
* mod/url/classes/search/activity.php
* mod/wiki/classes/search/activity.php
* mod/workshop/classes/search/activity.php
2017-10-11 17:17:09 +01:00
sam marshall 81a988833e MDL-55356 core_message: Rename unit tests with wrong names 2017-10-11 17:17:08 +01:00
sam marshall 427b756355 MDL-55356 core_search: New area API get_document_recordset
The search area API now includes a new function get_document_recordset
which should be implemented in preference to the older
get_recordset_by_timestamp. (It's also possible to implement both in
plugin search areas which need to work against older Moodle versions.)

Existing search areas without the new function will continue to work as
before (obviously without the new functionality).
2017-10-11 17:17:08 +01:00
sam marshall 6893ee4a49 MDL-55356 core_search: Restore now requests search indexing
When restoring into a new course, it will queue a request to index
the whole course; when adding to existing, it will queue a request
to index the specific (a) activities and (b) blocks that were
restored.
2017-10-11 17:17:07 +01:00
sam marshall eacb2bd11b MDL-55356 core_search: API to queue contexts for indexing
New API \core_search\manager::request_index($context, $areaid = '')
adds the given context to a list which is intended to be indexed
later by the scheduled task.
2017-10-11 17:17:07 +01:00
sam marshall d761b3fb19 MDL-55356 core_search: API to check if indexing enabled
New function \core_search\manager::is_indexing_enabled(), analagous
to existing is_global_search_enabled().

This replaces existing duplicated code, ready for more use in
following commits.
2017-10-11 17:17:06 +01:00
sam marshall 0da8f62f3b MDL-55356 core_search: Make base_block handle empty restored blocks 2017-10-11 17:17:05 +01:00
Simey Lameze 4aae2cb19e MDL-59921 core_calendar: remove unnecessary behat step 2017-10-11 16:37:46 +08:00
Simey Lameze 580a168a15 MDL-59921 calendar: fix wrong array assumptions 2017-10-11 16:26:51 +08:00
Jun Pataleta 1b3f3d5761 Merge branch 'MDL-60090-master' of git://github.com/andrewnicols/moodle 2017-10-11 15:58:46 +08:00
Andrew Nicols a7ed05e720 MDL-60090 calendar: Add eventtype icon and truncate 2017-10-11 14:03:01 +08:00
Damyon Wiese 3f94d19060 Merge branch 'MDL-60092-master' of git://github.com/lameze/moodle 2017-10-11 14:02:52 +08:00
Simey Lameze ca14f182fc MDL-60092 calendar: add missing upcoming view logic 2017-10-11 11:42:41 +08:00
Jun Pataleta 8c0f6e5419 Merge branch 'MDL-59921-master' of git://github.com/lameze/moodle 2017-10-11 11:07:14 +08:00
Simey Lameze 0108fdfa70 MDL-59921 calendar: fix missing course error on event form 2017-10-11 10:03:42 +08:00
Andrew Nicols 544321235d Merge branch 'master_MDL-60276' of https://github.com/CengageEng/moodle 2017-10-11 09:38:47 +08:00
Eloy Lafuente (stronk7) 0a073e9d42 Merge branch 'MDL-60300' of https://github.com/NeillM/moodle 2017-10-11 01:39:55 +02:00
Eloy Lafuente (stronk7) 7b90f69db3 Merge branch 'MDL-60309-master-boostbackground' of git://github.com/mudrd8mz/moodle 2017-10-11 01:34:17 +02:00
Eloy Lafuente (stronk7) 1fee16f4f9 Merge branch 'MDL-60346-master' of https://github.com/sammarshallou/moodle 2017-10-11 01:03:06 +02:00
Eloy Lafuente (stronk7) 559d5c3894 Merge branch 'MDL-60364' of https://github.com/NeillM/moodle 2017-10-11 01:00:13 +02:00
Eloy Lafuente (stronk7) f8a86c157d Merge branch 'MDL-55358-master' of https://github.com/davidknu/moodle 2017-10-11 00:00:10 +02:00
Eloy Lafuente (stronk7) 70aeddcaf4 Merge branch 'MDL-60002-save-and-show-next' of https://github.com/abalbanyan/moodle 2017-10-10 20:14:42 +02:00
Eloy Lafuente (stronk7) ae2f169a08 Merge branch 'MDL-60046-master' of git://github.com/damyon/moodle 2017-10-10 19:10:52 +02:00
Juan Leyva 011c5ae476 MDL-60396 mod_workshop: Add checks for maximum gradeover 2017-10-10 17:04:57 +02:00
Juan Leyva 84346754f6 MDL-60377 webservice: Format correctly text returned by WS 2017-10-10 15:06:23 +02:00
David Monllao d4fc830c6f MDL-59106 report_insights: Order prediction values 2017-10-10 12:49:24 +02:00
David Monllao ce017edd2f MDL-59106 report_insights: Fix predicted value styling 2017-10-10 12:33:26 +02:00
Damyon Wiese f4594a22ec Merge branch 'MDL-37361-master-revised' of https://github.com/snake/moodle
Conflicts:
	lib/db/upgrade.php
	version.php
2017-10-10 17:32:47 +08:00
Damyon Wiese 32d641c009 Merge branch 'MDL-60092-master' of git://github.com/lameze/moodle 2017-10-10 17:17:56 +08:00
Jake Dallimore b08337c35e MDL-37361 completion: Consolidate icon logic and clarify web service
- Icon generation logic moved to the course renderer.
- Web service should return the completion info only, not HTML.
- JS modified to handle icon rendering in relevant cases.
2017-10-10 17:12:22 +08:00
Jake Dallimore 8fbc41d8d5 MDL-37361 completion: minor code fixes. 2017-10-10 17:12:09 +08:00
Jake Dallimore 194f142274 MDL-37361 completion: accessibility fixes for completion overrides
- Fixed aria-roles for links acting as status override buttons
- Used custom_interaction_events for better activation handling
- Replaced core/notification with AMD modal which facilitates better
onhide focus control when cancelling or confirming the action.
2017-10-10 17:11:48 +08:00
Jake Dallimore 77165c9c83 MDL-37361 behat: added a test covering the activity completion report 2017-10-10 17:11:32 +08:00
Jake Dallimore 6f4adc6be4 MDL-37361 completion: make completion overrides visible to students
- Set icons in the course/renderer
- Use 'set' in lang strings for simplicity
- Code style fixes
2017-10-10 17:11:13 +08:00
Jake Dallimore 86f359bf68 MDL-37361 completion: automatic completion disabled when overridden
Changes:
- Activities with auto completion and a completion status overridden to
COMPLETION_COMPLETE are no longer processed by normal completion
triggers.
- All activities can still be completed by students when their
completion status has been overridden to COMPLETION_INCOMPLETE, via
either auto or manual triggers.
- Completion unit tests updated
2017-10-10 17:10:49 +08:00
Eiz Eddin Al Katrib 60a6b36cd5 MDL-37361 completion: Modified and Added phpunit tests 2017-10-10 17:10:37 +08:00
Eiz Eddin Al Katrib a39918daae MDL-37361 completion: Enabled overriding activity completion status 2017-10-10 17:10:15 +08:00
Jun Pataleta 7a87627b16 Merge branch 'MDL-59921-master' of git://github.com/lameze/moodle 2017-10-10 16:19:36 +08:00
Simey Lameze 7522ed1f23 MDL-59921 core_calendar: fix phpunit failures on event form 2017-10-10 15:50:46 +08:00
Jun Pataleta 37dcdf2202 Merge branch 'wip-MDL-58546-master' of git://github.com/marinaglancy/moodle 2017-10-10 15:26:38 +08:00
Simey Lameze de6d57cfd8 MDL-59921 core_calendar: fix event form behat failures 2017-10-10 15:22:45 +08:00
Andrew Nicols c8ee0b642d Merge branch 'MDL-35429-master' of https://github.com/snake/moodle 2017-10-10 14:48:19 +08:00
Simey Lameze 4259387ebb MDL-60092 core_calendar: remove unused calendar_get_upcoming method 2017-10-10 13:55:35 +08:00
Simey Lameze 522b84be04 MDL-60092 block_calendar_upcoming: convert to template 2017-10-10 13:55:35 +08:00
Simey Lameze 666d03e119 MDL-60092 core_calendar: new upcoming mini template 2017-10-10 13:55:29 +08:00
Jun Pataleta e34196d6ef Merge branch 'MDL-59921-master' of git://github.com/lameze/moodle 2017-10-10 13:30:34 +08:00
Mark Nelson a475e0fe79 MDL-45730 core: added unit tests for new events 2017-10-10 13:15:18 +08:00
Mark Nelson 7b1adb4c7e MDL-45730 core_user: added additional event triggers 2017-10-10 13:05:48 +08:00
Damyon Wiese 93effd739f Merge branch 'MDL-59889-master' of git://github.com/Dagefoerde/moodle 2017-10-10 13:05:31 +08:00
Damyon Wiese 71fd9e5375 Merge branch 'wip-MDL-59274-master' of git://github.com/marinaglancy/moodle 2017-10-10 12:46:55 +08:00
Jake Dallimore 5bbea7338d MDL-35429 backup: Only show relevant actions for automated backups
- Users without permission to download or restore won't see the
respective links.
- The 'Manage backup files' button for the 'automated' backup filearea
now requires the same permissions as downloading does for this filearea,
those being 'restore:userinfo' and 'backup:downloadfile'.
2017-10-10 12:30:57 +08:00
Marina Glancy ce1500a8fa MDL-59274 media_videojs: upgrade video.js library and plugins 2017-10-10 12:11:06 +08:00
Ryan Wyllie 4c1145009a MDL-60058 assign: show due date calendar event for teachers 2017-10-10 03:51:18 +00:00
Andrew Nicols 69ed35c92a Merge branch 'MDL-59694_master' of git://github.com/dmonllao/moodle 2017-10-10 11:37:49 +08:00
Jun Pataleta d63c2d35ec Merge branch 'MDL-60205_group_hiding_clean' of git://github.com/davosmith/moodle 2017-10-10 11:08:06 +08:00
Damyon Wiese 1bf6dcc507 MDL-60046 participants: Update behat tests
The filter button was removed, so it needs to be removed from the tests.
2017-10-10 10:54:27 +08:00
Jun Pataleta 658982416c Merge branch 'MDL-60238-master' of git://github.com/ankitagarwal/moodle 2017-10-10 10:47:37 +08:00
Marina Glancy b47fda7191 MDL-60029 core_user: new api functions rearranged 2017-10-10 10:34:55 +08:00
Jun Pataleta 7106ac6b15 Merge branch 'MDL-60275_master' of git://github.com/dmonllao/moodle 2017-10-10 10:10:09 +08:00
Andrew Nicols 1e7ed737d2 Merge branch 'MDL-45366' of git://github.com/stronk7/moodle 2017-10-10 08:40:01 +08:00
Adam Olley d12ac53512 MDL-60320 icons: Use PNG icons as the preview thumbnails
Without this change, Moodle fails to provide any data when requesting a
thumbnail for a non-image file as its looking to provide a SVG file that
doesn't exist.
2017-10-10 09:57:17 +10:30
Eloy Lafuente (stronk7) 3564271049 Merge branch 'MDL-60070-master' of git://github.com/lameze/moodle 2017-10-10 00:03:10 +02:00
Eloy Lafuente (stronk7) 6d170ad508 Merge branch 'MDL-60129_master-v2' of git://github.com/markn86/moodle 2017-10-09 23:17:36 +02:00
Eloy Lafuente (stronk7) 4c54ac22d3 Merge branch 'm34_MDL-60318_Undefined_method_file_storage-move_to_trash' of https://github.com/scara/moodle 2017-10-09 23:11:08 +02:00
Eloy Lafuente (stronk7) eda8027541 Merge branch 'MDL-59811-master' of git://github.com/junpataleta/moodle 2017-10-09 19:52:56 +02:00
AMOS bot 59ce7064b2 Automatically generated installer lang files 2017-10-10 00:11:43 +08:00
Guillaume Latour febd7a62f7 MDL-60171 user/edit: more meaning for delete pic
AMOS BEGIN
    CPY [delete,core_moodle],[deletepicture,core_moodle]
AMOS END
2017-10-09 15:10:06 +02:00
Alexander Bias 33a3ec7c93 MDL-58388 course: Add admin control for course end date default 2017-10-09 14:12:52 +02:00
John Ehringer 6d242b28e6 MDL-45730 core: Adding events to user profile field and categories CRUD. 2017-10-09 18:58:36 +08:00
David Mudrák b75eb8442f MDL-60209 mathjax: Update integration docs in readme_moodle.txt 2017-10-09 12:31:21 +02:00
David Mudrák 47cf9455d9 MDL-60209 mathjax: Fix mapping of the Moodle language to the MathJax
While working on the issue, I noticed that the current implementation of
the method filter_mathjaxloader::map_language_code() is suboptimal and
does not work well for many Moodle language packs such as pt_br or de_du
and other variants. It did not give particularly wrong results. It just
fell back to the default English too early without trying more hard.

This patch improves the mapping logic and adds a unit test for the
method.
2017-10-09 12:31:21 +02:00
David Mudrák b7ab8e4e9b MDL-60209 mathjax: Use MathJax 2.7.2 by default 2017-10-09 12:31:20 +02:00
Jun Pataleta a5ed356be1 Merge branch 'MDL-60298' of git://github.com/stronk7/moodle 2017-10-09 16:18:36 +08:00
Mike Churchward 860f59b13c MDL-60029 core_user: Added new api function to reduce db calls. 2017-10-09 14:10:38 +08:00
Andrew Nicols 7da1dd651a Merge branch 'MDL-60317' of git://github.com/timhunt/moodle 2017-10-09 14:05:57 +08:00
Andrew Nicols f3500bda4e Merge branch 'MDL-59844-master' of git://github.com/Dagefoerde/moodle 2017-10-09 13:58:49 +08:00
David Monllao dd13fc222c MDL-59694 analytics: Track processed analysables 2017-10-09 07:47:28 +02:00
David Monllao 68f4be7085 MDL-59987 analytics: Updated indicator names
Indicator names updated to better reflect what they make
reference to.
2017-10-09 07:38:55 +02:00
Andrew Nicols 2e30e9aa0d Merge branch 'wip-MDL-55652-master' of git://github.com/marinaglancy/moodle 2017-10-09 12:42:53 +08:00
Mark Nelson f473958e49 MDL-59106 theme_bootstrapbase: removed unnecessary template overrides 2017-10-09 12:20:42 +08:00
Mark Nelson c614073940 MDL-59106 report_insights: show time created and time range used 2017-10-09 12:20:42 +08:00
Andrew Nicols 5873e1d234 MDL-60374 calendar: Add transition on event show/hide in monthly view 2017-10-09 12:04:04 +08:00
Andrew Nicols bf02f2e91c MDL-60373 core: Do not show title if there is no title 2017-10-09 11:38:00 +08:00
Andrew Nicols 5be48c4514 MDL-59897 accesslib: Remove unused reset 2017-10-09 10:37:19 +08:00
Andrew Nicols 6ba5f93ea6 Merge branch 'MDL-59897-master' of https://github.com/sammarshallou/moodle 2017-10-09 10:31:34 +08:00
Jake Dallimore 54945fa728 MDL-35429 roles: teachers and managers can restore automated backups
Changes the default for the 'moodle/restore:viewautomatedfilearea'
cap from 'Not set' to 'Allow' for the teacher and manager role
archetypes.
2017-10-09 10:29:07 +08:00
Jake Dallimore 521d900f06 MDL-35429 restore: fixed downloading of automated backup files 2017-10-09 10:29:07 +08:00
Jake Dallimore f2faf9fae6 MDL-35429 restore: capability clarification for automated backups
- added relevant cap check on restorefile.php to improve the error
message when attempting to restore automated backups. This cap is
already responsible for controlling restores from automated areas.
- Restored the 'viewautomatedfilearea' capabilities original lang
string.
2017-10-09 10:29:07 +08:00
Jun Pataleta 4047fccba7 MDL-59811 enrol: Move get_user_enrolment_actions logic to parent class
* These duplicated implementations can be simplified where the logic
  can be moved to enrol_plugin::get_user_enrolment_actions() method
  itself.
2017-10-09 10:29:02 +08:00
Jun Pataleta 18000c6d60 MDL-59811 enrol: Unit tests for get_user_enrolment_actions() 2017-10-09 10:29:02 +08:00
Simey Lameze 8766097ed6 MDL-60070 core_calendar: remove old iCal icon 2017-10-09 10:20:02 +08:00
Jun Pataleta b5f6dd9a91 MDL-60153 course_format: Remove irrelevant CSS styles
* The styles ".course-content ul.topics li.section .right img.icon" and
".course-content ul.weeks li.section .right img.icon" are now kind of
irrelevant and are causing course section action menu items in
Bootstrapbase to be rendered without spacing between the action menu
icon and the label.
2017-10-09 10:19:36 +08:00
Marina Glancy 0b844a8322 MDL-60314 navigation: fix overriding variable value 2017-10-09 10:18:00 +08:00
Andrew Nicols 9f2bb19a47 Merge branch 'MDL-60012_form_neq_regression' of git://github.com/davosmith/moodle 2017-10-09 10:13:30 +08:00
Marina Glancy 06f86aa808 MDL-60280 auth_cas: patch phpCAS for PHP 7.2 2017-10-09 10:04:48 +08:00
Marina Glancy 906e3fcf6e MDL-60237 libraries: TCPDF apply patch for PHP7.2 2017-10-09 10:02:56 +08:00
Marina Glancy cbc8560718 MDL-60237 libraries: upgrade TCPDF to 6.2.13 2017-10-09 10:02:56 +08:00
Simey Lameze b9a4c3df7a MDL-60092 core_calendar: add viewurl attribute to exporter 2017-10-09 10:01:30 +08:00
Simey Lameze 86244e9102 MDL-59921 calendar: replace selector for groups events 2017-10-09 09:51:14 +08:00
Simey Lameze 4b9c662b2a MDL-59921 calendar: replace selector for course events 2017-10-09 09:51:14 +08:00
Adrian Greeve dc9c4c5141 MDL-60286 lib: Moodle additions to mustache.js 2017-10-09 09:43:47 +08:00
Adrian Greeve 5adc70b77a MDL-60286 lib: Upgrade mustache.js to 2.3.0 2017-10-09 09:43:47 +08:00
Adrian Greeve 703baed252 MDL-60286 lib: Update mustache to 2.12.0 2017-10-09 09:43:47 +08:00
Adrian Greeve fb6e143ca3 MDL-60286 lib: Moodle changes to mustache upgrade 2017-10-09 09:43:47 +08:00
Adrian Greeve 35bbd8a3ae MDL-60284 lib: Update requirejs t0 2.3.5 2017-10-09 09:40:59 +08:00
Adrian Greeve 2e6daabc03 MDL-60284 lib: Update to Moodle requirejs file. 2017-10-09 09:40:59 +08:00
Adrian Greeve ee9e92e594 MDL-60194 lib: Update to phpmailer 6.0.1 2017-10-09 09:30:00 +08:00
Adrian Greeve 56e62bbba1 MDL-60194 lib: Internal changes by Moodle to phpmailer. 2017-10-09 09:30:00 +08:00
Tim Lock 68e983e540 MDL-60153 theme_bootstrapbase: Fix align of edit section menu 2017-10-09 08:08:37 +10:30
Andrew Nicols bad477584f MDL-60175 calendar: Fix ajax navigation in mini calendar 2017-10-08 21:12:50 +08:00
Andrew Nicols 70569dadcd MDL-60176 calendar: Show all activity events are course events 2017-10-08 21:05:59 +08:00
David Mudrák f208a7e471 MDL-58547 lib: Properly document the version of the Bennu library 2017-10-07 00:33:35 +02:00
Craig R Morton 6961f78dca MDL-60309 theme_boost: Add background image filepicker to Boost 2017-10-06 21:48:22 +02:00
sam marshall 46f7b264a3 MDL-59897 Accesslib: get_user_capability_course is slow 2017-10-06 13:57:55 +01:00
Jan Dageförde 99e632c446 MDL-59889 oauth2: Remove check for storing new refresh token 2017-10-06 14:49:17 +02:00
Jan Dageförde d5c60ac815 MDL-59844 webdav: Add bearer auth method to WebDAV requests 2017-10-06 14:47:41 +02:00
Neill Magill 078484f2e2 MDL-60300 Quiz: Offline update time not set correctly 2017-10-06 13:43:42 +01:00
Neill Magill cd2115fa37 MDL-60364 Web service: E_ERROR in course_check_updates web service
The error stated that course_check_updates() is undefined, this function
is in the course lib.php file.
2017-10-06 13:43:09 +01:00
sam marshall 2d2fcc1c9e MDL-60357 core_search: Future modified times cause serious problems 2017-10-06 13:38:32 +01:00
Davo Smith 5ef66eaf7e MDL-60366 mod_feedback: fix deletion of valid anonymous duplicates 2017-10-06 13:38:08 +01:00
John Beedell 4a8dfef030 MDL-60268 User tours: Improve placement of Reset tour on page link 2017-10-06 11:52:19 +01:00
sam marshall 558b6306f4 MDL-60346 core_search: Solr connection ignores proxy settings 2017-10-06 11:39:38 +01:00
Mark Nelson f87174dcc2 MDL-59106 analytics: store the 'timestart' and 'timeend' values 2017-10-06 17:28:38 +08:00
Mark Nelson 235da74e0b MDL-59106 core: added fields to 'analytics_predictions' table 2017-10-06 17:28:37 +08:00
Mark Nelson c7fecfe0bb MDL-59106 tool_analytics: fixed string describing 'onlycli' setting 2017-10-06 17:24:03 +08:00
Jake Dallimore d8e9a23c48 weekly release 3.4dev 2017-10-06 14:34:29 +08:00
Jake Dallimore 6d88e204cf NOBUG: Fixed file access permissions 2017-10-06 14:34:29 +08:00
Jake Dallimore 0081f5776e Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-10-06 14:34:28 +08:00
Adrian Greeve 70be1be9a0 MDL-60195 lib: Update of JQuery lib to 3.2.1 2017-10-06 11:36:41 +08:00
Adrian Greeve 8b4c0b2d7a MDL-60195 lib: Update to JQuery Moodle files. 2017-10-06 11:36:41 +08:00
David Monllao e08c74f5bc MDL-59630 analytics: Unit tests fixes 2017-10-05 17:38:17 +02:00
Michael Spall 151138afe1 MDL-60319 Google converter: Add html to convertible types
Add html files to the file types that Google can convert. This allows
the Google Drive converter to convert online submissions to pdf. This
fixes an issue where if online submissions is selected and the Google
Drive converter is used all conversions fail and produce a single
blank pdf. Credit to Peter Svec for the idea for this fix.
2017-10-05 08:31:57 -06:00
Jun Pataleta 7004185453 Merge branch 'MDL-60096-master' of git://github.com/junpataleta/moodle 2017-10-05 16:56:46 +08:00
Andrew Nicols 3ea4f446bc MDL-60096 calendar: Add JS for day view 2017-10-05 16:54:47 +08:00
Jun Pataleta 736b368920 Merge branch 'MDL-60352-master' of git://github.com/andrewnicols/moodle 2017-10-05 16:16:34 +08:00
Andrew Nicols 1afd3c72aa Merge branch 'MDL-59630_master' of git://github.com/dmonllao/moodle 2017-10-05 14:56:57 +08:00
Jun Pataleta 96c27b3658 Merge branch 'MDL-59751-master-v2' of git://github.com/lameze/moodle 2017-10-05 14:53:31 +08:00
Andrew Nicols 1df40a2dce MDL-60352 calendar: Do not select original event for collection 2017-10-05 14:42:11 +08:00
Simey Lameze a873ed2f37 MDL-59751 calendar: remove unused show_upcoming_events method 2017-10-05 14:27:58 +08:00
Andrew Nicols e00aed518f MDL-59751 calendar: Update JS to be more sharable 2017-10-05 14:23:02 +08:00
Simey Lameze 001366a815 MDL-59751 core_calendar: move code to avoid duplication 2017-10-05 14:23:02 +08:00
Simey Lameze 2ca4dc8a2e MDL-59751 core_calendar: make upcoming view use AJAX 2017-10-05 14:23:02 +08:00
Simey Lameze f7771eae08 MDL-59751 core_calendar: move new event button to header 2017-10-05 14:23:02 +08:00
Simey Lameze e6d805e351 MDL-59751 core_calendar: add upcoming view templates 2017-10-05 14:23:02 +08:00
Simey Lameze 84ad738604 MDL-59751 core_calendar: add calendar_upcoming exporter 2017-10-05 14:23:01 +08:00
Simey Lameze e830643858 MDL-59751 core_calendar: add get_calendar_upcoming_view webservice 2017-10-05 14:22:55 +08:00
Jun Pataleta 199d387d6e Merge branch 'MDL-59890-master-fix' of git://github.com/andrewnicols/moodle 2017-10-05 11:00:47 +08:00
Andrew Nicols 86679cb1ae MDL-59890 calendar: Use calculated context instead of guessing 2017-10-05 10:14:35 +08:00
Eloy Lafuente (stronk7) bbc8116c53 Merge branch 'MDL-60130_master' of git://github.com/markn86/moodle 2017-10-04 23:47:07 +02:00
Eloy Lafuente (stronk7) 1258a59126 Merge branch 'MDL-60264-master' of git://github.com/jleyva/moodle 2017-10-04 23:06:17 +02:00
Abdullah Albanyan b56dc2a109 MDL-60002 js: Added a 'Save and show next' button to grading interface. 2017-10-04 13:39:33 -07:00
Eloy Lafuente (stronk7) b6f370112d MDL-59890 upgrade: bump redirect_if_major_update_required 2017-10-04 22:17:25 +02:00
Juan Leyva 4c2a2bd7ce MDL-59241 mod_workshop: Fix testing found issues
- totalfilesize counting all submissions
- Improved function documentation
2017-10-04 20:23:02 +02:00
Juan Leyva 2973f64318 MDL-59248 mod_workshop: Fix permissions checks 2017-10-04 20:15:14 +02:00
Juan Leyva e348f6a541 MDL-60302 webservice: Allow CORS requests in webservice/upload.php
This will allow to upload files via Web Services using AJAX from
different domains, browser plugins, web apps, etc…
2017-10-04 12:39:51 +02:00
Jun Pataleta 2c1be712a3 Merge branch 'MDL-59890-master-fix' of git://github.com/junpataleta/moodle 2017-10-04 14:55:32 +08:00
Jun Pataleta 469c3b4645 MDL-59890 calendar: Reorganise data generation steps
* Reorganise the data generation steps to avoid creating cells with
empty string values.
2017-10-04 14:54:33 +08:00
Jun Pataleta 48a3a50aa4 MDL-59890 behat: Revert to checking if isset instead of not empty
Reverting changes made by commit
1957d33996
2017-10-04 14:24:15 +08:00
Jake Dallimore 32c369818c Merge branch 'MDL-57228' of git://github.com/timhunt/moodle 2017-10-04 13:42:51 +08:00
Derek Henderson a8fe168e08 MDL-55652 grades: Added timemodified as index grade tables
Added timemodified to grade_categories_history,
grade_items_history, grade_outcomes_history,and scale_history.
2017-10-04 12:07:01 +08:00
Jun Pataleta cd7cd9d9c1 Merge branch 'MDL-59890-master' of git://github.com/andrewnicols/moodle 2017-10-04 11:19:33 +08:00
Andrew Nicols 02150c9a1e MDL-59890 calendar: Add behat tests 2017-10-04 11:16:06 +08:00
Andrew Nicols 1957d33996 MDL-59890 behat: Check empty not isset for switchids 2017-10-04 11:16:06 +08:00
Andrew Nicols fb3c0fc38b MDL-59890 calendar: Allow event creation in behat 2017-10-04 11:16:06 +08:00
Andrew Nicols 303d649aca MDL-59890 calendar: Correct context checks for edit test 2017-10-04 11:16:06 +08:00
Andrew Nicols d097bfdda3 MDL-59890 calendar: Select current category when adding event 2017-10-04 11:16:05 +08:00
Ankit Agarwal d041a0b71f MDL-60301 libraries: PHP7.2 compatibility fix 2017-10-04 08:02:51 +05:30
Ankit Agarwal 61cef46120 MDL-60301 assignfeedback_editpdf: changes to files after FPDI update
1) Change the fpdi_bridge class so that it extends the pdf class,
rather than the TCPDF class.
2) Empty class check that was implemented before
3) Updated the editpdf/fpdi/readme_moodle.txt file to document the changes.
4) Updated the editpdf/thirdpartylibs.xml to reflect the update to the
FPDI library.
2017-10-04 08:02:48 +05:30
Eloy Lafuente (stronk7) e092ec3117 Merge branch 'MDL-33174-master' of https://github.com/matt-catalyst/moodle 2017-10-03 23:01:45 +02:00
Eloy Lafuente (stronk7) 66fca829d4 Merge branch 'MDL-49005-master' of https://github.com/abias/moodle 2017-10-03 22:48:28 +02:00
Eloy Lafuente (stronk7) 4536f3084d Merge branch 'MDL-59273-master' of https://github.com/lucisgit/moodle 2017-10-03 22:38:13 +02:00
Eloy Lafuente (stronk7) 9376583e4f Merge branch 'MDL-59883-master' of git://github.com/andrewnicols/moodle 2017-10-03 20:58:23 +02:00
Eloy Lafuente (stronk7) 34ecee16bb Merge branch 'MDL-59882-master' of git://github.com/andrewnicols/moodle 2017-10-03 20:48:28 +02:00
Eloy Lafuente (stronk7) 945cf16df8 Merge branch 'MDL-58714-master' of git://github.com/jleyva/moodle 2017-10-03 20:38:16 +02:00
Eloy Lafuente (stronk7) fe61786879 Merge branch 'MDL-60198-master' of git://github.com/jleyva/moodle 2017-10-03 20:15:42 +02:00
David Monllao 0328f12b07 MDL-59987 analytics: Add extra indicators for students at risk 2017-10-03 19:42:03 +02:00
David Monllao 0927604f8c MDL-59987 analytics: Add no students indicator to no teaching
Sneaking in a bug fix ;) (thanks in advance)
2017-10-03 19:41:43 +02:00
Juan Leyva 012c2b84b5 MDL-60144 mod_workshop: New WS mod_workshop_evaluate_submission 2017-10-03 19:28:56 +02:00
Juan Leyva 2c89c7c120 MDL-60144 mod_workshop: Move submission evaluation code to API 2017-10-03 19:28:44 +02:00
Juan Leyva 27fa248236 MDL-59239 mod_workshop: Move submission event trigger
The submission viewed event was being triggered at the beginning of the
script (before doing all the validation/safety checks).
I’ve moved the triggering to a better place so the event it is only
triggered when is verified that the user has permissions to view
the submission.
2017-10-03 19:26:40 +02:00
Juan Leyva b99070b9d8 MDL-59239 mod_workshop: New WS mod_workshop_view_submission 2017-10-03 19:25:32 +02:00
Juan Leyva 4d201b824d MDL-59253 mod_workshop: New WS mod_workshop_get_grades_report 2017-10-03 19:22:09 +02:00
Juan Leyva 9e58617a7f MDL-59252 mod_workshop: New WS mod_workshop_evaluate_assessment 2017-10-03 19:16:43 +02:00
Juan Leyva 981f511a14 MDL-59252 mod_workshop: Move assessment evaluation code to API 2017-10-03 19:16:31 +02:00
Juan Leyva d769f87171 MDL-59251 mod_workshop: New WS mod_workshop_get_grades 2017-10-03 19:07:12 +02:00
Eloy Lafuente (stronk7) 365665dbad Merge branch 'MDL-59250-master' of git://github.com/jleyva/moodle 2017-10-03 18:34:56 +02:00
AMOS bot 793de9664f Automatically generated installer lang files 2017-10-04 00:10:10 +08:00
Juan Leyva fe966a2720 MDL-59250 mod_workshop: New WS mod_workshop_update_assessment 2017-10-03 17:31:30 +02:00
Juan Leyva 57f44fbac4 MDL-59250 mod_workshop: Move assessment edition code to API function 2017-10-03 17:31:29 +02:00
Andrew Nicols 936235133a MDL-59890 calendar: Support for categories in legacy event fetch 2017-10-03 23:22:19 +08:00
Andrew Nicols 74475e5bb4 MDL-59890 calendar: Delete category events upon category removal 2017-10-03 23:22:18 +08:00
Andrew Nicols d0e56d847a MDL-59890 calendar: Display category events on calendars 2017-10-03 23:22:18 +08:00
Andrew Nicols 5ba6507e5b MDL-59890 calendar: Exporters support for categories 2017-10-03 21:28:32 +08:00
Andrew Nicols e9321ad07d MDL-59890 coursecat: Add helper to fetch nested view of coursecat 2017-10-03 21:28:31 +08:00
Andrew Nicols 02d0c4355e MDL-59890 calendar: Stop adding time for mini view - not used 2017-10-03 21:28:31 +08:00
Andrew Nicols 0085b0ea3c MDL-59890 calendar: Add support for the category to vault 2017-10-03 21:28:31 +08:00
Andrew Nicols 7d0a866c95 MDL-59890 calendar: Accept categories in calendar_info 2017-10-03 21:28:31 +08:00
Eloy Lafuente (stronk7) 4fce2a24ee MDL-59401 mod_workshop: rename method remanining fix 2017-10-03 13:05:12 +02:00
Eloy Lafuente (stronk7) 4bc267c3f4 Merge branch 'MDL-59401-master' of git://github.com/jleyva/moodle 2017-10-03 12:59:25 +02:00
Marina Glancy a3cc6261fc MDL-60337 htmlpurifier: non-ascii domain names 2017-10-03 18:57:11 +08:00
Eloy Lafuente (stronk7) d2800e5928 Merge branch 'MDL-59248-master' of git://github.com/jleyva/moodle 2017-10-03 12:35:59 +02:00
David Monllao abafbc8405 MDL-59630 analytics: mlbackend model directories deletion 2017-10-03 10:34:47 +02:00
David Monllao f9222c4953 MDL-59630 analytics: New clean up task 2017-10-03 10:34:43 +02:00
Davo Smith c377d07f26 MDL-60205 form: fix hiding of elements within groups with theme_clean 2017-10-03 09:10:56 +01:00
Davo Smith b67f3bc693 MDL-60012 form: improve clarity of elementsByName code 2017-10-03 09:09:09 +01:00
David Monllao 99b84a26f9 MDL-59630 analytics: Purge everything when the model is deleted 2017-10-03 10:07:32 +02:00
David Monllao a8ccc5f2eb MDL-59630 analytics: Move get_analysables to abstract class 2017-10-03 10:07:21 +02:00
Marina Glancy acfb9df1a8 MDL-58546 libraries: Patch ADOdb for PHP 7.2 compat 2017-10-03 15:52:18 +08:00
Juan Leyva aac70425e4 MDL-59401 mod_workshop: New WS get_reviewer_assessments 2017-10-03 09:02:05 +02:00
Juan Leyva 46f5e9a0ef MDL-59248 mod_workshop: New WS get_assessment_form_definition 2017-10-03 08:51:30 +02:00
Juan Leyva 86928d2a7c MDL-59248 mod_workshop: New API check_examples_assessed_before_assessment
For consistency I renamed the old check_examples_assessed function to
check_examples_assessed_before_submission.
I also call the new function in the existing
get_workshop_access_information external function.
2017-10-03 08:51:29 +02:00
Andrew Nicols 086d592d43 Merge branch 'MDL-60234-master' of https://github.com/abias/moodle 2017-10-03 13:10:17 +08:00
Mark Nelson d8819e4ede MDL-60129 mod_glossary: added reset tags functionality 2017-10-03 12:50:37 +08:00
Mark Nelson 0b9249e63e MDL-60129 mod_forum: added reset tags functionality 2017-10-03 12:50:37 +08:00
Mark Nelson 19f8efd3be MDL-60129 mod_book: added reset tags functionality 2017-10-03 12:50:37 +08:00
Andrew Nicols 8905d3efe0 Merge branch 'MDL-59913-master' of https://github.com/sammarshallou/moodle 2017-10-03 12:44:25 +08:00
Ankit Agarwal faa9be014b MDL-60301 libraries: Upgrade FPDI to 1.6.2 2017-10-03 10:13:38 +05:30
Andrew Nicols df3571cfb6 Merge branch 'MDL-60210-master-upgradecheck' of git://github.com/mudrd8mz/moodle 2017-10-03 10:32:15 +08:00
Eloy Lafuente (stronk7) d617d7022e Merge branch 'MDL-59247-master' of git://github.com/jleyva/moodle 2017-10-02 23:48:24 +02:00
Eloy Lafuente (stronk7) aee4aca942 Merge branch 'MDL-59246-master' of git://github.com/jleyva/moodle 2017-10-02 23:08:25 +02:00
Eloy Lafuente (stronk7) 3255109721 Merge branch 'MDL-59242-master' of git://github.com/jleyva/moodle 2017-10-02 22:59:38 +02:00
Matteo Scaramuccia 5ca85a1efe MDL-60318 filestorage: Fixed undefined method move_to_trash() 2017-10-02 22:49:42 +02:00
Tim Hunt 32250b8836 MDL-60317 quiz reports: fix regression caused by MDL-57511 2017-10-02 18:22:58 +01:00
Andrew Nicols 1a6aa52e0f Merge branch 'MDL-60003_master' of git://github.com/dmonllao/moodle 2017-10-02 20:18:21 +08:00
Marina Glancy a56889c800 MDL-60313 libraries: patch xhprof for PHP 7.2 2017-10-02 18:51:39 +08:00
Marina Glancy ffb41a8f8f MDL-60313 libraries: xhprof upgraded to 0.9.4 2017-10-02 18:41:55 +08:00
Ankit Agarwal 4e23b6b207 MDL-60291 libraries: Upgrade maxmind lib
Geoip 2.4.2 -> 2.6.0
MaxMind 1.1.0 -> 1.1.3
2017-10-02 13:47:02 +05:30
Andrew Nicols 8463f6d579 Merge branch 'MDL-60277_master' of git://github.com/dmonllao/moodle 2017-10-02 15:58:00 +08:00
Andrew Nicols 86345473ec Merge branch 'MDL-59241-master' of git://github.com/jleyva/moodle 2017-10-02 15:52:40 +08:00
Andrew Nicols 39195b6aed Merge branch 'MDL-58790' of git://github.com/timhunt/moodle 2017-10-02 15:39:26 +08:00
Juan Leyva b1e896cf2a MDL-59247 mod_workshop: New WS mod_workshop_get_assessment 2017-10-02 09:37:15 +02:00
Juan Leyva 30b54b823a MDL-59246 mod_workshop: New WS get_submission_assessments 2017-10-02 09:36:36 +02:00
Juan Leyva 6e2f4866b0 MDL-59242 mod_workshop: New WS mod_workshop_get_submission 2017-10-02 09:35:06 +02:00
Andrew Nicols 62f44c3ea4 Merge branch 'wip-MDL-60287-master' of git://github.com/marinaglancy/moodle 2017-10-02 15:33:55 +08:00
Juan Leyva 3f08cfc530 MDL-59241 mod_workshop: New WS mod_workshop_get_submissions 2017-10-02 09:33:48 +02:00
Marina Glancy 2a1275479c MDL-60239 libraries: patch Markdown for PHP7.2 2017-10-02 15:32:11 +08:00
Ankit Agarwal 3fede79302 MDL-58546 libraries: Upgrade adodb to v5.20.9 2017-10-02 12:55:47 +05:30
David Monllao 7c37e56fde MDL-60277 report_insights: Pass the prediction as a float 2017-10-02 08:57:01 +02:00
Andrew Nicols 0b55f881f1 Merge branch 'wip-MDL-58548-master' of git://github.com/abgreeve/moodle 2017-10-02 14:47:08 +08:00
Andrew Nicols bc01fbbd81 MDL-59883 behat: Update close button link 2017-10-02 13:05:16 +08:00
Andrew Nicols 1e815600d8 MDL-59883 behat: Check aria-label for button content 2017-10-02 13:05:15 +08:00
Andrew Nicols 2a77813b51 MDL-59882 behat: Update known uses of dialogue CSS 2017-10-02 12:44:37 +08:00
Andrew Nicols 434d7869df MDL-59882 behat: Add newer modal type to selectors 2017-10-02 12:43:16 +08:00
Andrew Nicols 8c0fa3f20a Merge branch 'MDL-58550-master' of git://github.com/ankitagarwal/moodle 2017-10-02 11:57:34 +08:00
Andrew Nicols 91f64fe0ac Merge branch 'MDL-60289-master' of git://github.com/lameze/moodle 2017-10-02 11:32:03 +08:00
Ankit Agarwal c56c1d98a3 MDL-60238 libraries: Upgrade HTML2Text to 4.1.0 2017-10-02 08:43:33 +05:30
Andrew Nicols 1bee636fdd Merge branch 'MDL-60236-master' of git://github.com/ankitagarwal/moodle 2017-10-02 10:31:40 +08:00
Simey Lameze 84d6589e1e MDL-60289 libraries: Upgrade Chart.js to 2.7.0 2017-10-02 10:30:48 +08:00
Andrew Nicols 9c8ab01446 Merge branch 'MDL-60239-master' of git://github.com/ankitagarwal/moodle 2017-10-02 10:21:56 +08:00
Andrew Nicols e38183450f Merge branch 'MDL-60306-master' of git://github.com/junpataleta/moodle 2017-10-02 10:15:07 +08:00
Jun Pataleta 2340579586 MDL-60306 calendar: Fix rrule_manager unit test
* The calculation of the expected date should depend on the comparison
with the start date's date and not it's exact timestamp.
2017-10-02 09:18:37 +08:00
Adrian Greeve 7c1177649d MDL-58548 lib: Update to moodle specific files.
Update to moodle specific files related to the upgrade
of htmlpurifier.
2017-10-02 08:19:40 +08:00
Adrian Greeve 247ff6bc2b MDL-58548 lib: Update htmlpurifier to the latest version. 2017-10-02 08:19:40 +08:00
Matt Clarkson b1eb6dd7f2 MDL-33174 lib/filestorage: Add filename to curl request
While the lack of the filename in curl POST does not
directly affect Moodle, some external API's expect to get
the filename of the original file, which affects plugins
using the CURL class.
2017-10-02 09:27:51 +13:00
Marina Glancy 22abb52bac MDL-60287 scssphp: patch for PHP7.2 compatibility 2017-10-01 11:48:02 +08:00
Marina Glancy 653b2bd351 MDL-60287 scssphp: upgraded to 0.6.7 2017-10-01 11:47:58 +08:00
Eloy Lafuente (stronk7) bc4067bfae MDL-60298 composer: move to guzzle ^6.3 towards PHP 7.2 support 2017-09-30 10:30:12 +02:00
sam marshall 2d94d4ea7c MDL-59913 Global search: Allow search of non-enrolled courses 2017-09-29 16:30:37 +01:00
Juan Leyva 7b1c55ead3 MDL-58714 tool_mobile: Return mobile auth plugins via public AJAX ws
External function
tool_mobile::tool_mobile_get_plugins_supporting_mobile is now available
via AJAX for not logged users.
When called via AJAX without a user session the function will return
only auth plugins.
2017-09-29 10:42:18 +02:00
Andrew Nicols 05f184bb7f MDL-59890 calendar: Add ability to add category events 2017-09-29 08:57:08 +08:00
Andrew Nicols 7b1e5e6f3a MDL-59890 calendar: Add categoryid to DB 2017-09-29 08:57:08 +08:00
ddelblanco 4325a4d23a MDL-60276 LTI Content Item: does not populate tool url when https 2017-09-28 09:54:35 -07:00
David Monllao 698f361702 MDL-60275 analytics: Specify missing prediction_action constructor arg 2017-09-28 18:17:36 +02:00
AMOS bot 48f515a2ec Automatically generated installer lang files 2017-09-29 00:05:44 +08:00
David Monllao aa1b04dc81 MDL-60003 analytics: Skip samples with only null values 2017-09-28 16:56:33 +02:00
Juan Leyva 41447216ea MDL-60264 media_vimeo: Support restricted videos by domain in the app
As reported in MOBILE-1511, Vimeo videos restricted by domain are not
working in the app.

The reason is simple: The restriction is done by the Referer HTTP
header, when a video is embedded via an iframe in the Moodle Site,
Vimeo checks the Referer to see if it matches the specified domain.

When the video is embedded in the mobile app, the Referer is the one
provided by the app Cordova container so Vimeo won't allow playing the
video.

The solution is to add an extra iframe on top of the Vimeo embedding
one (like a proxy), the app will display an iframe pointing to a page
in the site that will include the iframe pointing to vimeo so the
restriction check will work.
2017-09-28 10:00:21 +02:00
Jake Dallimore 23ab0d7788 weekly release 3.4dev 2017-09-28 14:27:24 +08:00
Ankit Agarwal 4f3b046cf9 MDL-60236 libraries: Upgrade simplepie to 1.5.0 2017-09-28 10:19:33 +05:30
Tim Lock 1d6964dc31 MDL-59843 mod_choice: Fix horizontal display mode
This re-implements the feature in the boost and bootstrap themes.
2017-09-28 12:22:56 +10:00
Eloy Lafuente (stronk7) 591d42b073 Merge branch 'MDL-60243-master' of https://github.com/snake/moodle 2017-09-27 20:38:50 +02:00
Andrew Nicols 839aa86f0d Merge branch 'wip-MDL-59495-master' of git://github.com/marinaglancy/moodle 2017-09-27 15:11:20 +08:00
Ankit Agarwal 503ce10cad MDL-60239 libraries: upgrade MD library to 1.7.0 2017-09-27 12:28:20 +05:30
Marina Glancy 3ec7d2d97f MDL-59495 registration: do not use the word 'hub' in strings
Either say 'server', or 'Moodle.net' or change the wording. Registration is only possible on Moodle.net now
and it should no longer be called 'hub'.
2017-09-27 13:56:50 +08:00
Marina Glancy 53f8047316 MDL-59495 lang_hub: deprecate all unused strings 2017-09-27 13:56:50 +08:00
Marina Glancy 5189f57f38 MDL-59495 block_community: search courses on moodle.net only
Remove support for alternative hubs and hub selector
2017-09-27 13:56:50 +08:00
Marina Glancy 8df792ee8a MDL-59495 course: publish courses on moodle.net only
Remove support for alternative hubs
2017-09-27 13:56:47 +08:00
Jake Dallimore c248037acb Merge branch 'MDL-59780-master' of git://github.com/ankitagarwal/moodle 2017-09-27 13:34:56 +08:00
Marina Glancy ef467fff04 MDL-59495 registration: register site on moodle.net only
Remove support for alternative hubs
2017-09-27 13:07:37 +08:00
Marina Glancy da48baa2cd MDL-59495 moodlenet: move all moodlenet code into new namespace
Support for alternative hubs will be removed in 3.4
We can move all methods working with registration, course publishing and moodle.net
communication into separate namespace
2017-09-27 13:07:33 +08:00
Jake Dallimore 6fcf5b679d Merge branch 'MDL-59940-master' of git://github.com/andrewnicols/moodle 2017-09-27 12:56:56 +08:00
Andrew Nicols 529e877614 MDL-59940 calendar: Fix random behat fails when changing month 2017-09-27 12:00:33 +08:00
Andrew Nicols e0946346ca MDL-59940 calendar: Fix behat test for lookahead feature 2017-09-27 12:00:32 +08:00
Ankit Agarwal 5e2e866d97 MDL-59780 mathjax: Make sure mathjax url doesn't become empty 2017-09-27 09:14:20 +05:30
Jake Dallimore 54ec93885c MDL-60243 competencies: fix ordering bug in api_test unit test
list_user_competencies_to_review() orders by shortname, but the test
creates 2 user competencies with the same short name, resulting in
unpredictable results. This patch fixes that.
2017-09-27 09:19:32 +08:00
Eloy Lafuente (stronk7) 4da0f10286 Merge branch 'MDL-59931_master' of https://github.com/ctam/moodle 2017-09-27 01:16:10 +02:00
Eloy Lafuente (stronk7) 0b4eef24c2 Merge branch 'MDL-60005-master' of git://github.com/jleyva/moodle 2017-09-27 00:54:09 +02:00
Alexander Bias f380743303 MDL-60234 core: Disable admin warning for developemnt libs 2017-09-26 22:05:19 +02:00
Eloy Lafuente (stronk7) 25759080d6 Merge branch 'MDL-60156-master' of git://github.com/andrewnicols/moodle 2017-09-26 20:36:25 +02:00
Eloy Lafuente (stronk7) 536572cf0b Merge branch 'MDL-59645-master-flickr' of git://github.com/mudrd8mz/moodle 2017-09-26 19:29:40 +02:00
Tim Hunt 5cbb7bf887 MDL-58790 quiz editing: translate hard-coded new heading string 2017-09-26 11:17:27 +01:00
Juan Leyva 9a62cd02db MDL-60233 mod_assign: Avoid HTML in the item field of external warnings
The item field is defined as PARAM_TEXT (no HTML tags allowed except
for multilang).
Using the s that add quotes to HTML characters we avoid potential Web
Services invalid parameters errors.
2017-09-26 12:12:50 +02:00
Alexander Bias 2e4d7a92b5 MDL-49005 core: Remove /tags.txt 2017-09-26 10:18:25 +02:00
Andrew Nicols 6d7953f2fe Merge branch 'MDL-60141-master' of git://github.com/jleyva/moodle 2017-09-26 15:47:56 +08:00
Jake Dallimore 50f6574b67 Merge branch 'MDL-60121-multi-enrol-backup' of https://github.com/mpetrowi/moodle 2017-09-26 15:22:33 +08:00
Andrew Nicols 2d79d62249 Merge branch 'MDL-60197_master' of git://github.com/markn86/moodle 2017-09-26 09:56:54 +08:00
Andrew Nicols 9eeb4a55f4 Merge branch 'master' of https://github.com/ConnorSheremeta/moodle 2017-09-26 08:16:08 +08:00
Eloy Lafuente (stronk7) c9d9acb289 Merge branch 'MDL-59505-master-gdrive' of git://github.com/mudrd8mz/moodle 2017-09-26 01:29:35 +02:00
Eloy Lafuente (stronk7) 18348b0781 Merge branch 'MDL-57115-master' of git://github.com/ankitagarwal/moodle 2017-09-26 01:11:21 +02:00
Eloy Lafuente (stronk7) e03484eec5 Merge branch 'MDL-59940-master' of git://github.com/andrewnicols/moodle 2017-09-25 23:07:05 +02:00
Eloy Lafuente (stronk7) 3f96ff0505 Merge branch 'MDL-60158-master' of git://github.com/andrewnicols/moodle 2017-09-25 22:06:00 +02:00
Carson Tam 43f122d32c MDL-59931 mod_quiz: Fixing incorrect pagination count. 2017-09-25 12:46:52 -07:00
Eloy Lafuente (stronk7) c01beb0cdf Merge branch 'wip-MDL-60167-master' of git://github.com/marinaglancy/moodle 2017-09-25 19:53:48 +02:00
Shamim Rezaie f061709e62 MDL-57228 quiz editing: unit test for the move case 2017-09-25 12:54:05 +01:00
Tim Hunt 6c73dd9593 MDL-57228 quiz: fix editing when there are one-question sections
Fix based on a patch by Joost van der Borg <j.van.der.borg@ssr.nl>.
2017-09-25 12:16:12 +01:00
Andrew Nicols abf00dad41 MDL-59940 calendar: Fix eslint errors 2017-09-25 11:52:39 +08:00
Andrew Nicols bc2cca3a0d MDL-59940 calendar: Improve event start time default
Create events on the first day of the month when not in the current
month.
2017-09-25 11:52:08 +08:00
Andrew Nicols 3fb45f57e4 MDL-60156 calendar: Replace add event button template 2017-09-25 11:47:55 +08:00
Andrew Nicols 39ad9cf333 MDL-60158 calendar: Fix footer options when viewing as guest 2017-09-25 11:44:32 +08:00
Eloy Lafuente (stronk7) 4d35a19007 MDL-45366 behat: automate MDLQA-2425
It covers all the original cases and more:
- chapters up and down.
- subchapters up and down within chapter and out from chapter.
- 2nd up and before last down behaviors.
2017-09-25 04:15:05 +02:00
Marina Glancy 9d18cfd0e8 MDL-60167 upgrade: Fix duplicate site registrations 2017-09-24 18:46:41 +08:00
Dan Poltawski 22e99d61ca weekly release 3.4dev
"Parting is such sweet sorrow."

xxx
2017-09-22 12:47:58 +01:00
Dan Poltawski d501d4a246 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-09-22 12:43:10 +01:00
David Mudrák b69b6627e2 MDL-60210 admin: Check if the site needs upgrade on admin/search.php too
The page admin/search.php is the default administration page in Boost
based themes. It should behave the same as admin/index.php or
my/index.php and check if the site needs upgrade.
2017-09-22 13:24:16 +02:00
Damyon Wiese e39df1faeb MDL-60046 user: Apply user filters immediately. 2017-09-22 14:53:27 +08:00
Jun Pataleta d38bb774ef Merge branch 'MDL-37810-master-fix' of https://github.com/snake/moodle 2017-09-22 10:54:40 +08:00
David Mudrák e0a903243b MDL-59505 oauth2: Fix storage of access controlled links
When files are copied into the system account's drive, they are put into
folders respecting the structure of contexts. Folder names were based on
context names only and so were likely to collide (such as with users
with the same name).

The patch ads context instance identifiers to the name so that they can
be identified more reliably.
2017-09-21 22:17:03 +02:00
Dan Poltawski 07cadbd794 Merge branch 'MDL-53169' of https://github.com/stronk7/moodle 2017-09-21 19:03:55 +01:00
Eloy Lafuente (stronk7) 7ab0993265 MDL-53169 database: use bound empty strings for cross-db 2017-09-21 19:27:59 +02:00
AMOS bot b180ff1a5a Automatically generated installer lang files 2017-09-22 00:07:52 +08:00
AMOS bot f5b892000e Automatically generated installer lang files 2017-09-22 00:07:51 +08:00
Jake Dallimore b7e9f1cc42 MDL-37810 roles: fix profile roles logic to include all roles
If the user has the role:assign capability then the list of profile roles
will include any role assigned in the context or above.
2017-09-21 22:23:41 +08:00
Ankit Agarwal c7f9a59f3d MDL-58550 libraries: Upgrade matthiasmullie libraries 2017-09-21 16:46:24 +05:30
Juan Leyva e71687baf9 MDL-60198 webservice: Add missing MOODLE_INTERNAL checks 2017-09-21 13:01:28 +02:00
Mark Nelson 141530b9dd MDL-60197 mod_data: not always necessary to show 'select all/none' link 2017-09-21 17:51:23 +08:00
AMOS bot 26a0d8a13b Automatically generated installer lang files 2017-09-21 00:05:52 +08:00
Jun Pataleta 0e57965154 Merge branch 'MDL-59750-master' of git://github.com/lameze/moodle 2017-09-20 18:45:37 +08:00
Nadav Kavalerchik ad4cba91a4 MDL-60182 Glossary: Fix print icon label in RTL mode 2017-09-20 12:09:05 +03:00
Eloy Lafuente (stronk7) 186a8c1572 Merge branch 'MDL-43176' of https://github.com/NeillM/moodle 2017-09-20 10:12:37 +02:00
Simey Lameze c602220798 MDL-59750 core_calendar: fix minithree logic on get_view 2017-09-20 13:25:19 +08:00
Simey Lameze 563ae695dc MDL-59750 calendar: fix logic on subscription template 2017-09-20 12:51:11 +08:00
Simey Lameze d85651d82c MDL-59750 core_calendar: remove show_day method 2017-09-20 12:51:02 +08:00
Simey Lameze 63b13467a9 MDL-59750 calendar: organise exporters code 2017-09-20 12:50:52 +08:00
Simey Lameze 5a35675e53 MDL-59750 calendar: add edit and delete url to exporter 2017-09-20 12:50:43 +08:00
Simey Lameze 146d371344 MDL-59750 calendar: render day view using templates 2017-09-20 12:50:12 +08:00
Simey Lameze ac671b3739 MDL-59750 core_calendar: rename template month_header to header 2017-09-20 12:48:26 +08:00
Simey Lameze 578eb78981 MDL-59750 core_calendar: add next and previous days handling methods 2017-09-20 12:47:38 +08:00
Simey Lameze 8afe9f8a14 MDL-59750 core_calendar: better handling of event subscription 2017-09-20 12:47:27 +08:00
Eloy Lafuente (stronk7) e98f05340d Merge branch 'MDL-43176' of https://github.com/NeillM/moodle 2017-09-19 23:10:31 +02:00
Eloy Lafuente (stronk7) 77b767c362 Merge branch 'MDL-60132-master' of git://github.com/jleyva/moodle 2017-09-19 22:34:39 +02:00
Dan Poltawski be5d95fc74 Merge branch 'MDL-59920-master' of git://github.com/andrewnicols/moodle 2017-09-19 18:14:18 +01:00
Jun Pataleta 7326663237 Merge branch 'MDL-53169-master' of https://github.com/sammarshallou/moodle 2017-09-19 22:26:30 +08:00
David Mudrák 05e77ab8f0 MDL-59645 flickrlib: Show debug notice when using legacy authentication 2017-09-19 14:44:41 +02:00
David Mudrák f4d1aa9573 MDL-59645 portfolio_flickr: Make the Flickr portfolio export work again
The patch modifies the Flickr portfolio to make it use of the new oauth1
based client.
2017-09-19 14:44:41 +02:00
David Mudrák 34db9e9342 MDL-59645 repository_flickr: Drop legacy auth tokens and nsids
The values stored in these user preferences were valid for the old
flickr auth mechanism and are not usable any more. The new oauth1 based
version needs to store both the token (in the flickr_access_token
preference) and the token secret (flickr_access_token_secret). The new
version does not need to store the user's nsid.

The cryptic names of these legacy settings are a result of how dealing
with user preferences was originally implemented.
2017-09-19 14:44:41 +02:00
David Mudrák d841bbe90d MDL-59645 repository_flickr: Make the Flickr repository work again
The patch makes the Flickr repository use the new oauth1 based client.
Beside that, other improvements include:

* Does not attempt to guess the photo URL any more. Instead uses
  url_sq and url_o extras of the flickr.photos.search call.
* The photos.search does not return the information about the photo size
  so we set it to null (previously was returned as 'unknown' which made
  it be displayed as zero).
* Does not perform additional API request to obtain the manage URL, uses
  https://www.flickr.com/photos/organize instead.
2017-09-19 14:44:41 +02:00
David Mudrák f438cca1a0 MDL-59645 oauth1: Implement a new simple Flickr API client
Flickr has switched over to OAuth 1.0 based authentication. This is a
simple client allowing Moodle to perform authenticated calls to the
Flickr API.
2017-09-19 14:44:41 +02:00
David Mudrák a650517a41 MDL-59645 oauth1: Improve reporting of token errors
Provide a more meaningful error message and debuginfo allowing to
diagnose what is going on. In case of flickr, this is typically thrown
when flickr API responses with their "bad, bad panda" HTML page instead
of the expected reply.
2017-09-19 14:44:41 +02:00
David Mudrák f2252e9501 MDL-59645 oauth1: Pass oauth_callback only to obtain the request token
As per the oauth1 spec, the oauth_callback is supposed to be passed only
when obtaining the initial request token. The client used to append it
automatically to all requests which broke the request signature.
2017-09-19 14:44:41 +02:00
Dan Poltawski 6bfd4195be MDL-57886 plagarism: add note about behaviour change 2017-09-19 13:40:16 +01:00
Dan Poltawski ecf8920afd Merge branch 'master_MDL-57886' of https://github.com/danmarsden/moodle 2017-09-19 13:40:12 +01:00
sam marshall 22ef155087 MDL-53169 Lib: enrol_get_my_courses can list available courses too 2017-09-19 12:19:49 +01:00
Jun Pataleta 66502b8180 Merge branch 'MDL-60048-master' of https://github.com/Kathrin84/moodle 2017-09-19 17:21:40 +08:00
Dan Poltawski 708100cbef Merge branch 'MDL-59277-master' of https://github.com/snake/moodle 2017-09-19 09:48:30 +01:00
Jun Pataleta 00b7632833 Merge branch 'MDL-59922-master-on-int' of git://github.com/ryanwyllie/moodle 2017-09-19 16:38:08 +08:00
Ryan Wyllie c35613ff28 MDL-59922 mod_choice: allow editing of open and close events 2017-09-19 08:21:53 +00:00
Dan Poltawski 5b1d6143be Merge branch 'MDL-59507-master' of https://github.com/snake/moodle 2017-09-19 09:17:47 +01:00
Dan Poltawski a1b8b9c9b5 Merge branch 'MDL-59960_mimetype' of https://github.com/mrmark/moodle 2017-09-19 09:10:24 +01:00
Mark Nelson 866939c3cc MDL-60130 mod_*: removed unused 'tagtitle' string 2017-09-19 14:54:39 +08:00
Ryan Wyllie 39fe5929c6 MDL-59922 calendar: allow editing of activity events 2017-09-19 06:48:57 +00:00
Dan Poltawski f5cc5b321d Merge branch 'MDL-60018-master' of git://github.com/jleyva/moodle 2017-09-19 07:27:48 +01:00
Dan Poltawski 363d81514e Merge branch 'MDL-60045_master-v2' of git://github.com/markn86/moodle 2017-09-19 07:16:02 +01:00
Jun Pataleta c8d20b2a73 Merge branch 'MDL-60065-master' of git://github.com/andrewnicols/moodle 2017-09-19 13:38:26 +08:00
Andrew Nicols 5ff6114623 MDL-60065 calendar: Deprecate calendar_get_mini and friends
This is no longer used and should be deprecated.
2017-09-19 13:21:58 +08:00
Mark Nelson fe2142952f MDL-60045 core_user: allow roleid to be passed via URL 2017-09-19 11:40:10 +08:00
Eloy Lafuente (stronk7) db7083c4c4 Merge branch 'MDL-60105_master' of git://github.com/dmonllao/moodle 2017-09-19 01:55:12 +02:00
Eloy Lafuente (stronk7) 3286e94362 Merge branch 'MDL-52131-master' of git://github.com/andrewnicols/moodle 2017-09-19 01:53:07 +02:00
Eloy Lafuente (stronk7) 66286d5768 Merge branch 'MDL-60094-master' of https://github.com/abias/moodle 2017-09-19 01:50:37 +02:00
Eloy Lafuente (stronk7) dffca49945 Merge branch 'MDL-37810-master' of https://github.com/snake/moodle 2017-09-19 01:45:29 +02:00
Eloy Lafuente (stronk7) 00045100d0 Merge branch 'MDL-53244_master' of git://github.com/Chocolate-lightning/moodle 2017-09-19 01:42:17 +02:00
Eloy Lafuente (stronk7) 0238520084 Merge branch 'MDL-59244-master' of git://github.com/jleyva/moodle 2017-09-19 01:36:56 +02:00
Eloy Lafuente (stronk7) 5c45e6038c Merge branch 'MDL-59245-master' of git://github.com/jleyva/moodle 2017-09-19 01:33:08 +02:00
Jun Pataleta 77b5d07e31 Merge branch 'MDL-59900_master' of git://github.com/markn86/moodle 2017-09-18 16:03:46 +08:00
Jun Pataleta 58cd2bfd82 Merge branch 'MDL-59995_master' of git://github.com/markn86/moodle 2017-09-18 14:39:46 +08:00
Jun Pataleta bf2742f2f2 Merge branch 'MDL-60065-master' of git://github.com/andrewnicols/moodle 2017-09-18 13:07:45 +08:00
Andrew Nicols 6038d62625 MDL-60065 calendar: Add threemonth view 2017-09-18 12:04:48 +08:00
Andrew Nicols b014688581 MDL-60065 calendar: Specify optional replacement node 2017-09-18 12:04:48 +08:00
Andrew Nicols fee025ecbb MDL-60065 calendar: Control navigation on mini 2017-09-18 12:04:48 +08:00
Andrew Nicols b9ff690eb6 MDL-60065 calendar: Update side calendar when on CRUD events 2017-09-18 12:04:48 +08:00
Jun Pataleta 23277c9f8f Merge branch 'MDL-60125-master' of git://github.com/andrewnicols/moodle 2017-09-18 11:49:30 +08:00
Andrew Nicols 2dbfb484aa MDL-59920 calendar: Allow user to choose if deleting one or all events 2017-09-18 11:48:51 +08:00
Andrew Nicols f58424c70c MDL-60125 calendar: Switch to navigation by YMD 2017-09-18 11:44:25 +08:00
Jake Dallimore 434d138c2a MDL-37810 roles: added manager case to test_get_user_roles_in_course()
Managers can assign managers, and should be able to see that role on
the course profile page, as a link to the participants page.
2017-09-18 10:16:08 +08:00
Jun Pataleta afec1107d2 Merge branch 'MDL-59994-master-v2' of git://github.com/lameze/moodle 2017-09-18 09:10:35 +08:00
Jake Dallimore 5d0cc05b20 MDL-59277 navigation: add support for container type in get_css_type() 2017-09-18 09:03:51 +08:00
Jake Dallimore b8c31dfe6d MDL-59507 forms: unit tests confirming that .xxx is an invalid extension
Modified:
- test_data_for_browser()
- test_unknow_file_types()
2017-09-18 09:03:00 +08:00
Jake Dallimore 405cbc09ba MDL-59507 forms: accepted file types won't allow the .xxx extension
- Modified get_filetypes_browser_data() to exclude this extension.
- Server side form validation blocks this extension too.
2017-09-18 09:03:00 +08:00
Jake Dallimore da655d9ee4 MDL-37810 roles: get_user_roles_in_course returns all relevant roles
Fixed to return both those roles in the profileroles site policy and
any roles which the current user can assign in the respective context,
meaning a user can see a link to any role they can assign.
2017-09-18 08:59:29 +08:00
Jake Dallimore d07006f1fd MDL-37810 core_user: fix the user renderer's usage of get_profile_roles 2017-09-18 08:59:29 +08:00
Jake Dallimore 42a2c4794d MDL-37810 roles: unit tests for get_profile_roles() 2017-09-18 08:59:29 +08:00
Jake Dallimore 7b30582669 MDL-37810 roles: fix get_profile_roles() so it returns assignable roles 2017-09-18 08:59:29 +08:00
Simey Lameze 2fc95ecf80 MDL-59994 competency: improve user competency unit test 2017-09-18 08:32:12 +08:00
Simey Lameze 8c13028c9d MDL-59994 competency: dont list competencies from deleted users 2017-09-18 08:32:12 +08:00
Eloy Lafuente (stronk7) 1ae99ec327 MDL-60150 install: update the list of stale files for 3.4 2017-09-17 13:27:28 +02:00
Neill Magill dbe7012475 MDL-43176 enrol_meta: enrol_meta_sync query is inefficient
Before this change the nested select did a full table scan of
either the enrol or user_enrolments table. This meant that
on large sites the query could be very slow.

This change ensures that there are no full table scans which
makes the query much more efficient.

In my testing the all courses version of the query changed
from ~15 s to ~ 5 s; the singles course version changed
from ~15 s to > 0.1 s
2017-09-15 14:12:32 +01:00
Juan Leyva ca90ed2109 MDL-60141 auth_email: Fix sitepolicy field type in get_signup_settings 2017-09-15 11:50:07 +02:00
Juan Leyva 4fe55987e1 MDL-60005 tool_mobile: Return sitepolicy in tool_mobile_get_config WS 2017-09-15 11:17:12 +02:00
Dan Poltawski 91cbdda6af weekly release 3.4dev 2017-09-15 08:49:23 +01:00
Dan Poltawski 3ec75fb64d Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-09-15 08:49:21 +01:00
Davo Smith 8cab0a2571 MDL-60012 form: fix 'neq' disabledif regression 2017-09-14 16:28:53 +01:00
Matt Petro f5ea99bf6e MDL-60121 enrol: Fix enrol plugin backup
Allow more than one enrol plugin to add backup structure.
2017-09-14 10:39:09 -04:00
Alexander Bias af25a2b739 MDL-60094 administration: Add CLI script to kill all sessions 2017-09-14 16:03:39 +02:00
Dan Poltawski f125ce6522 Merge branch 'MDL-58835_master-fix2' of https://github.com/dmonllao/moodle 2017-09-14 12:25:47 +01:00
David Monllao 3f6933d896 MDL-58835 report_insights: Force window reload when no more predictions 2017-09-14 12:55:03 +02:00
Juan Leyva 6703e031f0 MDL-60132 tool_mobile: Handle correctly moodle_url instances
In Moodle there are some functions that can be overridden by themes.
Some themes are returning incorrect value types in those functions
2017-09-14 12:17:21 +02:00
Juan Segarra Montesinos 53fa2a5194 MDL-52131 qbehaviour: respect manualcomment format
The format of a manual comment in a question is respected when
the preferred editor is "Plain text area".
2017-09-14 13:30:35 +08:00
Ankit Agarwal f3a3e23448 MDL-57115 blocks: Cleanup block_messages instances and other configs 2017-09-14 09:57:03 +05:30
Jun Pataleta a2bcf808d9 Merge branch 'wip-MDL-59775-fix' of https://github.com/marinaglancy/moodle 2017-09-14 12:17:14 +08:00
Marina Glancy f9af542769 MDL-59775 forms: css correction 2017-09-14 12:05:12 +08:00
Dan Marsden 58496fe703 MDL-57886 plagiarism: Pass raw unformatted content to get_links. 2017-09-14 14:48:07 +12:00
Jun Pataleta afe9093748 Merge branch 'MDL-59926' of https://github.com/stronk7/moodle 2017-09-14 09:47:22 +08:00
Eloy Lafuente (stronk7) 583b297d6c MDL-59926 behat: Make the search bootstrapbase + boost compatible
By combining the title attribute search with the "icon" class instead
of old "img" or new "i" elements we achieve that without too much
complication.
2017-09-14 01:26:30 +02:00
Matt Clarkson 41dfbb6235 MDL-60105 mod_folder: Set timemodified on change
Changes to the folder contents were not resulting in the
timemodied of the folder activity being set. This prevented
global search from picking up the changes.
2017-09-13 13:51:49 +02:00
Matt Clarkson 3043fe924d MDL-60105 search: Fix fatal error
If an indexed file has been modified or deleted the search index
will still reference the old file. Remove the file from search
results until the change has been indexed.
2017-09-13 13:51:30 +02:00
Eloy Lafuente (stronk7) c06e187aaf Merge branch 'MDL-59243-master' of git://github.com/jleyva/moodle 2017-09-13 12:09:52 +02:00
Juan Leyva 4834e127eb MDL-59243 mod_workshop: Return creation status in create_submission WS 2017-09-13 11:41:28 +02:00
Dan Poltawski cf7430f07c Merge branch 'MDL-58835_master-fix' of git://github.com/dmonllao/moodle 2017-09-13 09:04:39 +01:00
David Monllao a6edbef556 MDL-58835 report_insights: Fix redirections 2017-09-13 09:49:14 +02:00
Mark Nelson 9a1067f389 MDL-59900 core_admin: moved analytic links to their own category 2017-09-13 11:40:40 +08:00
AMOS bot 648e9e1b17 Automatically generated installer lang files 2017-09-13 00:06:29 +08:00
Dan Poltawski 59f431e8a7 Merge branch 'MDL-59084-master' of git://github.com/andrewnicols/moodle 2017-09-12 15:28:26 +01:00
Andrew Nicols 7e4c4b6f1f MDL-59084 core: Allow adhoc tasks to run as a specified user 2017-09-12 21:58:50 +08:00
Dan Poltawski 77d2c7b937 Merge branch 'MDL-60039_master' of git://github.com/dmonllao/moodle 2017-09-12 11:28:59 +01:00
David Monllao d08f177042 MDL-60039 search: Force messaging search areas to be reindexed 2017-09-12 11:57:00 +02:00
Dan Poltawski 68e3c5f71b Merge branch 'MDL-59929' of git://github.com/timhunt/moodle 2017-09-12 10:54:11 +01:00
Eloy Lafuente (stronk7) 2c821c1b82 Merge branch 'wip-MDL-59775-master' of git://github.com/marinaglancy/moodle 2017-09-12 11:44:47 +02:00
Mark Nelson 391663ce28 MDL-59995 core_admin: added setting to define Python bin path 2017-09-12 17:33:16 +08:00
Dan Poltawski 8e085aacc0 Merge branch 'MDL-58835_master' of git://github.com/dmonllao/moodle 2017-09-12 09:44:56 +01:00
Eloy Lafuente (stronk7) 776ca0238e Merge branch 'MDL-59761-master' of git://github.com/danpoltawski/moodle 2017-09-12 10:41:17 +02:00
David Monllao 0500bc49f1 Merge branch 'MDL-57407-master' of git://github.com/jleyva/moodle 2017-09-12 10:33:30 +02:00
Jun Pataleta d887e98b56 Merge branch 'MDL-59243-master' of git://github.com/jleyva/moodle 2017-09-12 16:29:43 +08:00
Dan Poltawski e970f8b3d3 MDL-59761 eslint: update to v4.6.1
The new versions got released while this issue was waiting for peer
review.
2017-09-12 09:24:10 +01:00
Eloy Lafuente (stronk7) bf30e4dc86 Merge branch 'MDL-60086-master' of https://github.com/snake/moodle 2017-09-12 09:56:23 +02:00
Jun Pataleta 63b384d02a Merge branch 'MDL-59919-master' of git://github.com/ryanwyllie/moodle 2017-09-12 14:58:06 +08:00
David Monllao dc9f39bfc3 Merge branch 'MDL-59399-master' of git://github.com/ryanwyllie/moodle 2017-09-12 08:12:26 +02:00
David Monllao 651f1a1703 Merge branch 'MDL-59831_master' of git://github.com/markn86/moodle 2017-09-12 08:07:52 +02:00
David Monllao 2cef0d3ade Merge branch 'MDL-59867-master' of git://github.com/damyon/moodle 2017-09-12 07:10:46 +02:00
David Monllao fb6ff3c553 Merge branch 'MDL-59879-master' of https://github.com/abias/moodle 2017-09-12 07:04:34 +02:00
Jake Dallimore 9f813ab5df MDL-60086 travis: Bumping the postgres version to 9.6
3.2 was bumped to 9.6, this makes the change across the board.
2017-09-12 09:33:52 +08:00
Jun Pataleta 311a0b283b Merge branch 'MDL-59392-master' of git://github.com/andrewnicols/moodle 2017-09-12 08:55:47 +08:00
Andrew Nicols a7bf76cee8 MDL-59392 calendar: Remove bad behat tag 2017-09-12 08:34:40 +08:00
Eloy Lafuente (stronk7) e658430a88 Merge branch 'MDL-59761-master' of git://github.com/danpoltawski/moodle 2017-09-12 01:43:19 +02:00
Eloy Lafuente (stronk7) 2e6112dd3f Merge branch 'MDL-59926-master' of https://github.com/sammarshallou/moodle 2017-09-12 00:27:49 +02:00
Eloy Lafuente (stronk7) 69cfd26e15 Merge branch 'MDL-59478-master' of git://github.com/junpataleta/moodle 2017-09-12 00:21:48 +02:00
Eloy Lafuente (stronk7) 0071665686 Merge branch 'wip-MDL-59808-master' of git://github.com/marinaglancy/moodle 2017-09-12 00:13:28 +02:00
Eloy Lafuente (stronk7) f20f9448f7 Merge branch 'MDL-60025-master' of git://github.com/jleyva/moodle 2017-09-11 23:50:36 +02:00
Eloy Lafuente (stronk7) 6e49ef0d94 Merge branch 'MDL-59934-master' of git://github.com/ryanwyllie/moodle 2017-09-11 23:19:48 +02:00
AMOS bot 85877b75d7 Automatically generated installer lang files 2017-09-12 00:08:23 +08:00
Dan Poltawski 4d4c5992ee Merge branch 'MDL-59392-master' of git://github.com/andrewnicols/moodle 2017-09-11 14:39:43 +01:00
Dan Poltawski 52516f2b19 Merge branch 'MDL-35849-master' of git://github.com/ankitagarwal/moodle 2017-09-11 14:18:51 +01:00
Dan Poltawski 743c937dae Merge branch 'MDL-59459_Increase_file_indexing_coverage' of https://github.com/mattporritt/moodle 2017-09-11 14:01:40 +01:00
Jun Pataleta eca853c8eb Merge branch 'MDL-59977_master' of git://github.com/markn86/moodle 2017-09-11 17:18:16 +08:00
Jun Pataleta 02e10f8592 Merge branch 'MDL-60031-master' of git://github.com/andrewnicols/moodle 2017-09-11 13:56:56 +08:00
Jun Pataleta dd6e17c3b6 Merge branch 'wip-MDL-55849-master' of git://github.com/abgreeve/moodle 2017-09-11 13:26:50 +08:00
Mark Nelson 32e5109d7f MDL-59831 core_user: only set default group when necessary 2017-09-11 12:47:25 +08:00
Mark Nelson 580a5588f1 MDL-59831 core_user: show all groups in select when in visible groups 2017-09-11 12:47:25 +08:00
Andrew Nicols 7aaca085fb MDL-59392 calendar: Deprecate old event filters 2017-09-11 12:45:47 +08:00
Andrew Nicols fc60d3194f MDL-59392 calendar: Apply event filters to main calendar view 2017-09-11 12:45:47 +08:00
Andrew Nicols c8b6e9ab34 MDL-59392 calendar: Switch to templates in the cal block
This commit adds a set of templates for the calendar month block, and
the events filter. The same data exporters used in the main calendar
view are utilised and the same logic.

Some additional data was added to the exporters, and in the long term
this will be used in the main monthly view so I did not feel it was
prudent to strip it out into a different view of the model.

AMOS BEGIN
 MOV [monthnext,access],[monthnext,calendar]
AMOS END
2017-09-11 12:45:46 +08:00
Mark Nelson 93b47710ac MDL-59977 core: do not directly check 'viewparticipant' capability 2017-09-11 12:44:27 +08:00
Jun Pataleta fb1af0797c Merge branch 'MDL-35668-master-fix' of git://github.com/junpataleta/moodle 2017-09-11 11:34:00 +08:00
Jun Pataleta 68b998906e MDL-35668 phpunit: Add filebrowser test folder to phpunit.xml 2017-09-11 11:24:51 +08:00
Jun Pataleta 4dfc2d19e7 Merge branch 'wip-MDL-35668-master' of git://github.com/marinaglancy/moodle 2017-09-11 11:01:41 +08:00
Marina Glancy a2502f6581 MDL-59775 mod_feedback: use vertical forms 2017-09-11 11:00:51 +08:00
Marina Glancy 3dee4faec4 MDL-59775 forms: add option to display any form vertical 2017-09-11 11:00:48 +08:00
Marina Glancy 032674eebc MDL-59775 forms: add femptylabel class to els without labels
This class was present in clean/more but was forgotted in boost
2017-09-11 10:33:48 +08:00
Andrew Nicols 41fa6a24be MDL-59392 calendar: Stop polluting history with useless URLs 2017-09-11 10:00:50 +08:00
Andrew Nicols 6ff225f57e MDL-59392 calendar: Correct the next period (add vs sub) 2017-09-11 10:00:50 +08:00
Andrew Nicols 39e40fda71 MDL-59392 calendar: Add the calendar info to the exporter 2017-09-11 10:00:49 +08:00
Andrew Nicols fb9be27127 MDL-59392 calendar: Split day exporter to week exporter 2017-09-11 10:00:45 +08:00
Andrew Nicols 2281a835c9 MDL-59392 calendar: Move template to parent Node 2017-09-11 09:14:36 +08:00
Andrew Nicols 6397ec5452 MDL-59392 calendar: ViewManager should take a root 2017-09-11 09:13:47 +08:00
Ankit Agarwal 898ba89b22 MDL-57115 blocks: Remove block_messages from core 2017-09-10 21:41:36 +05:30
Juan Leyva 84c50d1cc4 MDL-57407 mod_glossary: Return ratings in external functions 2017-09-08 13:49:12 +02:00
Juan Leyva 26d8bceac2 MDL-57407 mod_data: Return ratings in mod_data_get_entry 2017-09-08 13:49:10 +02:00
Juan Leyva b7ce46df3f MDL-57407 mod_forum: Return ratings in external functions
External function get_forum_discussion_posts now returns ratings.
2017-09-08 13:49:09 +02:00
Juan Leyva bb7c514845 MDL-57407 core_rating: Add new external util class for handling ratings
This util class handles all the tasks related to retrieve and format
ratings for external functions.
2017-09-08 13:49:07 +02:00
David Knuplesch 3b3535c7ea MDL-55358 mod_lti: Add group variable Moodle.Person.userGroupIds 2017-09-08 11:00:52 +02:00
Ryan Wyllie 02e091b1f3 MDL-59934 calendar: remove more button from event form modal 2017-09-08 02:45:54 +00:00
Mathew May 477ab6f808 MDL-53244 login: Add error message for recaptcha 2017-09-08 13:09:29 +12:00
David Monllao 2e151c3c74 MDL-58835 analytics: Remove hidden elements from insights list 2017-09-07 14:45:34 +02:00
David Monllao 6faa982986 MDL-58835 analytics: Unit tests for prediction actions 2017-09-07 14:45:34 +02:00
David Monllao 0c0a72e7ac MDL-58835 report_insights: Not useful and ack prediction actions 2017-09-07 14:45:34 +02:00
David Monllao 025363d17c MDL-58835 analytics: Store prediction actions separately
New event for insights viewed as part of this issue.
2017-09-07 14:45:34 +02:00
David Monllao 8744db903b MDL-60039 messaging: global search index using timeread 2017-09-07 12:16:42 +02:00
David Monllao 32f9550e85 weekly release 3.4dev 2017-09-07 11:39:02 +02:00
David Monllao ce99f1fa5a MDL-59657 analytics: No predictions until training is completed 2017-09-07 10:58:39 +02:00
Dan Poltawski 2999602b85 Merge branch 'MDL-59657_master-fix' of git://github.com/dmonllao/moodle 2017-09-07 10:58:38 +02:00
David Monllao 0a68e283d0 MDL-59657 analytics: Move lang string to correct location 2017-09-07 10:58:38 +02:00
Eloy Lafuente (stronk7) 95fc1e720c Merge branch 'MDL-59983-master-enfix' of git://github.com/mudrd8mz/moodle 2017-09-07 10:58:35 +02:00
Andrew Nicols 030ede54f8 MDL-59759 enrol: Update behat tests for unenrol confirm dialogue 2017-09-07 10:53:35 +02:00
David Mudrák 911fcae895 MDL-59969 admin: Warn admins if a development libs directory exists
We can't really control the direct web access to directories in dirroot,
that is part of the server setup. So we at least warn admins as they may
not realize the risks of having directories like vendor or node_modules
exposed.

Credit goes to Petr Škoda for mentioning the PHPUnit issue CVE-2017-9841
to me.
2017-09-07 10:53:35 +02:00
Marina Glancy a39d2976fe MDL-59972 mod_feedback: escape subject when showing the contact form 2017-09-07 10:53:34 +02:00
Jake Dallimore 4266786b48 MDL-58953 user: additional test case for user_can_view_profile() 2017-09-07 10:53:34 +02:00
Jake Dallimore eb01e70b91 MDL-58953 user: fix course checking logic in user_can_view_profile()
Make sure to check that $user in enrolled in $course before checking
whether the current user has capabilities in that course, and make sure
that we don't check user context caps when handling a specific course.
2017-09-07 10:53:33 +02:00
Juan Leyva 35b9bca0ca MDL-58762 core: Get full course objects on navigation
The course object passed as parameter to extend_navigation_user
callback contained only a few parameters, some parameters like
showgrades or showreports were missing.
The callback should receive a full course object.
2017-09-07 10:53:33 +02:00
Juan Leyva 85b531e8be MDL-58762 report: Check group permissions in course user reports
Teachers were able to see any student report even with forced separated
groups and capability moodle/course:accessallgroups off.
2017-09-07 10:53:32 +02:00
Eloy Lafuente (stronk7) 423eca98d3 Merge branch 'MDL-59753-master' of git://github.com/lameze/moodle 2017-09-07 10:53:32 +02:00
Simey Lameze afa8c3daf1 MDL-59753 core_calendar: apply course filter without reload 2017-09-07 10:53:29 +02:00
Simey Lameze ce679f6c98 MDL-59753 core_calendar: change course selector to normal select 2017-09-07 10:52:21 +02:00
David Monllao 0e0e92c5e0 Merge branch 'MDL-59759-master-2' of git://github.com/junpataleta/moodle 2017-09-07 10:52:20 +02:00
Jun Pataleta 305f38d310 Merge branch 'm34_MDL-59635_Properly_Escape_Column_Names_Reserved_Words_Proof' of https://github.com/scara/moodle 2017-09-07 10:52:19 +02:00
Eloy Lafuente (stronk7) dd04df4164 MDL-59672 coding style: whitespace fixes 2017-09-07 10:52:18 +02:00
Eloy Lafuente (stronk7) 9d07b88ab4 Merge branch 'MDL-59672-master' of git://github.com/lameze/moodle 2017-09-07 10:52:06 +02:00
Eloy Lafuente (stronk7) 59e56e7f71 Merge branch 'MDL-59696-master' of git://github.com/junpataleta/moodle 2017-09-07 10:50:18 +02:00
Eloy Lafuente (stronk7) d74bb0971e Merge branch 'MDL-59198-master' of git://github.com/ankitagarwal/moodle 2017-09-07 10:50:18 +02:00
Dan Poltawski 83575729b6 Merge branch 'MDL-59279_master' of git://github.com/dmonllao/moodle 2017-09-07 10:50:17 +02:00
David Monllao 4cc3f4f086 Merge branch 'MDL-59974-master' of git://github.com/lameze/moodle 2017-09-07 10:50:17 +02:00
David Monllao 44e1928532 Merge branch 'wip-MDL-59768-master' of git://github.com/marinaglancy/moodle 2017-09-07 10:50:16 +02:00
Dan Poltawski 72086f77f1 Merge branch 'wip-MDL-59770-master' of git://github.com/marinaglancy/moodle 2017-09-07 10:50:15 +02:00
Dan Poltawski edb911984a Merge branch 'MDL-59786_master' of git://github.com/dmonllao/moodle 2017-09-07 10:50:15 +02:00
David Monllao e8466eee81 Merge branch 'master-MDL-59799' of https://github.com/jojoob/moodle 2017-09-07 10:50:14 +02:00
Dan Poltawski f48b861302 Merge branch 'MDL-59840_master' of git://github.com/dmonllao/moodle 2017-09-07 10:50:13 +02:00
Dan Poltawski c1346b1476 Merge branch 'wip-MDL-59992-master' of git://github.com/marinaglancy/moodle 2017-09-07 10:50:13 +02:00
David Monllao c4f7a1c001 Merge branch 'wip-MDL-59815-master' of git://github.com/abgreeve/moodle 2017-09-07 10:50:11 +02:00
David Monllao d8e789c837 Merge branch 'MDL-59846-master' of git://github.com/lameze/moodle 2017-09-07 10:49:36 +02:00
Dan Poltawski 0426cc9533 Merge branch 'MDL_59834-Indexing_of_personal_messages' of https://github.com/mattporritt/moodle 2017-09-07 10:49:35 +02:00
David Monllao f827adbd91 Merge branch 'MDL-59864-master' of git://github.com/lameze/moodle 2017-09-07 10:49:34 +02:00
David Monllao c0bcec46f7 Merge branch 'wip-MDL-59898-master-test' of git://github.com/abgreeve/moodle 2017-09-07 10:49:34 +02:00
Dan Poltawski 2d64ffeb6b Merge branch 'MDL-59657_master' of git://github.com/dmonllao/moodle 2017-09-07 10:49:30 +02:00
David Monllao 076d95ccc4 Merge branch 'MDL-59963-report-logs-origin-pagination' of https://github.com/lucaboesch/moodle 2017-09-07 10:46:57 +02:00
David Monllao 5700cf959e Merge branch 'MDL-59961_file_validation' of https://github.com/mrmark/moodle 2017-09-07 10:46:57 +02:00
Dan Poltawski 3c4675a002 Merge branch 'MDL-59153_master' of git://github.com/dmonllao/moodle 2017-09-07 10:46:56 +02:00
Kathrin Osswald 88d7f109a0 MDL-60048 theme_boost: Center logo within the navbar
My solution is to remove the padding that's added within scss/bootstrap/_navbar.scss (line 72)
for the case that a logo (has-logo) is uploaded and displayed within the navbar.
Removing this padding will center the image within the navbar.
2017-09-07 08:36:11 +02:00
Ryan Wyllie ea5f7707e7 MDL-59919 calendar: add file support to event form 2017-09-07 01:38:43 +00:00
Damyon Wiese b7df2485e6 MDL-59867 autocomplete: Prevent duplicate ids.
Rendering a form with 2 autocompletes in it can get messed up because of duplicated ids.
2017-09-07 09:31:57 +08:00
Marina Glancy 9971fac803 MDL-59808 webservice_rest: comply with restformat argument 2017-09-07 08:34:10 +08:00
Juan Leyva bde5631d66 MDL-59244 mod_workshop: New WS mod_workshop_delete_submission 2017-09-06 15:51:55 +02:00
Juan Leyva e1fcba9973 MDL-59244 mod_workshop: Move event triggering to API
Event triggering when a submission is deleted is now inside the
delete_submission function.
2017-09-06 15:51:54 +02:00
Juan Leyva c1698a37e3 MDL-59245 mod_workshop: New WS mod_workshop_update_submission 2017-09-06 15:50:16 +02:00
Juan Leyva c2cf2450ac MDL-59243 mod_workshop: New WS mod_workshop_add_submission 2017-09-06 14:00:17 +02:00
Juan Leyva 4c776cae2d MDL-59243 mod_workshop: Move submission creation to API 2017-09-06 13:57:11 +02:00
Juan Leyva b1ed7279e0 MDL-60025 mod_book: Return correct values for chapters update time
Instead returning the time when the chapter was created or modified we
were returning the time when the book was created or modified.
2017-09-06 12:37:21 +02:00
Juan Leyva 20da60a3b7 MDL-60018 mod_chat: Fix chatmethod field type in get_chats_by_courses WS 2017-09-06 12:15:56 +02:00
David Knuplesch 3729ff0ff4 MDL-55358 mod_lti: Add LIS Group Variable 2017-09-06 11:27:17 +02:00
Dan Poltawski d9dff92fef MDL-59761 eslint: Auto-fix some minor lint warnings 2017-09-06 08:53:50 +01:00
Dan Poltawski 6f601313f0 MDL-59761 eslint: support glob-based configuration
Since ESlint 4.1.0 [1], it's possible to support glob-based
configuration, this means we can move glob configuration out of grunt
and into the config file, which means tools will respect the glob rules
now too. :)

[1] http://eslint.org/blog/2017/06/eslint-v4.1.0-released
2017-09-06 08:53:50 +01:00
Dan Poltawski 9702503f6b MDL-59761 eslint: Upgrade to v4.4.1
Including adding some new default rules.
2017-09-06 08:53:50 +01:00
Marina Glancy 7814ae503b MDL-60033 webservice_xmlrpc: extra escaping in the server URL 2017-09-06 13:43:34 +08:00
Ryan Wyllie 7d659f2167 MDL-59399 atto: make media plugin shortform explandable 2017-09-06 05:24:21 +00:00
Andrew Nicols 5ded18d5a8 MDL-60031 admin: Move risk longtext to pix title 2017-09-06 10:23:48 +08:00
David Mudrák 6806a3734a MDL-59983 lang: Fix Forum behat scenarios to use the new strings 2017-09-05 11:01:10 +02:00
Helen Foster 7698619bc6 MDL-59983 lang: Merge English strings from the en_fix language pack
Significant string changes:

* mobileappenabled, setuplink and setuplink_desc in tool_mobile -
  improved wording
* getmoodleonyourmobile and custommenuitems_desc in tool_mobile -
  improved wording
2017-09-05 11:01:09 +02:00
Ankit Agarwal d4062a0cff MDL-35849 login: Add role alert to error messages
Error messages should be prominent to screen readers as well as visual users,
adding the role alert is recommended way to achieve it for screen readers and this is
also what we do for ->notification apis
2017-09-05 12:43:37 +05:30
sam marshall e36eefaeea MDL-59926 core_search: Allow Behat testing of results screens 2017-09-04 17:42:53 +01:00
Matteo Scaramuccia ea34d02d55 MDL-59635 tool_replace: Escape the column name. 2017-09-04 11:46:55 +02:00
Matteo Scaramuccia 596f4e6a23 MDL-59635 ddl: Added test_get_enc_quoted(). 2017-09-04 11:46:54 +02:00
Jun Pataleta 7800e6881c MDL-59759 core_user: Use SAVE_CANCEL modal for unenrol dialog 2017-09-04 10:44:51 +08:00
Jun Pataleta 23356f410f MDL-59759 core_message: Use SAVE_CANCEL modal for delete dialog 2017-09-04 10:44:51 +08:00
Jun Pataleta fb7fa04e3b MDL-59759 core_calendar: Use SAVE_CANCEL modal for delete dialog
* Plus reorganise the code to make it a little tidier.
2017-09-04 10:44:51 +08:00
Jun Pataleta 237efd4f0d MDL-59759 core_amd: Deprecate core/modal_confirm 2017-09-04 10:44:46 +08:00
Jun Pataleta 357dc2cbeb MDL-59696 theme_bootstrapbase: Set max-width for custom-select elements
* Set custom-select elements with a maximum width of 100% of their
container.
2017-09-04 10:10:46 +08:00
Jun Pataleta 1e9a102b58 MDL-59696 templates: Remove form-group div for url-select template
* Removed the div with the class 'form-group' that's enclosing the
select element and friends. It's not needed since the urlselect template
is an inline form.
* Also, for completeness, I added the helpicon data for the template's
context.
2017-09-04 10:10:46 +08:00
Tobias Garske 06ced40c2f MDL-59898 access: Added Icon references. 2017-09-04 09:55:07 +08:00
Simey Lameze da1f058254 MDL-59974 core_calendar: remove JS code no longer used 2017-09-04 09:49:12 +08:00
Simey Lameze 4d7f28d4fc MDL-59974 core_calendar: hide elements based on event type 2017-09-04 09:48:41 +08:00
Adrian Greeve e5e47a4bdf MDL-55849 mod_assign: Behat update for group submission reopening. 2017-09-04 09:23:32 +08:00
Adrian Greeve 75c21e7e77 MDL-55849 mod_assign: Reopening assignments only increases by one.
Group assignments when being reopened will only increase the
attempt total by one.
2017-09-04 09:23:32 +08:00
Simey Lameze 29158c8b6f MDL-59672 core_calendar: set course event type on course context 2017-09-04 09:12:05 +08:00
Simey Lameze 0b8e721667 MDL-59846 core_calendar: add styling to action link 2017-09-04 08:38:51 +08:00
Simey Lameze 7b7924922e MDL-59864 core_calendar: add behat test for module events edit 2017-09-04 08:37:30 +08:00
Simey Lameze 4757780aea MDL-59864 core_calendar: add link to activity on module events 2017-09-04 08:37:30 +08:00
Matt Porritt bc60052d83 MDL-59834 Global Search: Indexing user messages
Make indexing of user messages tolerant to user deletion.
When creating the search document for user messages,
add a check to see if the user has been deleted in the
system. If they have been deleted abort creating the search
document.
This is to avoid rasining an error when trying to get the
user context for a deleted user.
2017-09-04 09:09:48 +10:00
Matt Porritt 4e921569d0 MDL-59459 Golbal Search: Increase file indexing coverage
Increase the scope of the files that are detected and
indexed by Moodle's Global Search. This includes intro
and content areas of search areas. The use case here is
in a description for an activity there is a file added
that contains more information about the activity.
It would an advantage to be able to search this content
as well. It would also allow search engine plugins to be
able to index non text files such as images.
2017-09-02 10:28:17 +10:00
Johannes Burk 1dcd1a071c MDL-59799 course: Include course/lib.php before using move_courses(). 2017-09-01 16:46:26 +02:00
Luca Bösch 30375ee99f MDL-53936 reports: State default index page explicitly in pagination url 2017-09-01 11:42:10 +02:00
Luca Bösch d99bec321b MDL-59963 reports: origin parameter looked at in log reports 2017-09-01 11:41:29 +02:00
David Monllao 1d5b1d0111 MDL-59153 report_insights: UI improvements
- Accessible info tables
- Outcome icons
- Navigation bar for missing contexts
- Heading contents standarisation
2017-09-01 11:20:26 +02:00
David Monllao 3e0f33aa4b MDL-59153 analytics: No access to disabled models predictions 2017-09-01 11:17:17 +02:00
David Monllao 1a5204a427 MDL-59786 analytics: Discard invalid samples 2017-09-01 11:13:07 +02:00
David Monllao 37dec84dc0 MDL-59840 analytics: Enable single range instead of no splitting 2017-09-01 11:12:05 +02:00
Jun Pataleta b3cfb01316 weekly release 3.4dev 2017-09-01 13:26:56 +08:00
Jun Pataleta 033b0c9bb6 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-09-01 13:26:55 +08:00
Andrew Nicols c7c5d12353 MDL-59801 tool_lp: Behat fix for autocomplete
An earlier Behat fix made the use of autocomplete stricter on checking
an exact match instead of a substring, which in turn broke this use
which was searching for a partial match.
2017-09-01 08:24:51 +08:00
Mark Nielsen 879827d6fa MDL-60001 core_files: Use local file for gzopen
The gzopen method does not appear to support
file streams.
2017-08-31 15:47:00 -07:00
Andrew Nicols 256518a635 Merge branch 'MDL-56646-master-fix' of https://github.com/xow/moodle 2017-08-31 15:00:08 +08:00
John Okely 8812040612 MDL-56646 mod_assign: Improve grade fix strings 2017-08-31 14:39:54 +08:00
John Okely 5ded13e65a MDL-56646 mod_assign: Make rescale behat more specific 2017-08-31 14:39:54 +08:00
Marina Glancy 96e1633f57 MDL-59768 tasks: schedule task only if it is not scheduled 2017-08-31 14:31:17 +08:00
Andrew Nicols f33afd1df5 Merge branch 'MDL-59801-master-fix1' of http://github.com/damyon/moodle 2017-08-31 14:12:31 +08:00
Marina Glancy ed483bda8d MDL-35668 filebrowser: system context is similar to coursecat 2017-08-31 13:56:59 +08:00
Damyon Wiese d29be32000 MDL-59801 users: Behat fixes
Firstly - the list of roles to filter needs to be a combination of the assignable roles and the existing roles in the course.
Secondly - the auto-complete behat step needs to search for entire strings, not substrings.
2017-08-31 12:32:03 +08:00
Marina Glancy e25ccd58c1 MDL-59992 webservice: fix debugging message event context already set 2017-08-31 12:13:15 +08:00
Andrew Nicols 4bd649d31a Merge branch 'MDL-59828-master-fix1' of http://github.com/damyon/moodle 2017-08-31 10:25:49 +08:00
Damyon Wiese 5c1d5a6d7c MDL-59828 inplaceeditable: CSS class fix
The form-autocomplete-original-select was applied to the wrong element.

inplaceeditable selects => inplaceeditable autocompletes
2017-08-31 10:16:53 +08:00
Andrew Nicols 881bf1da5c Merge branch 'MDL-59832_master-fix' of git://github.com/markn86/moodle 2017-08-30 15:44:24 +08:00
Mark Nelson 431723eccc MDL-59832 core_course: removed faulty logic in unit test 2017-08-30 12:55:57 +08:00
Marina Glancy 84d815611c MDL-35668 filebrowser: perf improvements for courses
When searching for non-empty children first retrieve list of all non-empty
fileareas in modules and then check access for each of them. This will be
much faster than checking access for each module and then look for files
and areas inside this module.

Do the same with course file areas
2017-08-30 12:43:26 +08:00
Marina Glancy 10122f009e MDL-35668 filebrowser: small improvements to modules
- Store cm_info in file_info_context_module instead of object
- Use correct API calls to component_callback_exists
- Use human readable name of module type
2017-08-30 12:43:26 +08:00
Marina Glancy ade66228fa MDL-35668 filebrowser: cache enrolled courses 2017-08-30 12:43:26 +08:00
Marina Glancy 2d939622b8 MDL-35668 filebrowser: perf improvements to coursecat
- Preload contexts of subcategories and courses when retrieving their lists
- When there are enrolled courses in hidden subcategories retrieve them together with direct children courses
- Do not call browser->get_file_info - it retrieves the coursecat/course again, instead initialise the instance
of file_info_context_coursecat or file_info_context_course
2017-08-30 12:43:22 +08:00
Andrew Nicols 8c2465eaf0 Merge branch 'MDL-59394-master-2' of git://github.com/ryanwyllie/moodle 2017-08-30 11:35:40 +08:00
Peter Spicer 9c064d0380 MDL-59815 access: Fix definition of risks for user:delete. 2017-08-30 11:31:18 +08:00
Andrew Nicols 4520fdffd5 Merge branch 'MDL-59713-master-2' of git://github.com/ryanwyllie/moodle 2017-08-30 11:30:59 +08:00
Ryan Wyllie a06b3a27b7 MDL-59713 calendar: fix nav link ajax reload 2017-08-30 03:25:39 +00:00
Ryan Wyllie aefb2950d3 MDL-59394 calendar: add drag and drop between months 2017-08-30 02:42:06 +00:00
Jun Pataleta 9e22016778 Merge branch 'MDL-59884-master' of git://github.com/lameze/moodle 2017-08-30 10:10:30 +08:00
Simey Lameze b31a169560 MDL-59884 core_calendar: display spinner when reloading month content 2017-08-30 09:48:56 +08:00
Simey Lameze 63cb267c1b MDL-59884 themes: add styles for overlay loading 2017-08-30 09:47:18 +08:00
Simey Lameze 8dc85f9c04 MDL-59884 core: add new overlay_loading template 2017-08-30 09:44:22 +08:00
Andrew Nicols a85c077a64 Merge branch 'MDL-59713' of https://github.com/stronk7/moodle 2017-08-30 08:20:09 +08:00
Eloy Lafuente (stronk7) 7d08eccf43 Merge branch 'MDL-59832_master-v2' of git://github.com/markn86/moodle 2017-08-30 01:21:22 +02:00
Eloy Lafuente (stronk7) 9533cf3419 Merge branch 'MDL-59779_master' of git://github.com/dmonllao/moodle 2017-08-30 01:09:20 +02:00
Eloy Lafuente (stronk7) 08986e0c42 Merge branch 'MDL-59685-master' of git://github.com/damyon/moodle 2017-08-30 00:36:07 +02:00
Connor Sheremeta d50c3db5c7 MDL-54540 lti: Add allowfullscreen attribute to LTI IFrames 2017-08-29 13:31:18 -06:00
Eloy Lafuente (stronk7) a4cdbff86c MDL-59713 forms: prevent php warning when 'optional' option is missing 2017-08-29 20:12:41 +02:00
David Monllao 10658a1cb4 MDL-59279 analytics: Include more info about the dataset 2017-08-29 16:26:41 +02:00
Dan Poltawski e517eb100c Merge branch 'MDL-59951-master' of git://github.com/damyon/moodle 2017-08-29 14:32:43 +01:00
Dan Poltawski 08220d64f6 Merge branch 'MDL-59195_assign_comment_permissions' of git://github.com/davosmith/moodle 2017-08-29 11:54:07 +01:00
Dan Poltawski 253ea6621a Merge branch 'MDL-59615-master' of git://github.com/damyon/moodle 2017-08-29 10:58:42 +01:00
Jun Pataleta 7f56c2679d Merge branch 'MDL-59908-master' of git://github.com/ankitagarwal/moodle 2017-08-29 17:41:39 +08:00
Dan Poltawski 4e597bf219 Merge branch 'MDL-59688-master' of git://github.com/damyon/moodle 2017-08-29 10:24:50 +01:00
Jun Pataleta faf83f3d41 Merge branch 'MDL-59830_master-v2' of git://github.com/markn86/moodle 2017-08-29 17:23:44 +08:00
Mark Nelson 1329ffd7b7 MDL-59830 core_user: do not show roles that can not be deleted 2017-08-29 17:12:26 +08:00
Mark Nelson 5700ad902a MDL-59801 core_user: add missing class variable declaration
Also minor fix to PHPDocs.
2017-08-29 16:28:56 +08:00
Andrew Nicols 350ef63246 Merge branch 'MDL-56646-master' of https://github.com/xow/moodle 2017-08-29 15:51:01 +08:00
Jun Pataleta b26ce53776 Merge branch 'MDL-59823-master' of git://github.com/damyon/moodle 2017-08-29 15:49:24 +08:00
Andrew Nicols 08bcea48d4 Merge branch 'MDL-59713-master-2' of git://github.com/ryanwyllie/moodle 2017-08-29 15:28:45 +08:00
Andrew Nicols 506708f196 Merge branch 'MDL-59820-master' of git://github.com/lameze/moodle 2017-08-29 15:26:46 +08:00
Jun Pataleta b83a329ad6 Merge branch 'MDL-59822-master' of git://github.com/damyon/moodle 2017-08-29 15:25:33 +08:00
John Okely 465b75ed1f MDL-56646 assign: Fix negative grades in restore 2017-08-29 07:23:01 +00:00
John Okely 7323c473cc MDL-56646 assign: Add ability to fix errant grades 2017-08-29 07:23:01 +00:00
Andrew Nicols 6d2ff19051 Merge branch 'MDL-59827-master-fix1' of http://github.com/damyon/moodle 2017-08-29 15:14:20 +08:00
Damyon Wiese b0b6ff3c18 MDL-59827 users: Typo in force_open()
force_open() not forceopen()
2017-08-29 15:06:43 +08:00
Andrew Nicols 27e827e181 Merge branch 'MDL-59821-master' of git://github.com/damyon/moodle 2017-08-29 14:54:33 +08:00
Jun Pataleta 33b46e54bb Merge branch 'MDL-59885-master' of git://github.com/cameron1729/moodle 2017-08-29 14:48:04 +08:00
Andrew Nicols 3bb2900cf7 Merge branch 'MDL-59030_master' of git://github.com/dmonllao/moodle 2017-08-29 14:34:59 +08:00
David Monllao f07d93de9d MDL-59030 analytics: Social breadth accepting more than level 2
Even if core indicators are limited to level 2 we should not block
other activities from implementing up to level 5.
2017-08-29 08:28:46 +02:00
Ankit Agarwal e4f7cfe19f MDL-59198 lti: Make params LTI2 compatible
LTI2 recommends to include both upper case and lower case of custom params.
This patch makes our implementation confer to that standard.
2017-08-29 11:42:09 +05:30
Jun Pataleta 4f9dfd0f8d Merge branch 'MDL-59628-master' of git://github.com/damyon/moodle 2017-08-29 13:49:55 +08:00
Andrew Nicols 3eb0d7db6d Merge branch 'MDL-59827-master' of git://github.com/damyon/moodle 2017-08-29 13:21:22 +08:00
Andrew Nicols d3e6c398f4 Merge branch 'MDL-35290-master' of https://github.com/snake/moodle 2017-08-29 13:14:22 +08:00
David Monllao e8c2abcea6 MDL-59030 testing: Tests for core_course analytics indicators 2017-08-29 06:24:06 +02:00
David Monllao c4aa41b1ba MDL-59030 analytics: New analytics indicators
- Completion enabled
- Potential cognitive depth
- Potential social breadth
2017-08-29 06:24:04 +02:00
David Monllao edee629d1a MDL-59030 analytics: Expand community of inquiry mods public API 2017-08-29 06:19:37 +02:00
Damyon Wiese 26c4d2bf79 MDL-59628 forms: Get a valid zindex for datepicker
We have a way to determine a valid zindex when adding things to a page. Find all the moodle-has-zindex things and
choose a value bigger all of them. This needs doing in javascript whenever a thing is opened. It's not possible to
fix generically in CSS (remember the historic z-index wars).
2017-08-29 12:09:59 +08:00
Damyon Wiese 0639741307 MDL-59628 datepicker: Revert invalid zindex change
Revert "MDL-59382 theme: bring the date picker forward"

This reverts commit 63dd75229b.
2017-08-29 12:09:03 +08:00
Andrew Nicols 4bdf6157d4 Merge branch 'MDL-59824-master' of git://github.com/damyon/moodle 2017-08-29 12:00:45 +08:00
Andrew Nicols 85419c5b2e Merge branch 'MDL-59828-master' of git://github.com/damyon/moodle 2017-08-29 11:56:28 +08:00
Jun Pataleta c5830051e5 Merge branch 'MDL-59855-master' of git://github.com/junpataleta/moodle 2017-08-29 11:43:36 +08:00
Jun Pataleta 7927138d50 MDL-59855 oauth2: More PHPDocs fixes
* Fix PHPDoc return type for api::get_system_account()
* Fix PHPDoc for the $contenttype parameter in \core\oauth2\rest::call()
2017-08-29 11:18:23 +08:00
Jake Dallimore 7a170fad85 MDL-35290 files: File manager reports files which can't be read 2017-08-29 11:15:30 +08:00
Jun Pataleta 909ae42d7d Merge branch 'MDL-59869-master' of git://github.com/Dagefoerde/moodle 2017-08-29 10:40:30 +08:00
Marina Glancy c524a6dce0 MDL-35668 filebrowser: unittests 2017-08-29 09:57:59 +08:00
Eloy Lafuente (stronk7) c121d406e4 Merge branch 'MDL-59801-master' of git://github.com/damyon/moodle 2017-08-29 02:37:24 +02:00
Eloy Lafuente (stronk7) f0e6ff9a8e Merge branch 'MDL-59669-master-3' of git://github.com/ryanwyllie/moodle 2017-08-29 02:15:18 +02:00
Eloy Lafuente (stronk7) b76caa44d5 Merge branch 'MDL-59887-master' of git://github.com/lameze/moodle 2017-08-29 01:33:49 +02:00
Eloy Lafuente (stronk7) 25f24df793 Merge branch 'MDL-59265_master' of git://github.com/dmonllao/moodle 2017-08-29 01:16:42 +02:00
Eloy Lafuente (stronk7) 685e99cabe Merge branch 'MDL-59910-master' of git://github.com/lameze/moodle 2017-08-29 01:06:46 +02:00
Eloy Lafuente (stronk7) 1fb5f3cf4a Merge branch 'MDL-59870-participants-th-top-vertical-aligned' of http://github.com/lucaboesch/moodle 2017-08-29 00:52:37 +02:00
Eloy Lafuente (stronk7) cace54811d Merge branch 'MDL-59670-master' of git://github.com/andrewnicols/moodle 2017-08-29 00:41:57 +02:00
David Monllao f19719c198 MDL-59657 analytics: Option to restrict heavy processes to CLI
Default to only CLI.
2017-08-28 21:18:52 +02:00
Mark Nielsen b757c648f3 MDL-59960 core_files: prevent mimetype update on every file update
Every time a file is updated, the mimetype is re-processed.
But, some mimetypes can only be detected if the file is present
on local disk.  With external file systems, this could cause
the file to be downloaded unnecessarily.  Instead, only update
the mimetype when the file content or the file name has changed.
2017-08-28 11:36:15 -07:00
Mark Nielsen ee8bce2d3b MDL-59960 core_files: improve mimetype detection
Improve mimetype detection for remote files that
have no file extension.  The mimetype detection
that makes use of the file, only works with local
files, so do not use the remote path which can be
a URL or stream.
2017-08-28 11:36:15 -07:00
Mark Nielsen 9eb1a2c31a MDL-59961 core_files: make content hash validation reusable
Other file systems could make use of this code as they
all need to validate the content has and be able to read
the file from disk.
2017-08-28 11:15:12 -07:00
AMOS bot ca0639b33b Automatically generated installer lang files 2017-08-29 00:07:40 +08:00
John Okely 2d1075e321 MDL-56646 assign: use ASSIGN_GRADE_NOT_SET constant 2017-08-28 06:58:44 +00:00
John Okely e04be435e0 MDL-56646 assign: Don't rescale any negative grades 2017-08-28 06:58:43 +00:00
John Okely 64b52095e5 MDL-56646 assign: Behat test rescaling after viewing student 2017-08-28 06:58:43 +00:00
Damyon Wiese b78968ab79 MDL-59951 analytics: Don't link to deleted page. 2017-08-28 13:57:54 +08:00
Mark Nelson d4576789e4 MDL-59832 core: allow users with 'enrolreview' to see participants page 2017-08-28 12:47:57 +08:00
Jun Pataleta 9317ceefcf Merge branch 'MDL-59833_master' of git://github.com/markn86/moodle 2017-08-28 11:54:44 +08:00
Jun Pataleta 3fc3e41bfa Merge branch 'MDL-59904_master' of git://github.com/markn86/moodle 2017-08-28 11:30:59 +08:00
Mark Nelson 7948dae160 MDL-59904 core: add missing FKs to analytics tables 2017-08-28 11:13:38 +08:00
Andrew Nicols 5d09e9d890 Merge branch 'MDL-59907' of git://github.com/stronk7/moodle 2017-08-28 08:25:20 +08:00
AMOS bot a0d081fd2e Automatically generated installer lang files 2017-08-28 00:09:01 +08:00
Jan Dageförde 8aa17e1347 MDL-59869 oauth2: Fix notification method 2017-08-26 15:42:12 +02:00
Jan Dageförde efbe24f5a8 MDL-59869 oauth2: Send expiry notification on exceptions, too 2017-08-26 15:42:12 +02:00
Jan Dageförde bd0b987338 MDL-59855 oauth2: Fix PHPDoc type hints 2017-08-26 15:42:04 +02:00
AMOS bot 37d2f116c5 Automatically generated installer lang files 2017-08-26 00:06:48 +08:00
Jun Pataleta 2e4c8b3862 MDL-59478 mod_scorm: Fix setting of default completion rule 2017-08-25 20:04:26 +08:00
David Monllao 381c670894 MDL-59265 mlbackend: Splitting up predictor interface in 2 2017-08-25 13:50:34 +02:00
David Monllao 5c5cb3ee15 MDL-59265 analytics: Rename machine learning backend method
- Method names renamed to avoid interface changes once
  we support regression and unsupervised learning
- Adding regressor interface even if not implemente
- predictor interface comments expanded
- Differentiate model's required accuracy from predictions quality
- Add missing get_callback_boundary call
- Updated datasets' metadata to allow 3rd parties to code
  regressors themselves
- Add missing option to exception message
- Include target data into the dataset regardless of being a prediction
  dataset or a training dataset
- Explicit in_array and array_search non-strict calls
- Overwrite discrete should_be_displayed implementation with the binary one
- Overwrite no_teacher get_display_value as it would otherwise look
  wrong
- Other minor fixes
2017-08-25 13:17:22 +02:00
David Monllao b8fe16cd7c MDL-59265 analytics: Remove dirroot from the model unique id
This was a bug, this would prevent sites with multiple frontend nodes
from using the same model id.
2017-08-25 13:17:21 +02:00
David Monllao 0f5fa169b1 MDL-59265 analytics: Switch prediction field to float
For future regression support
2017-08-25 13:17:18 +02:00
David Monllao 3592b64ac1 MDL-59265 report_insights: Fix PHP notice when no predictions 2017-08-25 13:16:20 +02:00
Damyon Wiese 5fa2d5021e MDL-59821 users: Add proceed to course content
The participants page should show a button to proceed to the course page after creating a new course.

This is a re-implementation of MDL-46238.
2017-08-25 15:21:47 +08:00
Damyon Wiese b34fd2cca9 MDL-59827 users: Expand users node in settings nav
When we are on the participants page...
2017-08-25 15:16:17 +08:00
Damyon Wiese d8e57f02a7 MDL-59828 autocomplete: Sizing issues on themes
We want to avoid page jumps wherever possible. This change uses the original select element as a "proxy" to reserve the space
in the DOM for the enhanced auto-complete when the JS runs.

It uses visibility: hidden to make the select not rendered - but still take up space.

The exact sizing for the CSS was determined by testing and reverse engineering the bootstrap calculations.

The size of user pictures in selectors was reduced to avoid flicker when switching between no selection and a selected user. I
could have reserved a larger amount of space, but it looks worse for pickers with no pictures.
2017-08-25 15:07:40 +08:00
Andrew Nicols a49c3d8aa0 MDL-59670 calendar: Select correct group when editing events 2017-08-25 11:27:20 +08:00
Ryan Wyllie f6e8cc83ae MDL-59713 calendar: clicking day in monthly view opens new event modal 2017-08-25 01:37:20 +00:00
Eloy Lafuente (stronk7) 2f8420657e Merge branch 'wip-MDL-59881-master' of git://github.com/abgreeve/moodle 2017-08-25 00:55:58 +02:00
Luca Bösch bb3216f8ea MDL-59870 users: Default align participant table header row.
Instead of putting vertical-align: middle as indication for participants table
headers, none is set which leads to theme default, i.e. bottom in Clean and Boost.
2017-08-25 00:09:30 +02:00
AMOS bot 2fbfe020ff Automatically generated installer lang files 2017-08-25 00:05:22 +08:00
AMOS bot df893ca11a Automatically generated installer lang files 2017-08-25 00:05:22 +08:00
Tim Hunt 2b2967ee56 MDL-59929 signup: inprove usability when duplicate email entered 2017-08-24 16:29:03 +01:00
Eloy Lafuente (stronk7) 9eb3c173ae weekly release 3.4dev 2017-08-24 14:14:18 +02:00
Eloy Lafuente (stronk7) ca736c577a Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-08-24 14:14:15 +02:00
Ryan Wyllie 69b160ed12 MDL-59669 calendar: add unit tests for submit_create_update_form 2017-08-24 05:40:01 +00:00
Ankit Agarwal d477c4ed6f MDL-59908 backup: Backup rule should use both http and https schemes 2017-08-24 10:53:59 +05:30
Ankit Agarwal 23876070b9 MDL-59908 backup: Add tests to make sure both http(s) schemes are parsed 2017-08-24 10:33:24 +05:30
Ryan Wyllie 7ce44d8edc MDL-59669 forms: add helper to get submission keys for unit tests 2017-08-24 04:49:26 +00:00
Ryan Wyllie 6bb8889932 MDL-59669 calendar: add validation for eventtype in event form 2017-08-24 12:20:56 +08:00
Simey Lameze b9d7df741d MDL-59887 block_myoverview: dont escape course and module names 2017-08-24 10:41:37 +08:00
Andrew Nicols d839e25e9d Merge branch 'MDL-59699-master-fix2' of https://github.com/lameze/moodle 2017-08-24 09:58:09 +08:00
Andrew Nicols ed50116863 Merge branch 'MDL-59675-master-fix1' of https://github.com/lameze/moodle 2017-08-24 09:57:28 +08:00
Simey Lameze 2d7008aeab MDL-59675 core_calendar: reload page after create event 2017-08-24 09:48:00 +08:00
Andrew Nicols 0afab19477 Merge branch 'MDL-59677-master-fix1' of https://github.com/lameze/moodle 2017-08-24 09:43:31 +08:00
Jun Pataleta 66c7f71950 Merge branch 'MDL-36985-master-fix' of github.com:xow/moodle 2017-08-24 09:30:32 +08:00
Simey Lameze 2c65e0ce61 MDL-59677 core_calendar: replace the whole node on reload 2017-08-24 09:28:04 +08:00
Eloy Lafuente (stronk7) 5e3ee3748b MDL-59907 behat: Fix features to be collation independent
Before the patch there were some problems with sorting
causing student1@ and student10@ to be sorted inconsistently
between databases.

Where that is not an important problem in real use, was
causing tests to fail consistently in sqlsrv.

So, adding student0@ to the tests in order to make them
stable collation-wise.
2017-08-24 03:08:02 +02:00
Simey Lameze 3fa98f2381 MDL-59699 core_calendar: change course short to full name 2017-08-24 08:55:41 +08:00
Andrew Nicols 586181c7d6 MDL-59860 calendar: Remove trailing whitespace 2017-08-24 08:55:23 +08:00
Andrew Nicols edddecc6f2 Merge branch 'MDL-59860-master-fix2' of https://github.com/lameze/moodle 2017-08-24 08:49:03 +08:00
Simey Lameze 81e736be5d MDL-59860 core_calendar: temp remove behat test 2017-08-24 08:42:53 +08:00
John Okely 7757d27805 MDL-36985 atto: removeorphaneddrafts should be optional 2017-08-24 08:28:55 +08:00
Mark Nelson 359e9d8370 MDL-59833 core_user: check if groups are present in 'hiddenuserfields' 2017-08-23 17:38:53 +08:00
Eloy Lafuente (stronk7) 8839739680 Merge branch 'MDL-59790-master' of git://github.com/lameze/moodle 2017-08-23 11:34:22 +02:00
Andrew Nicols fc7467e5a1 Merge branch 'MDL-57412-master' of https://github.com/xow/moodle 2017-08-23 11:15:34 +02:00
Simey Lameze 59641f4eb9 MDL-59910 core_calendar: add missing typegradingdue lang string 2017-08-23 15:42:44 +08:00
John Okely 26f12a35c4 MDL-57412 adminlib: change linkcoursesections default to 1 2017-08-23 15:05:33 +08:00
John Okely e46fde42ab MDL-57412 upgrade: Set linkcoursesections to 1 if boost in use 2017-08-23 15:05:32 +08:00
Andrew Nicols 9e413012b7 Merge branch 'MDL-59676-master' of git://github.com/lameze/moodle 2017-08-23 14:11:37 +08:00
Andrew Nicols dcc8096ae3 Merge branch 'MDL-59675-master' of git://github.com/lameze/moodle 2017-08-23 14:10:40 +08:00
Andrew Nicols a4b426293f Merge branch 'MDL-59674-master-fix2' of https://github.com/lameze/moodle 2017-08-23 12:23:38 +08:00
Simey Lameze 7e3658950d MDL-59674 core_calendar: use course full name on group events 2017-08-23 12:22:18 +08:00
Andrew Nicols d4cbf2787a Merge branch 'MDL-59699-master-fix' of https://github.com/lameze/moodle 2017-08-23 12:02:41 +08:00
Simey Lameze c87ad4e52c MDL-59699 core_calendar: use course full name instead 2017-08-23 11:08:19 +08:00
Simey Lameze 99a4e7faea MDL-59699 core_calendar: display course link under event type 2017-08-23 11:02:03 +08:00
Andrew Nicols cbf0ec51af Merge branch 'MDL-59393-int-fix-1' of github.com:ryanwyllie/moodle 2017-08-23 10:54:51 +08:00
Jun Pataleta ac150167c3 Merge branch 'MDL-59733-master-fix' of github.com:xow/moodle 2017-08-23 10:52:44 +08:00
Jun Pataleta b6f7efb368 Merge branch 'MDL-59784-master' of git://github.com/andrewnicols/moodle 2017-08-23 10:47:54 +08:00
Andrew Nicols 959c6204e6 Merge branch 'MDL-59674-master-fix' of https://github.com/lameze/moodle 2017-08-23 10:34:48 +08:00
John Okely 025bf573c9 MDL-59733 assignsubmission_file: Add title to filetypes setting modal 2017-08-23 10:25:49 +08:00
Andrew Nicols e5bdf51ce5 MDL-59784 core: Check for non-promises rather than string
If a malformed value was passed, it may be that we can still display it.
We should not assume that, if a string is not passed, that we are
dealing with a promise.
2017-08-23 10:25:15 +08:00
Simey Lameze 448f47271b MDL-59674 core_calendar: add course link to group events 2017-08-23 10:19:10 +08:00
Ryan Wyllie 96283892fe MDL-59393 calendar: fix CiBoT complaints 2017-08-23 02:09:43 +00:00
Jun Pataleta c1e75004a5 Merge branch 'MDL-59797-master' of git://github.com/lameze/moodle 2017-08-23 10:05:15 +08:00
Simey Lameze b45ca55d6b MDL-59790 core: fix tooltip for pie chart 2017-08-23 10:03:00 +08:00
Andrew Nicols 8cb6a55147 Merge branch 'MDL-53848_form_hideif' of git://github.com/davosmith/moodle 2017-08-23 09:56:00 +08:00
Andrew Nicols 6ca4e64606 Merge branch 'MDL-59393-master-2' of git://github.com/ryanwyllie/moodle 2017-08-23 09:44:01 +08:00
Andrew Nicols ac92b9d2a9 Merge branch 'MDL-51827' of git://github.com/timhunt/moodle 2017-08-23 09:37:52 +08:00
Ryan Wyllie ca518350ff MDL-59393 calendar: use event context in update_event_start_day 2017-08-23 01:32:51 +00:00
Simey Lameze b453e4c92f MDL-59797 core_course: dont escape module and section names 2017-08-23 09:19:02 +08:00
Ryan Wyllie 28e030d9f9 MDL-59393 calendar: remove use of legacy event in event_exporter 2017-08-23 01:15:08 +00:00
Ryan Wyllie 909d08588d MDL-59393 calendar: stop user editing module events 2017-08-23 00:57:22 +00:00
Ryan Wyllie 5ca142dc5b MDL-59393 calendar: add event drag and drop to monthly view 2017-08-23 00:57:22 +00:00
Ryan Wyllie c6fb931088 MDL-59393 calendar: add update_event_start_day external function 2017-08-23 00:56:27 +00:00
Ryan Wyllie 55f5fcb9c9 MDL-59393 calendar: add update_event_start_day to local api 2017-08-23 00:56:26 +00:00
Ryan Wyllie 0dc3aa1295 MDL-59393 calendar: set defaults for legacy event in mapper 2017-08-23 00:56:26 +00:00
Ryan Wyllie 1652934f09 MDL-59393 calendar: move candelete and canedit into event_exporter_base 2017-08-23 00:56:26 +00:00
Simey Lameze d8da7fc8b4 MDL-59674 core_calendar: add group name to summary template 2017-08-23 00:56:26 +00:00
Simey Lameze 950d2ce0e5 MDL-59674 core_calendar: add group name to event exporter 2017-08-23 00:56:26 +00:00
Eloy Lafuente (stronk7) a7417383fa Merge branch 'MDL-59067_master' of git://github.com/dmonllao/moodle 2017-08-23 02:55:20 +02:00
David Monllao 0690a271c3 MDL-59067 analytics: Store indicator calculations
This was supposed to be split into multiple commits to make it easier to understand
but I failed to do it properly. So this is the list of changes:

- New analytics_indicator_calc db table to store indicators calculations
- Reuse previous calculations during prediction/training; other models
  previous calculations should also be reused as long as they belong to
  the same sample (sampleid depends on sampleorigin), time range and indicator
- Allow bulk inserting of these calculations as this can hurt database performance
- Block the same analysable to be analysed for training and for prediction
- Use a new instance of the target and use it for is_valid_* functions
  as using ::is_valid_sample can lead to problems if people
  uses it to cache stuff
2017-08-22 22:28:04 +02:00
Eloy Lafuente (stronk7) 018b1f3112 Merge branch 'MDL-59663-master' of git://github.com/junpataleta/moodle 2017-08-22 21:03:32 +02:00
Tim Hunt e95fe51e72 MDL-51827 account confirm: take users to their dashboard
This is an old bit of UI inconsistency. For some reason it used to take
people to the list of all courses. Given modern Moodle usability
conventions, that does not really make sense any more.
2017-08-22 14:33:04 +01:00
Eloy Lafuente (stronk7) 9bd0912ad0 Merge branch 'MDL-59661_master-unit-test' of git://github.com/dmonllao/moodle 2017-08-22 13:23:11 +02:00
David Monllao 9955e0fe06 MDL-59661 analytics: New test for the datasets manager 2017-08-22 13:04:49 +02:00
Eloy Lafuente (stronk7) fae154ea39 Merge branch 'MDL-59859-master' of git://github.com/andrewnicols/moodle 2017-08-22 12:36:48 +02:00
Eloy Lafuente (stronk7) faa509dfb2 Merge branch 'MDL-59784-master' of git://github.com/andrewnicols/moodle 2017-08-22 12:28:32 +02:00
Andrew Nicols 1bf96e2388 MDL-59848 auth: Remove config for old plugins
Note: (stronk7@moodle.org) Amended slightly from original to update versions.
2017-08-22 12:20:19 +02:00
Andrew Nicols 4508e143d8 Merge branch 'MDL-59826-master' of https://github.com/snake/moodle 2017-08-22 15:49:11 +08:00
Andrew Nicols 170bbc84a7 Merge branch 'MDL-59825-master' of https://github.com/snake/moodle 2017-08-22 15:12:38 +08:00
Jun Pataleta b5d6f7db3b Merge branch 'MDL-57775-master-xmlrpc' of git://github.com/mudrd8mz/moodle 2017-08-22 15:00:01 +08:00
Andrew Nicols 474c7ee757 Merge branch 'MDL-36985-master' of https://github.com/snake/moodle 2017-08-22 14:37:55 +08:00
Damyon Wiese 555a43a9f5 MDL-59801 roles: Allow filter by assignable roles
If you can edit roles on the participants page you should be able to filter by any assignable role
2017-08-22 13:59:59 +08:00
Damyon Wiese 9df2fdecde MDL-59801 users: Show profile roles to students
Obey site config "profileroles" for students.
2017-08-22 13:59:59 +08:00
Damyon Wiese 80a2937dbe MDL-59688 enrol: Show removed users
When users are automatically removed from the bulk action selection (due to a non-matching enrolment method)
we should show a warning to make it obvious.
2017-08-22 13:54:00 +08:00
Andrew Nicols 8df7bfff0d Merge branch 'MDL-59893-master' of https://github.com/snake/moodle 2017-08-22 13:32:53 +08:00
Jake Dallimore 81ed702156 MDL-36985 atto: show file removal text on managefiles plugin
Shows a text warning in the manage files plugin window when an editor
has set the 'removeorphaneddrafts' option to true. The text tells the
user that unused files will be automatically deleted on save.
2017-08-22 13:19:52 +08:00
Jake Dallimore f3c2afd0e8 MDL-36985 core_files: added option to remove draft files on save
text areas can now specify $options['removeorphaneddrafts'] when saving
their data using file_postupdate_standard_editor(). If set to true,
this option clears all user drafts which are not referenced in the text
2017-08-22 13:15:30 +08:00
Jun Pataleta 0ea62b8de6 Merge branch 'MDL-59204_master-fix' of git://github.com/markn86/moodle 2017-08-22 13:08:19 +08:00
Marina Glancy 4aef64f85f MDL-59770 registration: correct mistype
AMOS BEGIN
  MOV [mobilenotificacionsenabled,core_hub],[mobilenotificationsenabled,core_hub]
AMOS END
2017-08-22 13:06:13 +08:00
Mark Nelson 2f3e176078 MDL-59204 analytics: added missing apostrophe 2017-08-22 13:04:47 +08:00
Simey Lameze c43d6d6d4f MDL-59820 core_calendar: remove unnecessary css class 2017-08-22 12:59:29 +08:00
Jake Dallimore 859e62e7fa MDL-59893 assign: don't prefix file links when downloading as folders
Change to download_rewrite_pluginfile_urls() ensuring prefix isn't
added to file links when downloading with the  downloadasfolders
user preference set to true. Links to files in onlinetext now work
when downloading as folders.
2017-08-22 12:56:45 +08:00
Jake Dallimore a15dfc6682 MDL-59893 assign: fixes for groupname prefix when downloading
assign->download_submissions():
- groupname now only added to zip file name if not empty, fixing a
double hyphen bug in the file name.
assign->download_rewrite_pluginfile_urls():
- groupname is now correctly determined using get_submission_group()
instead of using groups_get_activity_group() which fails when there
is no active activity group set. Uses the same logic that
download_submission() uses to prefix file names. Fixes a bug where an
empty groupname prefix was generated, resulting in broken links.
2017-08-22 12:56:28 +08:00
Jun Pataleta f8de8cb314 Merge branch 'MDL-59204_master_v2' of git://github.com/markn86/moodle 2017-08-22 12:46:23 +08:00
Andrew Nicols 51483e4a4e Merge branch 'MDL-57246-33-forumredirect' of git://github.com/roperto/moodle 2017-08-22 12:26:42 +08:00
Mark Nelson 2fa1f92a82 MDL-59204 analytics: help icons for target, indicators and time method 2017-08-22 12:07:00 +08:00
Andrew Nicols ea8b25c51f Merge branch 'MDL-59702' of https://github.com/andrewhancox/moodle 2017-08-22 11:01:30 +08:00
Andrew Nicols b4b61be922 Merge branch 'MDL-59860-master-fix' of https://github.com/lameze/moodle 2017-08-22 10:51:52 +08:00
Simey Lameze 1228bb6cad MDL-59860 core_calendar: fix behat failures 2017-08-22 09:40:01 +08:00
Adrian Greeve e3909e5853 MDL-59881 question bank: Use supplied function parameters.
question_usage_by_activity::start_all_questions now uses all
three of the parameters that are defined.
2017-08-22 09:30:04 +08:00
Eloy Lafuente (stronk7) 2345ae252e Merge branch 'MDL-59661_master' of git://github.com/dmonllao/moodle 2017-08-22 01:41:29 +02:00
Eloy Lafuente (stronk7) eb2e291716 Merge branch 'MDL-55937-master' of git://github.com/ankitagarwal/moodle 2017-08-21 23:17:24 +02:00
Eloy Lafuente (stronk7) 6b1e790231 Merge branch 'MDL-59049-master' of https://github.com/snake/moodle 2017-08-21 23:09:09 +02:00
AMOS bot 58b8be6c97 Automatically generated installer lang files 2017-08-22 00:05:56 +08:00
Davo Smith 910b02734c MDL-59195 mod_assign: add behat tests for comments error 2017-08-21 10:23:01 +01:00
Davo Smith ec0ecdaf6e MDL-59195 assignsubmission_comments: fix permission checks 2017-08-21 10:23:01 +01:00
Jun Pataleta 8711ab92a9 Merge branch 'MDL-59809-master-fix' of git://github.com/junpataleta/moodle 2017-08-21 17:01:24 +08:00
Alexander Bias f592063fb5 MDL-59879 navigation: Add node key to competencies navigation node 2017-08-21 10:59:49 +02:00
Jun Pataleta bf3d824a97 MDL-59809 boost: Make stylelint happy 2017-08-21 16:58:33 +08:00
Jun Pataleta 66d08a2122 Merge branch 'MDL-59809-master' of git://github.com/damyon/moodle 2017-08-21 16:30:37 +08:00
Simey Lameze 74ed81e1f5 MDL-59675 core_calendar: reload calendar region after add event 2017-08-21 16:19:46 +08:00
Simey Lameze ff5e2d9cad MDL-59676 core_calendar: reload calendar region after event edit 2017-08-21 16:13:32 +08:00
Andrew Nicols e825859078 Merge branch 'MDL-59677-master-fix' of git://github.com/lameze/moodle 2017-08-21 15:58:42 +08:00
Simey Lameze 47b55dade4 MDL-59677 core_calendar: add missing return on changeMonth promises 2017-08-21 15:52:55 +08:00
Andrew Nicols 0813f00d0f Merge branch 'MDL-59677-master' of git://github.com/lameze/moodle 2017-08-21 15:33:40 +08:00
Cameron Ball 5e6a36f845 MDL-59885 assignfeedback_editpdf: Correctly report combination status 2017-08-21 15:32:02 +08:00
Andrew Nicols b7173c18e9 Merge branch 'MDL-59687-master' of git://github.com/lameze/moodle 2017-08-21 15:20:22 +08:00
Simey Lameze 516e74440a MDL-59677 core_calendar: delete event without reload whole page 2017-08-21 15:20:14 +08:00
Andrew Nicols 3951c81589 Merge branch 'MDL-59674-master' of git://github.com/lameze/moodle 2017-08-21 15:14:15 +08:00
Andrew Nicols ba756e857b Merge branch 'MDL-59699-master' of git://github.com/lameze/moodle 2017-08-21 14:15:41 +08:00
Andrew Nicols b34b6b4fe8 Merge branch 'MDL-59860-master' of git://github.com/lameze/moodle 2017-08-21 14:11:44 +08:00
Simey Lameze 4cc382d5c7 MDL-59674 core_calendar: add group name to summary template 2017-08-21 14:07:07 +08:00
Simey Lameze a1e166e7c3 MDL-59674 core_calendar: add group name to event exporter 2017-08-21 14:07:03 +08:00
Simey Lameze 21e3d8b8a3 MDL-59699 core_calendar: add steps to assert the course link 2017-08-21 13:35:53 +08:00
Simey Lameze 00d2d344a2 MDL-59699 core_calendar: add course link to course events 2017-08-21 13:33:51 +08:00
Andrew Nicols b05f2cd794 MDL-59859 enrol_manual: Improve modal creation ordering 2017-08-21 13:00:00 +08:00
Andrew Nicols 17137d471d MDL-59859 core: Accept Promise for save button
Accept either a promise, or a string for the content of the save button
in the save / cancel modal.
2017-08-21 12:54:34 +08:00
John Okely 52fe3c4683 MDL-57412 course: Unit test get_view_url for course formats 2017-08-21 12:49:59 +08:00
John Okely 1832b68142 MDL-57412 navigationlib: Respect linkcoursesections again 2017-08-21 12:49:58 +08:00
Jun Pataleta 3a3530a863 Merge branch 'MDL-59733-master' of https://github.com/xow/moodle 2017-08-21 10:40:27 +08:00
Jun Pataleta 3a0e3c34b0 MDL-59663 course: Render the appropriate course-category tree action 2017-08-21 10:01:37 +08:00
Andrew Nicols 3e0df465db MDL-59784 core: Refactor addblock to listen earlier 2017-08-18 22:51:48 +08:00
Andrew Nicols 728357707d MDL-59784 core: Modal factory should listen before fetching templates 2017-08-18 22:51:48 +08:00
Andrew Nicols e2b503043e MDL-59784 core: Modal should accept title as a promise 2017-08-18 22:51:47 +08:00
Eloy Lafuente (stronk7) 0f74ed2981 Merge branch 'MDL-59836-master' of git://github.com/junpataleta/moodle 2017-08-18 12:36:17 +02:00
Mark Nelson 7851842f4b MDL-59204 core: add getters to lang_string for identifier and component 2017-08-18 18:02:39 +08:00
Mark Nelson b94814fa91 MDL-59204 analytics: added corresponding name '_help' strings
Strings are intentionally left blank as they will be done later by
AMOS.
2017-08-18 18:02:38 +08:00
Mark Nelson 7e00aa725a MDL-59204 analytics: changed get_name so that it returns a lang_string
This was done for indicators, targets and time splitting methods so that we
can get the string identifier and component in order to display a help_icon.

The functions were also made abstract, removing the default implementation.
Indicators, targets and time splitting methods should define this function.
2017-08-18 18:02:38 +08:00
Simey Lameze 6a87019b13 MDL-59860 core_calendar: behat scenario for module events 2017-08-18 12:29:49 +08:00
Simey Lameze 4c3cd3c1b4 MDL-59860 core_calendar: add editurl parameter back 2017-08-18 12:05:30 +08:00
Jun Pataleta 68a0485c5c MDL-59836 core_amd: Use only one input event handler
* We have duplicate input event handlers for the autocomplete element
which are both firing when the input element's value is being set.
In case an AJAX handler is defined for the autocomplete suggestions,
this causes the autocomplete suggestions so show "No suggestions" first
and then load the results from the AJAX handler a little bit later.
2017-08-18 11:19:08 +08:00
Simey Lameze ed84d85fdb MDL-59687 core_calendar: calendar feature improvement 2017-08-18 11:13:27 +08:00
Simey Lameze a56a9b3937 MDL-59687 core_calendar: create event step needs to wait page ready 2017-08-18 11:12:41 +08:00
Jake Dallimore 788ea5c85c MDL-59826 output: make context_header() aware of page context.
There are times, such as when viewing a user profile within a course,
when user_can_view_profile() should be passed a course to force it to
restrict its capability checks to only the supplied course. This change
makes sure that core_renderer->context_header() calls this correctly.
2017-08-18 11:07:19 +08:00
Jake Dallimore c09541fd28 MDL-59049 badges: allows users to view badges from deleted courses 2017-08-18 09:08:50 +08:00
Jake Dallimore 067accce47 MDL-59825 user: user_can_view_profile() checks all of a $user's courses
This function used to check only those courses shared by both users
when it should have been checking all courses in which $user is
enrolled. Managers can view a user's course profile without necessarily
sharing the course (being enrolled in) with the $user.
2017-08-18 08:29:37 +08:00
David Monllao 1855cdeb75 MDL-59779 analytics: Alternative to query log table 2017-08-17 20:55:50 +02:00
David Monllao cab7abec70 MDL-59779 analytics: Bulk-insert predictions 2017-08-17 20:55:38 +02:00
David Monllao d126f83806 MDL-59661 analytics: Export models training data 2017-08-17 20:51:56 +02:00
David Monllao 56d4981e03 MDL-59661 analytics: Filearea passed as an argument to dataset_manager 2017-08-17 20:51:56 +02:00
Davo Smith 527459a4c7 MDL-53848 mod_assign, formslib: add hideIf to real form and adapt behat tests to use this 2017-08-17 14:52:11 +01:00
Davo Smith 8dff6c78bd MDL-53848 formslib: peer review fixes 2017-08-17 14:52:11 +01:00
Davo Smith 68d206b274 MDL-53848 form: fix disabledIf functionality 2017-08-17 14:52:11 +01:00
Davo Smith 766d6f9a61 MDL-53848 form: hide entire group if hideIf test is applied to the group 2017-08-17 14:52:10 +01:00
Ankit Agarwal 988879655b MDL-53848 formslib: make conditional hidden elements properly accessible 2017-08-17 14:52:10 +01:00
Marina Glancy f3da329da4 MDL-53848 forms: additions to the behat test 2017-08-17 14:52:10 +01:00
Davo Smith d20498625c MDL-53848 form: add hideIf functionality 2017-08-17 14:52:10 +01:00
Eloy Lafuente (stronk7) 27466d7548 weekly release 3.4dev 2017-08-17 10:39:13 +02:00
Eloy Lafuente (stronk7) 3ea6691c74 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-08-17 10:39:10 +02:00
Damyon Wiese 3be8982033 MDL-59824 groups: no groups == cannot edit members
On the participants page, if there are no course groups - don't make the groups list editable.
2017-08-17 12:07:18 +08:00
Damyon Wiese f4ddc4ecd3 MDL-59823 users: Enrol bulk op course instance
The commit message above was my best attempt at meeting the very short restrictions on commit message first lines.

What it needed to say was: "Only show bulk enrolment operations for enrolment methods that have an instance in the course"
2017-08-17 12:03:52 +08:00
Damyon Wiese ca56095250 MDL-59822 users: No enrolments on frontpage
Hide enrolment status and bulk actions from the frontpage.
2017-08-17 11:34:52 +08:00
AMOS bot b257793cf8 Automatically generated installer lang files 2017-08-17 00:08:17 +08:00
Damyon Wiese bd6f87ed82 MDL-59809 boost: Don't allow z-index on pagination
This causes parts of the pagination bar to show through overlays and modals.
2017-08-16 15:53:40 +08:00
Jun Pataleta a88a63e694 Merge branch 'MDL-59388-master' of git://github.com/lameze/moodle 2017-08-16 10:12:51 +08:00
Simey Lameze 1a1e8ab029 MDL-59388 core_calendar: convert manage subscription button 2017-08-16 10:10:48 +08:00
Simey Lameze bd33760372 MDL-59388 core_calendar: remove empty lines and unused imports 2017-08-16 09:44:42 +08:00
Jun Pataleta 12eef11c8f MDL-59388 calendar: footer_options fixes 2017-08-16 09:36:48 +08:00
Ryan Wyllie 6a7ad2cb21 MDL-59388 core_calendar: setUpTrigger needs to handle arrays 2017-08-16 09:27:26 +08:00
Simey Lameze 836aa3f64a MDL-59388 core_calendar: fix month view on clean theme 2017-08-16 09:27:22 +08:00
Simey Lameze a4af4c9633 MDL-59388 core_calendar: fix cibot complains 2017-08-16 09:25:51 +08:00
Andrew Nicols 77c762b3ba Merge branch 'wip-MDL-59800-master' of git://github.com/marinaglancy/moodle 2017-08-16 09:08:34 +08:00
Andrew Nicols 34cf57f1d0 Merge branch 'MDL-53537_m34v4' of https://github.com/sbourget/moodle 2017-08-16 08:46:55 +08:00
David Mudrák 8bfd82b2f5 MDL-57775 xmlrpc: Formal fix of coding style and phpdocs
- There was missing MOODLE_INTERNAL check.
- The client is not used for unit tests only so the class description
  was obsolete.
2017-08-15 21:43:35 +02:00
David Mudrák b4da577385 MDL-57775 xmlrpc: Test webservice_xmlrpc_client request encoding
The patch wraps the underlying xmlrpc_encode_request() call into a
standalone method that can be then unit-tested.
2017-08-15 21:43:35 +02:00
David Mudrák 2b604286b5 MDL-57775 xmlrpc: Pass escaping to xmlrpc_encode_request() calls
This patch adds the missing 'escaping' option to all remaining
xmlrpc_encode_request() calls in the moodle core code.

Without this, the xmlrpc_decode_request() call on the server side may
lead to wrongly decoded non-ascii characters.
2017-08-15 21:43:34 +02:00
Stephen Bourget f5de9484e8 MDL-53537 core_backup: Add a course_backup_created event 2017-08-15 14:10:38 -04:00
Eloy Lafuente (stronk7) ddea987812 Merge branch 'MDL-58435' of https://github.com/NeillM/moodle 2017-08-15 16:35:12 +02:00
Eloy Lafuente (stronk7) 19e8e56e7e Merge branch 'MDL-59756-master-2' of git://github.com/junpataleta/moodle 2017-08-15 13:38:01 +02:00
Eloy Lafuente (stronk7) 245227fdcd Merge branch 'MDL-59667-master-2' of git://github.com/ryanwyllie/moodle 2017-08-15 13:12:45 +02:00
Mark Nelson 952cbce293 MDL-59204 mod_*: removed redundant activity name from string index
Also fixed references to incorrect strings.
2017-08-15 16:55:28 +08:00
Neill Magill 156a0a1560 MDL-58435 behat: Update existing tests to use section editing steps 2017-08-15 09:22:31 +01:00
Jun Pataleta 654f52d288 MDL-59756 user: More Behat tests for the status field and friends
* Add coverage for the rendering of the edit/unenrol icons in the status
  column.
* Add coverage for the rendering of the edit icon in the enrolment
  details modal.
* Avoid usage of xpath_element selectors whenever possible.
2017-08-15 14:33:23 +08:00
John Okely a18b4799f2 MDL-59733 assignsubmission_file: Use click interface in behat 2017-08-15 13:29:14 +08:00
Ankit Agarwal 2ba3ce9829 MDL-55937 assign: Check for group submission caps when userid=0 2017-08-15 10:58:00 +05:30
Andrew Nicols 9729cd2fcc Merge branch 'MDL-59746-master' of git://github.com/Dagefoerde/moodle 2017-08-15 13:17:37 +08:00
Andrew Nicols b66c2f561b Merge branch 'MDL-59810-master' of git://github.com/lameze/moodle 2017-08-15 13:05:33 +08:00
Simey Lameze 5d942f5a53 MDL-59810 core_calendar: test action events cannot be deleted 2017-08-15 12:05:10 +08:00
Jun Pataleta fa435675ec Merge branch 'MDL-57611-master' of https://github.com/jebarviabb/moodle 2017-08-15 11:49:38 +08:00
Andrew Nicols 69e0850292 Merge branch 'MDL-59370-master' of git://github.com/damyon/moodle 2017-08-15 10:16:42 +08:00
Ryan Wyllie ecc88f3379 MDL-59667 form: stop datepicker from rendering outside viewport
Stop the date picker panel from being rendered outside of the
viewport, for example when being displayed in a modal.
2017-08-15 01:24:52 +00:00
Eloy Lafuente (stronk7) 0982255fa8 Merge branch 'wip-MDL-59736-master' of git://github.com/marinaglancy/moodle 2017-08-14 12:10:36 +02:00
Eloy Lafuente (stronk7) 104ae3efdf Merge branch 'MDL-59774_master' of git://github.com/dmonllao/moodle 2017-08-14 11:58:00 +02:00
Jun Pataleta 993ccc7268 Merge branch 'MDL-59785-master' of git://github.com/lameze/moodle 2017-08-14 16:56:08 +08:00
Damyon Wiese 98024662ab MDL-59756 enrol: UI change enrolment details
The enrolment details popup should not have "Edit enrolment" as a primary action for the dialogue.

Instead it should just have an edit cog next to the enrolment name.
2017-08-14 15:15:11 +08:00
Marina Glancy 1e325797a5 MDL-59800 bootstrapbase: correct CSS for BS4 card 2017-08-14 14:47:25 +08:00
David Monllao 88777c570c MDL-59774 analytics: Fix sql_compare_text usage
Replace a distinct + join by an exists, which suits better what we need to do.
2017-08-14 07:56:06 +02:00
Jun Pataleta 28368da794 Merge branch 'MDL-59740_master' of git://github.com/markn86/moodle 2017-08-14 13:48:01 +08:00
Andrew Nicols 8fa7961d20 Merge branch 'wip-MDL-57188-master-2' of git://github.com/marinaglancy/moodle 2017-08-14 13:13:47 +08:00
Andrew Nicols d9d1e6cb4d Merge branch 'MDL-59737_master' of git://github.com/markn86/moodle 2017-08-14 12:25:33 +08:00
Jun Pataleta cc012017ad Merge branch 'MDL-59492-master' of git://github.com/lameze/moodle 2017-08-14 12:16:08 +08:00
Damyon Wiese 47cb325821 MDL-59685 users: Enrolment info link missing href
Href is required so that CSS can style these as clickable links (hand icon).

I also used comments to collapse the whitespace before and after the icons.
2017-08-14 11:58:28 +08:00
Simey Lameze 1f9f277d3e MDL-59492 block_myoverview: make view course buttons consistent 2017-08-14 11:58:18 +08:00
Simey Lameze 54798b5fbb MDL-59492 block_myoverview: fix remaining course links visibility 2017-08-14 11:58:18 +08:00
Charles Fulton 6dede51557 MDL-59492 block_myoverview: handle course visibility style 2017-08-14 11:58:18 +08:00
Damyon Wiese 6015caa411 MDL-59615 inplaceeditable: autocomplete fix
When autocompletes are removed from the DOM, they need to be properly cleaned up or
their event handlers may get duplicated when they are re-added to the page.

JQuery empty() handles this very nicely.
2017-08-14 11:44:04 +08:00
Damyon Wiese 5dd94c811d MDL-59370 behat: Behat fixes for enrolled users
We removed the enrolled users page, so we need to update the behats that were using it.
2017-08-14 11:06:22 +08:00
Damyon Wiese 4b50765bd5 MDL-59370 enrol: Kill the enrol/users page. 2017-08-14 11:06:16 +08:00
Simey Lameze 644b2e982e MDL-59388 core_calendar: display calendar footer options 2017-08-14 09:28:58 +08:00
Simey Lameze 86775ced89 MDL-59388 core_calendar: new footer options exporter 2017-08-14 09:28:52 +08:00
Simey Lameze 6124ec1947 MDL-59388 core_calendar: add calendar_get_footer_options() method 2017-08-14 09:28:46 +08:00
Andrew Nicols 695c5726b8 MDL-59388 calendar: Add AJAX Monthly navigation 2017-08-14 09:28:40 +08:00
Andrew Nicols 64ff737a2f MDL-59388 calendar: Switch monthly view to use templates 2017-08-14 09:28:35 +08:00
Andrew Nicols c075a3de34 MDL-59388 calendar: Add a helper to convert ymd to timestamp 2017-08-14 09:28:29 +08:00
Andrew Nicols 7fe41af525 MDL-59388 calendar: Allow filter to be specified when fetching events 2017-08-14 09:28:23 +08:00
Andrew Nicols 6ad2bfd124 MDL-59388 calendar: Break out event exporter into a base class 2017-08-14 09:28:17 +08:00
Andrew Nicols b16dca435a MDL-59388 calendar: Add data-time to calendar navigation links 2017-08-14 09:28:11 +08:00
Andrew Nicols def443a086 MDL-59388 calendar: Move timestamp gen to new function 2017-08-14 09:28:04 +08:00
Andrew Nicols 162f90e59e MDL-59388 core: Add params to link arrows 2017-08-14 09:27:58 +08:00
Eloy Lafuente (stronk7) eb74752523 Merge branch 'MDL-59741-master' of git://github.com/jleyva/moodle 2017-08-14 02:34:11 +02:00
AMOS bot 556054dfb1 Automatically generated installer lang files 2017-08-14 00:08:13 +08:00
Josh Ebarvia 93e071c8ec MDL-57611 report_log: Fix capability checks for viewing logs 2017-08-11 13:01:50 +09:30
Jun Pataleta 5982da53dc MDL-59756 user: Add edit enrolment button in enrol details modal 2017-08-11 10:18:30 +08:00
Jun Pataleta 00aba5ec9a MDL-59756 enrol: Swap positions of edit and unenrol actions 2017-08-11 10:18:30 +08:00
David Monllao fbc889a268 MDL-59779 analytics: Reduce community of inquiry indicators db queries 2017-08-10 11:07:23 +02:00
David Monllao 05c3727674 MDL-59779 analytics: Request cache for student and teacher archetypes 2017-08-10 11:07:13 +02:00
Simey Lameze 1c729ff624 MDL-59785 mod_book: all navigation styles must mark as completed 2017-08-10 16:11:33 +08:00
David Monllao f3625f47c5 weekly release 3.4dev 2017-08-10 09:11:29 +02:00
Neill Magill 0f84b17eca MDL-58435 behat: Behat section editing step should work on section 0 2017-08-09 15:15:39 +01:00
Andrew Nicols ffd1747b11 Merge branch 'MDL-59671-master-fix' of git://github.com/lameze/moodle 2017-08-09 15:09:08 +08:00
Simey Lameze 436d39ba85 MDL-59671 core_calendar: replace current delete permission checks 2017-08-09 14:51:22 +08:00
Simey Lameze dadd6f9fcc MDL-59671 core_calendar: create calendar_delete_event_allowed function 2017-08-09 14:47:35 +08:00
Andrew Nicols ba07a8e7da Merge branch 'MDL-59638_master-fix' of git://github.com/dmonllao/moodle 2017-08-09 13:41:29 +08:00
David Monllao 42d67f95cd MDL-59638 analytics: Prevent start time to be higher than end time
Other related changes:

- core_analytics\site get_start and get_end returning always integer values
- Defer intval call in define_ranges to refine some seconds
2017-08-08 14:38:11 +02:00
Dan Poltawski 2defbefe8c Merge branch 'MDL-59116_master-fix2' of git://github.com/dmonllao/moodle 2017-08-08 13:19:49 +01:00
David Monllao e4584b8110 MDL-59116 analytics: Replace wrong sorting 2017-08-08 14:04:52 +02:00
Eloy Lafuente (stronk7) 455974b395 Merge branch 'MDL-59748-master-2' of git://github.com/andrewnicols/moodle 2017-08-08 11:49:05 +02:00
Marina Glancy 9dd0fe18a8 MDL-57188 course: correct return url to manage page 2017-08-08 14:48:44 +08:00
Andrew Nicols c036256d86 Merge branch 'MDL-59749-master' of git://github.com/ryanwyllie/moodle 2017-08-08 14:33:43 +08:00
Andrew Nicols ca84ba0ed2 Merge branch 'MDL-59666-master-fix' of git://github.com/junpataleta/moodle 2017-08-08 12:54:27 +08:00
Jun Pataleta 10994cbc4a MDL-59666 mod_assign: Disable remind to grade by field in override tests 2017-08-08 12:28:39 +08:00
Andrew Nicols f4cc24ca64 Merge branch 'MDL-59671-master' of git://github.com/lameze/moodle 2017-08-08 11:46:51 +08:00
Simey Lameze c34e200241 MDL-59671 core_calendar: action events edition needs to be on module 2017-08-08 11:44:27 +08:00
Simey Lameze 1106040a4d MDL-59671 core_calendar: add visibility logic to template 2017-08-08 11:44:19 +08:00
Simey Lameze 4df03a279a MDL-59671 core_calendar: check if the event can be deleted 2017-08-08 11:44:11 +08:00
Simey Lameze 6fb751562a MDL-59671 core_calendar: move logic to calendar event exporter 2017-08-08 11:44:03 +08:00
Ryan Wyllie 0a501e1b2e MDL-59749 form: revert setting id on inline form elements
Revert the change I made in MDL-59382 to correctly set the id for inline
form elements because it's breaking a bunch of different places that had
already worked around the problem.
2017-08-08 03:28:36 +00:00
David Monllao 9eebb3c38b Merge branch 'MDL-59448-master' of https://github.com/xow/moodle 2017-08-08 04:25:06 +02:00
David Monllao e8e53efba8 Merge branch 'MDL-58889-master' of https://github.com/xow/moodle 2017-08-08 04:23:31 +02:00
Andrew Nicols 286a38eeaa Merge branch 'MDL-59700-master' of git://github.com/cameron1729/moodle 2017-08-08 10:12:35 +08:00
Andrew Nicols 63ce49df9b MDL-59748 groupslib: Fix time issue in unit test 2017-08-08 10:07:46 +08:00
John Okely 8b0e965d30 MDL-59448 boost: Make info colour accessible and match default primary 2017-08-08 08:37:46 +08:00
John Okely 2fd7cdbe83 MDL-58889 boost: Use underline links in footer
It's impossible to gain the right colour contrast against a dark footer
using the same primary colour that gets 4.5 against white.
2017-08-08 08:34:15 +08:00
Andrew Nicols a72e7d4974 Merge branch 'MDL-59725-master' of https://github.com/xow/moodle 2017-08-08 08:30:33 +08:00
Eloy Lafuente (stronk7) 9af66ed103 Merge branch 'MDL-59614-master' of git://github.com/junpataleta/moodle 2017-08-08 01:48:35 +02:00
Jan Dageförde 8f1e67d311 MDL-59746 oauth2: urlencode parameters for post requests 2017-08-07 22:21:29 +02:00
Eloy Lafuente (stronk7) a0d85e1828 Merge branch 'MDL-59506-master' of git://github.com/andrewnicols/moodle 2017-08-07 19:55:19 +02:00
Eloy Lafuente (stronk7) d4c8235f87 Merge branch 'MDL-59638_master' of git://github.com/dmonllao/moodle 2017-08-07 19:48:17 +02:00
Dan Poltawski 9ebc67f4a2 Merge branch 'MDL-59172-master' of https://github.com/snake/moodle 2017-08-07 16:20:11 +01:00
David Monllao bfdc340061 Merge branch 'MDL-59642-master' of git://github.com/andrewnicols/moodle 2017-08-07 14:41:32 +02:00
David Monllao d5a99c450a MDL-59116 analytics: Add rangeindex field to predict_samples index 2017-08-07 12:39:20 +02:00
Mark Nelson a91a4dd77b MDL-59740 core_form: add ability to specify if a button is primary 2017-08-07 17:37:14 +08:00
Mark Nelson f1dd575c6f MDL-59737 core_backup: changed reference to domain doesntexist.com 2017-08-07 17:17:58 +08:00
Juan Leyva 220656e83b MDL-59741 auth: Always check the type of iconurls
We need to check always if iconurl is an instance of moodle_url to
avoid Web Services returning iconurls from identity providers to fail.
2017-08-07 10:58:37 +02:00
Dan Poltawski 7cb60527f4 Merge branch 'MDL-59666-master' of git://github.com/junpataleta/moodle 2017-08-07 09:31:34 +01:00
Cameron Ball 03756f0bdb MDL-59700 filestorage: Rework repositories to avoid add_file_to_pool
For historical reasons repositories need to call add_file_to_pool
to sync file records. However now that a before_file_created hook
has been added additional information is needed by add_file_to_pool.

Ideally add_file_to_pool and friends will become private/protected,
so we need to remove all uses of it in core.

This patch adds some new methods to the file class to allow syncing
to be managed internally by the file and the file_storage class.
2017-08-07 15:50:15 +08:00
Dan Poltawski 3d3be6ec05 Merge branch 'MDL-59116_master' of git://github.com/dmonllao/moodle 2017-08-07 08:45:01 +01:00
David Monllao db208667a3 Merge branch 'MDL-59532-master' of git://github.com/jleyva/moodle 2017-08-07 09:42:08 +02:00
David Monllao 8f2cee482d Merge branch 'MDL-59644-master' of git://github.com/lameze/moodle 2017-08-07 09:34:36 +02:00
David Monllao bfaf47e168 Merge branch 'wip-MDL-59655-master' of git://github.com/marinaglancy/moodle 2017-08-07 09:27:38 +02:00
David Monllao 21e68c5ff1 Merge branch 'MDL-59656_master' of git://github.com/markn86/moodle 2017-08-07 09:26:03 +02:00
David Monllao 0370931076 Merge branch 'wip-MDL-59055-master' of git://github.com/marinaglancy/moodle 2017-08-07 09:21:21 +02:00
Andrew Nicols 53ce3e4f74 Merge branch 'MDL-59727-master' of git://github.com/junpataleta/moodle 2017-08-07 14:51:19 +08:00
Andrew Nicols 2101612b10 Merge branch 'MDL-51745-master' of https://github.com/jebarviabb/moodle 2017-08-07 14:47:31 +08:00
David Monllao 7643d75af0 Merge branch 'MDL-59734-master' of git://github.com/andrewnicols/moodle 2017-08-07 08:31:24 +02:00
Andrew Nicols ab96699e52 Merge branch 'MDL-59726-master' of git://github.com/junpataleta/moodle 2017-08-07 14:28:23 +08:00
Josh Ebarvia 79189e975c MDL-51745 mod_lesson: Use format_text in response feedback 2017-08-07 15:53:11 +09:30
David Monllao 68c406ffdd Merge branch 'MDL-59668_master' of git://github.com/markn86/moodle 2017-08-07 08:22:01 +02:00
Andrew Nicols c9d781d207 Merge branch 'MDL-59665_master' of git://github.com/dmonllao/moodle 2017-08-07 13:53:19 +08:00
Andrew Nicols 36f207ec43 Merge branch 'MDL-59662-errors-typo' of https://github.com/lucaboesch/moodle 2017-08-07 13:34:42 +08:00
Jun Pataleta 85437c91f8 MDL-59614 course: Behat tests for activity navigation
Part of MDL-59313.
2017-08-07 13:29:31 +08:00
David Monllao 00da1e6010 MDL-59116 analytics: Multiple predictions for each analysable time range
Now we only predict using the most recent range available, this means
that if someone upgrades to moodle 3.4 at three quarters of a course
we will only calculate the latest range, previous ranges were not
displayed anyway once more recent predictions were available.

This commit deletes all previous predictions :) this shouldn't be a
problem in master as we don't provide any guarantee, the alternative
(retrive sampleids from mdl_files) would have been slow and a waste of
time as well as require horrible code in an upgrade step (text fields
do not accept defaults nor we can use NOTNULL).
2017-08-07 06:56:11 +02:00
Andrew Nicols a41ef5ece5 Merge branch 'MDL-59698-master' of git://github.com/damyon/moodle 2017-08-07 12:43:42 +08:00
Andrew Nicols ab202d9247 Merge branch 'MDL-59728-boost-question-bank-header-align' of https://github.com/lucaboesch/moodle 2017-08-07 12:36:38 +08:00
Cameron Ball 8243706542 MDL-59700 filestorage: Add before_file_created hook 2017-08-07 12:27:04 +08:00
Andrew Nicols aca995a2f4 Merge branch 'MDL-59206-master' of git://github.com/damyon/moodle 2017-08-07 11:35:26 +08:00
John Okely 5918f31e32 MDL-58889 boost: Make text and link colours AA compliant
We have to choose a colour that is 4.5:1 against white and 3:1 against
the text colour. I darkened the link colour somewhat and darkened the
text colour
2017-08-07 11:14:00 +08:00
Jun Pataleta e004de157c MDL-59727 core_user: Fix Behat tests for bulk enrolment test 2017-08-07 10:49:07 +08:00
Jun Pataleta f156e3dd92 MDL-59726 behat: Fix Behat tests affected by the new participants filter 2017-08-07 10:04:54 +08:00
Andrew Nicols 5bc4c797a7 MDL-59506 core_lock: use a null lock during install
Use a different lock factory during installation which does not actually
lock at all.
2017-08-07 09:59:44 +08:00
Damyon Wiese fe9965e305 MDL-59055 grades: behat test 2017-08-07 09:57:52 +08:00
Marina Glancy 20060b3b2e MDL-59055 grades: provide backward-compatibility of changes 2017-08-07 09:56:14 +08:00
Marina Glancy be85f0cf88 MDL-59055 grades: fix bug displaying item id instead of grade
Thanks to Marcelo Santos for initial patch
2017-08-07 09:56:14 +08:00
Andrew Nicols ed7431a37b MDL-59734 auth_ldap: Fix role sync
The unit tests were failing because the upgrade step was missed.
In addition, there was a typo in a variable name, which meant that the
role was not actually synchronised.
2017-08-07 09:42:24 +08:00
Marina Glancy 8f725c12e8 MDL-59736 mod_forum: show discussionlocked as notification 2017-08-07 09:32:31 +08:00
Jake Dallimore 4d068a6708 MDL-59172 user: user_can_view_profile() now checks viewalldetails cap 2017-08-07 09:27:04 +08:00
John Okely 5d9e7abbaf MDL-59725 assignsubmission_file: Don't use click interface in behat 2017-08-07 09:25:46 +08:00
John Okely 29b31865d7 MDL-59725 assignsubmission_file: Improve accepted types string 2017-08-07 09:25:20 +08:00
Luca Bösch a0e6026215 MDL-59728 questions: Align question bank headers. 2017-08-04 15:18:45 +02:00
Luca Bösch 3437a77552 MDL-59662 database: Typo in variable name. 2017-08-04 10:30:11 +02:00
Andrew Nicols d504e9207c MDL-59642 stats: Correct random unit test failure
The unit test was creating four events, and then relying on them being
retrieved in the order in which they were created.

I've modified the test to:
* ensure timecreated are spaced apart; and
* add an order by timecreated when fetching them.
2017-08-04 15:06:51 +08:00
Jun Pataleta b5ede848ce MDL-59666 mod_assign: Add validation for grading due date 2017-08-04 14:42:01 +08:00
Andrew Nicols 8146b1f06d weekly release 3.4dev 2017-08-04 11:49:44 +08:00
Andrew Nicols 807572b3dd Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-08-04 11:49:24 +08:00
Andrew Nicols 10b788ffa6 Merge branch 'MDL-59366-master-fix-2' of git://github.com/junpataleta/moodle 2017-08-04 09:56:22 +08:00
Jun Pataleta 1453d146b3 MDL-59366 enrol: Nuke manage_enrolments_from_participants.feature
This will be removed soon. Better remove it now since it started to
cause failures after the new course participants page improvements
have landed.
2017-08-04 09:51:28 +08:00
Andrew Nicols b32b78cc0c Merge branch 'MDL-59366-master-fix' of git://github.com/junpataleta/moodle 2017-08-04 09:23:26 +08:00
Jun Pataleta b29c2fad0b MDL-59366 user: Be more specific on which autocomplete is being opened
* Specify that the autocomplete in the student's row in the
  participants table is being opened
2017-08-04 09:15:50 +08:00
Jun Pataleta 37fc1d4db7 MDL-59366 enrol: Be more specific on which autocomplete is being opened
* Specify that the autocomplete in the student's row in the
  participants table is being opened.
2017-08-04 09:14:30 +08:00
Jun Pataleta cd3f250f32 MDL-59366 core_user: Disable sorting for roles and groups columns 2017-08-04 09:14:30 +08:00
Andrew Hancox 6a8e25ef18 MDL-59702 mod_lesson: Use showuseridentity setting on overview report 2017-08-03 10:29:36 +01:00
Mark Nelson 6d29cccf04 MDL-59668 mod_lti: use 'forceview' param to keep nav flow consistent
Part of MDL-59313.
2017-08-03 15:35:31 +08:00
Andrew Nicols 7d9e0b066e Merge branch 'MDL-59382-int-fix-1' of github.com:ryanwyllie/moodle 2017-08-03 14:53:25 +08:00
Ryan Wyllie 6cb580713b MDL-59382 calendar: fix editing event duration 2017-08-03 06:45:19 +00:00
Mark Nelson c54af7fdc0 MDL-59668 mod_lti: trigger completion event in view.php
This was done so that the navigation links are rendered
correctly with accurate completion info.

Part of MDL-59313.
2017-08-03 12:43:09 +08:00
Andrew Nicols ee640d3f2d Merge branch 'm34_MDL-59583_Fix_MariaDB_10d2d7_Breaking_Change' of https://github.com/scara/moodle 2017-08-03 12:29:56 +08:00
Damyon Wiese 63f4aa20b2 MDL-59698 behat: Remove bad tests
These tests are an abuse and should not have been accepted. Behat tests should use real pages.
Adding testing only entry points to Moodle is a bad security practice and is not the purpose of behat.
2017-08-03 10:26:05 +08:00
Andrew Nicols b2af37058d MDL-59382 calendar: CiBoT fix 2017-08-03 09:36:56 +08:00
Andrew Nicols c6de3bd68f Merge branch 'MDL-59382-master-4' of git://github.com/ryanwyllie/moodle 2017-08-03 09:31:44 +08:00
Ryan Wyllie d6942fb5ba MDL-59382 calendar: fix CiBoT warnings 2017-08-03 01:07:01 +00:00
Matteo Scaramuccia 2ec50fe3fd MDL-59583 dml: fixed NULL values w/ MariaDB 10.2.7+ 2017-08-03 00:13:03 +02:00
Jun Pataleta 1e674d0147 MDL-59613 course: Activity list dropdown menu fixes
* Use the formatted name of the modules to be listed in the dropdown.
* Skip the current activity when adding activities for the dropdown.
2017-08-02 17:02:24 +08:00
Mark Nelson a965ae38ef MDL-59612 core: apply filters to activity names
Part of MDL-59313.
2017-08-02 16:55:03 +08:00
Ryan Wyllie 22d44a63af MDL-59382 calendar: fix course id for site event 2017-08-02 07:52:21 +00:00
Simey Lameze 63dd75229b MDL-59382 theme: bring the date picker forward 2017-08-02 07:52:20 +00:00
Simey Lameze 3862bcfaa3 MDL-59382 theme_bootstrapbase: proper handling of large modals 2017-08-02 07:52:20 +00:00
Simey Lameze 705eea84d1 MDL-59382 core: make CiBoT happy. 2017-08-02 07:52:20 +00:00
Simey Lameze c448e19bff MDL-59382 core_calendar: fix behat failures 2017-08-02 07:52:20 +00:00
Andrew Nicols 9bed446559 Merge branch 'MDL-57259-master' of git://github.com/ryanwyllie/moodle 2017-08-02 13:39:23 +08:00
Simey Lameze 7934986284 MDL-59644 core_output: fix font awesome mapping for lock icons 2017-08-02 13:37:03 +08:00
David Monllao bf0ffc9c3a Merge branch 'MDL-59602-master' of https://github.com/andrewnicols/moodle 2017-08-02 07:04:33 +02:00
Andrew Nicols 3d4739ab64 MDL-59602 enrol: Correct course name for restored course 2017-08-02 13:02:29 +08:00
Andrew Nicols b4a4fa6a4c MDL-59602 course: Use course navigation for course nav test 2017-08-02 12:55:54 +08:00
Simey Lameze 81170930c2 MDL-59382 core_calendar: change behat step 2017-08-02 04:47:43 +00:00
Ryan Wyllie aa0912258d MDL-59382 calendar: add modal to create and update events 2017-08-02 04:47:43 +00:00
Ryan Wyllie 6103fd2efe MDL-59382 calendar: rename repository and events
Renamed the calendar_repository and calendar_events to repository and
events respectively since they are already in the calendar namespace
there is no need for the redundant calendar prefix.
2017-08-02 04:47:43 +00:00
Ryan Wyllie 159a2bc1fe MDL-59382 theme_boost: add title block to modal template 2017-08-02 04:47:43 +00:00
Ryan Wyllie 8e02018f1c MDL-59382 calendar: fix event mapper and exporter 2017-08-02 04:47:42 +00:00
Ryan Wyllie 6973baa31e MDL-59382 form: fix name in template context 2017-08-02 04:47:42 +00:00
Ryan Wyllie a50768b97f MDL-59382 javascript: template context can be given to modal factory 2017-08-02 04:47:42 +00:00
Ryan Wyllie 4defa05fdc MDL-59382 javascript: fix large styling for modals 2017-08-02 04:47:42 +00:00
Ryan Wyllie 74eedb28b3 MDL-57259 external: fix page url debug in fragment loading 2017-08-02 04:47:41 +00:00
Ryan Wyllie cacc04006f MDL-57259 external: fix page url debug in fragment loading 2017-08-02 03:37:32 +00:00
Andrew Nicols 71fac459b6 Merge branch 'MDL-55364-master-fix' of https://github.com/xow/moodle 2017-08-02 10:51:05 +08:00
Andrew Nicols 2b2ae405f0 Merge branch 'wip-MDL-59523-master-fix' of git://github.com/abgreeve/moodle 2017-08-02 10:47:52 +08:00
John Okely 9c89d3aec1 MDL-55364 forum: Combine user picture and user name rows 2017-08-02 10:27:47 +08:00
Adrian Greeve 39b8357c5a MDL-59523 course_reset: Added date update message when resetting. 2017-08-02 10:09:29 +08:00
Dan Poltawski 2a2f7b6493 Merge branch 'MDL-55364-master' of https://github.com/xow/moodle 2017-08-01 11:34:18 +01:00
Dan Poltawski e3a2d7a473 Merge branch 'MDL-59366-master' of git://github.com/junpataleta/moodle 2017-08-01 10:36:14 +01:00
Dan Poltawski b8cf4be7a7 Merge branch 'MDL-59658-master' of git://github.com/junpataleta/moodle 2017-08-01 10:15:54 +01:00
David Monllao 266959a41e Merge branch 'MDL-59613-master' of git://github.com/junpataleta/moodle 2017-08-01 10:29:39 +02:00
Dan Poltawski 2c34c10799 Merge branch 'MDL-30634-master' of git://github.com/Dave-B/moodle 2017-08-01 09:08:33 +01:00
David Monllao 71b917ace6 MDL-53492 hub: Fix remaining conflict 2017-08-01 10:03:31 +02:00
David Monllao 2c04945c58 Merge branch 'wip-MDL-53492-master' of git://github.com/marinaglancy/moodle 2017-08-01 09:20:57 +02:00
Jun Pataleta 3120ebab9d MDL-59658 core: Add login/logout steps for course participants scenario
* Add student1 and student2 login/logout steps for the course
  participants filtering scenario in order to have last access data
  for students 1 and 2 since the participants table is sorted by last
  access by default.
* Remove @javascript tags for the following scenario:
  - Filter users on assignment submission page
  - Filter users on view gradebook page
  - Filter users on course participants page
  JS is not really necessary in these scenario and we can get faster
  execution time.
2017-08-01 15:09:34 +08:00
Andrew Nicols 5c5b130268 Merge branch 'MDL-58928-alt-attribute-enrolment-edit-delete-icons' of https://github.com/lucaboesch/moodle 2017-08-01 14:54:05 +08:00
Andrew Nicols 3ae7afcf12 Merge branch 'MDL-59518-master' of git://github.com/ankitagarwal/moodle 2017-08-01 13:44:16 +08:00
Andrew Nicols 3ccd1965f3 Merge branch 'MDL-59523-master' of git://github.com/ankitagarwal/moodle 2017-08-01 13:43:04 +08:00
Andrew Nicols 77c5325f81 Merge branch 'MDL-9367-master' of git://github.com/ankitagarwal/moodle 2017-08-01 13:39:38 +08:00
Adrian Greeve 0b79129078 MDL-59518 restore: Unit tests for restoring and dates
These unit tests check that the dates do not roll
forward when restoring a backup.
2017-08-01 11:05:58 +05:30
Adrian Greeve 3678380cbf MDL-59518 restore: System date info no longer rolled forward.
Only dates that are part of a configuration setting should
have the date rolled forward in a restore.
2017-08-01 11:05:48 +05:30
David Monllao 805b667c3a MDL-59665 analytics: Reuse existing lang string 2017-08-01 07:24:23 +02:00
Damyon Wiese f28c0c7245 MDL-59206 event: Add an event for a config_log
This is useful because config_logs are sent via logstores, and we may be interested to know how
many people change a particular admin setting across many sites (aggregated data).
2017-08-01 13:18:55 +08:00
Ankit Agarwal 0d14fcbc60 MDL-9367 restore: Roll only configuration dates
It was decided to roll only configuration dates and any date related to user content
such as 'timecreated' , 'timemodified' etc should not be rolled forward.
2017-08-01 10:46:37 +05:30
Ankit Agarwal cb416dbf7d MDL-59523 course_reset: Roll dates when needed 2017-08-01 10:07:48 +05:30
David Monllao 85a9c0b1e5 Merge branch 'MDL-59299-master' of https://github.com/xow/moodle 2017-08-01 04:56:09 +02:00
Andrew Nicols 5283fa3329 Merge branch 'MDL-59473' of https://github.com/sytabaresa/moodle 2017-08-01 10:46:39 +08:00
Andrew Nicols 13822dca07 Merge branch 'MDL-28574-master' of https://github.com/xow/moodle 2017-08-01 09:59:59 +08:00
Luca Bösch da15576180 MDL-58928 enrol: delete and edit icon alt attribute 2017-07-31 17:31:07 +02:00
David Monllao a79e84e060 Merge branch 'wip-MDL-59496-master-3' of git://github.com/marinaglancy/moodle 2017-07-31 17:14:56 +02:00
Dan Poltawski f4ba6def50 Merge branch 'MDL-59624-master' of git://github.com/jleyva/moodle 2017-07-31 15:54:32 +01:00
Jun Pataleta 4698e169e5 MDL-59613 course: Add dropdown menu for activity list
Part of MDL-59313.
2017-07-31 22:25:22 +08:00
Dan Poltawski c2c941b6f2 MDL-59627 mod_data: fix incorrect use of sortorder 2017-07-31 14:28:39 +01:00
David Monllao f82e86e9f7 Merge branch 'wip-MDL-59311-master' of git://github.com/marinaglancy/moodle 2017-07-31 14:45:35 +02:00
David Monllao 56b3a0a477 Merge branch 'MDL-59535-master' of git://github.com/lameze/moodle 2017-07-31 14:19:54 +02:00
David Monllao 549e57410f Merge branch 'MDL-57546-master' of git://github.com/andrewnicols/moodle 2017-07-31 14:10:19 +02:00
David Monllao 707f9beae1 Merge branch 'MDL-59612-master' of git://github.com/junpataleta/moodle 2017-07-31 13:59:55 +02:00
Jun Pataleta ed765cfad1 MDL-59612 course: Use action_link template for activity navigation
Part of MDL-59313.
2017-07-31 19:45:34 +08:00
David Monllao 7190f330b4 Merge branch 'MDL-59602_coursenav' of https://github.com/mrmark/moodle 2017-07-31 13:21:09 +02:00
Dan Poltawski 9ee4ab6330 Merge branch 'MDL-59619-master' of git://github.com/jleyva/moodle 2017-07-31 11:48:55 +01:00
Dan Poltawski 396b97b2fb Merge branch 'MDL-59627-master' of git://github.com/jleyva/moodle 2017-07-31 11:44:56 +01:00
Dan Poltawski 6cc8b0a4a6 Merge branch 'MDL-59632_master' of git://github.com/dmonllao/moodle 2017-07-31 11:33:05 +01:00
David Monllao 726ad1bd08 Merge branch 'MDL-59511-master-oauthsysmail' of git://github.com/Dagefoerde/moodle 2017-07-31 11:46:30 +02:00
Dan Poltawski 23e1ce7d52 Merge branch 'wip-MDL-59476-master-2' of git://github.com/marinaglancy/moodle 2017-07-31 10:21:32 +01:00
Mark Nelson 3cf76bbc87 MDL-59656 core_group: add support for multi-lang to groups editable
Part of MDL-59290.
2017-07-31 15:36:00 +08:00
John Okely 72e688d7ff MDL-28574 webservices: Explain tokens you can edit but can't see 2017-07-31 15:35:23 +08:00
Andrew Nicols 63615f6116 Merge branch 'MDL-58196-master' of git://github.com/ankitagarwal/moodle 2017-07-31 15:17:49 +08:00
David Monllao a3cb377374 Merge branch 'MDL-59649-master' of git://github.com/jleyva/moodle 2017-07-31 08:58:56 +02:00
David Monllao 634d0f8330 Merge branch 'MDL-58744-master' of https://github.com/jacac/moodle 2017-07-31 08:36:18 +02:00
Marina Glancy 5ac72c9c74 MDL-53492 registration: Moodle.net is more correct than Moodle.org 2017-07-31 14:31:12 +08:00
Marina Glancy 7d792aeee4 MDL-53492 registration: use https://moodle.net as hub url 2017-07-31 14:31:11 +08:00
Marina Glancy 505bbe7cd6 MDL-59496 registration: display unregistered warning consistently 2017-07-31 14:29:58 +08:00
Ankit Agarwal 49a84cec82 MDL-58196 availability: Fix UI for pass/fail config
For pass/fail setting to work properly, activities must have 'Require grade' completion set,
just make sure we don't allow activities without this setting to be set
2017-07-31 11:56:11 +05:30
Ankit Agarwal 0b3326b50e MDL-58196 availability: Add appropriate dependencies in mform 2017-07-31 11:56:11 +05:30
Marina Glancy 07ec41bcf9 MDL-59655 course: visibleoncoursepage is not mandatory 2017-07-31 14:04:37 +08:00
Jun Pataleta 9651e491d8 MDL-59366 user: Create a unified filter for participants page
Part of MDL-59290.
2017-07-31 13:04:06 +08:00
Mark Nelson 1678181a56 MDL-59612 core: removed hard-coded check for referer in modules
See mod/upgrade.txt for explanation.

Part of MDL-59313.
2017-07-31 12:03:28 +08:00
Mark Nelson 585146f0ab MDL-59612 core: edit 'frametop' layout so links display for LTI
Part of MDL-59313.
2017-07-31 12:03:28 +08:00
Mark Nelson d8cb461529 MDL-59612 core: added previous and next links to activities
Part of MDL-59313.
2017-07-31 12:03:28 +08:00
Andrew Nicols 2653e0c8e1 Merge branch 'm34_MDL-59583_Fix_MariaDB_10d2d7_Breaking_Change' of https://github.com/scara/moodle 2017-07-31 11:37:45 +08:00
Andrew Nicols 722f67d5b2 MDL-59564 user: Whitespace fix 2017-07-31 11:35:45 +08:00
Daniel Materka 0433d36de3 MDL-55364 forum: fix overlapping columns in the table at low resolutions 2017-07-31 11:23:50 +08:00
Andrew Nicols 394e96032e Merge branch 'MDL-59564-master' of git://github.com/damyon/moodle 2017-07-31 11:15:09 +08:00
Andrew Nicols d267d66fdf Merge branch 'MDL-59307_master' of git://github.com/dmonllao/moodle 2017-07-31 10:12:02 +08:00
John Okely 1318aec36e MDL-59299 filepicker: Display what filetypes are accepted 2017-07-31 09:58:22 +08:00
John Okely 320889c02b MDL-59299 filemanager: Display what filetypes are accepted 2017-07-31 09:58:21 +08:00
John Okely 847a4e219a MDL-59299 assignsubmission_file: Use filetypes library functions 2017-07-31 09:58:21 +08:00
John Okely e54d059d64 MDL-59299 assignsubmission_file: Improve accepted filetypes help 2017-07-31 09:58:21 +08:00
John Okely 3b77a0d06b MDL-59299 assignsubmission_file: Use filetype element in behat tests 2017-07-31 09:58:20 +08:00
Jake Dallimore 9069c66e42 MDL-59299 mod_assign: use new filetypes element for accepted file types 2017-07-31 09:58:20 +08:00
John Okely 11df55c0dd MDL-28574 adminlib: Token behat tests 2017-07-31 09:55:04 +08:00
John Okely fc7a345c35 MDL-28574 webservices: Use table_sql on manage tokens page
For pagination and sorting an partial loading.
2017-07-31 09:55:04 +08:00
John Okely 031877d2ee MDL-28574 webservices: Show all tokens for users with capability 2017-07-31 09:55:04 +08:00
John Okely ad2ae6e3db MDL-28574 webservices: Add new capability for managing all tokens 2017-07-31 09:55:04 +08:00
Jan Dageförde 0c62ca2563 MDL-28574 webservice: Allow admins to manage tokens created by others.
Until now, admins could only modify (or even see) tokens they have
created themselves. Tokens created by other users or even other admins
were invisible unless you were looking into the database. In case there
are former admins, their successors can be unable to inspect or delete
existing tokens.
2017-07-31 09:54:33 +08:00
Damyon Wiese 5c734b0ce7 MDL-59564 user: Add behat for bulk enrolment
Cover bulk enrolment changes from the participants page with a behat.
2017-07-31 09:29:37 +08:00
Damyon Wiese 689ccae5f3 MDL-59564 users: Add bulk enrolment change
Add bulk change enrolments form to the participants page.
2017-07-31 09:29:37 +08:00
AMOS bot b24937d07f Automatically generated installer lang files 2017-07-31 00:09:46 +08:00
AMOS bot e0baafa361 Automatically generated installer lang files 2017-07-29 00:09:51 +08:00
Juan Leyva 4f5dbd38fb MDL-59649 mod_data: Fix content exporter
The content3 and content4 fields should be type PARAM_RAW
2017-07-28 14:02:26 +02:00
Jun Pataleta 445de896ef MDL-59366 enrol: Add $onlyenabled param in enrol instances getters
* Add param in order allow flexibility for the methods to be able
to fetch only active enrol instances as well.

Part of MDL-59290.
2017-07-28 16:11:56 +08:00
Jun Pataleta 198d72913f MDL-59366 core_amd: Modifications for form-autocomplete
* New optional parameter 'closeSuggestionsOnSelect' for the enhance()
function for form-autocomplete. Setting this to true will close the
suggestions popup immediately after an option has been selected. If not
specified, it defaults to true for single-select elements and false
for multiple-select elements.

Part of MDL-59290.
2017-07-28 16:11:38 +08:00
Jan Dageförde 3fa588c637 MDL-59511 oauth2: Allow empty email in system account 2017-07-28 10:07:25 +02:00
Jun Pataleta bb1c6f85f5 MDL-59366 core: New enrolid param for get_enrolled_* functions
* New optional parameter $enrolid for the following functions:
  - get_enrolled_join()
  - get_enrolled_sql()
  - get_enrolled_with_capabilities_join()
  Setting this parameter to a non-zero value will add a condition
  to the query such that only users that were enrolled with this
  enrolment method will be returned.

Part of MDL-59290.
2017-07-28 11:32:13 +08:00
Simey Lameze 026bfb7604 MDL-59535 tool_behat: fix fatal error if there is no setup 2017-07-28 08:43:21 +08:00
AMOS bot 7f9b920f7c Automatically generated installer lang files 2017-07-28 00:07:06 +08:00
Jakob Ackermann d674f12b7c MDL-58744 blocks: Add system context block position in non user context. 2017-07-27 09:01:29 -07:00
David Monllao 5c140ac4c0 MDL-59307 analytics: Easy enable / disable 2017-07-27 12:25:23 +02:00
David Monllao 8f5a52b484 MDL-59638 analytics: Advance time splitting start instead of delay end 2017-07-27 12:03:21 +02:00
Dan Poltawski d509f80c48 weekly release 3.4dev 2017-07-27 10:10:46 +01:00
Dan Poltawski 88ac888040 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-07-27 10:10:44 +01:00
Andrew Nicols 048009ea35 Merge branch 'MDL-57791_master-fix5' of git://github.com/dmonllao/moodle 2017-07-27 14:23:52 +08:00
David Monllao cbf4c391c2 MDL-57791 analytics: Fix error message for no evaluation models 2017-07-27 08:15:02 +02:00
Andrew Nicols 81af47b7cf Merge branch 'MDL-59369-master-fix' of git://github.com/junpataleta/moodle 2017-07-27 11:34:43 +08:00
Jun Pataleta 91b099dbed MDL-59369 enrol: Fix add_to_group Behat tests
Tab to the next element after selecting groups in order for
the autocomplete element to close and be able to click on the
"Save changes" link.
2017-07-27 11:17:33 +08:00
David Monllao ad382c6a71 MDL-59632 search: Style search box for boost 2017-07-26 16:34:29 +02:00
David Monllao ab4ae50603 Merge branch 'MDL-58906-master' of git://github.com/ankitagarwal/moodle 2017-07-26 14:42:38 +02:00
Dan Poltawski 1ea5164833 Merge branch 'MDL-57698-master-fix' of https://github.com/xow/moodle 2017-07-26 09:42:10 +01:00
Dan Poltawski 75535f1692 Merge branch 'MDL-57791_master-fix4' of git://github.com/dmonllao/moodle 2017-07-26 09:34:21 +01:00
Ankit Agarwal 9b5d887967 MDL-58906 calendar: Remove check for _refresh_events exists 2017-07-26 12:51:27 +05:30
David Monllao 4a210b0688 MDL-57791 analytics: Predictions deleted context management 2017-07-26 09:17:58 +02:00
Andrew Nicols a5164e85f2 Merge branch 'MDL-59499-master-classfix' of github.com:snake/moodle 2017-07-26 14:53:39 +08:00
Andrew Nicols 9e27e298c3 Merge branch 'MDL-59367-master-fix2' of http://github.com/damyon/moodle 2017-07-26 14:03:22 +08:00
Damyon Wiese e640eb5cc3 MDL-59367 behat: Close the autocomplete
Close the auto complete suggestions list so it does not obscure the save changes button in chrome
2017-07-26 13:48:16 +08:00
Andrew Nicols b67caad9f5 Merge branch 'MDL-57791-master-inarrayfix' of github.com:snake/moodle 2017-07-26 13:38:03 +08:00
Andrew Nicols d59be47602 MDL-59367 participants: Whitespace fix 2017-07-26 13:30:44 +08:00
Andrew Nicols a8168eb981 Merge branch 'MDL-59367-master-fix1' of http://github.com/damyon/moodle 2017-07-26 13:26:12 +08:00
Jake Dallimore 0eb594401d MDL-57791 analytics: fix for in_array 2017-07-26 13:25:37 +08:00
Damyon Wiese 0ae28fad3a MDL-59367 participants: Reduce db queries
Fetch all role assignments for the course in a single query, instead of for each of the listed users.

More data but less queries.
2017-07-26 11:21:59 +08:00
Jake Dallimore 9e9ed46a99 MDL-59499 admin: class fix for course category expansion icons 2017-07-26 11:11:09 +08:00
John Okely d1b79250c6 MDL-57698 backup: Decrease deadlock fixture size 2017-07-26 10:45:58 +08:00
Andrew Nicols 2cad0cd3b6 MDL-57546 mediaplayer_youtube: Respect mobile URLs 2017-07-26 10:40:49 +08:00
Andrew Nicols 7740e186e1 Merge branch 'MDL-59369-master' of git://github.com/junpataleta/moodle 2017-07-26 09:47:26 +08:00
Jun Pataleta 90ffcfa83a MDL-59369 user: IR fixes
* Moved status_field to core_user\output namespace.
* Assigned status flags for the template context in order to determine
  which label class to use for the given status.

Part of MDL-59290.
2017-07-26 09:44:33 +08:00
Jun Pataleta 4544451aff MDL-59369 user: Render status as highlighted labels 2017-07-26 09:44:33 +08:00
Jun Pataleta 06aa592315 MDL-59369 enrol: Behat tests for plugin enrol actions 2017-07-26 09:44:33 +08:00
Jun Pataleta 642bea179c MDL-59369 user: Behat tests involving the Status column 2017-07-26 09:44:33 +08:00
Jun Pataleta 80d13bfe8d MDL-59369 user: User enrolment status JS controls
* Add actions for editing user enrolment and unenrol
* Render user enrolment details in a modal
2017-07-26 09:44:33 +08:00
Jun Pataleta fd0a43be1b MDL-59369 enrol: Introduce data-action attribute for enrol action links 2017-07-26 09:44:33 +08:00
Jun Pataleta ea758b85e4 MDL-59369 enrol: Cleanup enrol pages
* Cleanup edit enrolment form.
* Improve edit enrol form validation error message.
* Add modal custom data flag to edit enrolment form to hide action
  buttons if loaded via fragment.
* Point return URLs of edit enrolment and user unenrol pages back to
  participants page.
2017-07-26 09:44:02 +08:00
Jun Pataleta 5719f2ca50 MDL-59369 enrol: Edit user enrolment fragment 2017-07-26 09:44:02 +08:00
Jun Pataleta 58c20c8108 MDL-59369 enrol: New ws core_enrol_external::edit_user_enrolment 2017-07-26 09:43:16 +08:00
Jun Pataleta fb7929677a MDL-59369 user: Add status column to the participants table 2017-07-26 09:42:38 +08:00
Sebastian Tabares Amaya 675b291d47 MDL-59473 request: Fix Loop Redirection in Oauth2 2017-07-25 16:58:53 -05:00
Juan Leyva 6cf2ab7394 MDL-59627 mod_data: Fix totalcount calculation in search_entries
totalcount was incorrectly calculated for normal search.
For advanced search it was working as expected.
This was making searched entries pagination behave incorrectly.
2017-07-25 18:41:12 +02:00
AMOS bot 34e9b90b7a Automatically generated installer lang files 2017-07-26 00:07:06 +08:00
Juan Leyva be4bdab78a MDL-59624 mod_data: Return maxcount in WS mod_data_search_entries 2017-07-25 15:55:22 +02:00
Juan Leyva 84c2a87b80 MDL-59619 mod_data: Fix get_fields WS for databases without fields 2017-07-25 14:45:10 +02:00
Dan Poltawski afa752eb12 Merge branch 'MDL-57698-master' of https://github.com/xow/moodle 2017-07-25 11:48:09 +01:00
Dan Poltawski 35699ba2ff Merge branch 'MDL-57791_master-fix3' of git://github.com/dmonllao/moodle 2017-07-25 11:37:54 +01:00
Matteo Scaramuccia 0510d5c757 MDL-59583 dml: fixed breaking change added w/ MariaDB 10.2.7+ 2017-07-25 12:36:23 +02:00
Dan Poltawski 7de5101d4e Merge branch 'MDL-58761_bad_regex_in_custom_step' of https://github.com/gthomas2/moodle 2017-07-25 11:06:27 +01:00
David Monllao 10f9517c22 Merge branch 'MDL-59453-master' of git://github.com/jleyva/moodle 2017-07-25 11:53:00 +02:00
Dan Poltawski 7a39523e0e Merge branch 'MDL-59425-master' of https://github.com/abias/moodle 2017-07-25 10:51:10 +01:00
David Monllao a2b326c232 Merge branch 'MDL-59544-master-filemanagervalidation' of git://github.com/mudrd8mz/moodle 2017-07-25 11:17:07 +02:00
David Monllao 6d6b35fd24 Merge branch 'MDL-59485' of https://github.com/IMSGlobal/moodle 2017-07-25 11:11:09 +02:00
David Monllao 55399cd776 Merge branch 'MDL-59578-master' of git://github.com/junpataleta/moodle 2017-07-25 11:09:44 +02:00
David Monllao 85e50ba405 MDL-57791 analytics: Set logstore during install
get_analytics_logstore updated to fix an edge case.
2017-07-25 11:05:03 +02:00
Dan Poltawski 69340d49dc Merge branch 'MDL-59238-master' of git://github.com/jleyva/moodle 2017-07-25 09:52:03 +01:00
Dan Poltawski a13277a740 Merge branch 'MDL-59268-master' of git://github.com/jleyva/moodle 2017-07-25 09:04:59 +01:00
Matteo Scaramuccia dae6c5dc31 MDL-59583 dml: improve perfs by unsetting the key. 2017-07-25 09:06:18 +02:00
Andrew Nicols 11b31ab857 MDL-59367 user: Documentation fix 2017-07-25 15:04:57 +08:00
Andrew Nicols e18ebf3999 Merge branch 'MDL-59367-master' of git://github.com/damyon/moodle 2017-07-25 15:02:55 +08:00
Dan Poltawski 6fc41d0241 Merge branch 'MDL-59432-master' of git://github.com/lameze/moodle 2017-07-25 07:58:23 +01:00
Dan Poltawski a1e094f9dd Merge branch 'MDL-59240-master' of git://github.com/jleyva/moodle 2017-07-25 07:31:34 +01:00
Marina Glancy 8120795233 MDL-59311 course: duplicate module rebuilds cache twice
slightly refactor duplicate_module() code so it does not rebuild course cache
twice and also we do not need to move module if it is already the last module in a section
2017-07-25 14:23:41 +08:00
Marina Glancy c07c8c6e3e MDL-59476 dml: temporary mysql tables should not use compressed rows 2017-07-25 13:49:53 +08:00
Andrew Nicols d3e69bee38 Merge branch 'MDL-56751-master' of git://github.com/jleyva/moodle 2017-07-25 10:44:05 +08:00
Andrew Nicols e392b8bb2f Merge branch 'MDL-57791_master-fix2' of git://github.com/dmonllao/moodle 2017-07-25 08:27:36 +08:00
Juan Leyva 291645f760 MDL-59238 mod_workshop: New WS mod_workshop_view_workshop 2017-07-24 18:03:37 +02:00
Juan Leyva 31496ddeba MDL-59238 mod_workshop: Move event and completion to Workshop class
The completion set_module_viewed and the course_module_viewed event
code has been moved to the workshop class.
This change is consistent with other modules (like lesson, feedback or
quiz) and it is necessary to be able to use the new method via WS.
2017-07-24 18:03:36 +02:00
Juan Leyva cd4950291f MDL-59268 mod_workshop: New WS mod_workshop_get_user_plan 2017-07-24 18:02:21 +02:00
Juan Leyva 977fdfa30b MDL-59240 mod_workshop: New WS mod_workshop_get_access_information 2017-07-24 17:59:41 +02:00
Dan Poltawski e3f17b9fdb Merge branch 'MDL-59436-master' of git://github.com/junpataleta/moodle 2017-07-24 16:55:54 +01:00
Ruslan Kabalin e5ece45e84 MDL-59273 core: Remove mailto links support in clean_param. 2017-07-24 16:51:55 +01:00
David Monllao 466f683aa6 MDL-57791 analytics: Compatibility with oracle
Also moved predictions test to analytics/tests/prediction_test.php
2017-07-24 17:49:09 +02:00
Andrew Davidson 9c631e9408 MDL-59499 coursemanagement: Rewitten expand and collapse
Also replace M.util.get_string() calls with core/str module
2017-07-24 13:53:55 +02:00
Andrew Davidson d040476723 MDL-59499 - Fixed collapsing category javascript to use template rendering 2017-07-24 13:50:56 +02:00
David Monllao 87d1c6134f Merge branch 'MDL-57945-master' of git://github.com/danpoltawski/moodle 2017-07-24 13:24:31 +02:00
Dan Poltawski 4364fdb537 Merge branch 'MDL-59237-master' of git://github.com/jleyva/moodle 2017-07-24 12:15:52 +01:00
Dan Poltawski eb5d54a09a MDL-57945 css: remove no-browser-hacks ignores
The rule has been removed
2017-07-24 12:08:28 +01:00
David Monllao b4e55d3a37 Merge branch 'MDL-59509-master' of git://github.com/andrewnicols/moodle 2017-07-24 13:03:10 +02:00
David Monllao 8fbae27fd8 Merge branch 'MDL-59556-master' of https://github.com/abias/moodle 2017-07-24 12:35:14 +02:00
David Monllao 53565d4cf5 Merge branch 'MDL-58906-master' of git://github.com/ankitagarwal/moodle 2017-07-24 12:22:43 +02:00
Dan Poltawski 13b7c4fe79 Merge branch 'MDL-57791_master-fix1' of git://github.com/dmonllao/moodle 2017-07-24 10:04:56 +01:00
Dan Poltawski 9c0cdc069b Merge branch 'MDL-59572-master' of git://github.com/andrewnicols/moodle 2017-07-24 09:54:39 +01:00
David Monllao 382a089052 MDL-57791 tests: Restore logstores pre-test state 2017-07-24 10:43:04 +02:00
Dan Poltawski 3586887eb6 Merge branch 'MDL-58174-master' of https://github.com/abias/moodle 2017-07-24 09:05:19 +01:00
Andrew Nicols 680732844c Merge branch 'wip-MDL-38129-master' of git://github.com/marinaglancy/moodle 2017-07-24 15:03:30 +08:00
Andrew Nicols 7b1c6374c9 Merge branch 'analytics-34' of git://github.com/dmonllao/moodle 2017-07-24 14:38:46 +08:00
David Monllao e10b29ed0c MDL-57791 tool_analytics: From tool_models to tool_analytics 2017-07-24 08:37:03 +02:00
David Monllao 690ad8759d MDL-57791 analytics: Fixes during integration review
This commit includes the following changes:
- cibot complains fixes
- removed randomly failing test
- fixed course_dropout return
- other minor fixes
2017-07-24 08:37:03 +02:00
David Monllao 950b1d78bd MDL-57791 analytics: Remove reference to removed config var 2017-07-24 08:37:02 +02:00
David Monllao 98b2f06fe7 MDL-57791 mlbackend_php: Minimum 2 samples per target value 2017-07-24 08:37:02 +02:00
David Monllao ee345551d6 MDL-57791 analytics: No API calls during upgrades 2017-07-24 08:37:02 +02:00
David Monllao 96863d8fd4 MDL-59065 mlbackend_python: Switch references to moodlehq fork
Part of MDL-57791 epic.
2017-07-24 08:37:02 +02:00
David Monllao e709e54435 MDL-57791 analytics: Add builtin models during upgrade 2017-07-24 08:37:01 +02:00
David Monllao 08015e1895 MDL-57791 analytics: Add missing 'new' to throw
Also other code refinements. Credit to Mark Nelson.
2017-07-24 08:37:01 +02:00
David Monllao 2db6e9811b MDL-59212 analytics: Core indicators tests
Part of MDL-57791 epic.
2017-07-24 08:37:01 +02:00
David Monllao 206d7aa9ad MDL-59212 analytics: Move API uses out of analytics dir
Part of MDL-57791 epic.
2017-07-24 08:37:00 +02:00
David Monllao 21d4ae9353 MDL-59060 analytics: Allow all predictions to be retrieved
Part of MDL-57791 epic.
2017-07-24 08:37:00 +02:00
David Monllao fbc18acda0 MDL-59212 analytics: Abstract equal parts and accum time splittings
Part of MDL-57791 epic.
2017-07-24 08:37:00 +02:00
David Monllao f67bd6af70 MDL-59212 analytics: Expand unit test coverage
Part of MDL-57791 epic.
2017-07-24 08:36:59 +02:00
Damyon Wiese 68bfe1de40 MDL-59060 analytics: Add paging to insights report
Part of MDL-57791 epic.
2017-07-24 08:36:59 +02:00
David Monllao b3d6879489 MDL-59212 analytics: Analyser and static methods tests
Part of MDL-57791 epic.
2017-07-24 08:36:59 +02:00
David Monllao 3a396286b1 MDL-57791 analytics: Always absolute full class names
Some extra tiny changes as well.
2017-07-24 08:36:50 +02:00
David Monllao 1cc2b4bac3 MDL-57791 analytics: Second review round 2017-07-24 08:36:50 +02:00
David Monllao 413f19bc49 MDL-59211 analytics: Make cibot happy
Part of MDL-57791 epic.
2017-07-24 08:36:49 +02:00
David Monllao 1611308b58 MDL-57791 analytics: Changes after review
- Split model::predict in parts
- JS promises updated according to eslint-plugin-promise
- New API methods replacing direct DB queries
- Reduce insights nav link display cost
- Increase time limit as well as memory for big processes
- Move prediction action event to core
- Dataset write locking and others
- Refine last time range end time
- Removed dodgy splitting method id to int
- Replace admin_setting_predictor output_html overwrite for write_setting overwrite
- New APIs for access control
- Discard invalid samples also during prediction
2017-07-24 08:36:49 +02:00
David Monllao 584ffa4ffc MDL-57791 analytics: Replace sql queries for API calls 2017-07-24 08:36:49 +02:00
David Monllao acb14d08f6 MDL-57791 insights: Templates examples 2017-07-24 08:36:48 +02:00
David Monllao 27ae9af4ba MDL-57791 analytics: No UI in calculables APIs 2017-07-24 08:36:48 +02:00
David Monllao 3a217fc394 MDL-57791 analytics: Replace settings by get_archetype_roles 2017-07-24 08:36:48 +02:00
Ankit Agarwal f39cebbb3c MDL-59119 analytics: Fix references to wrong var
Part of MDL-57791 epic.
2017-07-24 08:36:47 +02:00
David Monllao 0045726d78 MDL-59079 analytics: Restore low social breadth level
Until those activities have feedback_viewed (or friends) methods.

Part of MDL-57791 epic.
2017-07-24 08:36:47 +02:00
David Monllao 55c3845c23 MDL-59095 analytics: Update to use feedback_viewed API
Part of MDL-57791 epic.
2017-07-24 08:36:47 +02:00
David Monllao cad362520f MDL-59010 analytics: Logstores initialised during tests
Part of MDL-57791 epic.
2017-07-24 08:36:47 +02:00
David Monllao f67f35f324 MDL-59010 analytics: Direct db calls to logging API
Part of MDL-57791 epic.
2017-07-24 08:36:46 +02:00
David Monllao 58f86c4cc5 MDL-59174 enrollib: More flexibility for enrol_get_course_users
Part of MDL-57791 epic.
2017-07-24 08:36:46 +02:00
David Monllao 8970ff91bb MDL-59174 analytics: Analyser queries to enrollib
Part of MDL-57791 epic.
2017-07-24 08:36:46 +02:00
David Monllao bd164083eb MDL-59057 analytics: Unit test fixes
Updating tests according to courses - site_courses analysers change.

Part of MDL-57791 epic.
2017-07-24 08:36:45 +02:00
David Monllao 20b77f9b63 MDL-59057 analytics: Split up course analyser in 2
One at course level so teachers can get insights and another
one at system level so the insights go to the site admin.

Part of MDL-57791 epic.
2017-07-24 08:36:45 +02:00
David Monllao 5d7f06f4c8 MDL-59057 analytics: Get rid of week_before_course_start
It is useless at site level. It can be useful at course level but
I removed it in favour of single_range + is_valid_*

Part of MDL-57791 epic.
2017-07-24 08:36:45 +02:00
David Monllao d8327b60b0 MDL-57791 analytics: Delete should be an instance method 2017-07-24 08:36:44 +02:00
David Monllao f9e7447f42 MDL-57791 insights: Clarify insights-prediction boundaries 2017-07-24 08:36:44 +02:00
David Monllao 1a8461390b MDL-59057 analytics: no_teaching model fixes
Part of MDL-57791 epic.
2017-07-24 08:36:44 +02:00
David Monllao b0c2492906 MDL-59057 analytics: Standarize indicators and targets ids
Part of MDL-57791 epic.
2017-07-24 08:36:43 +02:00
David Monllao e499074f39 MDL-59057 analytics: Adapt tests to static models API changes
Part of MDL-57791 epic.
2017-07-24 08:36:43 +02:00
David Monllao fba4052685 MDL-59057 enrol: New enrol API method - by_ue_id
Part of MDL-57791 epic.
2017-07-24 08:36:43 +02:00
David Monllao 357507b4e6 MDL-59057 analytics: static models changes
Part of MDL-57791 epic.
2017-07-24 08:36:33 +02:00
David Monllao a40952d384 MDL-59057 analytics: Introduce static models
Part of MDL-57791 epic.
2017-07-24 08:36:32 +02:00
David Monllao 2834ea9611 MDL-57791 analytics: Increase time splitting field size 2017-07-24 08:36:22 +02:00
David Monllao d16cf374eb MDL-59162 tool_models: Remove dependant models on uninstall
Part of MDL-57791 epic.
2017-07-24 08:36:21 +02:00
David Monllao 9ad87761ef MDL-59117 quiz: Move quiz indicators to the correct location
Part of MDL-57791 epic.
2017-07-24 08:36:21 +02:00
Ankit Agarwal 5846c72c4d MDL-59117 core_analytics: Move all indicators to respective modules
Part of MDL-57791 epic.
2017-07-24 08:36:21 +02:00
David Monllao ebd55f666d MDL-57791 analytics: Ignored new 3rd party lib 2017-07-24 08:36:20 +02:00
David Monllao b94dbb5561 MDL-57791 analytics: Remove references to project inspire 2017-07-24 08:36:20 +02:00
David Monllao db3252c18d MDL-59152 mlbackend_php: Check PHP version
Part of MDL-57791 epic.
2017-07-24 08:36:20 +02:00
David Monllao ad7a4d3521 MDL-57791 mlbackend_php: Remove unnecessary files 2017-07-24 08:36:19 +02:00
David Monllao 16f379a197 MDL-57791 analytics: Build JS module 2017-07-24 08:36:19 +02:00
David Monllao 8de0d1da61 MDL-57791 testing: Switch to analytics API namespace 2017-07-24 08:36:19 +02:00
David Monllao 3834630813 MDL-57791 testing: Add analytics test suite 2017-07-24 08:36:18 +02:00
David Monllao f96488df66 MDL-57791 testing: Add missing cachedef lang string 2017-07-24 08:36:18 +02:00
Ankit Agarwal 3c305df1de MDL-59079 core_analytics: Add social level 2 to various activities
Part of MDL-57791 epic.
2017-07-24 08:36:18 +02:00
Ankit Agarwal a6805cc8e0 MDL-59079 core_analytics: Define social levels for various activities
Part of MDL-57791 epic.
2017-07-24 08:36:17 +02:00
Ankit Agarwal 1eb6c52bf2 MDL-59079 core_analytics: Add support for more than one social level
Part of MDL-57791 epic.
2017-07-24 08:36:17 +02:00
Ankit Agarwal 022f3f07fa MDL-59079 core_analytics: Refactor community of inquiry indicators
Refactor code to introduce a new base class per activity. This would help in sharing apis
between cognitive and social classes which is heavily required for level 2 and onwards.

Part of MDL-57791 epic.
2017-07-24 08:36:17 +02:00
David Monllao 6ec2ae0f87 MDL-58859 analytics: Fix migration to core bugs and pre-migration issues
Part of MDL-57791 epic.
2017-07-24 08:36:17 +02:00
David Monllao 52c0a11022 MDL-58834 analytics: Simplify indicators names
Part of MDL-57791 epic.
2017-07-24 08:36:16 +02:00
David Monllao d2cdaf68ae MDL-58859 analytics: No enddate update if wrong guess
Part of MDL-57791 epic.
2017-07-24 08:36:16 +02:00
David Monllao fa76feff86 MDL-58859 mlbackend_php: Switch to LogisticRegression with norm.
Part of MDL-57791 epic.
2017-07-24 08:35:58 +02:00
David Monllao 589d7e8eb6 MDL-58859 mlbackend_php: Upgrade php-ml to latest version
Part of MDL-57791 epic.
2017-07-24 07:53:20 +02:00
David Monllao 40fcb365c3 MDL-58859 analytics: Subsystem and API db/ requirements added
Part of MDL-57791 epic.
2017-07-24 07:53:17 +02:00
David Monllao 8473b73581 MDL-58859 analytics: New core database tables
Part of MDL-57791 epic.
2017-07-24 07:53:13 +02:00
David Monllao ff656baeab MDL-58859 analytics: Add tests to core
Part of MDL-57791 epic.
2017-07-24 07:53:10 +02:00
David Monllao 369389c9a6 MDL-58859 analytics: Analytics API added to core
Part of MDL-57791 epic.
2017-07-24 07:53:03 +02:00
David Monllao efaf853426 MDL-58859 tool_models: Added to core
Part of MDL-57791 epic.
2017-07-24 07:52:59 +02:00
David Monllao 373b1de18c MDL-58859 report_insights: Added to core
Part of MDL-57791 epic.
2017-07-24 07:52:52 +02:00
David Monllao 25531de6e8 MDL-58859 mlbackend_python: Added to core
Part of MDL-57791 epic.
2017-07-24 07:52:18 +02:00
David Monllao 9e84757bf0 MDL-58859 mlbackend_php: Added to core
Part of MDL-57791 epic.
2017-07-24 07:51:54 +02:00
Ankit Agarwal 65f15cd277 MDL-58906 completion: Fix incorrect phpdoc 2017-07-24 11:17:54 +05:30
Ankit Agarwal abca33beb0 MDL-58906 restore: Do not backup/restore action events 2017-07-24 11:17:54 +05:30
Ankit Agarwal a4af31ded4 MDL-58906 restore: Call action event refresh task during restore 2017-07-24 11:17:53 +05:30
Andrew Nicols ba0e56c3a6 Merge branch 'MDL-59528-master' of git://github.com/junpataleta/moodle 2017-07-24 13:29:58 +08:00
Andrew Nicols 42a2f1cf4c Merge branch 'wip-MDL-59561-master' of git://github.com/abgreeve/moodle 2017-07-24 13:21:39 +08:00
Andrew Nicols 21b0554d00 Merge branch 'MDL-59490' of https://github.com/spvickers/moodle 2017-07-24 12:42:34 +08:00
Andrew Nicols aabdac6753 Merge branch 'MDL-59538-master' of git://github.com/junpataleta/moodle 2017-07-24 11:57:23 +08:00
AMOS bot 0790ca68d0 Automatically generated installer lang files 2017-07-23 00:07:57 +08:00
Mark Nielsen 197e2bca5b MDL-59602 behat: make use of new course nav steps 2017-07-21 13:50:47 -07:00
AMOS bot a80a1697b3 Automatically generated installer lang files 2017-07-22 00:07:20 +08:00
John Okely 469ffa6893 MDL-57698 mssql: Update reserve word list for generator 2017-07-21 14:41:55 +08:00
John Okely 9726144ef3 MDL-57698 sqlsrv: Unit test NOLOCK 2017-07-21 14:41:55 +08:00
John Okely b540fd1a80 MDL-57698 sqlsrv: Query temp tables with no lock 2017-07-21 14:41:54 +08:00
John Okely b1fc170b21 MDL-57698 sqlsrv: Unit test deadlock case 2017-07-21 14:41:54 +08:00
Andrew Nicols e879619477 MDL-59509 dml: sqlsrv should respect port setting
Details of how to connect to a specific port are available at
https://docs.microsoft.com/en-us/sql/connect/php/how-to-connect-on-a-specified-port
2017-07-21 13:23:17 +08:00
Jun Pataleta a43ec9ebac MDL-59538 core_calendar: PR fixes
* Fix eslint warnings about promises.
* Simplify event handling.
* Prevent double assignment of calendar subscription property for in
  core_calendar_external::get_calendar_event_by_id() for readability.

Part of MDL-59333.
2017-07-21 11:31:09 +08:00
Damyon Wiese 73d0d56284 MDL-59367 user: Tests and coding style
Add a unit test for user_roles_editable.
Coding style fixes.
Don't show duplicate roles.
2017-07-21 10:25:25 +08:00
Damyon Wiese 5d0b4765d8 MDL-59367 roles: Add roles to participants page. 2017-07-21 09:52:14 +08:00
Adrian Greeve 3a8c989137 MDL-59561 database: Update to creating new indexes in mysql.
When updating the mysql system to utf8mb4 not all tables are
converted to the row format of compressed or dynamic. If a new
index is created there is a possibility that the table could be
using compact or redundant and then an error will be shown saying
that the index size is too large. This fix handles this exception
and converts the table over to compressed.
2017-07-21 09:27:08 +08:00
Simey Lameze 52380c823c MDL-59538 core_calendar: add behat step back
Part of MDL-59333.
2017-07-21 09:01:57 +08:00
Simey Lameze 3d67e83f53 MDL-59538 core_calendar: add event source logic to calendar 2017-07-21 09:01:57 +08:00
Simey Lameze 5472bdd091 MDL-59538 core_calendar: add event source to summary template 2017-07-21 09:01:57 +08:00
Simey Lameze 57d5b1b7cf MDL-59538 core_calendar: handle event source on the webservice
Part of MDL-59333.
2017-07-21 09:01:57 +08:00
Jun Pataleta f7cd3bc0e1 MDL-59436 user: Apply default sorting for participants table 2017-07-21 08:49:18 +08:00
Jun Pataleta a9991533fa MDL-59436 user: Render city and country based on $CFG->showuseridentity
* I also fixed the redundant generation of query fields in
  user_get_participants_sql().
2017-07-21 08:46:23 +08:00
Jun Pataleta 7a22e49e05 MDL-59436 admin: Add city and country to $CFG->showuseridentity 2017-07-21 08:46:12 +08:00
Jun Pataleta c5d59db9a6 MDL-59528 user: Render user picture link with user's fullname 2017-07-21 08:45:31 +08:00
Jun Pataleta 3b1eba069e MDL-59528 core: Add option to display fullname beside user picture 2017-07-21 08:45:31 +08:00
AMOS bot b6bf0e4210 Automatically generated installer lang files 2017-07-21 00:06:26 +08:00
Dan Poltawski 229ae617c5 weekly release 3.4dev 2017-07-20 13:20:46 +01:00
Dan Poltawski b6da40deb4 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-07-20 13:20:43 +01:00
Dan Poltawski b7e26ad2dc MDL-57945 npm: commit lockfile changes frm npm v5.3.0
Sadly npm keep altering the lockfile format see - MDL-59582
2017-07-20 11:15:37 +01:00
David Balch 8fb9a27170 MDL-30634 auth_ldap: Assign arbitrary system roles via LDAP sync.
Loosely based on a 2.7 branch by Mark Johnson.
2017-07-20 10:00:36 +01:00
Marco Ferrante a86dbfbb3d MDL-59432 auth_db: add aliases to field mapping query
This patch fixes an issue with mapping different internal fields
to the same external field.
2017-07-20 14:57:39 +08:00
Andrew Nicols 43fd867cc3 Merge branch 'MDL-59527-master-fix1' of http://github.com/damyon/moodle 2017-07-20 10:42:31 +08:00
Andrew Nicols 103cd4d394 Merge branch 'wip-MDL-57649-master-fix2' of git://github.com/abgreeve/moodle 2017-07-20 10:22:25 +08:00
Adrian Greeve 7b78154e39 MDL-57649 mod_lesson: Improvement to upgrade query.
We only need one record for each filearea that we
are removing.
2017-07-20 09:57:25 +08:00
Damyon Wiese ddc1482026 MDL-59527 autocomplete: Don't fetch ajax twice 2017-07-20 09:52:05 +08:00
Jun Pataleta 71e2a34192 MDL-59578 core: Remove unnecessary steps in alpha_chooser.feature
* The steps at the end of the Background scenario don't make sense and
  just adds to the execution time of the test.
2017-07-20 09:43:48 +08:00
AMOS bot 990a50a36c Automatically generated installer lang files 2017-07-20 00:06:11 +08:00
Juan Leyva 9f1ab2db6d MDL-59237 mod_workshop: New WS get_workshops_by_courses 2017-07-19 16:35:59 +01:00
Dan Poltawski 0a023e5fc7 MDL-57945 stylelint: use csstree to replace some rules
Ironically we have to reverse the change from e63d89a5 because
this linter is more clever..
2017-07-19 14:29:56 +01:00
Dan Poltawski 09074c91d0 MDL-57945 stylelint: Upgrade 7.12.0
This stylelint is consolodating and focusing the project
so there are some rule deprecations without real alternatives yet.
2017-07-19 13:45:47 +01:00
Dan Poltawski dda72b9d56 Merge branch 'MDL-59515' of https://github.com/NeillM/moodle 2017-07-19 13:11:23 +01:00
Neill Magill 5b40aaa5e4 MDL-59515 messages: arguments behave differently with single promise
Seems that objects are not borked by when in the same way as arrays when
there is only a single promise.
2017-07-19 11:52:15 +01:00
Dan Poltawski 00589c1f5a Merge branch 'MDL-59515' of https://github.com/NeillM/moodle 2017-07-19 11:16:00 +01:00
Neill Magill 6e594ff687 MDL-59515 messages: arguments behave differently with single promise
When only a single promise is passed the returned array is flattened.
2017-07-19 10:10:25 +01:00
Dan Poltawski 0224022b08 Merge branch 'wip-MDL-57649-master-fix' of git://github.com/abgreeve/moodle 2017-07-19 09:33:07 +01:00
Adrian Greeve 23e2a9cb7c MDL-57649 mod_lesson: Additional refinement to upgrade script. 2017-07-19 15:44:42 +08:00
Dan Poltawski 088494fd04 Merge branch 'MDL-59569-master' of git://github.com/andrewnicols/moodle 2017-07-19 08:43:56 +01:00
Andrew Nicols 9790a9b583 MDL-59572 dml: Call error_log for AJAX/WS calls 2017-07-19 12:49:15 +08:00
Andrew Nicols 86be85dde7 MDL-59569 travis: Remove haveged 2017-07-19 09:57:14 +08:00
Juan Leyva 41860b7e9e MDL-59453 mod_lesson: Return lesson contents without html cleaning
This is consistent to what is done in the web interface.
2017-07-18 12:24:01 +01:00
David Monllao 95d8e61161 Merge branch 'MDL-59460_master' of git://github.com/dmonllao/moodle 2017-07-18 12:23:37 +02:00
David Monllao 3f6e42b611 MDL-59460 mod_forum: Ensure CFG->forum_subscription is set 2017-07-18 12:21:42 +02:00
Luca Bösch 58affdc80e MDL-59460 mod_forum: default setting for Subscription mode.
Allow to set a Subscription mode default.
2017-07-18 12:21:37 +02:00
Dan Poltawski d2f3823342 MDL-59255 grunt: build ignorefiles 2017-07-18 10:54:58 +01:00
Dan Poltawski faa52511c3 Merge branch 'MDL-59255-master' of github.com:lucisgit/moodle 2017-07-18 10:54:05 +01:00
Ruslan Kabalin 362be64a2b MDL-59255 core: Extend test_clean_param_url.
Add rtmp:// test and some more URL validity tests since we made changes in
validateUrlSyntax function.
2017-07-18 10:29:07 +01:00
Ruslan Kabalin b03ffb099e MDL-59255 core: Make core_media_manager support RTMP. 2017-07-18 10:29:07 +01:00
Ruslan Kabalin 646e8bf668 MDL-59255 core: Add rtmp:// support to validateUrlSyntax function. 2017-07-18 10:29:07 +01:00
David Monllao f14987bc24 Merge branch 'wip-MDL-39471-master' of git://github.com/abgreeve/moodle 2017-07-18 10:48:37 +02:00
Dan Poltawski df57a201c9 Merge branch 'm34_MDL-59109_Backup_Missing_AutoCommit' of https://github.com/scara/moodle 2017-07-18 09:47:56 +01:00
Dan Poltawski 7718d3fba4 Merge branch 'MDL-50925-master' of git://github.com/andrewnicols/moodle 2017-07-18 08:53:43 +01:00
Dan Poltawski 9adc505b9f Merge branch 'MDL-59418-master' of https://github.com/Kathrin84/moodle 2017-07-18 08:52:10 +01:00
David Monllao d96508b610 Merge branch 'MDL-59521-master' of git://github.com/lameze/moodle 2017-07-18 09:41:28 +02:00
David Monllao d0f28cf058 Merge branch 'MDL-57991-master' of https://github.com/micaherne/moodle 2017-07-18 09:40:59 +02:00
David Monllao c9f2924941 Merge branch 'wip-MDL-58362-master' of git://github.com/marinaglancy/moodle 2017-07-18 09:08:30 +02:00
David Monllao a0f12fcafc Merge branch 'master_MDL-58863' of https://github.com/danmarsden/moodle 2017-07-18 09:03:35 +02:00
David Monllao ed539f8233 Merge branch 'MDL-59407-folder-remember-view-mode' of https://github.com/vvzh/moodle 2017-07-18 08:58:24 +02:00
Andrew Nicols 8d46ce8107 MDL-50925 auth: Remove old README
This is much better and more accurately documented in the Moodle Docs at
https://docs.moodle.org/dev/Authentication_plugins.
2017-07-18 14:49:09 +08:00
Andrew Nicols abc25c01b8 MDL-50925 auth_imap: Remove from core and into plugins DB 2017-07-18 14:49:08 +08:00
Andrew Nicols 36eaa96332 MDL-50925 auth_pop3: Remove from core and into plugins DB 2017-07-18 14:48:51 +08:00
Andrew Nicols f9d12a2d1e MDL-50925 auth_pam: Remove from core and into plugins DB 2017-07-18 14:48:38 +08:00
Andrew Nicols db6ba96510 MDL-50925 auth_nntp: Remove from core and into plugins DB 2017-07-18 14:48:23 +08:00
Andrew Nicols 032194970b MDL-50925 auth_fc: Remove from core and into plugins DB 2017-07-18 14:47:56 +08:00
David Monllao f510788b44 Merge branch 'MDL-59150-master-3' of git://github.com/ryanwyllie/moodle 2017-07-18 08:27:13 +02:00
Ryan Wyllie 0f268f5db9 MDL-59150 admin: build site theme after CLI install or upgrade 2017-07-18 06:13:07 +00:00
Marina Glancy 1ef14a5aec MDL-38129 gradeexport: custom profile fields case problem
Do not use custom pfofile field name as a field alias in DB query, use field id instead.
DML lowercases all column aliases and fields with uppercase letters no longer match.
2017-07-18 11:03:22 +08:00
AMOS bot 64562f309a Automatically generated installer lang files 2017-07-18 00:06:34 +08:00
Dan Poltawski 7af4771d63 Merge branch 'MDL-59323-master' of https://github.com/sammarshallou/moodle 2017-07-17 16:40:20 +02:00
David Monllao 2c3a34f0c6 MDL-59411 course: Fix unavailable typo 2017-07-17 16:40:00 +02:00
David Monllao bf442807f5 Merge branch 'wip-MDL-59411-master' of git://github.com/marinaglancy/moodle 2017-07-17 15:48:12 +02:00
Dan Poltawski efc1d2bb6b Merge branch 'MDL-59475-master-cas' of git://github.com/lameze/moodle 2017-07-17 14:18:21 +01:00
David Monllao 7d04eaca5c Merge branch 'MDL-59527-master' of git://github.com/damyon/moodle 2017-07-17 14:07:59 +02:00
Dan Poltawski 2ce7fad864 MDL-59548 behat: fix trailing whitespace 2017-07-17 11:30:28 +01:00
Dan Poltawski c899bfb088 Merge branch 'MDL-59548-master' of git://github.com/damyon/moodle 2017-07-17 11:21:56 +01:00
Alexander Bias 85d87d11c0 MDL-58174 themes: Make build_action_menu_from_navigation() protected 2017-07-17 11:17:26 +02:00
David Monllao 57f869c184 Merge branch 'wip-MDL-59377-master-3' of git://github.com/marinaglancy/moodle 2017-07-17 11:04:02 +02:00
Alexander Bias 46676b7633 MDL-59556 themes: Re-sort /theme/upgrade.txt 2017-07-17 10:51:54 +02:00
Alexander Bias d7d2a72faf MDL-59425 themes: Expose navigation node properties in boost flat nav 2017-07-17 10:46:45 +02:00
Dan Poltawski 1250166338 Merge branch 'MDL-59515' of https://github.com/NeillM/moodle 2017-07-17 09:42:27 +01:00
Dan Poltawski 540177523f Merge branch 'MDL-59442-master' of git://github.com/lameze/moodle 2017-07-17 09:16:29 +01:00
David Monllao 9e3b60c95d Merge branch 'MDL-59539-master' of git://github.com/tobiasreischmann/moodle 2017-07-17 10:14:55 +02:00
David Monllao 2764cd594b Merge branch 'MDL-59068-master' of git://github.com/dpalou/moodle 2017-07-17 10:09:35 +02:00
Dan Poltawski 16c903acc0 Merge branch 'wip-MDL-57649-master' of git://github.com/abgreeve/moodle 2017-07-17 09:01:05 +01:00
David Monllao 35d27924f9 Merge branch 'MDL-54607-master' of git://github.com/ankitagarwal/moodle 2017-07-17 09:31:53 +02:00
David Monllao 3ea76efa00 Merge branch 'MDL-58948_chrome_mink_driver' of https://github.com/mrmark/moodle 2017-07-17 09:10:25 +02:00
David Monllao 05c616d0b1 Merge branch 'wip-MDL-55912-master' of git://github.com/abgreeve/moodle 2017-07-17 09:09:03 +02:00
Marina Glancy 1bc9ef82c9 MDL-59377 mod_label: set showdescription to be always 1 2017-07-17 13:43:51 +08:00
Marina Glancy 66347456ec MDL-59377 course: when module intro is visible display embedded files
Even when course module is not available the intro text can still be visible on the
course page. In this case the availability restriction is displayed to the student
but link to the activity is not available
2017-07-17 13:42:08 +08:00
Andrew Nicols 5ee30c0fb4 Merge branch 'mdl55979-master' of https://github.com/tlock/moodle 2017-07-17 12:29:00 +08:00
Damyon Wiese dda64b6f45 MDL-59548 behat: Helpers for autocomplete
Improve the helpers for autocomplete so that:
a) the set field for an auto complete will automatically close the suggestions list.
b) add a new helper to open the suggestions list
c) move the helper for clicking on an element in the suggestions list from tool_lp to core.
2017-07-17 11:10:15 +08:00
Andrew Nicols 5a842a92b3 Merge branch 'MDL-57476_file_callbacks' of https://github.com/gthomas2/moodle 2017-07-17 10:31:28 +08:00
Andrew Nicols cdbfc8d3ef Merge branch 'MDL-59371-master' of git://github.com/lameze/moodle 2017-07-17 10:23:06 +08:00
Adrian Greeve c802d23dc8 MDL-39471 mod_assign: Comment visibility in blind marking.
Students can now see the identity of anyone making comments.
Markers on the otherhand can only see the identity of themselves
when making comments.
2017-07-17 09:25:04 +08:00
Adrian Greeve 0163e5d276 MDL-55912 mod_assign: Set grader details to the correct user. 2017-07-17 09:21:39 +08:00
Adrian Greeve 63cf03265b MDL-57649 mod_lesson: Delete answer files correctly.
The files associated with answers and responses were
not being deleted due to the fact that the wrong itemid
was being used.
2017-07-17 09:15:21 +08:00
Simey Lameze 548f5cf04d MDL-59521 core_calendar: conditionally hide description header 2017-07-17 08:20:18 +08:00
AMOS bot b040bb6775 Automatically generated installer lang files 2017-07-17 00:06:18 +08:00
Matteo Scaramuccia 746702c88d MDL-59109 scorm: Save autocommit setting in the backup. 2017-07-15 00:10:39 +02:00
Vladimir Zhirov 0398bbe675 MDL-59407 folder resource: remember view mode using preference API 2017-07-15 00:46:36 +04:00
David Mudrák 0fa2b2ee88 MDL-59544 workshop: Drop the custom validation of allowed file types
Now that the validation is provided directly by the filemanager, we do
not need to do the same here.

Note that existing Behat tests are left untouched to make sure there is
no regression.
2017-07-14 20:38:55 +02:00
David Mudrák 1661204a6c MDL-59544 forms: Implicit validation of the filemanager and filepicker
The patch adds an extra validation step against accepted file types.
Even if the repository checks are bypassed (as illustrated in the
Behat), the invalid file is still caught by the element's validation
rules.

It turns out there is no way to test the filepicker element easily via
Behat. Additionally, it provides the renaming features only with
disabled javascript. So the Behat tests are provided for the filemanager
only.

AMOS BEGIN
 CPY [err_wrongfileextension,mod_workshop],[err_wrongfileextension,core_form]
AMOS END
2017-07-14 20:38:54 +02:00
Neill Magill a5fbe27d8e MDL-59515 messages: Order of popup messages should be predictable
Before this change the messages in the message popup would be loaded
onto a page in a random order, based on the speed at which the user's
browser was able to render each template.

This causes the messages to be attached to the page sequentially, after
they have all been rendered asynchronously.
2017-07-14 15:50:48 +01:00
gthomas2 023037dc9e MDL-57476 file: Add CUD callbacks 2017-07-14 13:51:51 +01:00
Dan Poltawski 16a68a2f76 weekly release 3.4dev 2017-07-14 11:46:44 +01:00
Dan Poltawski de1c03ccce NOBUG: Fixed file access permissions 2017-07-14 11:46:43 +01:00
Dan Poltawski 5b38d0b031 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-07-14 11:46:42 +01:00
Juan Leyva 993e817576 MDL-56751 admin: New setting to set user created tokens duration
We were using a hardcoded value for 12 months.
With this change, administrators can change the duration time via a
security setting.
2017-07-14 10:24:53 +01:00
Tobias Reischmann d029841300 MDL-59539 oauth2/issuer: Changed baseurl for guessing image URL
The url, which was used for guessing the image, was queried with the
key 'discoveryurl', which is not defined in the context of an issuer.
The baseurl should be sufficient to retrieve the favicon.ico from a
server. That's why the key for was changed from 'discoveryurl' to
'baseurl'.
2017-07-14 11:10:50 +02:00
Marina Glancy 884983723a MDL-58362 registration: correctly retrieve registration values 2017-07-14 16:34:33 +08:00
Kathrin Osswald b3b938bfbc MDL-59418 theme Boost: Improve visibility of maintenance warning 2017-07-14 09:53:46 +02:00
Dan Poltawski 009dcd91fd Merge branch 'MDL-59534' of git://github.com/stronk7/moodle 2017-07-14 07:16:05 +01:00
Damyon Wiese 47dd535097 MDL-59527 forms: Race cond with ajax autocomplete
Sometimes (rarely) the auto complete will show "No suggestions" when there are valid suggestions.
2017-07-14 12:41:14 +08:00
Simey Lameze 2a6224c273 MDL-59475 auth_cas: update phpCAS to version 1.3.5 2017-07-14 12:19:30 +08:00
Andrew Nicols de1d92459e Merge branch 'MDL-59383-master-behat-failure' of https://github.com/lameze/moodle 2017-07-14 11:52:53 +08:00
Simey Lameze ebebbc442c MDL-59383 core_calendar: remove failing behat steps 2017-07-14 11:42:56 +08:00
Ankit Agarwal 8aaba9e47d MDL-54607 calendar: Export 0 duration events properly
Thanks to Paul Prencis for initial suggestion of this patch
2017-07-14 09:07:26 +05:30
Ankit Agarwal 0de211094a MDL-54607 calendar: Update benu lib to allow for instantaneous events 2017-07-14 09:07:08 +05:30
Eloy Lafuente (stronk7) 1d52027e57 MDL-59534 feedback: avoid some randomness with behat test failures 2017-07-13 20:08:33 +02:00
Juan Leyva 56da66adb6 MDL-59532 mod_lesson: Fix check_updates_since with groups
There were a couple of incorrect SQL queries when the user calling the
function is a teacher and the activity uses separate groups.
2017-07-13 16:18:57 +01:00
sam marshall e80e4778c5 MDL-58957 Global search: fix failing text compare in Oracle 2017-07-13 14:41:37 +01:00
sam marshall 12f7d77cc6 MDL-59323 XMLDB: Check defaults work incorrectly with char fields 2017-07-13 12:05:28 +01:00
sam marshall 94904cc323 MDL-59323 XMLDB: Code style fixes 2017-07-13 12:01:42 +01:00
Dan Poltawski 671971775f Merge branch 'MDL-59437-master' of git://github.com/damyon/moodle 2017-07-13 09:16:19 +01:00
Simey Lameze 3a3d8c487b MDL-59442 core_course: apply css classes to activity icons 2017-07-13 15:23:22 +08:00
Andrew Nicols f6a7d54f24 Merge branch 'MDL-59365-master-fix2' of http://github.com/damyon/moodle 2017-07-13 13:04:08 +08:00
Andrew Nicols e45c3ae9b2 Merge branch 'MDL-58957-master-fix' of https://github.com/lameze/moodle 2017-07-13 12:58:27 +08:00
Damyon Wiese b7386d0034 MDL-59437 participants: Add sort/pagination behat 2017-07-13 11:48:43 +08:00
Eloy Lafuente (stronk7) d131489e3d MDL-59437 behat: avoid using participants page for tag tests
While participants page is being refactored, there are links (fullname)
going and changing, leading to inestability in tests that were using
those links.

When possible, provide an alternative, stable path, in this case, the
tags page itself can be used to jump to the user profile, keeping the
tag tests better isolated.
2017-07-13 11:48:35 +08:00
Eloy Lafuente (stronk7) 28fcc33944 MDL-59437 behat: old "edit" cog to go to enrollments page is gone
There use to be a little cot to easily navigate from the
participations page to the enrollments page.

In boost it was already hidden, but present and the test was still
working (non-javascript).

With the conversion, the functionality is 100% gone so, right now,
the only way to navigate from participats to enrollments (that will
dissappear with with unification), is using the course admin cog.
2017-07-13 11:48:28 +08:00
Simey Lameze 54ff9a4bb8 MDL-58957 theme_boost: add rule to prevent target conflict 2017-07-13 11:10:36 +08:00
Simey Lameze a14907faa8 MDL-58957 core_block: fix link to site home 2017-07-13 11:10:36 +08:00
Damyon Wiese af6d23853a MDL-59365 enrol: Behat fixes
Fixes for the new enrol users popup with behat.
2017-07-13 10:55:01 +08:00
David Monllao 002ac8e9fe MDL-59368 users: Clear whitespace 2017-07-12 16:53:55 +02:00
David Monllao ed45119212 MDL-59368 users: Fix incorrect reference 2017-07-12 16:47:20 +02:00
David Monllao eac6f51590 Merge branch 'MDL-59368-master' of git://github.com/damyon/moodle 2017-07-12 16:46:49 +02:00
David Monllao 9e548756cf Merge branch 'MDL-59384-master-final' of https://github.com/lameze/moodle 2017-07-12 14:12:53 +02:00
Simey Lameze 38b325a3e6 MDL-59384 core_calendar: add delete event logic to modal
Part of MDL-59333.
2017-07-12 20:03:04 +08:00
Simey Lameze ea0368d599 MDL-59384 core_calendar: add calendar event amd module 2017-07-12 20:00:37 +08:00
Simey Lameze 1e8e6e132c MDL-59384 core_calendar: add necessary data-* attributes
Part of MDL-59333.
2017-07-12 19:58:57 +08:00
Simey Lameze 97c4a29d41 MDL-59384 core_modal: trigger bodyRendered event
Part of MDL-59333.
2017-07-12 19:57:22 +08:00
Simey Lameze e4aff89a16 MDL-59384 core_calendar: add deleteEvent function to repository
Part of MDL-59333.
2017-07-12 19:56:27 +08:00
Simey Lameze 542f5afacc MDL-59384 core_calendar: make delete_calendar_events ajax visible
Part of MDL-59333.
2017-07-12 19:55:24 +08:00
Dan Poltawski eff0303ad8 Merge branch 'MDL-56486-master-workshopfiletypes' of git://github.com/mudrd8mz/moodle 2017-07-12 12:22:32 +01:00
Simey Lameze f02e119afd MDL-59383 core_modal: trigger event on modal module 2017-07-12 18:57:55 +08:00
Simey Lameze e1c811609b MDL-59383 core_calendar: change modal body rendering 2017-07-12 18:56:45 +08:00
Simey Lameze 8a5c06b705 MDL-59383 core_calendar: proper handling of description on webservice 2017-07-12 18:56:30 +08:00
Simey Lameze f2e981e869 MDL-59383 core_calendar: css fixes to summary modal body 2017-07-12 18:56:14 +08:00
Simey Lameze d4a87aa370 MDL-59383 core_modal: trigger event on modal module 2017-07-12 18:28:11 +08:00
David Mudrák 6218889e2d MDL-56486 workshop: Do not rely on the button implementation in behat
It turned out that behat's "I should see ..." does not work for buttons
rendered as `<input>` elements so this assertion worked only in Boost
where the button is rendered as `<button>` but not in Clean.

But we do not really need this check here. All we need is to make sure
that the form has been saved successfully. For which, checking for the
text on the page is enough.

p.s. Another mistake of mine to not double-check behat on both standard
themes. Sigh ...
2017-07-12 11:58:08 +02:00
Simey Lameze 5d6b189574 MDL-59371 gradereport_overview: allow auth user role to view report 2017-07-12 17:52:03 +08:00
David Mudrák 581710e278 MDL-56486 workshop: Fix behat scenario for submission attachments
This Behat scenario was not failing only because it actually relied on
the bug in the wrongly set accepted_types for submission attachments.
Now that the previous commit has fixed that bug, this scenario started
to fail correctly.

We need to do the same trick here as we are doing in the latter
scenario: we first upload a valid file to bypass the upload repository
checks, and rename it before submitting the form. That allows us to see
that the invalid file is caught finally.

p.s. It was a silly mistake of mine. I should had been wondering why
the same procedure worked for one field and not for the other. I would
spot the bug with wrong accepted_types earlier.
2017-07-12 11:39:49 +02:00
Dan Poltawski 331785d0f7 Merge branch 'MDL-56486-master-workshopfiletypes' of git://github.com/mudrd8mz/moodle 2017-07-12 09:50:36 +01:00
David Mudrák afa6deec48 MDL-56486 workshop: Fix accepted_types for submission attachments
It was a copy&paste mistake that the accepted_types option for the
submission attachments used the value configured for overall feedback
attachments.

Credit goes to Marina Glancy for catching this during testing.
2017-07-12 09:57:06 +02:00
Dan Poltawski f409b3984b Merge branch 'MDL-59365-master-fix1' of http://github.com/damyon/moodle 2017-07-12 08:15:38 +01:00
David Monllao 347be35d75 Merge branch 'MDL-59383-fix-1' of https://github.com/lameze/moodle 2017-07-12 09:07:03 +02:00
Simey Lameze 19ab239f18 MDL-59383 core_calendar: change modal body rendering 2017-07-12 15:00:30 +08:00
Simey Lameze f405284728 MDL-59383 core_calendar: proper handling of description on webservice 2017-07-12 15:00:29 +08:00
Simey Lameze 6133141798 MDL-59383 core_calendar: css fixes to summary modal body 2017-07-12 15:00:29 +08:00
Damyon Wiese 2cc2001bef MDL-59365 enrol: Teachers can see other users on the site
In order to enrol new users into a course, you need to see users who are not in the current course.
2017-07-12 14:47:11 +08:00
David Monllao 5e961676c3 Merge branch 'MDL-59431-master-fix2' of git://github.com/andrewnicols/moodle 2017-07-12 08:34:30 +02:00
Simey Lameze f6f2e3fd4f MDL-59371 gradereport_overview: add missing course id to url 2017-07-12 14:09:22 +08:00
Andrew Nicols bd5416aab5 Merge branch 'wip-MDL-57462-master-fix' of git://github.com/abgreeve/moodle 2017-07-12 10:49:59 +08:00
Damyon Wiese bfd42c1a88 MDL-59368 groups: More phpunit coverage
Cover $withmembers parameter to groups_get_all_groups with a unit test.
2017-07-12 10:41:32 +08:00
Adrian Greeve 24a7acf354 MDL-57432 installation: Fix to the php version check. 2017-07-12 10:39:20 +08:00
Damyon Wiese f3ecea3af4 MDL-59368 groups: Peer review fixes
* Fix coalesce on postgres.
* The edit icon's alt shows the HTML entities causing
* enrol/tests/behat/add_to_group.feature Contains a '@doit' tag which I assume is there from testing.
* group/classes/output/user_groups_editable.php
** Missing MOODLE_INTERNAL check.
** Unused variables context_system and moodle_exception.
** The PHPDocs for the constructors are wrong.
** export_for_template() returns an array, not stdClass (according to parent docs).
** Change moodle_exception to coding_exception at the beginning.
* group/lib.php
** Missing docs for core_group_inplace_editable().
* user/classes/participants_table.php
** The docs for the class variables $groups, $course and $context need a '\' beforehand as they are in a namespace.
** I would prefer $this->context = $context; and $this->groups = ... to be done at the end of the constructor with the other class variable assignments.
** You could get rid of the class variable courseid if we are setting course and use $this->course->id instead.
** The function col_groups has @param \stdclass $row but it should be $data
* lib/amd/src/form-autocomplete.js and lib/amd/src/inplace_editable.js
** Some issues here CiBot has pointed out.
* lib/classes/output/inplace_editable.php
** @see should be on a new line.
2017-07-12 10:09:09 +08:00
Damyon Wiese f746a078cb MDL-59368 groups: Postgres fix
Postgres is strict about mixing types.
2017-07-12 10:07:58 +08:00
Damyon Wiese 4aad7c2be2 MDL-59368 groups: Show no groups instead of ''
This is on the inplace editable for a users course groups.
2017-07-12 10:07:58 +08:00
Damyon Wiese 76c493b3f2 MDL-59368 groups: Add behat for new group edit 2017-07-12 10:07:58 +08:00
Damyon Wiese 090d064dda MDL-59368 enrol: Ensure remove_group_member_allowed works
Wierd rare callback that does not work in core. Still respect it in the UI.
2017-07-12 10:07:58 +08:00
Damyon Wiese 13426bae93 MDL-59368 inplace_editable: Focus on auto-complete
Also fix JS coding style and build the amd.
2017-07-12 10:07:58 +08:00
Damyon Wiese 5a90a7cabe MDL-59368 groups: Add an explicit cancel button
Autocomplete already uses Escape keyboard handler - so we can't use it to cancel an edit-inplace thing.
Make an obvious cancel button instead.
2017-07-12 10:07:57 +08:00
Damyon Wiese 2fa35b8d16 MDL-59368 groups: Inplace editing for users groups 2017-07-12 10:07:57 +08:00
Andrew Nicols 0d8ad3b500 MDL-59431 requirejs: Prioritise errors 2017-07-12 10:05:59 +08:00
Andrew Nicols d45a6d4fe3 MDL-59431 requirejs: Correct failed JS check 2017-07-12 09:45:45 +08:00
David Monllao afabbd110e Merge branch 'MDL-59039-master' of https://github.com/sammarshallou/moodle 2017-07-11 21:49:03 +02:00
sam marshall 67d6479581 MDL-59039 Global search: Allow partial indexing (in scheduled task) 2017-07-11 16:41:33 +01:00
Dan Poltawski b4a5f2b63e Merge branch 'MDL-59019-master' of git://github.com/jleyva/moodle 2017-07-11 14:06:11 +01:00
Damyon Wiese d77c73a359 MDL-59365 enrol: Use standard modal
Replace the custom footer with a standard modal.
2017-07-11 13:48:27 +01:00
Damyon Wiese 394e73ff12 MDL-59365 behat: Autocomplete fixes
The suggestion list stays open for multi-selects now. We need to close it
explicitly.
2017-07-11 13:48:27 +01:00
Damyon Wiese 2e1615f2c0 MDL-59365 eslint: Noop changes for eslint 2017-07-11 13:48:26 +01:00
Damyon Wiese a78ed71c11 MDL-59365 enrol: enrol button participants page 2017-07-11 13:48:25 +01:00
Damyon Wiese aa8909f479 MDL-59365 enrol: Make select users first
This is the most important element in the form - make it first.
2017-07-11 13:47:52 +01:00
Damyon Wiese 0fa35b1abc MDL-59365 enrol: Switch the user selector
The user selector was calling the wrong API to get the potential list of users to enrol.

Now it works.
2017-07-11 13:47:46 +01:00
Damyon Wiese 786e014c5c MDL-59365 autocomplete: Keep the suggestions open
If the list allows multiple selections, don't auto-close the suggestions list
every time something is chosen.
2017-07-11 13:47:28 +01:00
Damyon Wiese a60e8ba51e MDL-59365 enrol_manual: Rewrite the yui enrolment popup in amd
The add/roles thing was only converted to bootstrap 2/4 markup and the yui left in place.

The modal for adding users to a course was unsavable so I rewrote it with an mform in a popup, still calling
the same (barely) modified ajax script.

The webservice for searching cohorts was taken from admin/tool/lp and moved into /cohort. I added a generic "cohort"
mform element at the same time.

The webservice for searching for users was taken from the original ajax script.
2017-07-11 13:47:26 +01:00
Eloy Lafuente (stronk7) bdf31b0919 MDL-56629 dataformat_html: Adding UTF-8 charset
Also adding the HEAD tag which was missing.

(credit goes to Frédéric Massart - FMCorz, thanks!)
2017-07-11 13:43:17 +01:00
Eloy Lafuente (stronk7) 64ea4b5edd Merge branch 'MDL-54965-master' of git://github.com/tobiasreischmann/moodle 2017-07-11 13:43:16 +01:00
David Monllao e78d7cc0b1 Merge branch 'wip-MDL-59363-master' of git://github.com/marinaglancy/moodle 2017-07-11 12:36:58 +02:00
Dan Poltawski e5ca70ba1d MDL-59287 upgrade.txt: avoid misleading versions 2017-07-11 11:30:43 +01:00
Dan Poltawski 58a9d391a6 Merge branch 'wip-MDL-59287-master-v3' of git://github.com/abgreeve/moodle 2017-07-11 11:29:53 +01:00
David Monllao f938456835 Merge branch 'MDL-59431' of git://github.com/timhunt/moodle 2017-07-11 12:05:30 +02:00
David Monllao 93f2056000 Merge branch 'wip-MDL-59441-master' of git://github.com/marinaglancy/moodle 2017-07-11 11:41:03 +02:00
Dan Poltawski 58fcd0a0ed Merge branch 'MDL-56486-master-workshopfiletypes' of git://github.com/mudrd8mz/moodle 2017-07-11 10:18:48 +01:00
Dan Poltawski 229c5ec14f Merge branch 'MDL-59443-master-filetypesvalidation' of git://github.com/mudrd8mz/moodle 2017-07-11 10:16:40 +01:00
Eloy Lafuente (stronk7) f84bdb4347 Merge branch 'MDL-57432-master' of git://github.com/danpoltawski/moodle 2017-07-11 10:44:06 +02:00
David Monllao e578ab114c Merge branch 'MDL-59383-master' of git://github.com/lameze/moodle 2017-07-11 10:05:03 +02:00
Simey Lameze 0d38888e2a MDL-59383 core_calendar: make event summary display on modal
Part of MDL-59333.
2017-07-11 15:36:29 +08:00
Simey Lameze 5813d1b9f9 MDL-59383 core_calendar: add get_calendar_event_by_id webservice
Part of MDL-59333.
2017-07-11 15:36:29 +08:00
Simey Lameze fee9f355bf MDL-59383 core_calendar: add lang strings for event types
Part of MDL-59333.
2017-07-11 15:36:29 +08:00
Simey Lameze 68c3e21a89 MDL-59383 core_calendar: create summary modal templates
Part of MDL-59333.
2017-07-11 15:36:29 +08:00
Simey Lameze dfdde9ad35 MDL-59383 core_calendar: create summary modal AMD module
Part of MDL-59333.
2017-07-11 15:36:29 +08:00
Simey Lameze 385a56e33c MDL-59383 core_calendar: create calendar repository AMD module
Part of MDL-59333.
2017-07-11 15:36:28 +08:00
Simey Lameze 3b0738f04c MDL-59383 core_calendar: create main calendar AMD module
Part of MDL-59333.
2017-07-11 15:36:28 +08:00
Stephen Vickers 1bd212e860 MDL-59490 mod_lti: Prevent text wrapping
Update html_to_text method calls with a width of zero.
2017-07-10 17:01:54 +01:00
Dan Poltawski 54ef4a9f36 Merge branch 'wip-MDL-40408-master' of git://github.com/marinaglancy/moodle 2017-07-10 14:36:40 +01:00
Dan Poltawski 25a425d709 Merge branch 'wip-MDL-59262-master-2' of git://github.com/marinaglancy/moodle 2017-07-10 14:31:06 +01:00
David Monllao 0245f733b7 Merge branch 'MDL-52501' of https://github.com/NeillM/moodle 2017-07-10 14:38:27 +02:00
Dan Poltawski bf51478fce Merge branch 'MDL-59317' of https://github.com/NeillM/moodle 2017-07-10 13:28:28 +01:00
David Monllao bef9a71934 MDL-58851 lti: Fix undefined var PHP notice 2017-07-10 14:26:24 +02:00
David Monllao 7fd09e2471 Merge branch 'lti_admin' of https://github.com/baholladay/moodle 2017-07-10 14:25:24 +02:00
Bryan Holladay 1aa11df72f MDL-58851 LTI module: Add LTI admin role capability
Adding a new 'mod/lti:admin' capability and passes the LTI admin role if the user has the 'mod/lti:admin' capability.
2017-07-10 08:19:48 -04:00
David Monllao 4b0518a834 Merge branch 'MDL-58332-master' of git://github.com/ryanwyllie/moodle 2017-07-10 14:19:31 +02:00
Dan Poltawski f04b6af7d7 Merge branch 'wip-MDL-46495-master' of git://github.com/marinaglancy/moodle 2017-07-10 13:15:21 +01:00
Tobias Reischmann 3a133b3028 MDL-54965 mod_data: removed unused code in display_add_field()
Since the refactoring towards using the filepicker for file and picture
fields there are several variables, which are set but never read. Thus,
I removed them.
2017-07-10 14:14:41 +02:00
Tobias Reischmann bdf6753528 MDL-54965 mod_data: Init draft area for empty file/pic fields
When a file or picture field was added with existing records, these
records could not be saved, since the draft area was not created
properly.

Co-authored-by: Jérôme Mouneyrac <mouneyrac>
2017-07-10 14:14:41 +02:00
Eloy Lafuente (stronk7) 6248b5ba63 Merge branch 'MDL-59452-master-filetypesbehat' of git://github.com/mudrd8mz/moodle 2017-07-10 12:19:09 +02:00
Dan Poltawski 1a54672fe6 Merge branch 'MDL-58957-master' of https://github.com/sammarshallou/moodle 2017-07-10 11:15:00 +01:00
David Monllao 1d0dd2072c Merge branch 'wip-MDL-56579-master-2' of git://github.com/marinaglancy/moodle 2017-07-10 12:04:14 +02:00
Michael Aherne 8b6dcb0479 MDL-57991 media: Prevent mediaplayer taking up too much space 2017-07-10 10:15:19 +01:00
Eloy Lafuente (stronk7) f83d212bcf MDL-57432 upgrade: remove unused functions/settings from upgradelib
All these functions were used only by deleted upgrade steps
so it's safe to proceed with straight deletion, considering
them internal. Deletion has been documented in corresponding
upgrade.txt files:

- upgrade_mimetypes()
- upgrade_fix_missing_root_folders_draft()
- upgrade_minmaxgrade() and upgrade_minmaxgradestepignored setting
- upgrade_course_tags()
- atto_equation_update_librarygroup4_setting()
- mod_lti_upgrade_custom_separator()

These have been kept because continue being used by restore:

- upgrade_group_members_only()
- upgrade_extra_credit_weightoverride()
- upgrade_calculated_grade_items()
2017-07-10 09:18:56 +01:00
Eloy Lafuente (stronk7) 29af7b0b4c MDL-57432 upgrade: clean < 3.0.0 upgrade steps
This just deletes all the upgrade steps previous to 3.0.0. Some
small adjustments, like adding missing MOODLE_INTERNAL or tweaking
globals can also be applied when needed.

Also includes an upgrade step to prevent upgrading from any
version < 2015111600 (v3.0.0) as anti-cheating measure.

Next commit will get rid of/deprecate all the upgradelib functions
not used anymore in codebase.
2017-07-10 09:16:55 +01:00
Dan Poltawski d18f16032c MDL-57432 environment: raise Moodle requirement
Due to Moodle 2.7 and Moodle 3.4 not having a common compatible php version
between them to upgrade from Moodle 3.4 from Moodle 2.7 you'll need to upgrade
to a higher version first or upgrade php at the same time as upgrade,
this encourages the former.
2017-07-10 09:16:55 +01:00
Dan Poltawski 8c97a659ce MDL-57432 travis: move to PHP 7.x only
* We have to make the upgrade test from 3.0 to
  avoid messing messing around with versions
2017-07-10 09:16:55 +01:00
Dan Poltawski 29bbf948a3 MDL-57432 environment: raise Moodle 3.4 requirements
1) PHP minimum version raised to 7.0.0
2) Intl extension raised from optional to required
2017-07-10 09:16:55 +01:00
Dan Poltawski 9a9e061398 MDL-57432 environment: 3.4 base information
This is a direct copy of the 3.3 branch to
have changes under control easier in next commits.
2017-07-10 09:16:55 +01:00
Dan Poltawski 64e57937be MDL-57432 lib: unify PHP version checks
* Introduce a new php compatible library which can be used
  early in execution, without Moodle dependencies
* Use it where we previously had hardcoded checks

This was originally suggested in MDL-39007.
2017-07-10 09:16:55 +01:00
Dan Poltawski 04d1f77644 Merge branch 'MDL-58544-master' of git://github.com/damyon/moodle 2017-07-10 08:36:40 +01:00
Eloy Lafuente (stronk7) 2ae3581d63 Merge branch 'wip-MDL-59468-master' of https://github.com/marinaglancy/moodle 2017-07-10 04:25:23 +02:00
Ryan Wyllie 7f805edb38 MDL-58332 message: remove concat in get_popup_notifications sql
Removed the concat to generate the uniqueid field for the popup
notifications data. The concat can't be used directly in the SQL because
the syntax changes between databases. The sql_concat helper can't be
used because it assumes all values are database columns (which they
aren't in this case).

Instead I've just removed the uniqueid field because it isn't required
for the union all to work and the field isn't being used by anything.
This should fixed the compatibility issues between databases.
2017-07-10 02:02:26 +00:00
Adrian Greeve 9ffbdafc95 MDL-59287 calendar_events: Update modules to create all events.
All events equals all calendar events including completion events.
2017-07-10 09:40:02 +08:00
Adrian Greeve a85e191c4d MDL-59287 course_module: switching to new function.
Instead of using *_refresh_events directly
course_module_update_calendar_events is called so
that all types of calendar events can be updated.
2017-07-10 09:40:02 +08:00
Adrian Greeve e3658a6a9c MDL-59287 course_module: Create calendar event update function. 2017-07-10 09:40:02 +08:00
Adrian Greeve 190d4ecf1e MDL-59287 core_completion: Bulk completion now updates events. 2017-07-10 09:40:02 +08:00
Adrian Greeve 190646bd75 MDL-59287 core_completion: Update to unit tests. 2017-07-10 09:40:02 +08:00
Adrian Greeve 1930749f46 MDL-59287 core_completion: Update API to use less DB calls. 2017-07-10 09:40:01 +08:00
Stephen Vickers d7d8db95e9 MDL-59485 mod_lti: Add missing capabilities
Capabilities missing which should allow Moodle to pass IMS certification
for LTI 2.0
2017-07-08 12:39:02 +01:00
AMOS bot 7e6d2ac436 Automatically generated installer lang files 2017-07-08 00:15:42 +08:00
Jake Dallimore 350700bf8b weekly release 3.4dev 2017-07-07 12:10:12 +08:00
Jake Dallimore a51401a189 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-07-07 12:10:10 +08:00
Marina Glancy 63470cf31c MDL-59468 theme: bug fix accessing db during install 2017-07-07 11:11:50 +08:00
Dan Marsden e63d7244a6 MDL-58863 scorm: Improve accessibility when css disabled. 2017-07-07 10:40:13 +12:00
AMOS bot cc738fb8b4 Automatically generated installer lang files 2017-07-07 00:06:17 +08:00
Neill Magill 22481f3d89 MDL-59317 message: Message page taking long time to load
The OR clause in these queries used different sets of columns to select
userid which meant that the indexes that included user id could not be
used.

This change splits the query so that each individual part can use one of
the indexes that includes a userid which speeds them up considerably.
2017-07-06 15:24:02 +01:00
Neill Magill 733c4978fc MDL-52501 assign: Fix group submissions without submission record
Based on work by Tim Lock <tim.lock@blackboard.com>

While upgrading to Moodle 2.8 or above it is possible for it to fail if
the site has multiple graded attempts for a user without an associated
submission record. This caused the upgrade to violate the databases
unique key rules.

This same issue could apply to a backup that was created of an
assignment that had this issue, when it is restored into Moodle 2.8 or
later.

This change adds the attempt number from the grade table into the query
that is inserting the new submission record (thanks to Tim). It also
moves the insert query before the latest flag is set on submission
records to ensure that only one has it, without this it is possible that
multiple submission records would be marked as the latest after an
upgrade or restore.
2017-07-06 15:23:40 +01:00
Eloy Lafuente (stronk7) da120d408c Merge branch 'MDL-59395_master-fix2' of git://github.com/markn86/moodle 2017-07-06 15:34:43 +02:00
Mark Nelson a6a65da4f3 MDL-59395 core_user: removed unnecessary Behat javascript tags
1) Fixes a failing Behat test.
2) Speeds up two tests (including one fixed above).

Part of MDL-59290.
2017-07-06 21:26:02 +08:00
Mark Nelson 272094b8aa MDL-59395 report_log: removed unnecessary Behat javascript tags
Reverts the original fix for the failing Behat tests and solves
it in a better way - it is now faster!

Part of MDL-59290.
2017-07-06 21:26:02 +08:00
David Mudrák fd8fe9c1db MDL-56486 workshop: Add behat tests for restricting file types 2017-07-06 12:31:26 +02:00
Simey Lameze b9e9ff8830 MDL-59456 auth_cas: patch phpCAS auth bypass vulnerability 2017-07-06 09:30:53 +01:00
David Mudrák b8b07ce2c4 MDL-56486 workshop: Deprecate custom methods for handling file types
The functionality and the tests are now part of the core element.
2017-07-06 09:49:04 +02:00
David Mudrák 9ef238bc84 MDL-56486 workshop: Use filetypes utility class to normalize file types 2017-07-06 09:49:04 +02:00
David Mudrák 5a0865a1b1 MDL-56486 workshop: Use filetypes utility class to check submitted files 2017-07-06 09:49:04 +02:00
David Mudrák f9a8d98047 MDL-56486 workshop: Use the new filetypes element in the mod_form
The element copes well with the legacy syntax - just extensions, no
dots. So the upgrade step is not actually necessary here. The element
has in-built validation so there is no need to validate it explicitly
here again.
2017-07-06 09:49:04 +02:00
David Mudrák ee7e8fdf8e MDL-59443 forms: Add behat tests for the field validation 2017-07-06 09:29:04 +02:00
David Mudrák a100469875 MDL-59443 forms: Consider '*' as a known file type
While working on the filetypes element validation, I realized we did not
cover the case of selecting 'Any file type'. So the value '*' was
falsely reported as unknown file type.
2017-07-06 09:29:04 +02:00
David Mudrák 572d6fdef3 MDL-59443 forms: Allow implicit validation of filetypes element values
The validation obeys the element options 'allowall', 'allowunknown' and
'onlytypes' passed when creating the element.
2017-07-06 09:29:04 +02:00
David Mudrák 6c8e25fa51 MDL-59443 forms: Give elements a chance to validate submitted values
This patch introduces support for an optional method provided by the
form element classes to validate the submitted values implicitly -
without the need to have the rule explicitly added via the form
definition.

I am aware this should ideally be added to the HTML_QuickForm_element
parent class. But I wanted to avoid modification of that third party
library and keep the change in the moodleform layer only.
2017-07-06 09:29:04 +02:00
David Mudrák 6b59e4aafb MDL-59452 forms: Add Behat test for the filetypes form element
This is a very basic test for now to illustrate that it is possible now
to specify filetypes fields by the label.
2017-07-06 09:22:14 +02:00
Jake Dallimore d5d70e57a4 Merge branch 'MDL-59395_master-fix' of github.com:markn86/moodle 2017-07-06 15:20:41 +08:00
Mark Nelson 7a1c830b0b MDL-59395 core_user: fixed random PHPUnit failure
Part of MDL-59290.
2017-07-06 14:54:41 +08:00
Jake Dallimore bdbffe0efc Merge branch 'MDL-59364-master-fix2' of http://github.com/damyon/moodle 2017-07-06 14:48:05 +08:00
Damyon Wiese 40f6d24725 MDL-59364 behat: Brief / full links removed
The selector for brief / full user details was removed, it needs removing from the behat test.
2017-07-06 14:37:59 +08:00
Mark Nelson 688892d66f MDL-59395 report_log: fixed step navigating to user profile
Part of MDL-59290.
2017-07-06 13:20:04 +08:00
Jake Dallimore 11f512ee06 Merge branch 'MDL-59396_master-fix' of github.com:markn86/moodle 2017-07-06 11:54:48 +08:00
Mark Nelson 661750afc2 MDL-59396 block_participants: removed Behat reference to deleted select
Part of MDL-59290.
2017-07-06 11:17:02 +08:00
David Mudrák 9aabf267ee MDL-59452 forms: Provide a label for the filetypes input field
This is a pragmatic (read: hacky) solution of the problem that
Behat/Mink is unable to locate the input field within the filetypes
group. I've spent a while trying to figure out how to make it work. On
the road, I've discovered that our situation with labels of mform group
elements is a bit messy. And generally there seems to be no easy way how
to use the group's label to identify one particular input field in the
group.

In this case, we use mform group but in fact there is a single input
field within the group. Mink does not locate the group itself as an
input field and throws ElementNotFoundException. So reusing the group's
label as a hidden label for the input makes sense from certain
perspective.

The potential drawback (unconfirmed) is that screen readers might read
the same label text twice. But only one of them is associated with the
actual input field so chances are they would ignore the group's one,
like Mink does.
2017-07-05 17:38:04 +02:00
Jun Pataleta 3a2304f99b MDL-58651 logstore_database: Set dbhandlesoptions in test page 2017-07-05 22:49:44 +08:00
Eloy Lafuente (stronk7) 58da7e8851 Merge branch 'MDL-57021-master-v2' of git://github.com/danpoltawski/moodle 2017-07-05 12:24:45 +02:00
Eloy Lafuente (stronk7) 92acc71388 Merge branch 'MDL-59395_master' of git://github.com/markn86/moodle 2017-07-05 12:00:12 +02:00
Eloy Lafuente (stronk7) aef0609316 Merge branch 'MDL-59398-master-enfix' of git://github.com/mudrd8mz/moodle 2017-07-05 11:51:05 +02:00
Eloy Lafuente (stronk7) a590ff736c Merge branch 'MDL-59294-master' of git://github.com/junpataleta/moodle 2017-07-05 09:42:41 +02:00
Eloy Lafuente (stronk7) 9a334cb444 Merge branch 'MDL-58286-master' of https://github.com/xow/moodle 2017-07-05 09:39:21 +02:00
Eloy Lafuente (stronk7) 29dcef0b65 Merge branch 'wip-MDL-59412-master' of git://github.com/marinaglancy/moodle 2017-07-05 09:34:19 +02:00
Helen Foster f08d4da505 MDL-59398 lang: Merge English strings from the en_fix language pack 2017-07-05 09:27:29 +02:00
Mark Nelson ba6645daa0 MDL-59395 core_user: added unit tests for new participation functions
Part of MDL-59290.
2017-07-05 14:51:41 +08:00
Mark Nelson bc47b70667 MDL-59395 core_user: move participants table to own class
Removed the edit link variable which was used in the heading
'Users with the role ..' but was never displayed due to filters.

Other minor tidy ups as well.

Part of MDL-59290.
2017-07-05 14:51:41 +08:00
Jake Dallimore e166657532 Merge branch 'MDL-58716-master-fix' of git://github.com/junpataleta/moodle 2017-07-05 13:03:56 +08:00
Jun Pataleta 64755ee800 MDL-58716 core: Define core_login_testsuite in phpunit.xml.dist 2017-07-05 12:39:18 +08:00
Marina Glancy 1c885118fc MDL-59412 course: do not display completion icon for unavailable mod 2017-07-05 09:48:18 +08:00
John Okely d349b0f0f8 MDL-58286 enrol_ldap: Pass connection to ldap_paged_results_supported
Thanks to Bianco Veigel for the original patch.
2017-07-05 09:46:27 +08:00
Jun Pataleta a50089bac5 Merge branch 'MDL-58716-master' of git://github.com/jleyva/moodle 2017-07-05 09:36:41 +08:00
Eloy Lafuente (stronk7) 39f8a9636e Merge branch 'MDL-59413_master' of git://github.com/markn86/moodle 2017-07-05 02:35:26 +02:00
Eloy Lafuente (stronk7) 8eb4f41f1d Merge branch 'MDL-59396_master' of git://github.com/markn86/moodle 2017-07-05 02:33:09 +02:00
Eloy Lafuente (stronk7) 5133e30da3 Merge branch 'MDL-59364_master' of git://github.com/markn86/moodle 2017-07-05 02:31:48 +02:00
Eloy Lafuente (stronk7) acbcffd342 Merge branch 'MDL-58651' of git://github.com/aolley/moodle 2017-07-05 01:21:13 +02:00
Eloy Lafuente (stronk7) 77c8eb94c3 Merge branch 'wip-MDL-59336-master' of git://github.com/marinaglancy/moodle 2017-07-04 19:58:51 +02:00
Eloy Lafuente (stronk7) f75b93c9d3 Merge branch 'MDL-59427-master' of https://github.com/sammarshallou/moodle 2017-07-04 19:44:07 +02:00
Juan Leyva b6f70a3745 MDL-58716 auth: New ajax WS core_auth_request_password_reset 2017-07-04 11:40:12 +01:00
Juan Leyva cca01ddace MDL-58716 login: API changes to accommodate web services 2017-07-04 11:40:11 +01:00
Dani Palou 18f3d7667b MDL-59068 lesson: Revert MDL-54849
MDL-54859 made the 'wrong jump' setting useless, since clicking 'No' always sends the user to the next page.
2017-07-04 10:33:17 +02:00
Jake Dallimore 542933e30a Merge branch 'MDL-59380-master' of git://github.com/damyon/moodle 2017-07-04 16:27:30 +08:00
Marina Glancy 5540c0979b MDL-59441 calendar: unittest fix for modules without generators 2017-07-04 11:16:08 +08:00
Marina Glancy 6e861be6b7 MDL-59409 admin: set admin user in unittest 2017-07-04 11:04:54 +08:00
Marina Glancy b1ed151f4d MDL-59262 tool_uploadcourse: allow to set numsections 2017-07-04 10:27:39 +08:00
Ankit Agarwal 8d8d00ef42 MDL-56565 forum: Add sitename as heading when there is nothing to display 2017-07-04 10:11:34 +08:00
Ankit Agarwal 73d78820c8 MDL-56565 forum: Make sure userfullname is not disclosed 2017-07-04 10:11:34 +08:00
Jake Dallimore 012555492e MDL-56565 navigation: fix for cap checks in nav and context header
Fix to:
- Make sure we properly check both user and course contexts in
the load_for_user function in navigation lib and user the
user_can_view_profile function for same-course access checks.
- Use user_can_view_profile in the renderer's context_header to
properly decide whether a user can view another user's picture
and messaging options in the page header.
2017-07-04 10:11:34 +08:00
Jake Dallimore 02e5a9d766 MDL-56565 navigation: fix user details disclosure in nav tree
Fixes a bug in which a user's full name might be disclosed via the
nav tree. Nav generation now checks the current user's access to the
user before adding the node, else adds a dummy node.
2017-07-04 10:11:34 +08:00
Jake Dallimore 08692e9736 MDL-56565 core: fix user details disclosure in page context header
Fixes a bug with context_header function in which user details were
displayed regardless of the current user's capabilities.
2017-07-04 10:11:34 +08:00
Mark Nelson 2fe7f706d7 MDL-59304 core_calendar: check if course is hidden in bailout callback 2017-07-04 10:11:34 +08:00
Marina Glancy 915f801546 MDL-59409 admin: check access to every setting in category 2017-07-04 10:00:26 +08:00
Jake Dallimore ccf1c6e621 Merge branch 'MDL-59165-master-2' of git://github.com/andrewnicols/moodle 2017-07-04 09:16:11 +08:00
Andrew Nicols 1e68076e5d MDL-59165 tool_mobile: Display mobile setup link in footer 2017-07-04 09:14:34 +08:00
Jake Dallimore 5141266546 Merge branch 'MDL-59008-master' of git://github.com/lameze/moodle 2017-07-03 15:55:38 +08:00
Simey Lameze 64c385a293 MDL-59008 repository: add reload parent window support to callback 2017-07-03 13:41:58 +08:00
Simey Lameze 1ba1412fa3 MDL-59008 repository_onedrive: add method to serve login on a popup 2017-07-03 13:41:58 +08:00
Simey Lameze fd8790d5cf MDL-59008 repository_googledocs: add method to serve login on a popup
This commit also add a new string logintoaccount to make the login
button more clear.
2017-07-03 13:41:58 +08:00
Andrew Nicols 7bd28dffc2 MDL-59165 output: Add standard footer html callback 2017-07-03 13:35:28 +08:00
Simey Lameze 1fad6ff3f5 MDL-59008 mod_resource: add option to serve external files embed 2017-07-03 10:19:33 +08:00
Tim Hunt 39c40adad1 MDL-59431 requirejs: better reporting if a JS file cannot be loaded 2017-06-30 17:17:26 +01:00
sam marshall 902be008db MDL-58957 Global search: Unit test for block searching 2017-06-30 13:10:14 +01:00
sam marshall 2f487b67eb MDL-58957 Global search: Add search support to HTML block 2017-06-30 13:10:14 +01:00
sam marshall a96faa49a8 MDL-58957 Global search: Add block support to search manager 2017-06-30 13:10:12 +01:00
sam marshall 4998d3a5be MDL-59427 MUC: cache_helper::purge_all should reset adhoc caches 2017-06-30 11:15:30 +01:00
Marina Glancy ca66f9654e MDL-59262 course: bug - requested course is created without sections 2017-06-30 12:11:55 +08:00
Marina Glancy ef5fdb3709 MDL-46495 tool_uploadcourse: set enablecompletion to default 2017-06-30 10:25:29 +08:00
sam marshall 557554f99f MDL-58957 Global search: Add time fields to block_instances 2017-06-29 15:14:47 +01:00
Jake Dallimore 5a651b43fb weekly release 3.4dev 2017-06-29 16:23:42 +08:00
Jake Dallimore 4c68642926 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-06-29 16:23:41 +08:00
Mark Nelson e727e91c38 MDL-59413 core_user: removed broken group information table
Part of MDL-59290.
2017-06-29 14:19:08 +08:00
Marina Glancy 592f3ae22c MDL-59411 course: display access restriction in access error message 2017-06-29 13:48:27 +08:00
Jun Pataleta 56249d8710 MDL-59294 block_login: Make display of ID provider buttons consistent 2017-06-29 09:29:26 +08:00
Mark Nielsen b095b36c02 MDL-58948 behat: capture DriverException
Other drivers may throw a DriverException when the popup
or iframe disappears.
2017-06-28 14:34:08 -07:00
Mark Nielsen f46a2dd913 MDL-58948 behat: Fix spin method when callback throws exception
Was preventing the sleep statements from running.  This caused
steps to fail too early when it was just waiting for something
to change in the browser.
2017-06-28 14:33:51 -07:00
Mark Nielsen 7cde2bb313 MDL-58948 behat: Chrome driver has unique xpaths
Chrome driver has unique xpaths for clicking on all the
show more links.  So clicking on the first xpath X times
does not work.
2017-06-28 12:50:44 -07:00
Mark Nielsen 95ee1f6392 MDL-58948 course: correct event type listener
This event handler is listening for click events on a select
element, should be a change event.
2017-06-28 12:50:44 -07:00
Mark Nielsen b5be387556 MDL-58948 behat: conditionally execute MoodleSelenium2Driver
There is some specific code being executed that only exists
in the MoodleSelenium2Driver.  Conditionally execute this
code to make it compatible with other Mink drivers.
2017-06-28 12:50:44 -07:00
Mark Nielsen f5459099ae MDL-58948 behat: catch ElementNotFoundException
Another valid exception that can be thrown from a Mink driver
is the ElementNotFoundException when an element has gone missing.
2017-06-28 12:50:11 -07:00
Mark Nielsen 3cf0d01a61 MDL-58948 behat: Fix timeouts without a condition
The second parameter of the wait method should be a string
so passing boolean false was wrong.  The default on for the
script is 'false' which works cross Mink drivers.
2017-06-28 12:50:10 -07:00
Mark Nielsen 5536bf4f22 MDL-58948 behat: return the result of the pending JS method
This increases compatibility with other Mink drivers,
in particular, the Chrome Mink Driver.
2017-06-28 11:20:49 -07:00
David Monllao f9e4731c86 MDL-59148 css: Remove legacy param from php-doc
Version bump as well.
2017-06-28 18:24:50 +02:00
David Monllao 185455dcc3 Merge branch 'MDL-59148-master-7' of git://github.com/andrewnicols/moodle 2017-06-28 18:24:50 +02:00
Andrew Nicols 0e9911e143 MDL-59148 theme: Use fallback if compiled version unavailable 2017-06-28 18:24:50 +02:00
David Monllao 0248d16801 MDL-59285 version: Bump 2017-06-28 18:24:49 +02:00
Simey Lameze 3b9b47312c MDL-59148 core: save css file totemp directory
Save a copy of the css file on the temp directory
to be used as a fallback when waiting for a theme to be compiled
and is not versioned in any way.
2017-06-28 18:24:49 +02:00
David Monllao 7f382c05b0 Merge branch 'MDL-59285-master' of git://github.com/lameze/moodle 2017-06-28 18:24:48 +02:00
Jake Dallimore 1bff0a1d97 Merge branch 'MDL-56046_master-fix2' of git://github.com/markn86/moodle 2017-06-28 18:24:48 +02:00
Mark Nelson 1370d793fc MDL-56046 mod_quiz: do not close the sheet twice 2017-06-28 18:24:48 +02:00
Eloy Lafuente (stronk7) 1555f25b24 Merge branch 'MDL-57809-34-progressbar' of https://github.com/roperto/moodle 2017-06-28 18:24:47 +02:00
David Monllao 364ccb771a MDL-57734 version: Bump 2017-06-28 18:24:47 +02:00
David Monllao aa736731ba Merge branch 'MDL-57734-master' of https://github.com/xow/moodle 2017-06-28 18:24:46 +02:00
Eloy Lafuente (stronk7) d4bd3dbb69 Merge branch 'wip-MDL-59136-master' of git://github.com/marinaglancy/moodle 2017-06-28 18:24:46 +02:00
David Monllao 6ac5f70c01 Merge branch 'MDL-59053-downcase-username_LATEST' of git://github.com/spaceraccoon/moodle 2017-06-28 18:24:45 +02:00
David Monllao 34b3c1da70 Merge branch 'MDL-32151-master' of git://github.com/junpataleta/moodle 2017-06-28 18:24:45 +02:00
Eloy Lafuente (stronk7) 0f9bdd637a Merge branch 'MDL-59362_master' of git://github.com/markn86/moodle 2017-06-28 18:24:44 +02:00
Simey Lameze 83f50acd53 MDL-59285 tool_mobile: add user profile page callback 2017-06-28 16:39:07 +08:00
Jun Pataleta 7c482415a9 MDL-59294 theme_bootstrapbase: Fix display of ID provider buttons 2017-06-28 13:27:41 +08:00
Marina Glancy 6b7a32f33c MDL-56579 media_videojs: use new config element for selecting file types 2017-06-28 12:12:48 +08:00
Adam Olley 556ceb2071 MDL-58651 logstore_database: Add ability to not send database options
In the core dml:
PostgreSQL connections now use advanced options to reduce connection overhead.
These options are not compatible with some connection poolers. The
dbhandlesoptions parameter has been added to allow the database to configure
the required defaults.

This item adds a setting to the logstore_database plugin to let you set the
same flag for your destination database - without it you won't be able to ship
logs to a postgresql database with a pgbouncer frontend.
2017-06-28 13:21:01 +09:30
Marina Glancy 6023e58bd1 MDL-59363 mod_workshop: user object must have alternative name fields 2017-06-28 11:36:11 +08:00
Eloy Lafuente (stronk7) 56fc5143ad Merge branch 'MDL-59073_workshop_prevent_submission_without_content_or_file' of https://github.com/dannyjung90/moodle 2017-06-27 16:59:44 +02:00
David Monllao 1243fce158 Merge branch 'wip-MDL-59308-master' of git://github.com/marinaglancy/moodle 2017-06-27 16:41:26 +02:00
David Monllao 93c97fdc3a Merge branch 'MDL-59158-master' of git://github.com/junpataleta/moodle 2017-06-27 16:39:41 +02:00
David Monllao c4b25152cc Merge branch 'MDL-57927-master' of git://github.com/lameze/moodle 2017-06-27 15:55:17 +02:00
Eloy Lafuente (stronk7) c32f0cd62a Merge branch 'MDL-58844-master' of git://github.com/andrewnicols/moodle 2017-06-27 11:41:08 +02:00
Eloy Lafuente (stronk7) ce836829e6 Merge branch 'MDL-59296-master' of git://github.com/crazyserver/moodle 2017-06-27 11:37:52 +02:00
Damyon Wiese 859e2033cb MDL-58544 oauth2: Allow trusted issuers
Add a setting to each issuer that skips the email confirmation when creating and linking accounts.
2017-06-27 16:50:27 +08:00
Mark Nelson a24c59b9b4 MDL-59396 core_user: removed 'My courses' select from participants page
Part of MDL-59290.
2017-06-27 16:44:41 +08:00
Eloy Lafuente (stronk7) e2aa2f25f1 Merge branch 'MDL-59123-master-3' of git://github.com/ryanwyllie/moodle 2017-06-27 09:24:24 +02:00
Jake Dallimore 8d7ae061e3 Merge branch 'MDL-59312-master' of https://github.com/xow/moodle 2017-06-27 15:07:44 +08:00
Ryan Wyllie 5dd40ec4b4 MDL-59123 admin: add cli script to compile theme CSS
Added a script to selectively compile theme CSS. In order to allow
compiling on per theme basis without purging all theme CSS in the
local cache I have made some changes to how CSS is compiled and
how it is accessed via local cache.
2017-06-27 06:48:45 +00:00
Jake Dallimore cb37f200a8 Merge branch 'MDL-59275-master' of git://github.com/lameze/moodle 2017-06-27 13:57:11 +08:00
Damyon Wiese 3d185faceb MDL-59380 fragments: Include js from templates
Mustache templates containing {{#js}} blocks are not returned via the
fragments API. This is because the requirements manager is assigned when the renderer is created
and not updated by the call to start collecting page requirements.
2017-06-27 13:20:32 +08:00
Jake Dallimore 196558a5d8 Merge branch 'MDL-56046_master-fix' of git://github.com/markn86/moodle 2017-06-27 13:16:42 +08:00
Mark Nelson 4c7593ff5b MDL-59364 core_user: removed 'User details' option in participants page
Part of MDL-59290.
2017-06-27 13:13:07 +08:00
Simey Lameze 92c8cb9d98 MDL-59275 auth: prevent user login failed coding error 2017-06-27 13:04:02 +08:00
Mark Nelson e0ee37e426 MDL-56046 dataformat: changes to docs, upgrade.txt and error message 2017-06-27 11:35:05 +08:00
Eloy Lafuente (stronk7) 7ad2822269 Merge branch 'MDL-56046_master' of git://github.com/markn86/moodle 2017-06-27 02:42:31 +02:00
Eloy Lafuente (stronk7) 139648e5bd Merge branch 'MDL-40818-master' of git://github.com/junpataleta/moodle 2017-06-27 01:50:28 +02:00
Andrew Nicols 29d409b642 MDL-58844 testing: Move to GCE build infrastructure
Switch back to GCE build infrastructure for Travis Builds and move
databases to RAM Disk.

This also adds a software entropy generator (haveged) which is
recommended when using a RAMdisk for the database.
2017-06-27 07:42:38 +08:00
Eloy Lafuente (stronk7) 51fc76193d Merge branch 'MDL-59295-master' of git://github.com/lameze/moodle 2017-06-27 00:53:28 +02:00
Eloy Lafuente (stronk7) 1dac440f55 MDL-58813 phpunit: pick test from 32_STABLE to fix expected behavior 2017-06-26 19:46:05 +02:00
Eloy Lafuente (stronk7) df30a5a25f Merge branch 'MDL-1322-master' of git://github.com/junpataleta/moodle 2017-06-26 18:15:25 +02:00
Eloy Lafuente (stronk7) 41c17610c0 Merge branch 'MDL-59297_myoverview_error' of git://github.com/davosmith/moodle 2017-06-26 13:04:42 +02:00
Mark Nelson faf45f9c47 MDL-56046 core: enable multiple sheets for flexible table 2017-06-26 13:59:30 +08:00
Mark Nelson d4606c1b24 MDL-56046 dataformat: added related information to upgrade.txt 2017-06-26 13:59:30 +08:00
Jun Pataleta 390098fa64 MDL-1322 calendar: Add course short name in calendar event
* Add the course's short name for a course event in order to let the
user know immediately which course an event belongs to. Particularly
helpful for activity events.
2017-06-26 13:37:39 +08:00
Mark Nelson eb26be5b39 MDL-56046 dataformat_*: convert core plugins 2017-06-26 13:29:32 +08:00
Mark Nelson ce3beb267c MDL-56046 core: convert download_as_dataformat to use new API 2017-06-26 13:29:32 +08:00
Mark Nelson b62b5879af MDL-56046 core_dataformat: added functions to support multiple sheets
Also removed write_header() and write_footer(). The reason for this
is because in core we want to know if the format being used supports
multiple sheets. To do this, and ensure we do not break third-party
dataformat plugins, we are using method_exist(). If write_header()
and write_footer() remain in the base class then this will always
be true.
2017-06-26 13:29:32 +08:00
Mark Nelson 6d721cab9e MDL-59362 core: ensure we use 'new' when throwing exceptions 2017-06-26 13:08:05 +08:00
Marina Glancy 1c4a0506e5 MDL-59136 roles: avoid double escaping in role names 2017-06-26 11:57:09 +08:00
Marina Glancy eca7e52901 MDL-59336 themes: change FA mapping for i/new 2017-06-26 11:36:35 +08:00
Jake Dallimore e6142a1e2e Merge branch 'MDL-49484-master' of github.com:jebarviabb/moodle 2017-06-26 10:51:43 +08:00
Yair Spielmann 409ad1d60a MDL-57734 admin: New setting for when to use the noindex meta tag 2017-06-26 10:38:25 +08:00
Josh Ebarvia a06face2ce MDL-49484 mod_lesson: Fix lesson page headers when editing 2017-06-24 05:21:25 +09:30
AMOS bot b87f163a1b Merge branch 'master' into install_master 2017-06-24 00:08:36 +08:00
Pau Ferrer Ocaña 43cf2cb0a4 MDL-59296 data: Fix latlong field search 2017-06-23 09:15:40 +02:00
Simey Lameze 6dfb4ff2b3 MDL-59285 tool_mobile: new setting for mobile app setup url 2017-06-23 14:09:08 +08:00
Andrew Nicols bd90b61ad2 MDL-59312 js: Improve display of exception stacktrace 2017-06-23 10:44:15 +08:00
John Okely 6bdcaa1320 MDL-59312 notification: Normalise backtrace/stacktrace 2017-06-23 10:43:56 +08:00
Andrew Nicols fa038116bc MDL-59312 js: Add exception on AJAX error 2017-06-23 10:42:22 +08:00
Jun Pataleta 628fbd48fe MDL-32151 group: Use appropriate error langstring error key 2017-06-23 10:27:37 +08:00
Jun Pataleta d9ce6a4ffb MDL-32151 grade: Use appropriate error langstring error key 2017-06-23 10:22:24 +08:00
Jun Pataleta 91af29ba57 MDL-59158 theme_boost: Remove auto width and height for user picture 2017-06-23 10:12:47 +08:00
Zhi Wei Lim 7be51d3389 MDL-59053 signup_form: Prevents autocapitalization 2017-06-23 01:39:18 +00:00
Jun Pataleta fb1a615dfe MDL-40818 calendar: Require login to calendar pages
* Make sure that the course ID being passed points to an existing course
* Require user to login before granting access to calendar pages.
2017-06-23 09:20:32 +08:00
Daniel Thee Roperto ef8ceb2fc2 MDL-57809 weblib: Added missing NO_OUTPUT_BUFFERING directive. 2017-06-23 09:43:07 +10:00
Daniel Thee Roperto 6eaa9d2ffb MDL-57809 weblib: Added opening disclaimer and file-level phpdocs. 2017-06-23 09:43:07 +10:00
Daniel Thee Roperto b40722fbf7 MDL-57809 weblib: Progress bar and output buffer - added debugging
This fix makes Moodle show a debbuging message if using progressbar without defining NO_OUTPUT_BUFFERING.
2017-06-23 09:43:07 +10:00
Danny Jung 36a7651de2 MDL-59073 Workshop: Prevent submission without content or file 2017-06-22 14:03:28 -07:00
AMOS bot 979202e96b Automatically generated installer lang files 2017-06-23 00:07:36 +08:00
Dan Poltawski f4a2d69631 weekly release 3.4dev 2017-06-22 15:40:45 +01:00
Dan Poltawski 6894a98aa1 NOBUG: Fixed SVG browser compatibility 2017-06-22 15:40:44 +01:00
Juan Leyva bef201c7e0 MDL-58712 core_user: Do not count the root directory 2017-06-22 16:09:58 +02:00
Jake Dallimore 828540b557 Merge branch 'wip-MDL-58919-master' of https://github.com/marinaglancy/moodle 2017-06-22 16:09:56 +02:00
Marina Glancy 412a56027b MDL-58919 mod_assign: fix check for existing setting 2017-06-22 16:09:55 +02:00
Eloy Lafuente (stronk7) b78887cc4b Merge branch 'MDL-59170-master' of https://github.com/xow/moodle 2017-06-22 16:09:53 +02:00
Marina Glancy 70b6230829 MDL-59308 calendar: pass module context when known
this will protect us from exceptions when context for removed instance can not be retrieved
2017-06-22 13:42:22 +08:00
John Okely 76b5fe8665 MDL-59170 fontawesome: Fix course total controls icon on grader report 2017-06-22 09:13:20 +08:00
Dan Poltawski 8c0b1ec32b Merge branch 'MDL-58919-master-fix1' of https://github.com/snake/moodle 2017-06-21 10:22:11 +01:00
Jake Dallimore c6b32acdb1 MDL-58919 mod_assign: fix allowing accepted file types to be empty 2017-06-21 17:15:21 +08:00
Jake Dallimore 34e2b1f92d Merge branch 'MDL-56979-master-fix' of git://github.com/junpataleta/moodle 2017-06-21 14:21:56 +08:00
Jun Pataleta a7184670fd MDL-56979 group: Template and styles fixes
* Remove custom styles for groups since we're using default Bootstrap
  styles now.
* Hidden input breaks grid layout. Moved it inside the groups column.
* Removed unnecessary 'groups' and 'members' classes. They are not being
  used in JS nor CSS.
2017-06-21 11:02:16 +08:00
Jun Pataleta 91fe23133c Merge branch 'MDL-58892-mahara-icon-update' of https://github.com/peikk0/moodle 2017-06-21 08:52:46 +08:00
Eloy Lafuente (stronk7) 46e9afecf3 Merge branch 'MDL-58985-master-bluebubbles' of git://github.com/mudrd8mz/moodle 2017-06-21 00:45:07 +02:00
Pierre Guinoiseau 58f2660009 MDL-58892 pix: update icon for Mahara 2017-06-21 10:14:08 +12:00
Eloy Lafuente (stronk7) 2eb67fdc88 Merge branch 'wip-MDL-59125-master' of git://github.com/marinaglancy/moodle 2017-06-20 21:45:38 +02:00
Eloy Lafuente (stronk7) 9ee6de4389 Merge branch 'wip-MDL-59263-master' of git://github.com/marinaglancy/moodle 2017-06-20 18:02:09 +02:00
Eloy Lafuente (stronk7) 42a78077c6 Merge branch 'MDL-59269-master-languninstall' of git://github.com/mudrd8mz/moodle 2017-06-20 17:56:44 +02:00
Eloy Lafuente (stronk7) 41781cf31d Merge branch 'MDL-59214-master' of git://github.com/jleyva/moodle 2017-06-20 17:46:55 +02:00
Dan Poltawski 22ef8f1f9b Merge branch 'MDL-58919-master' of git://github.com/Dave-B/moodle 2017-06-20 14:24:59 +01:00
Juan Leyva bef5777fc4 MDL-59214 webservice: Return calendar type in get_site_info 2017-06-20 11:44:04 +01:00
Dan Poltawski 3fb9ca78c7 Merge branch 'MDL-58952' of https://github.com/scyrma/moodle 2017-06-20 11:31:30 +01:00
Davo Smith 977258bacd MDL-59297 block_myoverview: fix fatal error (missing require_once) 2017-06-20 11:13:03 +01:00
Dan Poltawski 4431f1e0e3 Merge branch 'MDL-59005-master' of git://github.com/lameze/moodle 2017-06-20 09:51:50 +01:00
Dan Poltawski 2764bcf49b Merge branch 'MDL-58472-master' of git://github.com/damyon/moodle 2017-06-20 09:38:29 +01:00
Jun Pataleta 88720416ba Merge branch 'wip-MDL-58911-master' of git://github.com/marinaglancy/moodle 2017-06-20 16:33:15 +08:00
Jun Pataleta d938d1b6e2 Merge branch 'MDL-57770-master' of git://github.com/lameze/moodle 2017-06-20 16:27:48 +08:00
Marina Glancy 63e9e38202 MDL-58911 calendar: use the same callbacks in unittests and prod
Remove unittest-specific callbacks for checking access and displaying
the calendar events on the dashboard.

This will allow plugin developers unittest the full behavior
of how their plugins add events to the dashboard.

Reset all static caches between unittests.
2017-06-20 16:13:35 +08:00
Dan Poltawski 0ba61c3bf8 Merge branch 'MDL-59160-master' of git://github.com/jleyva/moodle 2017-06-20 09:10:25 +01:00
Simey Lameze 9524169a59 MDL-59295 tool_lp: remove useless ng-label attribute 2017-06-20 16:08:20 +08:00
Jake Dallimore 6f2950cf59 Merge branch 'wip-MDL-58729-master' of git://github.com/abgreeve/moodle 2017-06-20 15:18:16 +08:00
Jun Pataleta b70b7df6d3 Merge branch 'MDL-58766-clean-tree-item-indent' of https://github.com/lucaboesch/moodle 2017-06-20 15:09:41 +08:00
Jun Pataleta 65f1cac814 Merge branch 'MDL-59270-master' of git://github.com/lameze/moodle 2017-06-20 09:58:37 +08:00
Simey Lameze 0eade6bfd1 MDL-57927 tool_lp: make both buttons consistent 2017-06-20 08:49:15 +08:00
Simey Lameze 07782e10f1 MDL-59270 block_myoverview: tab setting logic to main template on clean 2017-06-20 08:45:18 +08:00
Jake Dallimore 78013a17c7 Merge branch 'MDL-58808-master' of git://github.com/damyon/moodle 2017-06-20 08:22:16 +08:00
Juan Leyva 0f398b500d MDL-59160 core_group: Return if the user can access all groups in WS
The core_group_get_activity_allowed_groups WS should be returning not
only the groups but also if the user is allowed to access all the
activity groups.
2017-06-19 15:53:38 +01:00
Dan Poltawski dd6848c1b0 Merge branch 'MDL-59048' of https://github.com/timhunt/moodle 2017-06-19 15:43:28 +01:00
Dan Poltawski 214962f964 Merge branch 'MDL-26976-master' of git://github.com/jleyva/moodle 2017-06-19 14:55:55 +01:00
Dan Poltawski 6252f44d84 Merge branch 'MDL-58712-master' of git://github.com/jleyva/moodle 2017-06-19 14:20:06 +01:00
Dan Poltawski 6659c5ffba Merge branch 'MDL-59173-master' of git://github.com/tobiasreischmann/moodle 2017-06-19 12:27:43 +01:00
Dan Poltawski 4469ae96b6 Merge branch 'wip-MDL-51917-master' of git://github.com/marinaglancy/moodle 2017-06-19 12:21:45 +01:00
Juan Leyva b5ef326c03 MDL-26976 files: Display space usage message in private files 2017-06-19 11:01:48 +01:00
Dan Poltawski 0a4d8ea1a5 Merge branch 'MDL-56979-master-2' of git://github.com/junpataleta/moodle 2017-06-19 10:46:09 +01:00
Dan Poltawski 275b5fa8ce Merge branch 'MDL-46418-master-hiddenrepos' of git://github.com/mudrd8mz/moodle 2017-06-19 10:33:37 +01:00
Jun Pataleta 8cc4e1c0cd Merge branch 'MDL-44961-master' of git://github.com/ankitagarwal/moodle 2017-06-19 16:24:51 +08:00
Damyon Wiese 57ea73d02c MDL-58808 fontawesome: nav and settings blocks 2017-06-19 15:51:15 +08:00
Jun Pataleta d745f174a2 Merge branch 'MDL-58310-master' of https://github.com/xow/moodle 2017-06-19 13:25:10 +08:00
John Okely 671be2bedb MDL-58310 ajax: suppress errors upon page unload 2017-06-19 11:31:24 +08:00
John Okely 46f68f026e MDL-58310 message: No longer need to supress errors from messaging 2017-06-19 09:34:34 +08:00
Jake Dallimore 66b8ad8642 Merge branch 'MDL-59230-master' of git://github.com/lameze/moodle 2017-06-19 09:12:30 +08:00
Vladimir Zhirov ff2dab4566 MDL-59005 resource: fixed zip extraction for filenames in CP-1251/CP-866 2017-06-19 08:50:23 +08:00
Luca Bösch fc684bce4b MDL-58766 css: clean theme block alignment 2017-06-16 16:12:00 +02:00
David Mudrák 64b6651cfa MDL-59269 lang: Fix ability to uninstall certain language packs
In the issue MDL-39319 (6ddf92c77), the ability to uninstall multiple
language packs at once was added. By a mistake, the PARAM_ALPHAEXT was
used as paramater type for the dash-separated list of language packs to
be uninstalled. Language packs with a number in the name (such as
en_us_k12) do not pass the ALPHAEXT cleaning.

This patch changes the parameter cleaning to PARAM_SAFEPATH which is
more appropriate for the given scenario as language code themselves must
be SAFEDIRs.
2017-06-16 14:15:25 +02:00
Simey Lameze e00e673195 MDL-59230 block_myoverview: add missing core notification module 2017-06-16 16:39:19 +08:00
Tobias Reischmann 4acb33f67b MDL-59173 tablelib.php: changed default of $params in set_sql to array()
Default of $params = null leads to a problem in query_db().
There this value is used in array_merge, which can not handle null
values. If null is passed for one of the params the outcome will be null
independent of the value of the second param!
2017-06-16 10:26:31 +02:00
Marina Glancy 450d15d159 MDL-59125 filter_urltolink: respect nolink span, unittest 2017-06-16 15:57:23 +08:00
Mark Sharp 2a477bf08e MDL-59125 filter_urltolink: ignoretags on nolink span 2017-06-16 15:57:23 +08:00
Jun Pataleta 3b5865396e MDL-56979 group: Make group index page Boost-y 2017-06-16 13:58:15 +08:00
Jake Dallimore 6bb80a1917 weekly release 3.4dev 2017-06-16 13:29:33 +08:00
Jake Dallimore a249188531 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-06-16 13:29:32 +08:00
Jean-Roch Meurisse - University of Namur - Belgium 509679e203 MDL-59263 roles: Wrong order of parameters in calls to pix_icon function 2017-06-16 10:02:52 +08:00
David Mudrák 30e891e08f MDL-46418 repositories: Fix how enabled repositories are populated
Repository instances are stored in the 'repository' table. Repositories
in the table are either 'Enabled and visible' or 'Enabled but hidden'.
Hidden repositories still serve their files, but are not visible in the
filepicker UI. Disabling a repository instance removes its record from
the table.

In the original implementation of the plugin manager (see b9934a17), the
method plugintype_repository::get_enabled_repositories() correctly
returned all records from the repository table. Then as a part of the
bigger refactoring in MDL-41437, the commit bde002b8 replaced the
original method with the new get_enabled_plugins() one which started to
return visible repositories only.

As a consequence, the admin tree stopped populating setting page nodes
for hidden repository instances. So attempting to visit their setting
page threw a section error. Credit goes to Ike Quigley for debugging and
tracing this down.

This patch fixes the way how the list of enabled repositories is
populated by the plugin manager so that both visible and hidden
repositories are returned again. This does not affect the filepicker
itself as it is using its own methods for obtaining the list.
2017-06-15 21:22:43 +02:00
Dan Poltawski dd58863dab MDL-57021 passwords: only use unmask field with shared secrets
When a user is entering a password which isn't returned back to them
then its not correct to use the unmask element - this element was
designed for places where we are storing shared secrets.
2017-06-15 12:59:19 +01:00
Jun Pataleta 20456abffc Merge branch 'MDL-58248-master-iconfix' of github.com:snake/moodle 2017-06-15 17:08:03 +08:00
Juan Leyva f74ac6e704 MDL-58712 core_user: New WS core_user_get_private_files_info 2017-06-15 09:40:30 +01:00
Simey Lameze 7af8b56ab4 MDL-57770 tool_lp: style fixes for the competency rule dialog 2017-06-15 15:02:42 +08:00
Jake Dallimore af12c81d51 Merge branch 'MDL-59140_master-fix-v2' of https://github.com/markn86/moodle 2017-06-15 13:34:24 +08:00
Mark Nelson 3dabb083ad MDL-59140 core: apply limit only on courses to be shown in specific nav
There can be a different number of courses displayed in the
'Navigation' block and in the 'Flat' navigation. This patch
decides what courses we want to display on each, then
applies the 'navcourselimit' setting individually.
2017-06-15 13:10:14 +08:00
Jake Dallimore 0cd6e1bfec MDL-58248 theme: use pix icon for side panel menu icon instead of char
Replaces the trigram for heaven char with the fa-bars pix icon for
improved support with all screen readers.
2017-06-15 09:57:52 +08:00
Jake Dallimore bb931788cc Merge branch 'MDL-59142-master' of git://github.com/lameze/moodle 2017-06-14 12:38:11 +01:00
Dan Poltawski 7419853951 Merge branch 'MDL-59171-master' of git://github.com/junpataleta/moodle 2017-06-14 12:36:39 +01:00
Dan Poltawski e66905375e Merge branch 'MDL-55548_master-fix' of https://github.com/markn86/moodle 2017-06-14 12:36:38 +01:00
Mark Nelson f25e2b1dc7 MDL-55548 core: fixed misleading comment in upgrade code 2017-06-14 12:36:38 +01:00
Dan Poltawski 569907002f Merge branch 'MDL-59140_master' of git://github.com/markn86/moodle 2017-06-14 12:36:37 +01:00
Mark Nelson c8f2e0e96b MDL-59140 core: upgrade 'navcourselimit' if set to old default value 2017-06-14 12:32:05 +01:00
Mark Nelson fa238237a0 MDL-59140 core: limit the number of courses shown in the navigation
If the user is enrolled in more courses than the limit then a 'More...'
link is displayed which takes the user to the course/index.php page.
2017-06-14 12:32:04 +01:00
Mark Nelson c0a9edbd18 MDL-59140 core: changes to the 'navcourselimit' setting
Changed the default and description.
2017-06-14 12:32:04 +01:00
Eloy Lafuente (stronk7) 736973d604 Merge branch 'wip-MDL-58523-master' of git://github.com/marinaglancy/moodle 2017-06-14 12:32:03 +01:00
Jun Pataleta e037a6a126 Merge branch 'MDL-59012-master-linkurl' of git://github.com/mudrd8mz/moodle 2017-06-14 12:32:03 +01:00
Eloy Lafuente (stronk7) 6c79f56fe0 Merge branch 'MDL-58820-master' of https://github.com/nwp90/moodle 2017-06-14 12:32:03 +01:00
Jun Pataleta ef9b236d8a Merge branch 'MDL-58991-master' of git://github.com/lameze/moodle 2017-06-14 12:32:02 +01:00
Dan Poltawski 5dbb6b74a9 Merge branch 'MDL-41426-block-completionstatus-spaces' of https://github.com/lucaboesch/moodle 2017-06-14 12:32:02 +01:00
Dan Poltawski f1ec088e84 Merge branch 'MDL-46322' of https://github.com/stronk7/moodle 2017-06-14 12:32:01 +01:00
Eloy Lafuente (stronk7) 84e3c97bb0 MDL-46322 database: alias sort fields to avoid ambiguous naming 2017-06-14 12:32:01 +01:00
Jake Dallimore 63aa8c27be Merge branch 'MDL-58136-master' of git://github.com/damyon/moodle 2017-06-14 12:31:56 +01:00
Jake Dallimore 235df202c4 Merge branch 'MDL-51691-master' of https://github.com/jebarviabb/moodle 2017-06-14 12:30:43 +01:00
Jun Pataleta abb8b5e147 Merge branch 'MDL-58248-theme_boost-label-for-expand-button' of https://github.com/marcusgreen/moodle 2017-06-14 12:30:43 +01:00
Eloy Lafuente (stronk7) 1e34274846 Merge branch 'MDL-59032-master' of git://github.com/damyon/moodle 2017-06-14 12:30:42 +01:00
Eloy Lafuente (stronk7) 29a063a13f Merge branch 'MDL-59133-master' of git://github.com/jleyva/moodle 2017-06-14 12:30:42 +01:00
Eloy Lafuente (stronk7) e0f8686f39 Merge branch 'MDL-40015-master' of git://github.com/jleyva/moodle 2017-06-14 12:30:41 +01:00
Eloy Lafuente (stronk7) 8a55a41f88 Merge branch 'mdl58161-master' of https://github.com/tlock/moodle 2017-06-14 12:30:41 +01:00
Eloy Lafuente (stronk7) 4009603025 Merge branch 'MDL-59056-admin-allowstealth-select-checkbox' of https://github.com/lucaboesch/moodle 2017-06-14 12:30:41 +01:00
Eloy Lafuente (stronk7) bf3b9e57b8 Merge branch 'MDL-58907_master' of git://github.com/markn86/moodle 2017-06-14 12:30:40 +01:00
Eloy Lafuente (stronk7) 0c272e07e2 Merge branch 'MDL-59132-master' of git://github.com/jleyva/moodle 2017-06-14 12:30:40 +01:00
Eloy Lafuente (stronk7) f30af085a9 Merge branch 'MDL-58318-master' of git://github.com/damyon/moodle 2017-06-14 12:30:39 +01:00
Dan Poltawski fd5772e691 Merge branch 'wip_MDL-36501_master' of https://github.com/mtpmcdermott/moodle 2017-06-14 12:30:39 +01:00
Dan Poltawski ff3c693b58 Merge branch 'MDL-50011-master' of https://github.com/nwp90/moodle 2017-06-14 12:30:38 +01:00
Eloy Lafuente (stronk7) 03b0cb584c Merge branch 'MDL-59112-master' of git://github.com/jleyva/moodle 2017-06-14 12:30:38 +01:00
Dan Poltawski dd4208e6ec Merge branch 'mdl46322-master' of https://github.com/AndresMelo/moodle 2017-06-14 12:30:37 +01:00
Ankit Agarwal a4beef4e31 MDL-44961 logs: Keep log dates constant during restore 2017-06-14 15:20:58 +05:30
Marina Glancy 118d569863 MDL-40408 mod_data: skip metadata fields during import 2017-06-14 11:31:30 +08:00
Juan Leyva 0237571004 MDL-58712 core_user: New function for retrieving file area info 2017-06-13 11:22:33 +01:00
Damyon Wiese 4c735661ad MDL-58136 course: Remove lines from unit test
Remove unused vars and logic from the unit test for classifying a course.
2017-06-13 15:06:20 +08:00
Marina Glancy fe81ef397c MDL-51917 course completion: order activities in reports
Thanks to Nick Phillips for initial patch
2017-06-13 14:46:25 +08:00
Marina Glancy c3c97e2ee2 MDL-58523 mod_feedback: deleting response should reset completion 2017-06-13 14:35:08 +08:00
Damyon Wiese c561297d26 MDL-58136 navigation: Ensure we have all course fields
To properly classify courses we need the start/end dates etc.
2017-06-13 10:07:54 +08:00
Damyon Wiese ddce4f4ba9 MDL-58136 cache: Add a course completion cache
The last change added 1 db read per course per page which is not OK. Add a cache to compensate.
2017-06-13 10:03:00 +08:00
Damyon Wiese d07373f289 MDL-58136 boost: Limit courses in flatnav
Only show "in-progress" courses in the boost flat navigation (as per the myoverview block).
2017-06-13 10:02:14 +08:00
Simey Lameze 4cc2f33b08 MDL-59142 core_theme: cache post-processed css
Thanks Cameron Ball for the base patch
2017-06-13 09:35:35 +08:00
Damyon Wiese 4a0a23e98f MDL-58472 videojs: Force manual initialise
If we let videojs auto-init the video/audio tags present in the page - we cannot guarantee that the
youtube library will be loaded by the time video.js is processing the tag.

Video.js uses the presence of a data-setup attibute to signal that it should auto-init this tag, so
we have to rename our config attribute to something else.
2017-06-13 09:11:20 +08:00
Josh Ebarvia 9916cef9c4 MDL-51691 assignsubmission_feedback: Fix delete comments 2017-06-13 08:39:53 +09:30
Tim Lock d621396fee MDL-58161 user: tests: user_can_view_profile fails under certain cases 2017-06-13 08:12:08 +09:30
Dan Poltawski fc4e3b3cf0 MDL-55548 course: update test to use waitForSecond() 2017-06-12 10:04:01 +01:00
Dan Poltawski a52d3abbb6 Merge branch 'MDL-55548_master' of git://github.com/markn86/moodle 2017-06-12 10:00:24 +01:00
Mark Nelson b75ff47441 MDL-55548 backup: changes after review
1) There is no need to store the 'timemodified' value of
the section when backing up a course module, they do
not refer to the same time.
2) When creating a new course section during restore use
the current time.
3) Added timemodified value to more places when updating
the 'course_sections' table.
2017-06-12 15:52:54 +08:00
Devang Gaur 4ddf7c6025 MDL-55548 course: added timemodified field to course_sections table 2017-06-12 15:52:53 +08:00
David Mudrák 7352805df1 MDL-58985 course: Fix display of availability information
The availability info text can be either a one line short text such as
"Hidden from students" but it can also be a long HTML formatted text
with the list of all restricted access conditions. For the latter, using
bootstrap labels was not appropriate.

This extends the template context data with some boolean flags that
allow to better distinguish the source and meaning of the availability
information and display it accordingly.

Credit goes to Marina Glancy for the solution idea.
2017-06-12 09:38:56 +02:00
Jun Pataleta 8b6dfe10ee Merge branch 'MDL-59042-master-upgradefix' of github.com:snake/moodle 2017-06-12 15:29:59 +08:00
Jake Dallimore 8430250a2f MDL-59042 upgrade: fix for non existent table in core upgrade.
Moved upgrade step to the assign mod where table is known to exist.
2017-06-12 15:03:31 +08:00
Adrian Greeve c05dc071b0 MDL-58729 database: Improve performance of CLI tool.
Imporve the speed with which mysql_collation converts to
a different collation.
2017-06-12 14:03:36 +08:00
Jake Dallimore 3b3460bc73 Merge branch 'MDL-57103-master' of https://github.com/xow/moodle 2017-06-12 13:58:14 +08:00
Jun Pataleta 46f2ea5dba Merge branch 'MDL-59154-master' of git://github.com/andrewnicols/moodle 2017-06-12 13:44:57 +08:00
Jun Pataleta 8363ec8637 Merge branch 'MDL-59042-master' of git://github.com/snake/moodle 2017-06-12 13:29:03 +08:00
Jake Dallimore 4cd1d4c70f MDL-59042 upgrade: datafix assign group overrides with null priority
Find any events records for assign group overrides having null priority
and sets their priority to the sortorder value from the corresponding
assign_overrides table entry.
2017-06-12 13:18:40 +08:00
John Okely c9a4d37c3d MDL-57103 lib: Force ajax renderer for all ajax fatal errors 2017-06-12 10:36:42 +08:00
Mark Nelson 0ecb3d7786 MDL-58907 block_myoverview: change URL when tab is selected
We then check if this paramter exists in the URL and if it
does we display the specified tab.
2017-06-12 10:34:38 +08:00
Mark Nelson 4dfb8cf060 MDL-58907 block_myoverview: display last tab user was on 2017-06-12 10:34:38 +08:00
Mark Nelson ff6cd55d79 MDL-58907 block_myoverview: added setting to select default tab 2017-06-12 10:34:38 +08:00
Jun Pataleta 9332accdc5 MDL-59171 mod_lti: Set mod_lti_view_lti's type to 'read' 2017-06-12 08:33:49 +08:00
Juan Leyva 63130e328d MDL-59133 mod_lesson: Return page record in get_user_attempt WS 2017-06-09 12:07:16 +01:00
David Balch 053c55a76c MDL-58919 assignsubmission_file: Wider accepted file types input field 2017-06-09 09:23:27 +01:00
David Balch 797a70c0ec MDL-58919 assignsubmission_file: Add accepted file types default.
New setting "defaultacceptedfiletypes" to define default accepted file
types in File submissions.
2017-06-09 09:23:27 +01:00
Jake Dallimore 67ed6d415e MDL-59042 assign: Group override edit no longer resets event priority
Fixed a bug in which $fromform->sortorder wasn't set before passing
$formdata to assign_update_events, resulting in the existing event
priority being incorrectly nulled and breaking the effective override.
2017-06-09 15:23:46 +08:00
Tim Lock 72b8806abc MDL-55979 quiz: Fix error moving question from last page
When moving the last question from the last page to the last slot of the previous page would show the error in the error
log but move successfully.
2017-06-09 08:33:38 +09:30
Luca Bösch ad2cba8ec5 MDL-59056 admin: allowstealth yes/no checkbox instead of on/off 2017-06-08 19:13:05 +02:00
Luca Bösch cf052a864d MDL-41426 block: Whitespace lacking in completion status block 2017-06-08 19:09:52 +02:00
Marcus Green 78af4ba053 MDL-58248 theme_boost: label/span for sidepanel expand button
Add string "Side panel" to make the purpose of
trigram/hamburger icon at top left clearer, particularly
when using screen readers e.g. Jaws/NVDA.
Currently it reads out only "expand"
2017-06-08 18:06:01 +01:00
AMOS bot 342db7031e Automatically generated installer lang files 2017-06-09 00:18:10 +08:00
Dan Poltawski 4c6063bff9 weekly release 3.4dev 2017-06-08 12:16:18 +01:00
Dan Poltawski 97559da88d Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-06-08 12:16:16 +01:00
Juan Leyva 7c3c0fa323 MDL-59132 mod_feedback: Fix anonymous responses numbering
This was done correctly by the web scrip but not by the WS.
2017-06-08 11:14:45 +01:00
Juan Leyva 67adb4d8c1 MDL-40015 core_course: Fix description of duplicate_course WS
It said that the duplication didn’t include user data, but that’s not
true since there is a parameter to include it.
2017-06-08 10:19:47 +01:00
Juan Leyva 15248799ff MDL-59112 theme_clean: Always return expected moodle_url
The function was returned some times a moodle_url object and another
times just a string with a relative URL.
2017-06-08 09:39:44 +01:00
Andrew Nicols d0f6660b98 MDL-59154 theme: Lock for all caching builds
The previous behaviour was to only lock when in theme designer mode.
As a result, when generating the theme for after a reset, each new
client was starting the generation afresh and no locking was taking
place at all.
2017-06-08 11:49:50 +08:00
Juan Leyva 7ddb5f25b3 MDL-59019 course: Fix grade field type in WS get_course_module 2017-06-07 16:53:36 +01:00
Dan Poltawski 60d04b28e7 Merge branch 'MDL-59101-master' of git://github.com/junpataleta/moodle 2017-06-07 16:25:58 +01:00
Jun Pataleta 51807cf5c4 MDL-59101 calendar: Properly calculate expected until date 2017-06-07 23:09:17 +08:00
Dan Poltawski 1cf7106717 Merge branch 'MDL-58567-master-fix' of git://github.com/junpataleta/moodle 2017-06-07 15:14:30 +01:00
Jun Pataleta 83740b9fc1 MDL-58567 upgradelib: Do not show upgrade times on install 2017-06-07 16:15:40 +08:00
Jun Pataleta 953df36964 Merge branch 'MDL-57139-master' of git://github.com/danpoltawski/moodle 2017-06-07 14:36:13 +08:00
Dan Poltawski afaa33d9e1 MDL-57139 myoverview: fix paging button edge case
Previously the 'view more' button was disabled when should be enabled
2017-06-07 07:21:31 +01:00
Jake Dallimore 3a0bd9d95a Merge branch 'MDL-59076_master' of git://github.com/markn86/moodle 2017-06-07 09:24:07 +08:00
Eloy Lafuente (stronk7) e747059693 Merge branch 'MDL-58694-master' of git://github.com/jleyva/moodle 2017-06-06 19:34:16 +02:00
Eloy Lafuente (stronk7) 6fff2a911a Merge branch 'MDL-50265-master' of git://github.com/danpoltawski/moodle 2017-06-06 19:27:59 +02:00
Jun Pataleta 1ff50be21f Merge branch 'MDL-58908-master' of git://github.com/damyon/moodle 2017-06-06 17:15:41 +08:00
Dan Poltawski 1be1d5e5cf Merge branch 'MDL-58658' of https://github.com/sk-unikent/moodle 2017-06-06 10:00:42 +01:00
Damyon Wiese 4c8deb9cfa MDL-59032 scorm: Don't show action events to teachers 2017-06-06 15:57:23 +08:00
Jake Dallimore 58a4dacf87 Merge branch 'MDL-57304_template_comments_fix' of https://github.com/gthomas2/moodle 2017-06-06 15:54:33 +08:00
Dan Poltawski cafd4bc67e Merge branch 'MDL-59086_master' of git://github.com/markn86/moodle 2017-06-06 08:44:46 +01:00
Jun Pataleta 4b64128f5b Merge branch 'MDL-57139-master' of git://github.com/danpoltawski/moodle 2017-06-06 14:47:52 +08:00
Jun Pataleta c9a3a21c31 Merge branch 'MDL-49398_final4' of https://github.com/sk-unikent/moodle 2017-06-06 12:43:14 +08:00
Mark Nelson 0a5d493c70 MDL-59076 format_weeks: if 'enddate' does not exist in backup then use 0 2017-06-06 12:39:38 +08:00
Jun Pataleta 4079a000ef Merge branch 'MDL-58646-master' of git://github.com/danpoltawski/moodle 2017-06-06 12:24:07 +08:00
Jake Dallimore 98acb48366 Merge branch 'MDL-58900-master' of git://github.com/lameze/moodle 2017-06-06 11:37:16 +08:00
Nick Phillips 3543eabc36 MDL-58820 question: Allow styling response numbering in MCQs 2017-06-06 15:29:41 +12:00
Nadav Kavalerchik 06bedaf83f MDL-50011 qtype_multichoice: add settings (defaults for new questions) 2017-06-06 15:23:41 +12:00
Simey Lameze 01d22ff8c6 MDL-58991 report_stats: use same date handling on chart rendering
This commmit fixes applies the same date handling used on stats
table render to the charts render.
2017-06-06 09:46:23 +08:00
Eloy Lafuente (stronk7) fa58bc0a36 Merge branch 'MDL-58826_master' of https://github.com/marxjohnson/moodle 2017-06-06 01:44:18 +02:00
Eloy Lafuente (stronk7) 31409e0718 Merge branch 'MDL-59096-master' of https://github.com/sammarshallou/moodle 2017-06-06 01:34:21 +02:00
Eloy Lafuente (stronk7) 39f0cb8b8f Merge branch 'MDL-53240-master-filetypewidgets' of git://github.com/mudrd8mz/moodle 2017-06-05 23:38:23 +02:00
Eloy Lafuente (stronk7) f3f4c142fc Merge branch 'MDL-58970-master' of https://github.com/abias/moodle 2017-06-05 22:27:52 +02:00
David Mudrák 710a2414d8 MDL-53240 filetypes: Use multibyte safe variant of strtolower
Credit goes to failed unit tests.
2017-06-05 20:50:28 +02:00
Matt McDermott d55c1ef2d2 MDL-36501 grades: Include 'Parent Category' on create grade item
Force the edit and creat grade item forms to include the same content. This is accomplished by creating a new grade item and setting the correct category. From there the same logic applied when editing a grade item is applied when creating a grade item.
2017-06-05 09:22:28 -07:00
Skylar Kelty 4bdd769309 MDL-49398 accesslib: Update for 3.4 and cleanups 2017-06-05 15:13:07 +01:00
Dan Poltawski 10cd2bfad3 Merge branch 'MDL-53240-master-filetypewidgets' of git://github.com/mudrd8mz/moodle 2017-06-05 14:54:54 +01:00
Dan Poltawski 646916b914 Merge branch 'MDL-59080_master' of git://github.com/lazydaisy/moodle 2017-06-05 12:49:03 +01:00
Dan Poltawski e796817c97 Merge branch 'MDL-58567-master-v2' of https://github.com/sammarshallou/moodle 2017-06-05 12:39:47 +01:00
Mark Johnson 7e732c5d5a MDL-58826 theme_boost: Prevent fatal errors in action menu behat steps 2017-06-05 09:01:20 +01:00
AMOS bot 498566c065 Automatically generated installer lang files 2017-06-04 00:06:57 +08:00
AMOS bot 6b178cd439 Automatically generated installer lang files 2017-06-04 00:06:57 +08:00
Dan Poltawski 37c9bbe37d Merge branch 'MDL-59091_gherkinlint_fix' of https://github.com/mrmark/moodle 2017-06-03 08:54:43 +01:00
Alexander Bias 79675c05d0 MDL-58970 themes: Fix references to core/loginform template 2017-06-02 20:29:24 +02:00
Mark Nielsen 965c700dad MDL-59091 behat: Fix gherkinlint errors
Just whitespace problems.
2017-06-02 09:31:40 -07:00
Mark Nielsen 58923606e4 MDL-59091 behat: Properly propagate gherkinlint exit code 2017-06-02 09:27:48 -07:00
AMOS bot a891c41cbe Automatically generated installer lang files 2017-06-03 00:07:17 +08:00
sam marshall 6d7c06a990 MDL-59096 Tasks: Web running local plugin scheduled tasks fails 2017-06-02 17:06:28 +01:00
sam marshall 03440bcb37 MDL-58567 Upgrade: Show upgrade times 2017-06-02 17:05:35 +01:00
Dan Poltawski 45de56112a MDL-50265 tests: update tag events tests
Remove use of final deprecated functions. Sadly these tests were not
properly updated when the functions were deprecated and continued to use
the deprecated functions. I've removed the uses of the final deprecated
functions and updated a few of the non-final-deprecation uses (but not
all)
2017-06-02 11:11:37 +01:00
Dan Poltawski b6989e92ba MDL-50265 tests: remove deprecated useragent tests 2017-06-02 11:11:37 +01:00
Dan Poltawski e4f4d34131 MDL-50265 deprecatedlib: final deprecation of 3.0 deprecations
These functions have now been deprecated for 4 releases, so are being
removed according to:
https://docs.moodle.org/dev/Deprecation#Step_2._Final_deprecation
2017-06-02 11:11:37 +01:00
Tony Levi 95c0b810bf MDL-49398 accesslib: Change competency to use new accesslib function 2017-06-02 10:04:09 +01:00
Tony Levi e705e69e7f MDL-49398 accesslib: Simplify role definition loading and cache
This change removes the complex and partial loading of role definition data for users.
It is replaced by keeping one system-wide definition for each role in MUC.

This is cheaper to regenerate as it avoids complex database queries (repeated LEFT JOIN to context).
Memory usage is kept low thanks to array CoW for each user access data.
2017-06-02 07:53:23 +01:00
Mary Evans 7bfebce0c0 MDL-59080 theme_boost: make drawer.scss variables default
--author="Urs Hunkler <urs.hunkler@unodo.de>"
2017-06-02 07:53:03 +01:00
Dan Poltawski 2fe51fa327 MDL-58646 lib: import latest sabberworm/PHP-CSS-Parser
This version includes a fix[1] contributed by Frédéric Massart investigating
our compilation time issues, which significantly improves the speed of
processing font awesome.

Thanks, Fred!

[1] https://github.com/sabberworm/PHP-CSS-Parser/pull/120
2017-06-02 07:45:57 +01:00
Dan Poltawski 50c277a5d8 MDL-57139 js: built 2017-06-01 14:54:40 +01:00
Dan Poltawski 751ec02540 MDL-57139 amd/templates: catch unhandled promise failure 2017-06-01 14:54:39 +01:00
Dan Poltawski 4276f9c717 MDL-57139 amd/user_date: always return 2017-06-01 14:54:39 +01:00
Dan Poltawski f8587005cb MDL-57139 survey: fix promise return 2017-06-01 14:54:39 +01:00
Dan Poltawski a1ce326669 MDL-57139 course: update menu action promises to best practices 2017-06-01 14:54:38 +01:00
Dan Poltawski 72ed079f60 MDL-57139 myoverview: Use promise best practices
Simplified promise
* Always return
* Make use of promise chaining features to simplfy flow
2017-06-01 14:54:38 +01:00
Dan Poltawski 08c2360e4a MDL-57139 competencies: ensure promise best practices 2017-06-01 10:27:59 +01:00
Dan Poltawski 1fea12b0eb MDL-57139 mod_lti: ensure promise best practices 2017-06-01 10:27:59 +01:00
Dan Poltawski 7efdac5fc3 MDL-57139 tool_usertours: return in promises 2017-06-01 10:27:59 +01:00
Dan Poltawski e58ecca175 MDL-57139 core/fragment: simplify promises and always return
We can remove the DIY promise handling because the ajax request can just
return a promise itself.
2017-06-01 10:27:59 +01:00
Dan Poltawski d85d7831d0 MDL-57139 assign: ensure promise best practices 2017-06-01 10:27:58 +01:00
Dan Poltawski 877d997fe1 MDL-57139 messages/notifications: ensure promise best practices
Previously there were a few issues with the code

* We were capturing a promise without then then .then() that came after
  it, so our promise wouldn't always be completely resolved by the time
  then next piece of code was operating on it

* We weren't catching all errors with .catch()
2017-06-01 10:27:58 +01:00
Dan Poltawski 66a91ddada MDL-57139 eslint: enable eslint-plugin-promise rules
For promise best practices
2017-06-01 10:27:58 +01:00
Dan Poltawski 78ab4f741b weekly release 3.4dev 2017-06-01 09:28:17 +01:00
Dan Poltawski 012ac814a6 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-06-01 09:28:14 +01:00
David Mudrák 8cf36e9c81 MDL-53240 filetypes: Introduce admin_setting_filetypes class
This new type of admin settings makes use of the filetypes browser but
for the admin settings.
2017-06-01 09:48:45 +02:00
Jake Dallimore 9ced5fcc7b Merge branch 'MDL-59094-master' of git://github.com/danpoltawski/moodle 2017-06-01 15:27:57 +08:00
David Mudrák 8b493eb09d MDL-53240 filetypes: Enhance the filetypes element with a types browser 2017-06-01 09:20:07 +02:00
John Okely 86bb4f5bf2 MDL-53240 filetypes: Add functions to be used for input validation 2017-06-01 09:18:38 +02:00
David Mudrák e3ad9db6b6 MDL-53240 filetypes: Add methods for generating the browser tree content
These new methods will be used to render the tree of file types groups
and extensions in the browser widget.

Co-Authored-By: John Okely <john@moodle.com>
2017-06-01 09:18:38 +02:00
Jonathon Fowler 97bb4f755e MDL-53240 filetypes: Introduce the form element to specify plugin types
This is a stripped down version of the original Jonathon's element
without the actual JS selector. The options "allowall" and "onlytypes"
are not fully supported right now yet.
2017-06-01 09:18:38 +02:00
David Mudrák 6c4a5fdf88 MDL-53240 filetypes: Introduce the filetypes_util helper class 2017-06-01 09:18:38 +02:00
AMOS bot d4bf7e8a39 Automatically generated installer lang files 2017-06-01 00:11:46 +08:00
Dan Poltawski 67c70db593 Merge branch 'MDL-59093-master' of git://github.com/junpataleta/moodle 2017-05-31 11:09:06 +01:00
Dan Poltawski 94e6425103 MDL-59094 npm: Update shrinkwrap file to npm 5 generated
Starting with npm version 5, npm install will generate a lockfile
(now named package-lock.json) or update the existing npm-shrinkwrap.json

To prevent changes being generated in the codebase when this happens, we
need to commit the version 5 generated shrinkwrap.

This is related to a general overhaul [1] of how npm manages things. But
for our purposes, we the lockfile should be BC to previous versions [2].

Going forward, we need to ensure we generate the lockfile on npm >=5 to
prevent differences from the previously un-versioned lockfile.

[1] http://blog.npmjs.org/post/161081169345/v500
[2] https://github.com/npm/npm/issues/16728#issuecomment-305104149
2017-05-31 10:10:03 +01:00
gthomas2 bd87693fd6 MDL-57304 templates: Do not include comments via ajax 2017-05-31 09:09:53 +01:00
Jun Pataleta 723742fee0 MDL-59093 calendar: Use a fixed start day for forever BYMONTH test 2017-05-31 15:01:34 +08:00
Simey Lameze dc0deaf04d MDL-58900 mod_assign: fix incorrect overrides ordering 2017-05-31 10:50:28 +08:00
Jake Dallimore 4ff1fef79f Merge branch 'MDL-58654_global_search_batch' of https://github.com/mattporritt/moodle 2017-05-31 09:05:29 +08:00
Jake Dallimore ea1676f761 Merge branch 'MDL-54887-master' of git://github.com/junpataleta/moodle 2017-05-31 08:35:05 +08:00
Eloy Lafuente (stronk7) 32a627d7cf Merge branch 'MDL-49988_fix_wiki_preview' of https://github.com/DMaterka/moodle 2017-05-31 00:30:08 +02:00
Matt Porritt 0a9a10f029 MDL-58654 Global search: Allow engines to support batch processing.
Allow Global Search 3rd party engines to be much faster by supporting batch processing.
Refactor the iterator loop for the documents to add to the search index into its own method.
Move this new method from the manger class to the base engine class.
The move to the base engine class will allow search engine plugins to override this and determine
how they implment it. It will not break the existing interface contract with existing plugins.

Finally, add an elasped time indication to the trace output.
2017-05-31 08:28:12 +10:00
Dan Poltawski 1a07f9f037 Merge branch 'MDL-58997-group-names-multilang' of https://github.com/lucaboesch/moodle 2017-05-30 16:53:06 +01:00
Luca Bösch 29b83cbb34 MDL-58997 calendar: Group names passing multilang filters. 2017-05-30 16:42:52 +02:00
Dan Poltawski a8aa1a0362 Merge branch 'MDL-59041-master' of git://github.com/junpataleta/moodle 2017-05-30 14:05:13 +01:00
Jun Pataleta 5e0af1da71 MDL-59041 calendar: Make PRODID of exported ics attributed to Moodle 2017-05-30 19:33:01 +08:00
Eloy Lafuente (stronk7) 7ec40aac16 Merge branch 'MDL-58994-master' of git://github.com/cameron1729/moodle 2017-05-30 13:23:29 +02:00
Jun Pataleta 8334c8a0a0 Merge branch 'MDL-50273-master' of git://github.com/danpoltawski/moodle 2017-05-30 19:21:35 +08:00
Dan Poltawski 6ed955f16c Merge branch 'MDL-59075' of git://github.com/stronk7/moodle 2017-05-30 12:17:38 +01:00
Dan Poltawski 64fe8bfe94 Merge branch 'MDL-49040-master' of https://github.com/jebarviabb/moodle 2017-05-30 11:42:23 +01:00
Dan Poltawski 31245d8746 Merge branch 'MDL-50266-master' of git://github.com/ankitagarwal/moodle 2017-05-30 10:38:14 +01:00
Dan Poltawski 53ca9cc890 MDL-50273 deprecatedlib: final deprecation of groups functions 2017-05-30 10:23:33 +01:00
Jun Pataleta 50b4c5a491 Merge branch 'MDL-57313-master-clibootswatch' of git://github.com/mudrd8mz/moodle 2017-05-30 16:57:29 +08:00
Dan Poltawski b1846b8a17 Merge branch 'MDL-50632-master' of git://github.com/ankitagarwal/moodle 2017-05-30 09:55:34 +01:00
Jun Pataleta e083ac1cde MDL-54887 calendar: PR fixes
* Use the calendar_event::description property and format it using
format_text() on it in order to apply the appropriate filters.
* Then use html_to_text() on it to strip the tags and convert the
description to plain text while converting <br> and <p> tags to
line breaks.
2017-05-30 16:52:12 +08:00
Soon-Systems 231ddd5a8d MDL-54887 calendar: Format summary + description of an event for export 2017-05-30 16:32:36 +08:00
Eloy Lafuente (stronk7) 6308dad828 MDL-59075 behat: Update master to use 3.34.0 behat extension tag 2017-05-30 09:45:40 +02:00
Dan Poltawski c744efe5bc Merge branch 'MDL-59014-master' of git://github.com/junpataleta/moodle 2017-05-30 08:31:47 +01:00
Mark Nelson 9bd705e3dd MDL-59086 gradereport_grader: style 'Save changes' button 2017-05-30 13:43:37 +08:00
Jake Dallimore a142f6dc59 Merge branch 'MDL-44905' of https://github.com/anieminen/moodle 2017-05-30 09:32:03 +08:00
Arto Nieminen 81d7b77d6f MDL-44905 mod_scorm: Skip view page on a Single activity course
Allow 'Student skip content structure page: Always' option with 'Single
activity' course format, and redirect 'Exit activity' back to site home
if user has no report access.
2017-05-29 20:32:40 +03:00
David Mudrák 017d0bc199 MDL-57313 boost: Fix the CLI utility import-bootswatch.php 2017-05-26 09:52:18 +02:00
Dan Poltawski 9e7afbbc6c weekly release 3.4dev 2017-05-24 19:14:39 +01:00
Dan Poltawski e543846602 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-05-24 19:14:37 +01:00
Tim Hunt de4f0f25ea MDL-59048 user tours: avoid white-on-white text in Clean 2017-05-24 17:48:21 +01:00
gthomas2 770f0532ef MDL-58761 behat: Fix regex in i_open_my_profile_in_edit_mode step 2017-05-24 13:54:49 +01:00
Ankit Agarwal 8130352f5a MDL-50632 filters: Final deprecation of apis deprecated in 3.0 2017-05-24 12:44:27 +05:30
Andrew Nicols 44dd6d95e2 Merge branch 'MDL-59011-master' of git://github.com/ankitagarwal/moodle 2017-05-24 14:18:34 +08:00
Damyon Wiese d4d414694a MDL-58318 setuplib: Redirect on https mismatch
When the wwwroot indicates https support and a page is accessed over http,
redirect to the wwwroot. This is a better experience than displaying an error.
2017-05-24 13:42:34 +08:00
Ankit Agarwal 23cef8753b MDL-59011 restore: Check for userride only for activity events 2017-05-24 09:58:46 +05:30
Andrew Nicols 4680221da4 MDL-58577 stats: Correct groupby when getting report options 2017-05-23 19:40:37 +08:00
Andrew Nicols 1c74ec835b Merge branch 'MDL-58577-statistics-report-header-multilang' of https://github.com/lucaboesch/moodle 2017-05-23 19:36:05 +08:00
David Mudrák 97cc7e0969 MDL-59012 auth_oauth2: Do not escape URL in plain text emails 2017-05-23 13:28:27 +02:00
Jun Pataleta 382ac14d1d MDL-59014 calendar: Unescape event URL for the mini calendar 2017-05-23 17:20:31 +08:00
Luca Bösch 2ee4c6cd73 MDL-58577 stats: Use multilang with role in header 2017-05-23 11:07:51 +02:00
Jun Pataleta 986e5eb7ee Merge branch 'MDL-58895-master' of git://github.com/ankitagarwal/moodle 2017-05-23 16:53:00 +08:00
Jake Dallimore e013a69fde Merge branch 'MDL-58921-calculated-question-name-multilang' of https://github.com/lucaboesch/moodle 2017-05-23 16:25:27 +08:00
Jun Pataleta 5d13738a82 Merge branch 'MDL-58165-master' of https://github.com/abias/moodle 2017-05-23 14:41:42 +08:00
Alexander Bias 27456a6422 MDL-58165 navigation: Add node key to private files navigation node 2017-05-23 07:20:27 +02:00
Ankit Agarwal 09028f32c8 MDL-58895 groups: Add bootstrap classes to buttons 2017-05-23 10:47:42 +05:30
Josh Ebarvia f0242b4d95 MDL-49040 gradereport_grader: Fix feedback truncation after & char 2017-05-23 13:05:00 +09:30
AMOS bot 32124b0010 Automatically generated installer lang files 2017-05-23 00:05:26 +08:00
Dan Poltawski 976e29a17d Merge branch 'MDL-58922-calculatedmulti-question-name-multilang' of https://github.com/lucaboesch/moodle 2017-05-22 10:46:47 +01:00
Luca Bösch f378fafd3b MDL-58921 questions: Calculated question name passing multilang.
In edit calculated question the question name does pass format_string to process multilang tags.
2017-05-22 11:36:23 +02:00
Luca Bösch 11252bde86 MDL-58922 questions: Calculatedmulti question name passing multilang.
In edit calculatedmulti question the question name does pass format_string to process multilang tags.
2017-05-22 11:31:49 +02:00
David Monllao 13a1e8b50c Merge branch 'master-MDL-56973' of https://github.com/fwsl/moodle 2017-05-22 15:13:58 +08:00
Jake Dallimore da2959fe9c Merge branch 'MDL-56617-course-cbm-grade-to-pass' of https://github.com/lucaboesch/moodle 2017-05-22 14:31:37 +08:00
Jun Pataleta aec421153e Merge branch 'MDL-58933' of git://github.com/stronk7/moodle 2017-05-22 14:12:36 +08:00
David Monllao 52ab8b2c16 Merge branch 'MDL-58986_master' of git://github.com/markn86/moodle 2017-05-22 12:21:11 +08:00
Jun Pataleta 905ceff28a Merge branch 'MDL-58966-master' of git://github.com/danpoltawski/moodle 2017-05-22 10:47:31 +08:00
David Monllao a5906ac944 Merge branch 'MDL-57957' of https://github.com/bostelm/moodle 2017-05-22 10:41:46 +08:00
AMOS bot a607c1fcb0 Automatically generated installer lang files 2017-05-21 00:04:03 +08:00
Eloy Lafuente (stronk7) 5e27228335 MDL-58933 upgrade: add 3.3.0 separation line to all upgrade scripts 2017-05-19 19:22:07 +02:00
Luca Bösch 16302f85ec MDL-56617 mod_quiz: No grade to pass check if CBM used
When certainty-based marking is used, grades can 'exceed' the maximum grade
(because they are multiplied by factors). Therefore, in such cases, don't show
no warning.
2017-05-19 12:30:38 +02:00
Grzegorz Ziółek 2e241fea56 MDL-56973 wiki: New page title readonly after changing course language 2017-05-19 11:12:55 +02:00
Cameron Ball 919b5c95e6 MDL-58994 core_calendar: Coalesce event sort field
There are situations where we need to sort events on a field called
"timesort", but sometimes it is not set. So we can fall back to
"timestart" in this case.
2017-05-19 15:08:05 +08:00
David Monllao 590292d48e weekly on-sync release 3.4dev 2017-05-19 13:11:14 +08:00
David Monllao ead7725c8e Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2017-05-19 13:11:12 +08:00
Andres 373d7d3f28 MDL-46322 mod_assign: Only list enrolled graders as potential markers 2017-05-18 21:58:24 -05:00
Dan Poltawski b7d26eb3d2 MDL-58966 completion: improve dashboard string 2017-05-18 10:15:08 +01:00
Mark Nelson f3dc7a171a MDL-58986 mod_quiz: add CSS classes to buttons on comment page 2017-05-18 16:49:25 +08:00
Ankit Agarwal fce1d7deb8 MDL-50266 mod_forum: Remove strings deprecated in 3.0 2017-05-18 11:17:13 +05:30
Ankit Agarwal 420617061d MDL-50266 block_tags: Remove strings deprecated in 3.0 2017-05-18 11:17:13 +05:30
Ankit Agarwal 715d6ba5f7 MDL-50266 core: Remove strings deprecated in 3.0 2017-05-18 11:17:13 +05:30
Ankit Agarwal aa951785e0 MDL-50266 lesson: Remove strings deprecated in 3.0 2017-05-18 08:34:33 +05:30
Andres Melo 3ffd13827e MDL-46322 mod_assign: Only list enrolled graders as potential markers 2017-05-17 16:12:54 -05:00
Alexander Bias 92a1ea6870 MDL-58970 themes: Rename login.mustache to loginform.mustache 2017-05-17 20:58:46 +02:00
AMOS bot e9e5295eb3 Automatically generated installer lang files 2017-05-18 00:06:54 +08:00
Dan Poltawski 2e34848348 Merge branch 'MDL-58776_master-fix' of https://github.com/markn86/moodle 2017-05-17 12:11:56 +01:00
Mark Nelson f92e27d84e MDL-58776 core_tag: removed whitespace from id attribute
This was preventing the JS from finding the element.
2017-05-17 18:42:28 +08:00
Simey Lameze b991325da2 MDL-58884 core_competency: add exporter required course fields 2017-05-17 13:02:48 +08:00
Jake Dallimore 1f36a0796f Merge branch 'MDL-58947-master' of https://github.com/sammarshallou/moodle 2017-05-17 09:15:09 +08:00
Andrew Nicols bb706a6557 Merge branch 'MDL-58795-master' of https://github.com/jebarviabb/moodle 2017-05-17 06:59:36 +08:00
Daniel Materka 5058a4d199 MDL-49988 wiki: fix broken page layout if html contains line breaks 2017-05-16 19:23:00 +01:00
Dan Poltawski 2ba9d7d8f9 Merge branch 'MDL-58776-master' of git://github.com/ankitagarwal/moodle 2017-05-16 17:48:56 +01:00
AMOS bot aa614927a8 Automatically generated installer lang files 2017-05-17 00:08:41 +08:00
Henning Bostelmann b2e76ba7d8 MDL-57957 mod_assign: show feedback file in absence of grade item 2017-05-16 11:58:05 +01:00
Iñaki Arenaza 67bebb69eb MDL-57558 ldap: fix ldap_get_entries_moodle()
While ldap_get_entries_moodle() PHPdocs state that it returns "array
ldap-entries with lower-cased attributes as indexes.", this is not true. It
uses ldap_get_attributes() internally, which returns both numerically indexed
attribute names, and dictionary-like entries indexed by attribute names.

Current code lowercases the dictionary-like entries, but then uses the
numerically indexed entries for the attribute names used as keys in the
returned array. The numerically indexed names might or might not be lowercased,
depending on the LDAP server and PHP version) version. E.g., OpenLDAP 2.x,
Novell eDirectory 8.x and MS Active Directory return mixed-cased attribute
names, and PHP 5.x and PHP 7.x don't lowercase them inside ldap_get_entries().

This is probably why all calls to ldap_get_entries_moodle() are followed by
calls to array_change_key_case(), even if that shouldn't be necessary.

So make sure we always return lower-cased attributs as indexes and add some
unit tests to avoid regressions in the future.
2017-05-16 10:48:27 +01:00
Jun Pataleta 9695ca7698 Merge branch 'MDL-58811-master-extra-slash' of https://github.com/dmitriim/moodle 2017-05-16 17:41:51 +08:00
Josh Ebarvia 0a0e2843fd MDL-58795 gradereport_grader: Prevent duplicates in grader report
Currently, the sorting being used for the grader report table
(asc/desc arrows) is just the grade_grades.finalgrade.
This adds grade_grades.userid in the sort to prevent duplicate
in records returned when using pages.
2017-05-16 18:29:24 +09:30
Mathieu Petit-Clair c14e697ee6 MDL-58952 admin: use valid default for language selection dropdown. 2017-05-16 15:28:25 +08:00
Jake Dallimore 8e123642e7 Merge branch 'MDL-58723-master' of git://github.com/junpataleta/moodle 2017-05-16 15:15:04 +08:00
Jun Pataleta 4eec39e2b2 MDL-58723 calendar: Better testing of forever recurring events
* Change the start date of the parent event to the current date
  for tests that with events that recur forever.
* Limit query results to 100 for events that recur forever that can
  generate more than 100 event records.
2017-05-16 14:39:53 +08:00
Andrew Nicols 1d52a56e48 Merge branch 'MDL-58756-statslib-roles-multilang' of https://github.com/lucaboesch/moodle 2017-05-16 13:52:05 +08:00
Luca Bösch 4bd112e4de MDL-58756 stats: Use multilang with role. 2017-05-16 07:29:09 +02:00
Dmitrii Metelkin 597c6f2a09 MDL-58811 backup: fix an extra slash on restore for the legacy files 2017-05-16 14:35:16 +10:00
David Monllao 8a0d6655f2 Merge branch 'MDL-58884-master' of git://github.com/StudiUM/moodle 2017-05-16 10:41:41 +08:00
Jake Dallimore 9f13573c43 Merge branch 'MDL-58770' of https://github.com/IMSGlobal/moodle 2017-05-16 09:57:05 +08:00
sam marshall ec5ec9bce5 MDL-58947 Search: Label URLs not correctly calculated 2017-05-15 17:45:45 +01:00
AMOS bot eaf052890f Automatically generated installer lang files 2017-05-16 00:06:43 +08:00
Dan Poltawski 5ff3609556 Merge branch 'MDL-58929-master' of git://github.com/ankitagarwal/moodle 2017-05-15 12:07:13 +01:00
Dan Poltawski 52836e3c73 Merge branch 'MDL-58936_master' of git://github.com/markn86/moodle 2017-05-15 11:45:17 +01:00
Dan Poltawski ca4f5a68bc Merge branch 'MDL-58496-master' of git://github.com/cameron1729/moodle 2017-05-15 11:14:19 +01:00
Dan Poltawski 6dbfda8109 Merge branch 'MDL-58916-master' of https://github.com/xow/moodle 2017-05-15 11:01:13 +01:00
Dan Poltawski 4010466614 Merge branch 'MDL-58841-master' of git://github.com/cameron1729/moodle 2017-05-15 10:46:00 +01:00
Dan Poltawski a4cc28017f Merge branch 'MDL-58852-choice-chart-options-multilang' of https://github.com/lucaboesch/moodle 2017-05-15 10:23:02 +01:00
Dan Poltawski bbc9e4f540 Merge branch 'MDL-58932' of git://github.com/stronk7/moodle 2017-05-15 08:57:09 +01:00
Andrew Nicols 86ef13916d Merge branch 'MDL-58893-master-missing-div' of https://github.com/dmitriim/moodle 2017-05-15 15:12:38 +08:00
Andrew Nicols ffd795ab95 Merge branch 'MDL-58920-calculated-question-edit-name-multilang' of https://github.com/lucaboesch/moodle 2017-05-15 13:57:04 +08:00
Dmitrii Metelkin f62497ce8e MDL-58893 portfolio: add missing closing div 2017-05-15 15:53:21 +10:00
Mark Nelson 004dcb4f58 MDL-58936 core: ensure 'page->context' is not null
When using $page->context it calls magic_get_context() in lib/pagelib.php.
This method sets the context to context_system::instance() if it is currently
null and returns that as the context. However, when installing a new site
context_system::instance() also returns null.
2017-05-15 12:29:15 +08:00
Ankit Agarwal b5eff76621 MDL-58929 converters: Make link title consistent 2017-05-15 09:45:09 +05:30
John Okely 40ca0bd914 MDL-58916 user_profile: Pass site context when determining menu options 2017-05-15 12:12:54 +08:00
Eloy Lafuente (stronk7) 1820d0bb6d MDL-58932 backup: Bump release to 3.4 2017-05-15 00:43:40 +02:00
Luca Bösch 46470ad02c MDL-58852 choice: Use multilang for choice options in charts 2017-05-14 21:31:10 +02:00
Luca Bösch 06147c5ab3 MDL-58920 questions: Calculated question name passing multilang.
In "Shared wild cards" table calculated question name do pass format_string to process multilang tags.
Thus, not breaking the layout any more.
2017-05-14 21:30:18 +02:00
Eloy Lafuente (stronk7) 17fb1d84a2 weekly back-to-dev release 3.4dev 2017-05-14 11:53:28 +02:00
Eloy Lafuente (stronk7) 8f568743d7 NOBUG: Change travis.yml back to master 2017-05-14 11:46:35 +02:00
Damyon Wiese 95e13556df MDL-58908 auth_oauth2: Don't kill gravatar
If gravatar is enabled, don't update profile pictures.
2017-05-12 11:43:47 +08:00
Skylar Kelty 761ac5a0aa MDL-58658 caching: Add static acceleration unit test for empty arrays 2017-05-11 10:56:04 +01:00
Issam Taboubi 013982e3c4 MDL-58884 competency: Inaccurate stats proficient competencies in course 2017-05-10 15:08:21 -04:00
Cameron Ball 15fbd9057e MDL-58841 mod_assign: Style "view all" link on grading summary 2017-05-09 15:04:55 +08:00
Ankit Agarwal 9e218b9282 MDL-58776 tags: Add bootstrap classes to buttons 2017-05-02 12:12:06 +05:30
Stephen Vickers 1768b85f09 MDL-58770 mod_lti: Strip HTML from parameters
Remove HTML tags from parameters which should be plain text.
2017-05-01 21:15:37 +01:00
Cameron Ball ec4b1e6183 MDL-58496 mod_chat: Update timesort when updating timestart
Previously when a repeating chat was updating the calendar
it would only update the timestart column. It needs to also
update the timesort column to display correctly on the new
overview.
2017-04-28 12:06:25 +08:00
Juan Leyva bf1babe5ff MDL-58694 admin: Add mobile related data to site registration 2017-04-25 10:30:24 +02:00
Skylar Kelty 32ec2da151 MDL-58658 caching: Fix static acceleration for empty arrays 2017-04-20 09:49:09 +01:00
Daniel Thee Roperto 589c8eb61b MDL-57246 forum: Fixed mod/forum/view.php redirection.
Fixed: Trying to view a forum without the capability may lead you to a broken page.
2017-04-04 16:16:54 +10:00
3172 changed files with 175854 additions and 67213 deletions
+4 -1
View File
@@ -6,7 +6,6 @@ vendor/
admin/tool/usertours/amd/src/tour.js
admin/tool/usertours/amd/src/popper.js
auth/cas/CAS/
auth/fc/fcFPP.php
enrol/lti/ims-blti/
filter/algebra/AlgParser.pm
filter/tex/mimetex.*
@@ -14,6 +13,7 @@ lib/editor/atto/yui/src/rangy/js/*.*
lib/editor/tinymce/plugins/pdw/tinymce/
lib/editor/tinymce/plugins/spellchecker/rpc.php
lib/editor/tinymce/tiny_mce/
lib/mlbackend/php/phpml/
lib/adodb/
lib/bennu/
lib/evalmath/
@@ -58,9 +58,12 @@ lib/maxmind/MaxMind/
lib/ltiprovider/
lib/amd/src/truncate.js
lib/fonts/
lib/validateurlsyntax.php
media/player/videojs/amd/src/video-lazy.js
media/player/videojs/amd/src/Youtube-lazy.js
media/player/videojs/videojs/
media/player/videojs/amd/src/videojs-flash-lazy.js
media/player/videojs/videojs/video-js.swf
mod/assign/feedback/editpdf/fpdi/
repository/s3/S3.php
theme/boost/scss/bootstrap/
+36 -2
View File
@@ -1,4 +1,7 @@
{
'plugins': [
'promise',
],
'env': {
'browser': true,
'amd': true
@@ -13,6 +16,7 @@
// === Possible Errors ===
'comma-dangle': 'off',
'no-compare-neg-zero': 'error',
'no-cond-assign': 'error',
'no-console': 'error',
'no-constant-condition': 'error',
@@ -64,7 +68,6 @@
'no-fallthrough': 'error',
'no-floating-decimal': 'warn',
'no-global-assign': 'warn',
// Enabled by grunt for AMD modules: 'no-implicit-globals': 'error',
'no-implied-eval': 'error',
'no-invalid-this': 'error',
'no-iterator': 'error',
@@ -103,6 +106,7 @@
'block-spacing': 'warn',
'brace-style': ['warn', '1tbs'],
'camelcase': 'warn',
'capitalized-comments': ['warn', 'always', { 'ignoreConsecutiveComments': true }],
'comma-spacing': ['warn', { 'before': false, 'after': true }],
'comma-style': ['warn', 'last'],
'computed-property-spacing': 'error',
@@ -170,11 +174,41 @@
'unicode-bom': 'error',
'wrap-regex': 'off',
// === Promises ===
'promise/always-return': 'warn',
'promise/no-return-wrap': 'warn',
'promise/param-names': 'warn',
'promise/catch-or-return': ['warn', {terminationMethod: ['catch', 'fail']}],
'promise/no-native': 'warn',
'promise/no-promise-in-callback': 'warn',
'promise/no-callback-in-promise': 'warn',
'promise/avoid-new': 'warn',
// === Deprecations ===
"no-restricted-properties": ['warn', {
'object': 'M',
'property': 'str',
'message': 'Use AMD module "core/str" or M.util.get_string()'
}],
}
},
overrides: [
{
files: ["**/yui/src/**/*.js"],
// Disable some rules which we can't safely define for YUI rollups.
rules: {
'no-undef': 'off',
'no-unused-vars': 'off',
'no-unused-expressions': 'off'
}
},
{
files: ["**/amd/src/*.js"],
// Check AMD with some slightly stricter rules.
rules: {
'no-unused-vars': 'error',
'no-implicit-globals': 'error'
}
}
]
}
+4 -1
View File
@@ -7,7 +7,6 @@ vendor/
admin/tool/usertours/amd/src/tour.js
admin/tool/usertours/amd/src/popper.js
auth/cas/CAS/
auth/fc/fcFPP.php
enrol/lti/ims-blti/
filter/algebra/AlgParser.pm
filter/tex/mimetex.*
@@ -15,6 +14,7 @@ lib/editor/atto/yui/src/rangy/js/*.*
lib/editor/tinymce/plugins/pdw/tinymce/
lib/editor/tinymce/plugins/spellchecker/rpc.php
lib/editor/tinymce/tiny_mce/
lib/mlbackend/php/phpml/
lib/adodb/
lib/bennu/
lib/evalmath/
@@ -59,9 +59,12 @@ lib/maxmind/MaxMind/
lib/ltiprovider/
lib/amd/src/truncate.js
lib/fonts/
lib/validateurlsyntax.php
media/player/videojs/amd/src/video-lazy.js
media/player/videojs/amd/src/Youtube-lazy.js
media/player/videojs/videojs/
media/player/videojs/amd/src/videojs-flash-lazy.js
media/player/videojs/videojs/video-js.swf
mod/assign/feedback/editpdf/fpdi/
repository/s3/S3.php
theme/boost/scss/bootstrap/
+11 -10
View File
@@ -1,18 +1,22 @@
{
"plugins": [
"stylelint-csstree-validator"
],
"rules": {
"csstree/validator": true,
"at-rule-empty-line-before": [ "always",
{"except": [ "blockless-group"], ignore: ["after-comment", "all-nested"]}
{"except": [ "blockless-after-blockless"], ignore: ["after-comment", "inside-block"]}
],
"at-rule-name-case": "lower",
"at-rule-name-space-after": "always-single-line",
"at-rule-no-unknown": null, # Enabled for non-scss in grunt.
"at-rule-semicolon-newline-after": "always",
"at-rule-semicolon-space-before": "never",
"block-closing-brace-newline-after": "always",
"block-closing-brace-newline-before": "always-multi-line",
"block-closing-brace-newline-before": "always",
"block-closing-brace-space-before": "always-single-line",
"block-no-empty": true,
"block-no-single-line": true,
"block-opening-brace-newline-after": "always-multi-line",
"block-opening-brace-newline-after": "always",
"block-opening-brace-space-after": "always-single-line",
"block-opening-brace-space-before": "always",
"color-hex-case": ["lower", { "severity": "warning" }],
@@ -21,7 +25,6 @@
"declaration-bang-space-after": "never",
"declaration-bang-space-before": "always",
"declaration-block-no-duplicate-properties": true,
"declaration-block-no-ignored-properties": true,
"declaration-block-no-shorthand-property-overrides": true,
"declaration-block-semicolon-newline-after": "always-multi-line",
"declaration-block-semicolon-space-after": "always-single-line",
@@ -32,6 +35,7 @@
"declaration-colon-space-after": "always-single-line",
"declaration-colon-space-before": "never",
"declaration-no-important": true,
"font-family-no-duplicate-names": true,
"function-calc-no-unspaced-operator": true,
"function-comma-newline-after": "always-multi-line",
"function-comma-space-after": "always-single-line",
@@ -41,7 +45,7 @@
"function-name-case": "lower",
"function-parentheses-newline-inside": "always-multi-line",
"function-parentheses-space-inside": "never-single-line",
"function-url-data-uris": never,
"function-url-scheme-blacklist": ["data"],
"function-whitespace-after": "always",
"indentation": 4,
"keyframe-declaration-no-important": true,
@@ -50,14 +54,12 @@
"max-line-length": [132, { "severity": "warning" }],
"media-feature-colon-space-after": "always",
"media-feature-colon-space-before": "never",
"media-feature-no-missing-punctuation": true,
"media-feature-parentheses-space-inside": "never",
"media-feature-range-operator-space-after": "always",
"media-feature-range-operator-space-before": "always",
"media-query-list-comma-newline-after": "always-multi-line",
"media-query-list-comma-space-after": "always-single-line",
"media-query-list-comma-space-before": "never",
"no-browser-hacks": null, # Enabled for non-scss in grunt.
"no-empty-source": true,
"no-eol-whitespace": true,
"no-extra-semicolons": [true, { "severity": "warning" }],
@@ -78,11 +80,10 @@
"selector-pseudo-class-parentheses-space-inside": "never",
"selector-pseudo-element-case": "lower",
"selector-pseudo-element-no-unknown": true,
"selector-root-no-composition": true,
"selector-type-case": "lower",
"selector-type-no-unknown": true,
"string-no-newline": true,
"time-no-imperceptible": true,
"time-min-milliseconds": 100,
"unit-blacklist": ["pt"],
"unit-case": "lower",
"unit-no-unknown": true,
+37 -20
View File
@@ -2,7 +2,7 @@
# process (which uses our internal CI system) this file is here for the benefit
# of community developers git clones - see MDL-51458.
sudo: false
sudo: required
# We currently disable Travis notifications entirely until https://github.com/travis-ci/travis-ci/issues/4976
# is fixed.
@@ -13,11 +13,15 @@ language: php
php:
# We only run the highest and lowest supported versions to reduce the load on travis-ci.org.
- 7.1
- 5.6
- 7.2
- 7.0
addons:
postgresql: "9.3"
postgresql: "9.6"
packages:
- mysql-server-5.6
- mysql-client-core-5.6
- mysql-client-5.6
services:
- redis-server
@@ -26,7 +30,7 @@ env:
# Although we want to run these jobs and see failures as quickly as possible, we also want to get the slowest job to
# start first so that the total run time is not too high.
#
# We only run MySQL on PHP 7.1, so run that first.
# We only run MySQL on PHP 7.2, so run that first.
# CI Tests should be second-highest in priority as these only take <= 60 seconds to run under normal circumstances.
# Postgres is significantly is pretty reasonable in its run-time.
@@ -49,23 +53,16 @@ matrix:
fast_finish: true
include:
# Run grunt/npm install on lowest supported npm version
- php: 7.1
env: DB=none TASK=GRUNT NVM_VERSION='4'
# Run grunt/npm install on highest version ('node' is an alias for the latest node.js version.)
- php: 7.1
env: DB=none TASK=GRUNT NVM_VERSION='node'
- php: 7.2
env: DB=none TASK=GRUNT NVM_VERSION='8.9'
exclude:
# MySQL - it's just too slow.
# Exclude it on all versions except for 7.1
# Exclude it on all versions except for 7.2
- env: DB=mysqli TASK=PHPUNIT
php: 5.6
# Moodle 2.7 is not compatible with PHP 7 for the upgrade test.
- env: DB=pgsql TASK=UPGRADE
php: 7.1
php: 7.0
cache:
directories:
@@ -73,6 +70,26 @@ cache:
- $HOME/.npm
install:
- >
if [ "$DB" = 'mysqli' ];
then
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=1024m tmpfs /mnt/ramdisk
sudo stop mysql
sudo mv /var/lib/mysql /mnt/ramdisk
sudo ln -s /mnt/ramdisk/mysql /var/lib/mysql
sudo start mysql
fi
- >
if [ "$DB" = 'pgsql' ];
then
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=1024m tmpfs /mnt/ramdisk
sudo service postgresql stop
sudo mv /var/lib/postgresql /mnt/ramdisk
sudo ln -s /mnt/ramdisk/postgresql /var/lib/postgresql
sudo service postgresql start 9.6
fi
- >
if [ "$TASK" = 'PHPUNIT' ];
then
@@ -187,7 +204,7 @@ before_script:
# We need the official upstream for comparison
git remote add upstream https://github.com/moodle/moodle.git;
git fetch upstream MOODLE_33_STABLE;
git fetch upstream MOODLE_34_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`
@@ -207,9 +224,9 @@ before_script:
# We need the official upstream.
git remote add upstream https://github.com/moodle/moodle.git;
# Checkout 27 STABLE branch.
git fetch upstream MOODLE_27_STABLE;
git checkout MOODLE_27_STABLE;
# Checkout 30 STABLE branch (the first version compatible with PHP 7.x)
git fetch upstream MOODLE_30_STABLE;
git checkout MOODLE_30_STABLE;
# Perform the upgrade
php admin/cli/install_database.php --agree-license --adminpass=Password --adminemail=admin@example.com --fullname="Upgrade test" --shortname=Upgrade;
+3 -22
View File
@@ -112,26 +112,9 @@ module.exports = function(grunt) {
// Even though warnings dont stop the build we don't display warnings by default because
// at this moment we've got too many core warnings.
options: {quiet: !grunt.option('show-lint-warnings')},
amd: {
src: amdSrc,
// Check AMD with some slightly stricter rules.
rules: {
'no-unused-vars': 'error',
'no-implicit-globals': 'error'
}
},
amd: {src: amdSrc},
// Check YUI module source files.
yui: {
src: ['**/yui/src/**/*.js', '!*/**/yui/src/*/meta/*.js'],
options: {
// Disable some rules which we can't safely define for YUI rollups.
rules: {
'no-undef': 'off',
'no-unused-vars': 'off',
'no-unused-expressions': 'off'
}
}
}
yui: {src: ['**/yui/src/**/*.js', '!*/**/yui/src/*/meta/*.js']}
},
uglify: {
amd: {
@@ -194,7 +177,6 @@ module.exports = function(grunt) {
rules: {
// These rules have to be disabled in .stylelintrc for scss compat.
"at-rule-no-unknown": true,
"no-browser-hacks": [true, {"severity": "warning"}]
}
}
},
@@ -211,7 +193,6 @@ module.exports = function(grunt) {
rules: {
// These rules have to be disabled in .stylelintrc for scss compat.
"at-rule-no-unknown": true,
"no-browser-hacks": [true, {"severity": "warning"}]
}
}
}
@@ -338,7 +319,7 @@ module.exports = function(grunt) {
opts: {stdio: 'inherit', env: process.env}
}, function(error, result, code) {
// Propagate the exit code.
done(code);
done(code === 0);
});
};
+1 -1
View File
@@ -89,7 +89,7 @@ if ($PAGE->user_allowed_editing()) {
$savebutton = false;
$outputhtml = '';
foreach ($settingspage->children as $childpage) {
if ($childpage->is_hidden()) {
if ($childpage->is_hidden() || !$childpage->check_access()) {
continue;
}
if ($childpage instanceof admin_externalpage) {
+119
View File
@@ -0,0 +1,119 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Build and store theme CSS.
*
* @package core
* @subpackage cli
* @copyright 2017 Ryan Wyllie <ryan@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require(__DIR__.'/../../config.php');
require_once("$CFG->libdir/clilib.php");
require_once("$CFG->libdir/csslib.php");
require_once("$CFG->libdir/outputlib.php");
$longparams = [
'themes' => null,
'direction' => null,
'help' => false,
'verbose' => false
];
$shortmappings = [
't' => 'themes',
'd' => 'direction',
'h' => 'help',
'v' => 'verbose'
];
// Get CLI params.
list($options, $unrecognized) = cli_get_params($longparams, $shortmappings);
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
}
if ($options['help']) {
echo
"Compile the CSS for one or more installed themes.
Existing CSS caches will replaced.
By default all themes will be recompiled unless otherwise specified.
Options:
-t, --themes A comma separated list of themes to be compiled
-d, --direction Only compile a single direction (either ltr or rtl)
-v, --verbose Print info comments to stdout
-h, --help Print out this help
Example:
\$ sudo -u www-data /usr/bin/php admin/cli/build_theme_css.php --themes=boost --direction=ltr
";
die;
}
if (empty($options['verbose'])) {
$trace = new null_progress_trace();
} else {
$trace = new text_progress_trace();
}
cli_heading('Build theme css');
// Determine which themes we need to build.
$themenames = [];
if (is_null($options['themes'])) {
$trace->output('No themes specified. Finding all installed themes.');
$themenames = array_keys(core_component::get_plugin_list('theme'));
} else {
if (is_string($options['themes'])) {
$themenames = explode(',', $options['themes']);
} else {
cli_error('--themes must be a comma separated list of theme names');
}
}
$trace->output('Checking that each theme is correctly installed...');
$themeconfigs = [];
foreach ($themenames as $themename) {
if (is_null(theme_get_config_file_path($themename))) {
cli_error("Unable to find theme config for {$themename}");
}
// Load the config for the theme.
$themeconfigs[] = theme_config::load($themename);
}
$directions = ['ltr', 'rtl'];
if (!is_null($options['direction'])) {
if (!in_array($options['direction'], $directions)) {
cli_error("--direction must be either ltr or rtl");
}
$directions = [$options['direction']];
}
$trace->output('Building CSS for themes: ' . implode(', ', $themenames));
theme_build_css_for_themes($themeconfigs, $directions);
exit(0);
+9 -8
View File
@@ -146,14 +146,9 @@ define('PHPUNIT_TEST', false);
define('IGNORE_COMPONENT_CACHE', true);
// Check that PHP is of a sufficient version
if (version_compare(phpversion(), "5.6.5") < 0) {
$phpversion = phpversion();
// do NOT localise - lang strings would not work here and we CAN NOT move it after installib
fwrite(STDERR, "Moodle 3.2 or later requires at least PHP 5.6.5 (currently using version $phpversion).\n");
fwrite(STDERR, "Please upgrade your server software or install older Moodle version.\n");
exit(1);
}
// Check that PHP is of a sufficient version as soon as possible.
require_once(__DIR__.'/../../lib/phpminimumversionlib.php');
moodle_require_minimum_php_version();
// set up configuration
global $CFG;
@@ -808,6 +803,12 @@ if (!core_plugin_manager::instance()->all_plugins_ok($version, $failed)) {
if (!$options['skip-database']) {
install_cli_database($options, $interactive);
// This needs to happen at the end to ensure it occurs after all caches
// have been purged for the last time.
// This will build a cached version of the current theme for the user
// to immediately start browsing the site.
require_once($CFG->libdir.'/upgradelib.php');
upgrade_themes();
} else {
echo get_string('cliskipdatabase', 'install')."\n";
}
+10 -8
View File
@@ -62,14 +62,9 @@ Example:
\$sudo -u www-data /usr/bin/php admin/cli/install_database.php --lang=cs --adminpass=soMePass123 --agree-license
";
// Check that PHP is of a sufficient version
if (version_compare(phpversion(), "5.6.5") < 0) {
$phpversion = phpversion();
// do NOT localise - lang strings would not work here and we CAN NOT move it after installib
fwrite(STDERR, "Moodle 3.2 or later requires at least PHP 5.6.5 (currently using version $phpversion).\n");
fwrite(STDERR, "Please upgrade your server software or install older Moodle version.\n");
exit(1);
}
// Check that PHP is of a sufficient version as soon as possible.
require_once(__DIR__.'/../../lib/phpminimumversionlib.php');
moodle_require_minimum_php_version();
// Nothing to do if config.php does not exist
$configfile = __DIR__.'/../../config.php';
@@ -183,5 +178,12 @@ if (!core_plugin_manager::instance()->all_plugins_ok($version, $failed)) {
install_cli_database($options, true);
// This needs to happen at the end to ensure it occurs after all caches
// have been purged for the last time.
// This will build a cached version of the current theme for the user
// to immediately start browsing the site.
require_once($CFG->libdir.'/upgradelib.php');
upgrade_themes();
echo get_string('cliinstallfinished', 'install')."\n";
exit(0); // 0 means success
+55
View File
@@ -0,0 +1,55 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* CLI script to kill all user sessions without asking for confirmation.
*
* @package core
* @subpackage cli
* @copyright 2017 Alexander Bias <alexander.bias@uni-ulm.de>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require(__DIR__.'/../../config.php');
require_once($CFG->libdir.'/clilib.php');
list($options, $unrecognized) = cli_get_params(array('help' => false), array('h' => 'help'));
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
cli_error(get_string('cliunknowoption', 'admin', $unrecognized), 2);
}
if ($options['help']) {
$help =
"Kill all Moodle sessions
Options:
-h, --help Print out this help
Example:
\$sudo -u www-data /usr/bin/php admin/cli/kill_all_sessions.php
";
echo $help;
exit(0);
}
\core\session\manager::kill_all_sessions();
exit(0);
+41 -5
View File
@@ -53,7 +53,7 @@ Options:
-h, --help Print out this help
Example:
\$ sudo -u www-data /usr/bin/php admin/cli/mysql_collation.php --collation=utf8_general_ci
\$ sudo -u www-data /usr/bin/php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
";
if (!empty($options['collation'])) {
@@ -145,9 +145,22 @@ if (!empty($options['collation'])) {
$skipped++;
} else {
$DB->change_database_structure("ALTER TABLE $table->name DEFAULT CHARACTER SET $charset DEFAULT COLLATE = $collation");
echo "CONVERTED\n";
$converted++;
try {
$DB->change_database_structure("ALTER TABLE $table->name CONVERT TO CHARACTER SET $charset COLLATE $collation");
echo "CONVERTED\n";
$converted++;
} catch (ddl_exception $e) {
$result = mysql_set_row_format($table->name, $charset, $collation, $engine);
if ($result) {
echo "CONVERTED\n";
$converted++;
} else {
// We don't know what the problem is. Stop the conversion.
cli_error("Error: Tried to convert $table->name, but there was a problem. Please check the details of this
table and try again.");
die();
}
}
}
$sql = "SHOW FULL COLUMNS FROM $table->name WHERE collation IS NOT NULL";
@@ -190,7 +203,7 @@ if (!empty($options['collation'])) {
$DB->change_database_structure($sql);
} else {
echo "ERROR (unknown column type: $column->type)\n";
$error++;
$errors++;
continue;
}
echo "CONVERTED\n";
@@ -290,3 +303,26 @@ function mysql_get_column_collations($tablename) {
$rs->close();
return $collations;
}
function mysql_set_row_format($tablename, $charset, $collation, $engine) {
global $DB;
$sql = "SELECT row_format
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = DATABASE() AND table_name = ?";
$rs = $DB->get_record_sql($sql, array($tablename));
if ($rs) {
if ($rs->row_format == 'Compact' || $rs->row_format == 'Redundant') {
$rowformat = $DB->get_row_format_sql($engine, $collation);
// Try to convert to compressed format and then try updating the collation again.
$DB->change_database_structure("ALTER TABLE $tablename $rowformat");
$DB->change_database_structure("ALTER TABLE $tablename CONVERT TO CHARACTER SET $charset COLLATE $collation");
} else {
// Row format may not be the problem. Can not diagnose problem. Send fail reply.
return false;
}
} else {
return false;
}
return true;
}
+3 -1
View File
@@ -15,6 +15,8 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* CLI script to purge caches without asking for confirmation.
*
* @package core
* @subpackage cli
* @copyright 2011 David Mudrak <david@moodle.com>
@@ -50,4 +52,4 @@ Example:
purge_all_caches();
exit(0);
exit(0);
+6
View File
@@ -187,5 +187,11 @@ upgrade_noncore(true);
admin_apply_default_settings(NULL, false);
admin_apply_default_settings(NULL, false);
// This needs to happen at the end to ensure it occurs after all caches
// have been purged for the last time.
// This will build a cached version of the current theme for the user
// to immediately start browsing the site.
upgrade_themes();
echo get_string('cliupgradefinished', 'admin')."\n";
exit(0); // 0 means success
+178
View File
@@ -1754,6 +1754,7 @@
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.6.5" level="required">
<RESTRICT function="restrict_php_version_72" message="unsupportedphpversion72" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -1919,6 +1920,7 @@
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.6.5" level="required">
<RESTRICT function="restrict_php_version_72" message="unsupportedphpversion72" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -2081,4 +2083,180 @@
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="3.4" requires="3.0">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="5.5.31" />
<VENDOR name="mysql" version="5.5.31" />
<VENDOR name="postgres" version="9.3" />
<VENDOR name="mssql" version="10.0" />
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="7.0.0" level="required">
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
<ON_CHECK message="pcreunicodewarning" />
</FEEDBACK>
</PCREUNICODE>
<PHP_EXTENSIONS>
<PHP_EXTENSION name="iconv" level="required">
<FEEDBACK>
<ON_ERROR message="iconvrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="mbstring" level="optional">
<FEEDBACK>
<ON_CHECK message="mbstringrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="curl" level="required">
<FEEDBACK>
<ON_ERROR message="curlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="openssl" level="required">
<FEEDBACK>
<ON_ERROR message="opensslrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="tokenizer" level="optional">
<FEEDBACK>
<ON_CHECK message="tokenizerrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlrpc" level="optional">
<FEEDBACK>
<ON_CHECK message="xmlrpcrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="soap" level="optional">
<FEEDBACK>
<ON_CHECK message="soaprecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="ctype" level="required">
<FEEDBACK>
<ON_ERROR message="ctyperequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zip" level="required">
<FEEDBACK>
<ON_ERROR message="ziprequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zlib" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="gd" level="required">
<FEEDBACK>
<ON_ERROR message="gdrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="simplexml" level="required">
<FEEDBACK>
<ON_ERROR message="simplexmlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="spl" level="required">
<FEEDBACK>
<ON_ERROR message="splrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="pcre" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="dom" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xml" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlreader" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="intl" level="required">
<FEEDBACK>
<ON_ERROR message="intlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="json" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="hash" level="required"/>
<PHP_EXTENSION name="fileinfo" level="required"/>
</PHP_EXTENSIONS>
<PHP_SETTINGS>
<PHP_SETTING name="memory_limit" value="96M" level="required">
<FEEDBACK>
<ON_ERROR message="settingmemorylimit" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="file_uploads" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="settingfileuploads" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="opcache.enable" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="opcacherecommended" />
</FEEDBACK>
</PHP_SETTING>
</PHP_SETTINGS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbstorageengine" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
<FEEDBACK>
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_unoconv_version" level="optional">
<FEEDBACK>
<ON_CHECK message="unoconvwarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_libcurl_version" level="optional">
<FEEDBACK>
<ON_CHECK message="libcurlwarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_format" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbfileformat" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_file_per_table" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbfilepertable" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_large_prefix" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddblargeprefix" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_is_https" level="optional">
<FEEDBACK>
<ON_CHECK message="ishttpswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mysql_incomplete_unicode_support" level="optional">
<FEEDBACK>
<ON_CHECK message="incompleteunicodesupport" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>
+21 -10
View File
@@ -29,14 +29,9 @@ if (!file_exists('../config.php')) {
die();
}
// Check that PHP is of a sufficient version as soon as possible
if (version_compare(phpversion(), '5.6.5') < 0) {
$phpversion = phpversion();
// do NOT localise - lang strings would not work here and we CAN NOT move it to later place
echo "Moodle 3.2 or later requires at least PHP 5.6.5 (currently using version $phpversion).<br />";
echo "Please upgrade your server software or install older Moodle version.";
die();
}
// Check that PHP is of a sufficient version as soon as possible.
require_once(__DIR__.'/../lib/phpminimumversionlib.php');
moodle_require_minimum_php_version();
// make sure iconv is available and actually works
if (!function_exists('iconv')) {
@@ -704,6 +699,7 @@ if (!$cache and moodle_needs_upgrading()) {
if (during_initial_install()) {
set_config('rolesactive', 1); // after this, during_initial_install will return false.
set_config('adminsetuppending', 1);
set_config('registrationpending', 1); // Remind to register site after all other setup is finished.
// we need this redirect to setup proper session
upgrade_finished("index.php?sessionstarted=1&amp;lang=$CFG->lang");
}
@@ -819,6 +815,9 @@ if (isset($SESSION->pluginuninstallreturn)) {
}
}
// If site registration needs updating, redirect.
\core\hub\registration::registration_reminder('/admin/index.php');
// Everything should now be set up, and the user is an admin
// Print default admin page with notifications.
@@ -862,12 +861,23 @@ if ($updateschecker->enabled()) {
$buggyiconvnomb = (!function_exists('mb_convert_encoding') and @iconv('UTF-8', 'UTF-8//IGNORE', '100'.chr(130).'€') !== '100€');
//check if the site is registered on Moodle.org
$registered = $DB->count_records('registration_hubs', array('huburl' => HUB_MOODLEORGHUBURL, 'confirmed' => 1));
$registered = \core\hub\registration::is_registered();
// Check if there are any cache warnings.
$cachewarnings = cache_helper::warnings();
// Check if there are events 1 API handlers.
$eventshandlers = $DB->get_records_sql('SELECT DISTINCT component FROM {events_handlers}');
$themedesignermode = !empty($CFG->themedesignermode);
$mobileconfigured = !empty($CFG->enablemobilewebservice);
$invalidforgottenpasswordurl = !empty($CFG->forgottenpasswordurl) && empty(clean_param($CFG->forgottenpasswordurl, PARAM_URL));
// Check if a directory with development libraries exists.
if (empty($CFG->disabledevlibdirscheck) && (is_dir($CFG->dirroot.'/vendor') || is_dir($CFG->dirroot.'/node_modules'))) {
$devlibdir = true;
} else {
$devlibdir = false;
}
// Check if the site is being foced onto ssl.
$overridetossl = !empty($CFG->overridetossl);
admin_externalpage_setup('adminnotifications');
@@ -875,4 +885,5 @@ $output = $PAGE->get_renderer('core', 'admin');
echo $output->admin_notifications_page($maturity, $insecuredataroot, $errorsdisplayed, $cronoverdue, $dbproblems,
$maintenancemode, $availableupdates, $availableupdatesfetch, $buggyiconvnomb,
$registered, $cachewarnings, $eventshandlers, $themedesignermode);
$registered, $cachewarnings, $eventshandlers, $themedesignermode, $devlibdir,
$mobileconfigured, $overridetossl, $invalidforgottenpasswordurl);
+19 -32
View File
@@ -20,7 +20,7 @@
// //
///////////////////////////////////////////////////////////////////////////
/*
/**
* @package moodle
* @subpackage registration
* @author Jerome Mouneyrac <jerome@mouneyrac.com>
@@ -36,7 +36,6 @@
require('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
$newtoken = optional_param('newtoken', '', PARAM_ALPHANUM);
$url = optional_param('url', '', PARAM_URL);
@@ -44,7 +43,11 @@ $hubname = optional_param('hubname', '', PARAM_TEXT);
$token = optional_param('token', '', PARAM_TEXT);
$error = optional_param('error', '', PARAM_ALPHANUM);
admin_externalpage_setup('registrationhubs');
admin_externalpage_setup('registrationmoodleorg');
if ($url !== HUB_MOODLEORGHUBURL) {
throw new moodle_exception('errorotherhubsnotsupported', 'hub');
}
if (!empty($error) and $error == 'urlalreadyexist') {
throw new moodle_exception('urlalreadyregistered', 'hub',
@@ -52,38 +55,22 @@ if (!empty($error) and $error == 'urlalreadyexist') {
}
//check that we are waiting a confirmation from this hub, and check that the token is correct
$registrationmanager = new registration_manager();
$registeredhub = $registrationmanager->get_unconfirmedhub($url);
if (!empty($registeredhub) and $registeredhub->token == $token) {
core\hub\registration::confirm_registration($token, $newtoken, $hubname);
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('registrationconfirmed', 'hub'), 3, 'main');
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('registrationconfirmed', 'hub'), 3, 'main');
$registeredhub->token = $newtoken;
$registeredhub->confirmed = 1;
$registeredhub->hubname = $hubname;
$registrationmanager->update_registeredhub($registeredhub);
// Display notification message.
echo $OUTPUT->notification(get_string('registrationconfirmedon', 'hub'), 'notifysuccess');
// Display notification message.
echo $OUTPUT->notification(get_string('registrationconfirmedon', 'hub'), 'notifysuccess');
// Display continue button.
$returnurl = !empty($SESSION->registrationredirect) ? clean_param($SESSION->registrationredirect, PARAM_LOCALURL) : null;
unset($SESSION->registrationredirect);
$continueurl = new moodle_url($returnurl ?: '/admin/registration/index.php');
$continuebutton = $OUTPUT->render(new single_button($continueurl, get_string('continue')));
$continuebutton = html_writer::tag('div', $continuebutton, array('class' => 'mdl-align'));
echo $continuebutton;
//display continue button
$registrationpage = new moodle_url('/admin/registration/index.php');
$continuebutton = $OUTPUT->render(new single_button($registrationpage, get_string('continue', 'hub')));
$continuebutton = html_writer::tag('div', $continuebutton, array('class' => 'mdl-align'));
echo $continuebutton;
if (!extension_loaded('xmlrpc')) {
//display notice about xmlrpc
$xmlrpcnotification = $OUTPUT->doc_link('admin/environment/php_extension/xmlrpc', '');
$xmlrpcnotification .= get_string('xmlrpcdisabledregistration', 'hub');
echo $OUTPUT->notification($xmlrpcnotification);
}
echo $OUTPUT->footer();
} else {
throw new moodle_exception('wrongtoken', 'hub',
$CFG->wwwroot . '/' . $CFG->admin . '/registration/index.php');
}
echo $OUTPUT->footer();
+4 -479
View File
@@ -20,7 +20,7 @@
// //
///////////////////////////////////////////////////////////////////////////
/*
/**
* @package moodle
* @subpackage registration
* @author Jerome Mouneyrac <jerome@mouneyrac.com>
@@ -30,482 +30,7 @@
* The forms needed by registration pages.
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
/**
* This form display a unregistration form.
*/
class site_unregistration_form extends moodleform {
public function definition() {
$mform = & $this->_form;
$mform->addElement('header', 'site', get_string('unregister', 'hub'));
$huburl = $this->_customdata['huburl'];
$hubname = $this->_customdata['hubname'];
$unregisterlabel = get_string('unregister', 'hub');
$mform->addElement('checkbox', 'unpublishalladvertisedcourses', '',
' ' . get_string('unpublishalladvertisedcourses', 'hub'));
$mform->setType('unpublishalladvertisedcourses', PARAM_INT);
$mform->addElement('checkbox', 'unpublishalluploadedcourses', '',
' ' . get_string('unpublishalluploadedcourses', 'hub'));
$mform->setType('unpublishalluploadedcourses', PARAM_INT);
$mform->addElement('hidden', 'confirm', 1);
$mform->setType('confirm', PARAM_INT);
$mform->addElement('hidden', 'unregistration', 1);
$mform->setType('unregistration', PARAM_INT);
$mform->addElement('hidden', 'huburl', $huburl);
$mform->setType('huburl', PARAM_URL);
$mform->addElement('hidden', 'hubname', $hubname);
$mform->setType('hubname', PARAM_TEXT);
$this->add_action_buttons(true, $unregisterlabel);
}
}
/**
* This form display a clean registration data form.
*/
class site_clean_registration_data_form extends moodleform {
public function definition() {
$mform = & $this->_form;
$mform->addElement('header', 'site', get_string('unregister', 'hub'));
$huburl = $this->_customdata['huburl'];
$hubname = $this->_customdata['hubname'];
$unregisterlabel = get_string('forceunregister', 'hub');
$mform->addElement('static', '', get_string('warning', 'hub'), get_string('forceunregisterconfirmation', 'hub', $hubname));
$mform->addElement('hidden', 'confirm', 1);
$mform->setType('confirm', PARAM_INT);
$mform->addElement('hidden', 'unregistration', 1);
$mform->setType('unregistration', PARAM_INT);
$mform->addElement('hidden', 'cleanregdata', 1);
$mform->setType('cleanregdata', PARAM_INT);
$mform->addElement('hidden', 'huburl', $huburl);
$mform->setType('huburl', PARAM_URL);
$mform->addElement('hidden', 'hubname', $hubname);
$mform->setType('hubname', PARAM_TEXT);
$this->add_action_buttons(true, $unregisterlabel);
}
}
/**
* This form display a hub selector.
* The hub list is retrieved from Moodle.org hub directory.
* Also displayed, a text field to enter private hub url + its password
*/
class hub_selector_form extends moodleform {
public function definition() {
global $CFG, $OUTPUT;
$mform = & $this->_form;
$mform->addElement('header', 'site', get_string('selecthub', 'hub'));
//retrieve the hub list on the hub directory by web service
$function = 'hubdirectory_get_hubs';
$params = array();
$serverurl = HUB_HUBDIRECTORYURL . "/local/hubdirectory/webservice/webservices.php";
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, 'publichubdirectory');
try {
$hubs = $xmlrpcclient->call($function, $params);
} catch (Exception $e) {
$error = $OUTPUT->notification(get_string('errorhublisting', 'hub', $e->getMessage()));
$mform->addElement('static', 'errorhub', '', $error);
$hubs = array();
}
//remove moodle.org from the hub list
foreach ($hubs as $key => $hub) {
if ($hub['url'] == HUB_MOODLEORGHUBURL) {
unset($hubs[$key]);
}
}
//Public hub list
$options = array();
foreach ($hubs as $hub) {
//to not display a name longer than 100 character (too big)
if (core_text::strlen($hub['name']) > 100) {
$hubname = core_text::substr($hub['name'], 0, 100);
$hubname = $hubname . "...";
} else {
$hubname = $hub['name'];
}
$options[$hub['url']] = $hubname;
$mform->addElement('hidden', clean_param($hub['url'], PARAM_ALPHANUMEXT), $hubname);
$mform->setType(clean_param($hub['url'], PARAM_ALPHANUMEXT), PARAM_ALPHANUMEXT);
}
if (!empty($hubs)) {
$mform->addElement('select', 'publichub', get_string('publichub', 'hub'),
$options, array("size" => 15));
$mform->setType('publichub', PARAM_URL);
}
$mform->addElement('static', 'or', '', get_string('orenterprivatehub', 'hub'));
//Private hub
$mform->addElement('text', 'unlistedurl', get_string('privatehuburl', 'hub'),
array('class' => 'registration_textfield'));
$mform->setType('unlistedurl', PARAM_URL);
$mform->addElement('text', 'password', get_string('password'),
array('class' => 'registration_textfield'));
$mform->setType('password', PARAM_RAW);
$this->add_action_buttons(false, get_string('selecthub', 'hub'));
}
/**
* Check the unlisted URL is a URL
*/
function validation($data, $files) {
global $CFG;
$errors = parent::validation($data, $files);
$unlistedurl = $this->_form->_submitValues['unlistedurl'];
if (empty($unlistedurl)) {
$errors['unlistedurl'] = get_string('badurlformat', 'hub');
}
return $errors;
}
}
/**
* The site registration form. Information will be sent to a given hub.
*/
class site_registration_form extends moodleform {
public function definition() {
global $CFG, $DB;
$strrequired = get_string('required');
$mform = & $this->_form;
$huburl = $this->_customdata['huburl'];
$hubname = $this->_customdata['hubname'];
$password = $this->_customdata['password'];
$admin = get_admin();
$site = get_site();
//retrieve config for this hub and set default if they don't exist
$cleanhuburl = clean_param($huburl, PARAM_ALPHANUMEXT);
$sitename = get_config('hub', 'site_name_' . $cleanhuburl);
if ($sitename === false) {
$sitename = format_string($site->fullname, true, array('context' => context_course::instance(SITEID)));
}
$sitedescription = get_config('hub', 'site_description_' . $cleanhuburl);
if ($sitedescription === false) {
$sitedescription = $site->summary;
}
$contactname = get_config('hub', 'site_contactname_' . $cleanhuburl);
if ($contactname === false) {
$contactname = fullname($admin, true);
}
$contactemail = get_config('hub', 'site_contactemail_' . $cleanhuburl);
if ($contactemail === false) {
$contactemail = $admin->email;
}
$contactphone = get_config('hub', 'site_contactphone_' . $cleanhuburl);
if ($contactphone === false) {
$contactphone = $admin->phone1;
}
$imageurl = get_config('hub', 'site_imageurl_' . $cleanhuburl);
$privacy = get_config('hub', 'site_privacy_' . $cleanhuburl);
$address = get_config('hub', 'site_address_' . $cleanhuburl);
$region = get_config('hub', 'site_region_' . $cleanhuburl);
$country = get_config('hub', 'site_country_' . $cleanhuburl);
if ($country === false) {
$country = $admin->country;
}
$language = get_config('hub', 'site_language_' . $cleanhuburl);
if ($language === false) {
$language = current_language();
}
$geolocation = get_config('hub', 'site_geolocation_' . $cleanhuburl);
$contactable = get_config('hub', 'site_contactable_' . $cleanhuburl);
$emailalert = get_config('hub', 'site_emailalert_' . $cleanhuburl);
$emailalert = ($emailalert === 0) ? 0 : 1;
$coursesnumber = get_config('hub', 'site_coursesnumber_' . $cleanhuburl);
$usersnumber = get_config('hub', 'site_usersnumber_' . $cleanhuburl);
$roleassignmentsnumber = get_config('hub', 'site_roleassignmentsnumber_' . $cleanhuburl);
$postsnumber = get_config('hub', 'site_postsnumber_' . $cleanhuburl);
$questionsnumber = get_config('hub', 'site_questionsnumber_' . $cleanhuburl);
$resourcesnumber = get_config('hub', 'site_resourcesnumber_' . $cleanhuburl);
$badgesnumber = get_config('hub', 'site_badges_' . $cleanhuburl);
$issuedbadgesnumber = get_config('hub', 'site_issuedbadges_' . $cleanhuburl);
$mediancoursesize = get_config('hub', 'site_mediancoursesize_' . $cleanhuburl);
$participantnumberaveragecfg = get_config('hub', 'site_participantnumberaverage_' . $cleanhuburl);
$modulenumberaveragecfg = get_config('hub', 'site_modulenumberaverage_' . $cleanhuburl);
//hidden parameters
$mform->addElement('hidden', 'huburl', $huburl);
$mform->setType('huburl', PARAM_URL);
$mform->addElement('hidden', 'hubname', $hubname);
$mform->setType('hubname', PARAM_TEXT);
$mform->addElement('hidden', 'password', $password);
$mform->setType('password', PARAM_RAW);
//the input parameters
$mform->addElement('header', 'moodle', get_string('registrationinfo', 'hub'));
$mform->addElement('text', 'name', get_string('sitename', 'hub'),
array('class' => 'registration_textfield'));
$mform->addRule('name', $strrequired, 'required', null, 'client');
$mform->setType('name', PARAM_TEXT);
$mform->setDefault('name', $sitename);
$mform->addHelpButton('name', 'sitename', 'hub');
$options = array();
$registrationmanager = new registration_manager();
$options[HUB_SITENOTPUBLISHED] = $registrationmanager->get_site_privacy_string(HUB_SITENOTPUBLISHED);
$options[HUB_SITENAMEPUBLISHED] = $registrationmanager->get_site_privacy_string(HUB_SITENAMEPUBLISHED);
$options[HUB_SITELINKPUBLISHED] = $registrationmanager->get_site_privacy_string(HUB_SITELINKPUBLISHED);
$mform->addElement('select', 'privacy', get_string('siteprivacy', 'hub'), $options);
$mform->setDefault('privacy', $privacy);
$mform->setType('privacy', PARAM_ALPHA);
$mform->addHelpButton('privacy', 'privacy', 'hub');
unset($options);
$mform->addElement('textarea', 'description', get_string('sitedesc', 'hub'),
array('rows' => 8, 'cols' => 41));
$mform->addRule('description', $strrequired, 'required', null, 'client');
$mform->setDefault('description', $sitedescription);
$mform->setType('description', PARAM_TEXT);
$mform->addHelpButton('description', 'sitedesc', 'hub');
$languages = get_string_manager()->get_list_of_languages();
core_collator::asort($languages);
$mform->addElement('select', 'language', get_string('sitelang', 'hub'),
$languages);
$mform->setType('language', PARAM_ALPHANUMEXT);
$mform->addHelpButton('language', 'sitelang', 'hub');
$mform->setDefault('language', $language);
$mform->addElement('textarea', 'address', get_string('postaladdress', 'hub'),
array('rows' => 4, 'cols' => 41));
$mform->setType('address', PARAM_TEXT);
$mform->setDefault('address', $address);
$mform->addHelpButton('address', 'postaladdress', 'hub');
//TODO: use the region array I generated
// $mform->addElement('select', 'region', get_string('selectaregion'), array('-' => '-'));
// $mform->setDefault('region', $region);
$mform->addElement('hidden', 'regioncode', '-');
$mform->setType('regioncode', PARAM_ALPHANUMEXT);
$countries = get_string_manager()->get_list_of_countries();
$mform->addElement('select', 'countrycode', get_string('sitecountry', 'hub'), $countries);
$mform->setDefault('countrycode', $country);
$mform->setType('countrycode', PARAM_ALPHANUMEXT);
$mform->addHelpButton('countrycode', 'sitecountry', 'hub');
$mform->addElement('text', 'geolocation', get_string('sitegeolocation', 'hub'),
array('class' => 'registration_textfield'));
$mform->setDefault('geolocation', $geolocation);
$mform->setType('geolocation', PARAM_RAW);
$mform->addHelpButton('geolocation', 'sitegeolocation', 'hub');
$mform->addElement('text', 'contactname', get_string('siteadmin', 'hub'),
array('class' => 'registration_textfield'));
$mform->addRule('contactname', $strrequired, 'required', null, 'client');
$mform->setType('contactname', PARAM_TEXT);
$mform->setDefault('contactname', $contactname);
$mform->addHelpButton('contactname', 'siteadmin', 'hub');
$mform->addElement('text', 'contactphone', get_string('sitephone', 'hub'),
array('class' => 'registration_textfield'));
$mform->setType('contactphone', PARAM_TEXT);
$mform->addHelpButton('contactphone', 'sitephone', 'hub');
$mform->setForceLtr('contactphone');
$mform->addElement('text', 'contactemail', get_string('siteemail', 'hub'),
array('class' => 'registration_textfield'));
$mform->addRule('contactemail', $strrequired, 'required', null, 'client');
$mform->setType('contactemail', PARAM_EMAIL);
$mform->setDefault('contactemail', $contactemail);
$mform->addHelpButton('contactemail', 'siteemail', 'hub');
$options = array();
$options[0] = get_string("registrationcontactno");
$options[1] = get_string("registrationcontactyes");
$mform->addElement('select', 'contactable', get_string('siteregistrationcontact', 'hub'), $options);
$mform->setDefault('contactable', $contactable);
$mform->setType('contactable', PARAM_INT);
$mform->addHelpButton('contactable', 'siteregistrationcontact', 'hub');
unset($options);
$options = array();
$options[0] = get_string("registrationno");
$options[1] = get_string("registrationyes");
$mform->addElement('select', 'emailalert', get_string('siteregistrationemail', 'hub'), $options);
$mform->setDefault('emailalert', $emailalert);
$mform->setType('emailalert', PARAM_INT);
$mform->addHelpButton('emailalert', 'siteregistrationemail', 'hub');
unset($options);
//TODO site logo
$mform->addElement('hidden', 'imageurl', ''); //TODO: temporary
$mform->setType('imageurl', PARAM_URL);
$mform->addElement('static', 'urlstring', get_string('siteurl', 'hub'), $CFG->wwwroot);
$mform->addHelpButton('urlstring', 'siteurl', 'hub');
$mform->addElement('static', 'versionstring', get_string('siteversion', 'hub'), $CFG->version);
$mform->addElement('hidden', 'moodleversion', $CFG->version);
$mform->setType('moodleversion', PARAM_INT);
$mform->addHelpButton('versionstring', 'siteversion', 'hub');
$mform->addElement('static', 'releasestring', get_string('siterelease', 'hub'), $CFG->release);
$mform->addElement('hidden', 'moodlerelease', $CFG->release);
$mform->setType('moodlerelease', PARAM_TEXT);
$mform->addHelpButton('releasestring', 'siterelease', 'hub');
/// Display statistic that are going to be retrieve by the hub
$coursecount = $DB->count_records('course') - 1;
$usercount = $DB->count_records('user', array('deleted' => 0));
$roleassigncount = $DB->count_records('role_assignments');
$postcount = $DB->count_records('forum_posts');
$questioncount = $DB->count_records('question');
$resourcecount = $DB->count_records('resource');
require_once($CFG->dirroot . "/course/lib.php");
$participantnumberaverage = number_format(average_number_of_participants(), 2);
$modulenumberaverage = number_format(average_number_of_courses_modules(), 2);
require_once($CFG->libdir . '/badgeslib.php');
$badges = $DB->count_records_select('badge', 'status <> ' . BADGE_STATUS_ARCHIVED);
$issuedbadges = $DB->count_records('badge_issued');
if (HUB_MOODLEORGHUBURL != $huburl) {
$mform->addElement('checkbox', 'courses', get_string('sendfollowinginfo', 'hub'),
" " . get_string('coursesnumber', 'hub', $coursecount));
$mform->setDefault('courses', $coursesnumber != -1);
$mform->setType('courses', PARAM_INT);
$mform->addHelpButton('courses', 'sendfollowinginfo', 'hub');
$mform->addElement('checkbox', 'users', '',
" " . get_string('usersnumber', 'hub', $usercount));
$mform->setDefault('users', $usersnumber != -1);
$mform->setType('users', PARAM_INT);
$mform->addElement('checkbox', 'roleassignments', '',
" " . get_string('roleassignmentsnumber', 'hub', $roleassigncount));
$mform->setDefault('roleassignments', $roleassignmentsnumber != -1);
$mform->setType('roleassignments', PARAM_INT);
$mform->addElement('checkbox', 'posts', '',
" " . get_string('postsnumber', 'hub', $postcount));
$mform->setDefault('posts', $postsnumber != -1);
$mform->setType('posts', PARAM_INT);
$mform->addElement('checkbox', 'questions', '',
" " . get_string('questionsnumber', 'hub', $questioncount));
$mform->setDefault('questions', $questionsnumber != -1);
$mform->setType('questions', PARAM_INT);
$mform->addElement('checkbox', 'resources', '',
" " . get_string('resourcesnumber', 'hub', $resourcecount));
$mform->setDefault('resources', $resourcesnumber != -1);
$mform->setType('resources', PARAM_INT);
$mform->addElement('checkbox', 'badges', '',
" " . get_string('badgesnumber', 'hub', $badges));
$mform->setDefault('badges', $badgesnumber != -1);
$mform->setType('badges', PARAM_INT);
$mform->addElement('checkbox', 'issuedbadges', '',
" " . get_string('issuedbadgesnumber', 'hub', $issuedbadges));
$mform->setDefault('issuedbadges', $issuedbadgesnumber != -1);
$mform->setType('issuedbadges', PARAM_INT);
$mform->addElement('checkbox', 'participantnumberaverage', '',
" " . get_string('participantnumberaverage', 'hub', $participantnumberaverage));
$mform->setDefault('participantnumberaverage', $participantnumberaveragecfg != -1);
$mform->setType('participantnumberaverage', PARAM_FLOAT);
$mform->addElement('checkbox', 'modulenumberaverage', '',
" " . get_string('modulenumberaverage', 'hub', $modulenumberaverage));
$mform->setDefault('modulenumberaverage', $modulenumberaveragecfg != -1);
$mform->setType('modulenumberaverage', PARAM_FLOAT);
} else {
$mform->addElement('static', 'courseslabel', get_string('sendfollowinginfo', 'hub'),
" " . get_string('coursesnumber', 'hub', $coursecount));
$mform->addElement('hidden', 'courses', 1);
$mform->setType('courses', PARAM_INT);
$mform->addHelpButton('courseslabel', 'sendfollowinginfo', 'hub');
$mform->addElement('static', 'userslabel', '',
" " . get_string('usersnumber', 'hub', $usercount));
$mform->addElement('hidden', 'users', 1);
$mform->setType('users', PARAM_INT);
$mform->addElement('static', 'roleassignmentslabel', '',
" " . get_string('roleassignmentsnumber', 'hub', $roleassigncount));
$mform->addElement('hidden', 'roleassignments', 1);
$mform->setType('roleassignments', PARAM_INT);
$mform->addElement('static', 'postslabel', '',
" " . get_string('postsnumber', 'hub', $postcount));
$mform->addElement('hidden', 'posts', 1);
$mform->setType('posts', PARAM_INT);
$mform->addElement('static', 'questionslabel', '',
" " . get_string('questionsnumber', 'hub', $questioncount));
$mform->addElement('hidden', 'questions', 1);
$mform->setType('questions', PARAM_INT);
$mform->addElement('static', 'resourceslabel', '',
" " . get_string('resourcesnumber', 'hub', $resourcecount));
$mform->addElement('hidden', 'resources', 1);
$mform->setType('resources', PARAM_INT);
$mform->addElement('static', 'badgeslabel', '',
" " . get_string('badgesnumber', 'hub', $badges));
$mform->addElement('hidden', 'badges', 1);
$mform->setType('badges', PARAM_INT);
$mform->addElement('static', 'issuedbadgeslabel', '',
" " . get_string('issuedbadgesnumber', 'hub', $issuedbadges));
$mform->addElement('hidden', 'issuedbadges', true);
$mform->setType('issuedbadges', PARAM_INT);
$mform->addElement('static', 'participantnumberaveragelabel', '',
" " . get_string('participantnumberaverage', 'hub', $participantnumberaverage));
$mform->addElement('hidden', 'participantnumberaverage', 1);
$mform->setType('participantnumberaverage', PARAM_FLOAT);
$mform->addElement('static', 'modulenumberaveragelabel', '',
" " . get_string('modulenumberaverage', 'hub', $modulenumberaverage));
$mform->addElement('hidden', 'modulenumberaverage', 1);
$mform->setType('modulenumberaverage', PARAM_FLOAT);
}
//check if it's a first registration or update
$hubregistered = $registrationmanager->get_registeredhub($huburl);
if (!empty($hubregistered)) {
$buttonlabel = get_string('updatesite', 'hub',
!empty($hubname) ? $hubname : $huburl);
$mform->addElement('hidden', 'update', true);
$mform->setType('update', PARAM_BOOL);
} else {
$buttonlabel = get_string('registersite', 'hub',
!empty($hubname) ? $hubname : $huburl);
}
$this->add_action_buttons(false, $buttonlabel);
}
}
debugging('Support for alternative hubs has been removed from Moodle in 3.4. For communication with moodle.net ' .
'see lib/classes/hub/ .', DEBUG_DEVELOPER);
+77 -165
View File
@@ -15,199 +15,111 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/*
/**
* @package moodle
* @subpackage registration
* @author Jerome Mouneyrac <jerome@mouneyrac.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL
* @copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com
*
* On this page the administrator selects which hub he wants to register (except for moodle.net)
* Admins can register with moodle.net via the site admin menu "Registration" link.
* On this page the administrator can also unregister from any hubs including moodle.net.
* This page displays the site registration form for Moodle.net.
* It handles redirection to the hub to continue the registration workflow process.
* It also handles update operation by web service.
*/
require('../../config.php');
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/forms.php');
require_once($CFG->dirroot . '/course/publish/lib.php');
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
admin_externalpage_setup('registrationhubs');
$renderer = $PAGE->get_renderer('core', 'register');
admin_externalpage_setup('registrationmoodleorg');
$unregistration = optional_param('unregistration', 0, PARAM_INT);
$cleanregdata = optional_param('cleanregdata', 0, PARAM_BOOL);
$confirm = optional_param('confirm', 0, PARAM_INT);
$huburl = optional_param('huburl', '', PARAM_URL);
$cancel = optional_param('cancel', null, PARAM_ALPHA);
$registrationmanager = new registration_manager();
$publicationmanager = new course_publish_manager();
$errormessage = '';
if (empty($cancel) and $unregistration and $confirm and confirm_sesskey()) {
if ($unregistration && \core\hub\registration::is_registered()) {
$siteunregistrationform = new \core\hub\site_unregistration_form();
$hub = $registrationmanager->get_registeredhub($huburl);
//unpublish course and unregister the site by web service
if (!$cleanregdata) {
//check if we need to unpublish courses
//enrollable courses
$unpublishalladvertisedcourses = optional_param('unpublishalladvertisedcourses', 0, PARAM_INT);
$hubcourseids = array();
if ($unpublishalladvertisedcourses) {
$enrollablecourses = $publicationmanager->get_publications($huburl, null, 1);
if (!empty($enrollablecourses)) {
foreach ($enrollablecourses as $enrollablecourse) {
$hubcourseids[] = $enrollablecourse->hubcourseid;
}
}
}
//downloadable courses
$unpublishalluploadedcourses = optional_param('unpublishalluploadedcourses', 0, PARAM_INT);
if ($unpublishalluploadedcourses) {
$downloadablecourses = $publicationmanager->get_publications($huburl, null, 0);
if (!empty($downloadablecourses)) {
foreach ($downloadablecourses as $downloadablecourse) {
$hubcourseids[] = $downloadablecourse->hubcourseid;
}
}
}
//unpublish the courses by web service
if (!empty($hubcourseids)) {
$function = 'hub_unregister_courses';
$params = array('courseids' => $hubcourseids);
$serverurl = $huburl . "/local/hub/webservice/webservices.php";
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $hub->token);
try {
$result = $xmlrpcclient->call($function, $params);
//delete the published courses
if (!empty($enrollablecourses)) {
$publicationmanager->delete_hub_publications($huburl, 1);
}
if (!empty($downloadablecourses)) {
$publicationmanager->delete_hub_publications($huburl, 0);
}
} catch (Exception $e) {
$errormessage = $e->getMessage();
$errormessage .= html_writer::empty_tag('br') .
get_string('errorunpublishcourses', 'hub');
$confirm = false;
$cleanregdata = 1;
}
if ($siteunregistrationform->is_cancelled()) {
redirect(new moodle_url('/admin/registration/index.php'));
} else if ($data = $siteunregistrationform->get_data()) {
if (\core\hub\registration::unregister($data->unpublishalladvertisedcourses,
$data->unpublishalluploadedcourses)) {
redirect(new moodle_url('/admin/registration/index.php'));
}
}
//course unpublish went ok, unregister the site now
if ($confirm) {
$function = 'hub_unregister_site';
$params = array();
$serverurl = $huburl . "/local/hub/webservice/webservices.php";
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $hub->token);
try {
$result = $xmlrpcclient->call($function, $params);
} catch (Exception $e) {
if (!$cleanregdata) {
$errormessage = $e->getMessage();
$confirm = false;
$cleanregdata = 1;
}
}
}
//check that we are still processing the unregistration,
//it could have been unset if an exception were previsouly catched
if ($confirm) {
$registrationmanager->delete_registeredhub($huburl);
}
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('unregisterfrom', 'hub', 'Moodle.net'), 3, 'main');
$siteunregistrationform->display();
echo $OUTPUT->footer();
exit;
}
if (empty($cancel) and $unregistration and !$confirm) {
$isinitialregistration = \core\hub\registration::show_after_install(true);
if (!$returnurl = optional_param('returnurl', null, PARAM_LOCALURL)) {
$returnurl = $isinitialregistration ? '/admin/index.php' : '/admin/registration/index.php';
}
echo $OUTPUT->header();
$siteregistrationform = new \core\hub\site_registration_form();
$siteregistrationform->set_data(['returnurl' => $returnurl]);
if ($fromform = $siteregistrationform->get_data()) {
//do not check sesskey if confirm = false because this script is linked into email message
if (!empty($errormessage)) {
echo $OUTPUT->notification(get_string('unregistrationerror', 'hub', $errormessage));
}
// Save the settings.
\core\hub\registration::save_site_info($fromform);
$hub = $registrationmanager->get_registeredhub($huburl);
echo $OUTPUT->heading(get_string('unregisterfrom', 'hub', $hub->hubname), 3, 'main');
if ($cleanregdata) {
$siteunregistrationform = new site_clean_registration_data_form('',
array('huburl' => $huburl, 'hubname' => $hub->hubname));
if (\core\hub\registration::is_registered()) {
if (\core\hub\registration::update_manual()) {
redirect(new moodle_url($returnurl));
}
redirect(new moodle_url('/admin/registration/index.php', ['returnurl' => $returnurl]));
} else {
$siteunregistrationform = new site_unregistration_form('',
array('huburl' => $huburl, 'hubname' => $hub->hubname));
\core\hub\registration::register($returnurl);
// This method will redirect away.
}
$siteunregistrationform->display();
}
// OUTPUT SECTION.
echo $OUTPUT->header();
// Current status of registration on Moodle.net.
$notificationtype = \core\output\notification::NOTIFY_ERROR;
if (\core\hub\registration::is_registered()) {
$lastupdated = \core\hub\registration::get_last_updated();
if ($lastupdated == 0) {
$registrationmessage = get_string('pleaserefreshregistrationunknown', 'admin');
} else if (\core\hub\registration::get_new_registration_fields()) {
$registrationmessage = get_string('pleaserefreshregistrationnewdata', 'admin');
} else {
$lastupdated = userdate($lastupdated, get_string('strftimedate', 'langconfig'));
$registrationmessage = get_string('pleaserefreshregistration', 'admin', $lastupdated);
$notificationtype = \core\output\notification::NOTIFY_INFO;
}
echo $OUTPUT->notification($registrationmessage, $notificationtype);
} else if (!$isinitialregistration) {
$registrationmessage = get_string('registrationwarning', 'admin');
echo $OUTPUT->notification($registrationmessage, $notificationtype);
}
// Heading.
if (\core\hub\registration::is_registered()) {
echo $OUTPUT->heading(get_string('updatesite', 'hub', 'Moodle.net'));
} else if ($isinitialregistration) {
echo $OUTPUT->heading(get_string('completeregistration', 'hub'));
} else {
$registeredonmoodleorg = false;
$moodleorghub = $registrationmanager->get_registeredhub(HUB_MOODLEORGHUBURL);
if (!empty($moodleorghub)) {
$registeredonmoodleorg = true;
}
echo $OUTPUT->heading(get_string('registerwithmoodleorg', 'admin'));
}
// load the hub selector form
$hubselectorform = new hub_selector_form();
$fromform = $hubselectorform->get_data();
$selectedhuburl = optional_param('publichub', false, PARAM_URL);
$unlistedhuburl = optional_param('unlistedurl', false, PARAM_TEXT);
$password = optional_param('password', '', PARAM_RAW);
$registeringhuburl = null;
if (!empty($unlistedhuburl)) {
if (clean_param($unlistedhuburl, PARAM_URL) !== '') {
$registeringhuburl = $unlistedhuburl;
}
} else if (!empty($selectedhuburl)) {
$registeringhuburl = $selectedhuburl;
}
$renderer = $PAGE->get_renderer('core', 'register');
echo $renderer->moodleorg_registration_message();
// a hub has been selected, redirect to the hub registration page
if (empty($cancel) and !empty($registeringhuburl) and confirm_sesskey()) {
$hubname = optional_param(clean_param($registeringhuburl, PARAM_ALPHANUMEXT), '', PARAM_TEXT);
$params = array('sesskey' => sesskey(), 'huburl' => $registeringhuburl,
'password' => $password, 'hubname' => $hubname);
redirect(new moodle_url($CFG->wwwroot . "/" . $CFG->admin . "/registration/register.php",
$params));
}
$siteregistrationform->display();
echo $OUTPUT->header();
//check if the site is registered on Moodle.org and display a message about registering on MOOCH
$registered = $DB->count_records('registration_hubs', array('huburl' => HUB_MOODLEORGHUBURL, 'confirmed' => 1));
if (empty($registered)) {
$warningmsg = get_string('registermoochtips', 'hub');
$warningmsg .= $renderer->single_button(new moodle_url('register.php', array('huburl' => HUB_MOODLEORGHUBURL
, 'hubname' => 'Moodle.org')), get_string('register', 'admin'));
echo $renderer->box($warningmsg, 'buttons mdl-align generalbox adminwarning');
}
//do not check sesskey if confirm = false because this script is linked into email message
if (!empty($errormessage)) {
echo $OUTPUT->notification(get_string('unregistrationerror', 'hub', $errormessage));
}
echo $OUTPUT->heading(get_string('registerwith', 'hub'));
$hubselectorform->display();
if (extension_loaded('xmlrpc')) {
$hubs = $registrationmanager->get_registered_on_hubs();
if (!empty($hubs)) {
echo $OUTPUT->heading(get_string('registeredon', 'hub'), 3, 'main');
echo $renderer->registeredonhublisting($hubs);
}
} else { //display notice about xmlrpc
$xmlrpcnotification = $OUTPUT->doc_link('admin/environment/php_extension/xmlrpc', '');
$xmlrpcnotification .= get_string('xmlrpcdisabledregistration', 'hub');
echo $OUTPUT->notification($xmlrpcnotification);
}
if (\core\hub\registration::is_registered()) {
// Unregister link.
$unregisterhuburl = new moodle_url("/admin/registration/index.php", ['unregistration' => 1]);
echo html_writer::div(html_writer::link($unregisterhuburl, get_string('unregister', 'hub')), 'unregister');
} else if ($isinitialregistration) {
echo html_writer::div(html_writer::link(new moodle_url($returnurl), get_string('skipregistration', 'hub')), 'skipregistration');
}
echo $OUTPUT->footer();
+1 -295
View File
@@ -1,5 +1,4 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
@@ -15,297 +14,4 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
//// SITE PRIVACY /////
/**
* Site privacy: private
*/
define('HUB_SITENOTPUBLISHED', 'notdisplayed');
/**
* Site privacy: public
*/
define('HUB_SITENAMEPUBLISHED', 'named');
/**
* Site privacy: public and global
*/
define('HUB_SITELINKPUBLISHED', 'linked');
/**
*
* Site registration library
*
* @package course
* @copyright 2010 Moodle Pty Ltd (http://moodle.com)
* @author Jerome Mouneyrac
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class registration_manager {
/**
* Automatically update the registration on all hubs
*/
public function cron() {
global $CFG;
if (extension_loaded('xmlrpc')) {
$function = 'hub_update_site_info';
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
// Update all hubs where the site is registered.
$hubs = $this->get_registered_on_hubs();
if (empty($hubs)) {
mtrace(get_string('registrationwarning', 'admin'));
}
foreach ($hubs as $hub) {
// Update the registration.
$siteinfo = $this->get_site_info($hub->huburl);
$params = array('siteinfo' => $siteinfo);
$serverurl = $hub->huburl . "/local/hub/webservice/webservices.php";
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $hub->token);
try {
$result = $xmlrpcclient->call($function, $params);
$this->update_registeredhub($hub); // To update timemodified.
mtrace(get_string('siteupdatedcron', 'hub', $hub->hubname));
} catch (Exception $e) {
$errorparam = new stdClass();
$errorparam->errormessage = $e->getMessage();
$errorparam->hubname = $hub->hubname;
mtrace(get_string('errorcron', 'hub', $errorparam));
}
}
} else {
mtrace(get_string('errorcronnoxmlrpc', 'hub'));
}
}
/**
* Return the site secret for a given hub
* site identifier is assigned to Mooch
* each hub has a unique and personal site secret.
* @param string $huburl
* @return string site secret
*/
public function get_site_secret_for_hub($huburl) {
global $DB;
$existingregistration = $DB->get_record('registration_hubs',
array('huburl' => $huburl));
if (!empty($existingregistration)) {
return $existingregistration->secret;
}
if ($huburl == HUB_MOODLEORGHUBURL) {
$siteidentifier = get_site_identifier();
} else {
$siteidentifier = random_string(32) . $_SERVER['HTTP_HOST'];
}
return $siteidentifier;
}
/**
* When the site register on a hub, he must call this function
* @param object $hub where the site is registered on
* @return integer id of the record
*/
public function add_registeredhub($hub) {
global $DB;
$hub->timemodified = time();
$id = $DB->insert_record('registration_hubs', $hub);
return $id;
}
/**
* When a site unregister from a hub, he must call this function
* @param string $huburl the huburl to delete
*/
public function delete_registeredhub($huburl) {
global $DB;
$DB->delete_records('registration_hubs', array('huburl' => $huburl));
}
/**
* Get a hub on which the site is registered for a given url or token
* Mostly use to check if the site is registered on a specific hub
* @param string $huburl
* @param string $token
* @return object the hub
*/
public function get_registeredhub($huburl = null, $token = null) {
global $DB;
$params = array();
if (!empty($huburl)) {
$params['huburl'] = $huburl;
}
if (!empty($token)) {
$params['token'] = $token;
}
$params['confirmed'] = 1;
$token = $DB->get_record('registration_hubs', $params);
return $token;
}
/**
* Get the hub which has not confirmed that the site is registered on,
* but for which a request has been sent
* @param string $huburl
* @return object the hub
*/
public function get_unconfirmedhub($huburl) {
global $DB;
$params = array();
$params['huburl'] = $huburl;
$params['confirmed'] = 0;
$token = $DB->get_record('registration_hubs', $params);
return $token;
}
/**
* Update a registered hub (mostly use to update the confirmation status)
* @param object $hub the hub
*/
public function update_registeredhub($hub) {
global $DB;
$hub->timemodified = time();
$DB->update_record('registration_hubs', $hub);
}
/**
* Return all hubs where the site is registered
*/
public function get_registered_on_hubs() {
global $DB;
$hubs = $DB->get_records('registration_hubs', array('confirmed' => 1));
return $hubs;
}
/**
* Return site information for a specific hub
* @param string $huburl
* @return array site info
*/
public function get_site_info($huburl) {
global $CFG, $DB;
$siteinfo = array();
$cleanhuburl = clean_param($huburl, PARAM_ALPHANUMEXT);
$siteinfo['name'] = get_config('hub', 'site_name_' . $cleanhuburl);
$siteinfo['description'] = get_config('hub', 'site_description_' . $cleanhuburl);
$siteinfo['contactname'] = get_config('hub', 'site_contactname_' . $cleanhuburl);
$siteinfo['contactemail'] = get_config('hub', 'site_contactemail_' . $cleanhuburl);
$siteinfo['contactphone'] = get_config('hub', 'site_contactphone_' . $cleanhuburl);
$siteinfo['imageurl'] = get_config('hub', 'site_imageurl_' . $cleanhuburl);
$siteinfo['privacy'] = get_config('hub', 'site_privacy_' . $cleanhuburl);
$siteinfo['street'] = get_config('hub', 'site_address_' . $cleanhuburl);
$siteinfo['regioncode'] = get_config('hub', 'site_region_' . $cleanhuburl);
$siteinfo['countrycode'] = get_config('hub', 'site_country_' . $cleanhuburl);
$siteinfo['geolocation'] = get_config('hub', 'site_geolocation_' . $cleanhuburl);
$siteinfo['contactable'] = get_config('hub', 'site_contactable_' . $cleanhuburl);
$siteinfo['emailalert'] = get_config('hub', 'site_emailalert_' . $cleanhuburl);
if (get_config('hub', 'site_coursesnumber_' . $cleanhuburl) == -1) {
$coursecount = -1;
} else {
$coursecount = $DB->count_records('course') - 1;
}
$siteinfo['courses'] = $coursecount;
if (get_config('hub', 'site_usersnumber_' . $cleanhuburl) == -1) {
$usercount = -1;
} else {
$usercount = $DB->count_records('user', array('deleted' => 0));
}
$siteinfo['users'] = $usercount;
if (get_config('hub', 'site_roleassignmentsnumber_' . $cleanhuburl) == -1) {
$roleassigncount = -1;
} else {
$roleassigncount = $DB->count_records('role_assignments');
}
$siteinfo['enrolments'] = $roleassigncount;
if (get_config('hub', 'site_postsnumber_' . $cleanhuburl) == -1) {
$postcount = -1;
} else {
$postcount = $DB->count_records('forum_posts');
}
$siteinfo['posts'] = $postcount;
if (get_config('hub', 'site_questionsnumber_' . $cleanhuburl) == -1) {
$questioncount = -1;
} else {
$questioncount = $DB->count_records('question');
}
$siteinfo['questions'] = $questioncount;
if (get_config('hub', 'site_resourcesnumber_' . $cleanhuburl) == -1) {
$resourcecount = -1;
} else {
$resourcecount = $DB->count_records('resource');
}
$siteinfo['resources'] = $resourcecount;
// Badge statistics.
require_once($CFG->libdir . '/badgeslib.php');
if (get_config('hub', 'site_badges_' . $cleanhuburl) == -1) {
$badges = -1;
} else {
$badges = $DB->count_records_select('badge', 'status <> ' . BADGE_STATUS_ARCHIVED);
}
$siteinfo['badges'] = $badges;
if (get_config('hub', 'site_issuedbadges_' . $cleanhuburl) == -1) {
$issuedbadges = -1;
} else {
$issuedbadges = $DB->count_records('badge_issued');
}
$siteinfo['issuedbadges'] = $issuedbadges;
//TODO
require_once($CFG->dirroot . "/course/lib.php");
if (get_config('hub', 'site_participantnumberaverage_' . $cleanhuburl) == -1) {
$participantnumberaverage = -1;
} else {
$participantnumberaverage = average_number_of_participants();
}
$siteinfo['participantnumberaverage'] = $participantnumberaverage;
if (get_config('hub', 'site_modulenumberaverage_' . $cleanhuburl) == -1) {
$modulenumberaverage = -1;
} else {
$modulenumberaverage = average_number_of_courses_modules();
}
$siteinfo['modulenumberaverage'] = $modulenumberaverage;
$siteinfo['language'] = get_config('hub', 'site_language_' . $cleanhuburl);
$siteinfo['moodleversion'] = $CFG->version;
$siteinfo['moodlerelease'] = $CFG->release;
$siteinfo['url'] = $CFG->wwwroot;
return $siteinfo;
}
/**
* Retrieve the site privacy string matching the define value
* @param string $privacy must match the define into moodlelib.php
* @return string
*/
public function get_site_privacy_string($privacy) {
switch ($privacy) {
case HUB_SITENOTPUBLISHED:
$privacystring = get_string('siteprivacynotpublished', 'hub');
break;
case HUB_SITENAMEPUBLISHED:
$privacystring = get_string('siteprivacypublished', 'hub');
break;
case HUB_SITELINKPUBLISHED:
$privacystring = get_string('siteprivacylinked', 'hub');
break;
}
if (empty($privacystring)) {
throw new moodle_exception('unknownprivacy');
}
return $privacystring;
}
}
?>
defined('MOODLE_INTERNAL') || die();
+2 -165
View File
@@ -20,7 +20,7 @@
// //
///////////////////////////////////////////////////////////////////////////
/*
/**
* @package moodle
* @subpackage registration
* @author Jerome Mouneyrac <jerome@mouneyrac.com>
@@ -34,168 +34,5 @@
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/forms.php');
require_once($CFG->dirroot . '/webservice/lib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
require_sesskey();
$huburl = required_param('huburl', PARAM_URL);
$huburl = rtrim($huburl, "/");
if ($huburl == HUB_MOODLEORGHUBURL) { // register to Moodle.org
admin_externalpage_setup('registrationmoodleorg');
} else { //register to a hub
admin_externalpage_setup('registrationhub');
}
$password = optional_param('password', '', PARAM_TEXT);
$hubname = optional_param('hubname', '', PARAM_TEXT);
$registrationmanager = new registration_manager();
$registeredhub = $registrationmanager->get_registeredhub($huburl);
$siteregistrationform = new site_registration_form('',
array('alreadyregistered' => !empty($registeredhub->token),
'huburl' => $huburl, 'hubname' => $hubname,
'password' => $password));
$fromform = $siteregistrationform->get_data();
if (!empty($fromform) and confirm_sesskey()) {
// Set to -1 all optional data marked as "don't send" by the admin.
// The function get_site_info() will not calculate the optional data if config is set to -1.
$inputnames = array('courses', 'users', 'roleassignments', 'posts', 'questions', 'resources',
'badges', 'issuedbadges', 'modulenumberaverage', 'participantnumberaverage');
foreach ($inputnames as $inputname) {
if (empty($fromform->{$inputname})) {
$fromform->{$inputname} = -1;
}
}
// Save the settings.
$cleanhuburl = clean_param($huburl, PARAM_ALPHANUMEXT);
set_config('site_name_' . $cleanhuburl, $fromform->name, 'hub');
set_config('site_description_' . $cleanhuburl, $fromform->description, 'hub');
set_config('site_contactname_' . $cleanhuburl, $fromform->contactname, 'hub');
set_config('site_contactemail_' . $cleanhuburl, $fromform->contactemail, 'hub');
set_config('site_contactphone_' . $cleanhuburl, $fromform->contactphone, 'hub');
set_config('site_imageurl_' . $cleanhuburl, $fromform->imageurl, 'hub');
set_config('site_privacy_' . $cleanhuburl, $fromform->privacy, 'hub');
set_config('site_address_' . $cleanhuburl, $fromform->address, 'hub');
set_config('site_region_' . $cleanhuburl, $fromform->regioncode, 'hub');
set_config('site_country_' . $cleanhuburl, $fromform->countrycode, 'hub');
set_config('site_language_' . $cleanhuburl, $fromform->language, 'hub');
set_config('site_geolocation_' . $cleanhuburl, $fromform->geolocation, 'hub');
set_config('site_contactable_' . $cleanhuburl, $fromform->contactable, 'hub');
set_config('site_emailalert_' . $cleanhuburl, $fromform->emailalert, 'hub');
set_config('site_coursesnumber_' . $cleanhuburl, $fromform->courses, 'hub');
set_config('site_usersnumber_' . $cleanhuburl, $fromform->users, 'hub');
set_config('site_roleassignmentsnumber_' . $cleanhuburl, $fromform->roleassignments, 'hub');
set_config('site_postsnumber_' . $cleanhuburl, $fromform->posts, 'hub');
set_config('site_questionsnumber_' . $cleanhuburl, $fromform->questions, 'hub');
set_config('site_resourcesnumber_' . $cleanhuburl, $fromform->resources, 'hub');
set_config('site_badges_' . $cleanhuburl, $fromform->badges, 'hub');
set_config('site_issuedbadges_' . $cleanhuburl, $fromform->issuedbadges, 'hub');
set_config('site_modulenumberaverage_' . $cleanhuburl, $fromform->modulenumberaverage, 'hub');
set_config('site_participantnumberaverage_' . $cleanhuburl, $fromform->participantnumberaverage, 'hub');
}
/////// UPDATE ACTION ////////
// update the hub registration
$update = optional_param('update', 0, PARAM_INT);
if ($update and confirm_sesskey()) {
//update the registration
$function = 'hub_update_site_info';
$siteinfo = $registrationmanager->get_site_info($huburl);
$params = array('siteinfo' => $siteinfo);
$serverurl = $huburl . "/local/hub/webservice/webservices.php";
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $registeredhub->token);
try {
$result = $xmlrpcclient->call($function, $params);
$registrationmanager->update_registeredhub($registeredhub); // To update timemodified.
} catch (Exception $e) {
$error = $OUTPUT->notification(get_string('errorregistration', 'hub', $e->getMessage()));
}
}
/////// FORM REGISTRATION ACTION //////
if (!empty($fromform) and empty($update) and confirm_sesskey()) {
if (!empty($fromform) and confirm_sesskey()) { // if the register button has been clicked
// Retrieve the optional info (specially course number, user number, module number average...).
$siteinfo = $registrationmanager->get_site_info($huburl);
$fromform->courses = $siteinfo['courses'];
$fromform->users = $siteinfo['users'];
$fromform->enrolments = $siteinfo['enrolments'];
$fromform->posts = $siteinfo['posts'];
$fromform->questions = $siteinfo['questions'];
$fromform->resources = $siteinfo['resources'];
$fromform->badges = $siteinfo['badges'];
$fromform->issuedbadges = $siteinfo['issuedbadges'];
$fromform->modulenumberaverage = $siteinfo['modulenumberaverage'];
$fromform->participantnumberaverage = $siteinfo['participantnumberaverage'];
$fromform->street = $siteinfo['street'];
$params = (array) $fromform; //we are using the form input as the redirection parameters (token, url and name)
$unconfirmedhub = $registrationmanager->get_unconfirmedhub($huburl);
if (empty($unconfirmedhub)) {
//we save the token into the communication table in order to have a reference
$unconfirmedhub = new stdClass();
$unconfirmedhub->token = $registrationmanager->get_site_secret_for_hub($huburl);
$unconfirmedhub->secret = $unconfirmedhub->token;
$unconfirmedhub->huburl = $huburl;
$unconfirmedhub->hubname = $hubname;
$unconfirmedhub->confirmed = 0;
$unconfirmedhub->id = $registrationmanager->add_registeredhub($unconfirmedhub);
}
$params['token'] = $unconfirmedhub->token;
$params['url'] = $CFG->wwwroot;
redirect(new moodle_url($huburl . '/local/hub/siteregistration.php', $params));
}
}
/////// OUTPUT SECTION /////////////
echo $OUTPUT->header();
//Display update notification result
if (!empty($registeredhub->confirmed)) {
if (!empty($result)) {
echo $OUTPUT->notification(get_string('siteregistrationupdated', 'hub'), 'notifysuccess');
}
}
if (!empty($error)) {
echo $error;
}
// Some Moodle.org registration explanation.
if ($huburl == HUB_MOODLEORGHUBURL) {
if (!empty($registeredhub->token)) {
if ($registeredhub->timemodified == 0) {
$registrationmessage = get_string('pleaserefreshregistrationunknown', 'admin');
} else {
$lastupdated = userdate($registeredhub->timemodified, get_string('strftimedate', 'langconfig'));
$registrationmessage = get_string('pleaserefreshregistration', 'admin', $lastupdated);
}
} else {
$registrationmessage = get_string('registrationwarning', 'admin');
}
echo $OUTPUT->notification($registrationmessage);
echo $OUTPUT->heading(get_string('registerwithmoodleorg', 'admin'));
$renderer = $PAGE->get_renderer('core', 'register');
echo $renderer->moodleorg_registration_message();
}
$siteregistrationform->display();
echo $OUTPUT->footer();
redirect(new moodle_url('/admin/registration/index.php'));
+1 -55
View File
@@ -36,60 +36,6 @@ class core_register_renderer extends plugin_renderer_base {
* @return string
*/
public function moodleorg_registration_message() {
$moodleorgstatslink = html_writer::link('http://moodle.net/stats',
get_string('statsmoodleorg', 'admin'),
array('target' => '_blank'));
$moodleorgregmsg = get_string('registermoodleorg', 'admin');
$items = array(get_string('registermoodleorgli1', 'admin'),
get_string('registermoodleorgli2', 'admin', $moodleorgstatslink));
$moodleorgregmsg .= html_writer::alist($items);
return $moodleorgregmsg;
return format_text(get_string('registermoodlenet', 'admin'), FORMAT_HTML, ['noclean' => true]);
}
/**
* Display a box message confirming a site registration (add or update)
* @param string $confirmationmessage
* @return string
*/
public function registration_confirmation($confirmationmessage) {
$linktositelist = html_writer::tag('a', get_string('sitelist', 'hub'),
array('href' => new moodle_url('/local/hub/index.php')));
$message = $confirmationmessage . html_writer::empty_tag('br') . $linktositelist;
return $this->output->box($message);
}
/**
* Display the listing of registered on hub
*/
public function registeredonhublisting($hubs) {
global $CFG;
$table = new html_table();
$table->head = array(get_string('hub', 'hub'), get_string('operation', 'hub'));
$table->size = array('80%', '20%');
foreach ($hubs as $hub) {
if ($hub->huburl == HUB_MOODLEORGHUBURL) {
$hub->hubname = get_string('registeredmoodleorg', 'hub', $hub->hubname);
}
$hublink = html_writer::tag('a', $hub->hubname, array('href' => $hub->huburl));
$hublinkcell = html_writer::tag('div', $hublink, array('class' => 'registeredhubrow'));
$unregisterhuburl = new moodle_url("/" . $CFG->admin . "/registration/index.php",
array('sesskey' => sesskey(), 'huburl' => $hub->huburl,
'unregistration' => 1));
$unregisterbutton = new single_button($unregisterhuburl,
get_string('unregister', 'hub'));
$unregisterbutton->class = 'centeredbutton';
$unregisterbuttonhtml = $this->output->render($unregisterbutton);
//add button cells
$cells = array($hublinkcell, $unregisterbuttonhtml);
$row = new html_table_row($cells);
$table->data[] = $row;
}
return html_writer::table($table);
}
}
+22 -34
View File
@@ -20,7 +20,7 @@
// //
///////////////////////////////////////////////////////////////////////////
/*
/**
* @package moodle
* @subpackage registration
* @author Jerome Mouneyrac <jerome@mouneyrac.com>
@@ -33,44 +33,32 @@
require('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
$url = optional_param('url', '', PARAM_URL);
$hubname = optional_param('hubname', '', PARAM_TEXT);
$token = optional_param('token', '', PARAM_TEXT);
admin_externalpage_setup('registrationhubs');
admin_externalpage_setup('registrationmoodleorg');
//check that we are waiting a confirmation from this hub, and check that the token is correct
$registrationmanager = new registration_manager();
$registeredhub = $registrationmanager->get_unconfirmedhub($url);
if (!empty($registeredhub) and $registeredhub->token == $token) {
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('renewregistration', 'hub'), 3, 'main');
$hublink = html_writer::tag('a', $hubname, array('href' => $url));
$registrationmanager->delete_registeredhub($url);
//Mooch case, need to recreate the siteidentifier
if ($url == HUB_MOODLEORGHUBURL) {
$CFG->siteidentifier = null;
get_site_identifier();
}
$deletedregmsg = get_string('previousregistrationdeleted', 'hub', $hublink);
$button = new single_button(new moodle_url('/admin/registration/index.php'),
get_string('restartregistration', 'hub'));
$button->class = 'restartregbutton';
echo html_writer::tag('div', $deletedregmsg . $OUTPUT->render($button),
array('class' => 'mdl-align'));
echo $OUTPUT->footer();
} else {
throw new moodle_exception('wrongtoken', 'hub',
$CFG->wwwroot . '/' . $CFG->admin . '/registration/index.php');
if ($url !== HUB_MOODLEORGHUBURL) {
throw new moodle_exception('errorotherhubsnotsupported', 'hub');
}
// Check that we are waiting a confirmation from this hub, and check that the token is correct.
\core\hub\registration::reset_site_identifier($token);
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('renewregistration', 'hub'), 3, 'main');
$hublink = html_writer::tag('a', 'Moodle.net', array('href' => HUB_MOODLEORGHUBURL));
$deletedregmsg = get_string('previousregistrationdeleted', 'hub', $hublink);
$button = new single_button(new moodle_url('/admin/registration/index.php'),
get_string('restartregistration', 'hub'));
$button->class = 'restartregbutton';
echo html_writer::tag('div', $deletedregmsg . $OUTPUT->render($button),
array('class' => 'mdl-align'));
echo $OUTPUT->footer();
+98 -5
View File
@@ -276,12 +276,19 @@ class core_admin_renderer extends plugin_renderer_base {
* @param int|null $availableupdatesfetch timestamp of the most recent updates fetch or null (unknown)
* @param string[] $cachewarnings An array containing warnings from the Cache API.
* @param array $eventshandlers Events 1 API handlers.
* @param bool $themedesignermode Warn about the theme designer mode.
* @param bool $devlibdir Warn about development libs directory presence.
* @param bool $mobileconfigured Whether the mobile web services have been enabled
* @param bool $overridetossl Whether or not ssl is being forced.
* @param bool $invalidforgottenpasswordurl Whether the forgotten password URL does not link to a valid URL.
*
* @return string HTML to output.
*/
public function admin_notifications_page($maturity, $insecuredataroot, $errorsdisplayed,
$cronoverdue, $dbproblems, $maintenancemode, $availableupdates, $availableupdatesfetch,
$buggyiconvnomb, $registered, array $cachewarnings = array(), $eventshandlers = 0, $themedesignermode = false) {
$buggyiconvnomb, $registered, array $cachewarnings = array(), $eventshandlers = 0,
$themedesignermode = false, $devlibdir = false, $mobileconfigured = false,
$overridetossl = false, $invalidforgottenpasswordurl = false) {
global $CFG;
$output = '';
@@ -290,15 +297,19 @@ class core_admin_renderer extends plugin_renderer_base {
$output .= $this->legacy_log_store_writing_error();
$output .= empty($CFG->disableupdatenotifications) ? $this->available_updates($availableupdates, $availableupdatesfetch) : '';
$output .= $this->insecure_dataroot_warning($insecuredataroot);
$output .= $this->development_libs_directories_warning($devlibdir);
$output .= $this->themedesignermode_warning($themedesignermode);
$output .= $this->display_errors_warning($errorsdisplayed);
$output .= $this->buggy_iconv_warning($buggyiconvnomb);
$output .= $this->cron_overdue_warning($cronoverdue);
$output .= $this->db_problems($dbproblems);
$output .= $this->maintenance_mode_warning($maintenancemode);
$output .= $this->overridetossl_warning($overridetossl);
$output .= $this->cache_warnings($cachewarnings);
$output .= $this->events_handlers($eventshandlers);
$output .= $this->registration_warning($registered);
$output .= $this->mobile_configuration_warning($mobileconfigured);
$output .= $this->forgotten_password_url_warning($invalidforgottenpasswordurl);
//////////////////////////////////////////////////////////////////////////////////////////////////
//// IT IS ILLEGAL AND A VIOLATION OF THE GPL TO HIDE, REMOVE OR MODIFY THIS COPYRIGHT NOTICE ///
@@ -520,6 +531,24 @@ class core_admin_renderer extends plugin_renderer_base {
}
}
/**
* Render a warning that a directory with development libs is present.
*
* @param bool $devlibdir True if the warning should be displayed.
* @return string
*/
protected function development_libs_directories_warning($devlibdir) {
if ($devlibdir) {
$moreinfo = new moodle_url('/report/security/index.php');
$warning = get_string('devlibdirpresent', 'core_admin', ['moreinfourl' => $moreinfo->out()]);
return $this->warning($warning, 'error');
} else {
return '';
}
}
/**
* Render an appropriate message if dataroot is insecure.
* @param bool $errorsdisplayed
@@ -644,6 +673,20 @@ class core_admin_renderer extends plugin_renderer_base {
return $this->warning(get_string('sitemaintenancewarning2', 'admin', $url));
}
/**
* Render a warning that ssl is forced because the site was on loginhttps.
*
* @param bool $overridetossl Whether or not ssl is being forced.
* @return string
*/
protected function overridetossl_warning($overridetossl) {
if (!$overridetossl) {
return '';
}
$warning = get_string('overridetossl', 'core_admin');
return $this->warning($warning, 'warning');
}
/**
* Display a warning about installing development code if necesary.
* @param int $maturity
@@ -782,17 +825,67 @@ class core_admin_renderer extends plugin_renderer_base {
if (!$registered) {
$registerbutton = $this->single_button(new moodle_url('/admin/registration/register.php',
array('huburl' => HUB_MOODLEORGHUBURL, 'hubname' => 'Moodle.org')),
if (has_capability('moodle/site:config', context_system::instance())) {
$registerbutton = $this->single_button(new moodle_url('/admin/registration/index.php'),
get_string('register', 'admin'));
$str = 'registrationwarning';
} else {
$registerbutton = '';
$str = 'registrationwarningcontactadmin';
}
return $this->warning( get_string('registrationwarning', 'admin')
. '&nbsp;' . $this->help_icon('registration', 'admin') . $registerbutton );
return $this->warning( get_string($str, 'admin')
. '&nbsp;' . $this->help_icon('registration', 'admin') . $registerbutton ,
'error alert alert-danger');
}
return '';
}
/**
* Return an admin page warning if site is not registered with moodle.org
*
* @return string
*/
public function warn_if_not_registered() {
return $this->registration_warning(\core\hub\registration::is_registered());
}
/**
* Display a warning about the Mobile Web Services being disabled.
*
* @param boolean $mobileconfigured true if mobile web services are enabled
* @return string HTML to output.
*/
protected function mobile_configuration_warning($mobileconfigured) {
$output = '';
if (!$mobileconfigured) {
$settingslink = new moodle_url('/admin/settings.php', ['section' => 'mobilesettings']);
$configurebutton = $this->single_button($settingslink, get_string('enablemobilewebservice', 'admin'));
$output .= $this->warning(get_string('mobilenotconfiguredwarning', 'admin') . '&nbsp;' . $configurebutton);
}
return $output;
}
/**
* Display a warning about the forgotten password URL not linking to a valid URL.
*
* @param boolean $invalidforgottenpasswordurl true if the forgotten password URL is not valid
* @return string HTML to output.
*/
protected function forgotten_password_url_warning($invalidforgottenpasswordurl) {
$output = '';
if ($invalidforgottenpasswordurl) {
$settingslink = new moodle_url('/admin/settings.php', ['section' => 'manageauths']);
$configurebutton = $this->single_button($settingslink, get_string('check', 'moodle'));
$output .= $this->warning(get_string('invalidforgottenpasswordurl', 'admin') . '&nbsp;' . $configurebutton,
'error alert alert-danger');
}
return $output;
}
/**
* Helper method to render the information about the available Moodle update
*
@@ -183,9 +183,14 @@ abstract class core_role_capability_table_with_risks extends core_role_capabilit
public function get_risk_icon($type) {
global $OUTPUT;
$text = $OUTPUT->pix_icon('i/' . str_replace('risk', 'risk_', $type), get_string($type . 'short', 'admin'));
$alt = get_string("{$type}short", "admin");
$title = get_string($type, "admin");
$text = $OUTPUT->pix_icon('i/' . str_replace('risk', 'risk_', $type), $alt, 'moodle', [
'title' => $title,
]);
$action = new popup_action('click', $this->risksurl, 'docspopup');
$riskicon = $OUTPUT->action_link($this->risksurl, $text, $action, array('title'=>get_string($type, 'admin')));
$riskicon = $OUTPUT->action_link($this->risksurl, $text, $action);
return $riskicon;
}
+2 -2
View File
@@ -193,8 +193,8 @@ function print_report_tree($contextid, $contexts, $systemcontext, $fullname, $al
$strgoto = get_string('gotoassignroles', 'core_role', $a);
$strcheck = get_string('checkuserspermissionshere', 'core_role', $a);
}
echo ' <a title="' . $strgoto . '" href="' . $raurl . '">' . $OUTPUT->pix_icon('t/edit', 'core', $stredit) . '</a> ';
echo ' <a title="' . $strcheck . '" href="' . $churl . '">' . $OUTPUT->pix_icon('t/preview', 'core', $strcheckpermissions) . '</a> ';
echo ' <a title="' . $strgoto . '" href="' . $raurl . '">' . $OUTPUT->pix_icon('t/edit', $stredit) . '</a> ';
echo ' <a title="' . $strcheck . '" href="' . $churl . '">' . $OUTPUT->pix_icon('t/preview', $strcheckpermissions) . '</a> ';
echo "</p>\n";
}
}
+18 -1
View File
@@ -5,11 +5,22 @@
require_once('../config.php');
require_once($CFG->libdir.'/adminlib.php');
redirect_if_major_upgrade_required();
$query = trim(optional_param('query', '', PARAM_NOTAGS)); // Search string
$context = context_system::instance();
$PAGE->set_context($context);
$hassiteconfig = has_capability('moodle/site:config', $context);
if ($hassiteconfig && moodle_needs_upgrading()) {
redirect(new moodle_url('/admin/index.php'));
}
// If site registration needs updating, redirect.
\core\hub\registration::registration_reminder('/admin/search.php');
admin_externalpage_setup('search', '', array('query' => $query)); // now hidden page
$adminroot = admin_get_root(); // need all settings here
@@ -38,6 +49,12 @@ if ($data = data_submitted() and confirm_sesskey() and isset($data->action) and
// to modify them
echo $OUTPUT->header($focus);
// Display a warning if site is not registered.
if (empty($query)) {
$adminrenderer = $PAGE->get_renderer('core', 'admin');
echo $adminrenderer->warn_if_not_registered();
}
echo $OUTPUT->heading(get_string('administrationsite'));
if ($errormsg !== '') {
@@ -49,7 +66,7 @@ if ($errormsg !== '') {
$showsettingslinks = true;
if (has_capability('moodle/site:config', $context)) {
if ($hassiteconfig) {
require_once("admin_settings_search_form.php");
$form = new admin_settings_search_form();
$form->display();
+3
View File
@@ -125,6 +125,9 @@ foreach ($searchareas as $area) {
$areasconfig[$areaid]->docsprocessed . ' , ' .
$areasconfig[$areaid]->recordsprocessed . ' , ' .
$areasconfig[$areaid]->docsignored;
if ($areasconfig[$areaid]->partial) {
$laststatus .= ' ' . get_string('searchpartial', 'admin');
}
} else {
$laststatus = '';
}
+110
View File
@@ -0,0 +1,110 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Adds settings links to admin tree.
*
* @package core_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
if ($hassiteconfig) {
$settings = new admin_settingpage('analyticssettings', new lang_string('analyticssettings', 'analytics'));
$ADMIN->add('analytics', $settings);
if ($ADMIN->fulltree) {
// Select the site prediction's processor.
$predictionprocessors = \core_analytics\manager::get_all_prediction_processors();
$predictors = array();
foreach ($predictionprocessors as $fullclassname => $predictor) {
$pluginname = substr($fullclassname, 1, strpos($fullclassname, '\\', 1) - 1);
$predictors[$fullclassname] = new lang_string('pluginname', $pluginname);
}
$settings->add(new \core_analytics\admin_setting_predictor('analytics/predictionsprocessor',
new lang_string('predictionsprocessor', 'analytics'), new lang_string('predictionsprocessor_help', 'analytics'),
'\mlbackend_php\processor', $predictors)
);
// Log store.
$logmanager = get_log_manager();
$readers = $logmanager->get_readers('core\log\sql_reader');
$options = array();
$defaultreader = null;
foreach ($readers as $plugin => $reader) {
if (!$reader->is_logging()) {
continue;
}
if (!isset($defaultreader)) {
// The top one as default reader.
$defaultreader = $plugin;
}
$options[$plugin] = $reader->get_name();
}
if (empty($defaultreader)) {
// We fall here during initial site installation because log stores are not
// enabled until admin/tool/log/db/install.php is executed and get_readers
// return nothing.
if ($enabledlogstores = get_config('tool_log', 'enabled_stores')) {
$enabledlogstores = explode(',', $enabledlogstores);
$defaultreader = reset($enabledlogstores);
// No need to set the correct name, just the value, this will not be displayed.
$options[$defaultreader] = $defaultreader;
}
}
$settings->add(new admin_setting_configselect('analytics/logstore',
new lang_string('analyticslogstore', 'analytics'), new lang_string('analyticslogstore_help', 'analytics'),
$defaultreader, $options));
// Enable/disable time splitting methods.
$alltimesplittings = \core_analytics\manager::get_all_time_splittings();
$timesplittingoptions = array();
$timesplittingdefaults = array('\core\analytics\time_splitting\quarters_accum',
'\core\analytics\time_splitting\quarters', '\core\analytics\time_splitting\single_range');
foreach ($alltimesplittings as $key => $timesplitting) {
$timesplittingoptions[$key] = $timesplitting->get_name();
}
$settings->add(new admin_setting_configmultiselect('analytics/timesplittings',
new lang_string('enabledtimesplittings', 'analytics'), new lang_string('timesplittingmethod_help', 'analytics'),
$timesplittingdefaults, $timesplittingoptions)
);
// Predictions processor output dir.
$defaultmodeloutputdir = rtrim($CFG->dataroot, '/') . DIRECTORY_SEPARATOR . 'models';
if (empty(get_config('analytics', 'modeloutputdir')) && !file_exists($defaultmodeloutputdir) &&
is_writable($defaultmodeloutputdir)) {
// Automatically create the dir for them so users don't see the invalid value red cross.
mkdir($defaultmodeloutputdir, $CFG->directorypermissions, true);
}
$settings->add(new admin_setting_configdirectory('analytics/modeloutputdir', new lang_string('modeloutputdir', 'analytics'),
new lang_string('modeloutputdirinfo', 'analytics'), $defaultmodeloutputdir));
// Disable web interface evaluation and get predictions.
$settings->add(new admin_setting_configcheckbox('analytics/onlycli', new lang_string('onlycli', 'analytics'),
new lang_string('onlycliinfo', 'analytics'), 1));
// Training and prediction time limit per model.
$settings->add(new admin_setting_configduration('analytics/modeltimelimit', new lang_string('modeltimelimit', 'analytics'),
new lang_string('modeltimelimitinfo', 'analytics'), 20 * MINSECS));
}
}
+3 -2
View File
@@ -179,10 +179,11 @@ preferences,moodle|/user/preferences.php|preferences',
'idnumber' => new lang_string('sort_idnumber', 'admin'),
);
$temp->add(new admin_setting_configselect('navsortmycoursessort', new lang_string('navsortmycoursessort', 'admin'), new lang_string('navsortmycoursessort_help', 'admin'), 'sortorder', $sortoptions));
$temp->add(new admin_setting_configtext('navcourselimit',new lang_string('navcourselimit','admin'),new lang_string('confignavcourselimit', 'admin'),20,PARAM_INT));
$temp->add(new admin_setting_configtext('navcourselimit', new lang_string('navcourselimit', 'admin'),
new lang_string('confignavcourselimit', 'admin'), 10, PARAM_INT));
$temp->add(new admin_setting_configcheckbox('usesitenameforsitepages', new lang_string('usesitenameforsitepages', 'admin'), new lang_string('configusesitenameforsitepages', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('linkadmincategories', new lang_string('linkadmincategories', 'admin'), new lang_string('linkadmincategories_help', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('linkcoursesections', new lang_string('linkcoursesections', 'admin'), new lang_string('linkcoursesections_help', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('linkcoursesections', new lang_string('linkcoursesections', 'admin'), new lang_string('linkcoursesections_help', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('navshowfrontpagemods', new lang_string('navshowfrontpagemods', 'admin'), new lang_string('navshowfrontpagemods_help', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('navadduserpostslinks', new lang_string('navadduserpostslinks', 'admin'), new lang_string('navadduserpostslinks_help', 'admin'), 1));
+3
View File
@@ -92,6 +92,9 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) {
$temp->add(new admin_setting_configselect('moodlecourse/coursedisplay', new lang_string('coursedisplay'),
new lang_string('coursedisplay_help'), COURSE_DISPLAY_SINGLEPAGE, $choices));
$temp->add(new admin_setting_configcheckbox('moodlecourse/courseenddateenabled', get_string('courseenddateenabled'),
get_string('courseenddateenabled_desc'), 1));
$temp->add(new admin_setting_configduration('moodlecourse/courseduration', get_string('courseduration'),
get_string('courseduration_desc'), YEARSECS));
+17 -2
View File
@@ -102,7 +102,7 @@ if ($hassiteconfig) {
$temp->add(new admin_setting_configtext('alternateloginurl', new lang_string('alternateloginurl', 'auth'),
new lang_string('alternatelogin', 'auth', htmlspecialchars(get_login_url())), ''));
$temp->add(new admin_setting_configtext('forgottenpasswordurl', new lang_string('forgottenpasswordurl', 'auth'),
new lang_string('forgottenpassword', 'auth'), ''));
new lang_string('forgottenpassword', 'auth'), '', PARAM_URL));
$temp->add(new admin_setting_confightmleditor('auth_instructions', new lang_string('instructions', 'auth'),
new lang_string('authinstructions', 'auth'), ''));
$setting = new admin_setting_configtext('allowemailaddresses', new lang_string('allowemailaddresses', 'admin'),
@@ -232,7 +232,7 @@ if ($hassiteconfig) {
// Convert plugins.
$ADMIN->add('modules', new admin_category('fileconverterplugins', new lang_string('type_fileconverter_plural', 'plugin')));
$temp = new admin_settingpage('managefileconverterplugins', new lang_string('type_fileconverter', 'plugin'));
$temp = new admin_settingpage('managefileconverterplugins', new lang_string('type_fileconvertermanage', 'plugin'));
$temp->add(new admin_setting_manage_fileconverter_plugins());
$ADMIN->add('fileconverterplugins', $temp);
@@ -557,6 +557,21 @@ if ($hassiteconfig) {
$temp->add(new admin_setting_heading('searchengineheading', new lang_string('searchengine', 'admin'), ''));
$temp->add(new admin_setting_configselect('searchengine',
new lang_string('selectsearchengine', 'admin'), '', 'solr', $engines));
$temp->add(new admin_setting_heading('searchoptionsheading', new lang_string('searchoptions', 'admin'), ''));
$temp->add(new admin_setting_configcheckbox('searchindexwhendisabled',
new lang_string('searchindexwhendisabled', 'admin'), new lang_string('searchindexwhendisabled_desc', 'admin'),
0));
$temp->add(new admin_setting_configduration('searchindextime',
new lang_string('searchindextime', 'admin'), new lang_string('searchindextime_desc', 'admin'),
600));
$options = [
0 => new lang_string('searchallavailablecourses_off', 'admin'),
1 => new lang_string('searchallavailablecourses_on', 'admin')
];
$temp->add(new admin_setting_configselect('searchallavailablecourses',
new lang_string('searchallavailablecourses', 'admin'),
new lang_string('searchallavailablecourses_desc', 'admin'),
0, $options));
$ADMIN->add('searchplugins', $temp);
$ADMIN->add('searchplugins', new admin_externalpage('searchareas', new lang_string('searchareas', 'admin'),
+10 -1
View File
@@ -18,6 +18,11 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
$temp->add(new admin_setting_configcheckbox('forceloginforprofiles', new lang_string('forceloginforprofiles', 'admin'), new lang_string('configforceloginforprofiles', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('forceloginforprofileimage', new lang_string('forceloginforprofileimage', 'admin'), new lang_string('forceloginforprofileimage_help', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('opentogoogle', new lang_string('opentogoogle', 'admin'), new lang_string('configopentogoogle', 'admin'), 0));
$temp->add(new admin_setting_configselect('allowindexing', new lang_string('allowindexing', 'admin'), new lang_string('allowindexing_desc', 'admin'),
0,
array(0 => new lang_string('allowindexingexceptlogin', 'admin'),
1 => new lang_string('allowindexingeverywhere', 'admin'),
2 => new lang_string('allowindexingnowhere', 'admin'))));
$temp->add(new admin_setting_pickroles('profileroles',
new lang_string('profileroles','admin'),
new lang_string('configprofileroles', 'admin'),
@@ -103,6 +108,10 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
new lang_string('passwordchangetokendeletion', 'admin'),
new lang_string('passwordchangetokendeletion_desc', 'admin'), 0));
$temp->add(new admin_setting_configduration('tokenduration',
new lang_string('tokenduration', 'admin'),
new lang_string('tokenduration_desc', 'admin'), 12 * WEEKSECS, WEEKSECS));
$temp->add(new admin_setting_configcheckbox('groupenrolmentkeypolicy', new lang_string('groupenrolmentkeypolicy', 'admin'), new lang_string('groupenrolmentkeypolicy_desc', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('disableuserimages', new lang_string('disableuserimages', 'admin'), new lang_string('configdisableuserimages', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('emailchangeconfirmation', new lang_string('emailchangeconfirmation', 'admin'), new lang_string('configemailchangeconfirmation', 'admin'), 1));
@@ -115,7 +124,7 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
// "httpsecurity" settingpage
$temp = new admin_settingpage('httpsecurity', new lang_string('httpsecurity', 'admin'));
$temp->add(new admin_setting_configcheckbox('loginhttps', new lang_string('loginhttps', 'admin'), new lang_string('configloginhttps', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('cookiesecure', new lang_string('cookiesecure', 'admin'), new lang_string('configcookiesecure', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('cookiehttponly', new lang_string('cookiehttponly', 'admin'), new lang_string('configcookiehttponly', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('allowframembedding', new lang_string('allowframembedding', 'admin'), new lang_string('allowframembedding_help', 'admin'), 0));
+2 -3
View File
@@ -12,6 +12,8 @@ $temp->add(new admin_setting_configexecutable('pathtodu', new lang_string('patht
$temp->add(new admin_setting_configexecutable('aspellpath', new lang_string('aspellpath', 'admin'), new lang_string('edhelpaspellpath'), ''));
$temp->add(new admin_setting_configexecutable('pathtodot', new lang_string('pathtodot', 'admin'), new lang_string('pathtodot_help', 'admin'), ''));
$temp->add(new admin_setting_configexecutable('pathtogs', new lang_string('pathtogs', 'admin'), new lang_string('pathtogs_help', 'admin'), '/usr/bin/gs'));
$temp->add(new admin_setting_configexecutable('pathtopython', new lang_string('pathtopython', 'admin'),
new lang_string('pathtopythondesc', 'admin'), ''));
$ADMIN->add('server', $temp);
@@ -209,9 +211,6 @@ $temp->add(new admin_setting_configtext('curltimeoutkbitrate', new lang_string('
$ADMIN->add('server', $temp);
$ADMIN->add('server', new admin_externalpage('adminregistration', new lang_string('hubs', 'admin'),
"$CFG->wwwroot/$CFG->admin/registration/index.php"));
// E-mail settings.
$ADMIN->add('server', new admin_category('email', new lang_string('categoryemail', 'admin')));
+2 -5
View File
@@ -55,9 +55,6 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
$optionalsubsystems->add(new admin_setting_configcheckbox('enableglobalsearch', new lang_string('enableglobalsearch', 'admin'),
new lang_string('enableglobalsearch_desc', 'admin'), 0, 1, 0));
$choices = array();
$choices[0] = new lang_string('no');
$choices[1] = new lang_string('yes');
$optionalsubsystems->add(new admin_setting_configselect('allowstealth', new lang_string('allowstealthmodules'),
new lang_string('allowstealthmodules_help'), 0, $choices));
$optionalsubsystems->add(new admin_setting_configcheckbox('allowstealth', new lang_string('allowstealthmodules'),
new lang_string('allowstealthmodules_help'), 0, 1, 0));
}
+2 -8
View File
@@ -11,14 +11,7 @@ $hassiteconfig = has_capability('moodle/site:config', $systemcontext);
$ADMIN->add('root', new admin_externalpage('adminnotifications', new lang_string('notifications'), "$CFG->wwwroot/$CFG->admin/index.php"));
$ADMIN->add('root', new admin_externalpage('registrationmoodleorg', new lang_string('registration', 'admin'),
"$CFG->wwwroot/$CFG->admin/registration/register.php?huburl=" . HUB_MOODLEORGHUBURL . "&hubname=Moodle.org&sesskey=" . sesskey()));
$ADMIN->add('root', new admin_externalpage('registrationhub', new lang_string('registerwith', 'hub'),
"$CFG->wwwroot/$CFG->admin/registration/register.php", 'moodle/site:config', true));
$ADMIN->add('root', new admin_externalpage('registrationhubs', new lang_string('hubs', 'admin'),
"$CFG->wwwroot/$CFG->admin/registration/index.php", 'moodle/site:config', true));
$ADMIN->add('root', new admin_externalpage('siteregistrationconfirmed',
new lang_string('registrationconfirmed', 'hub'),
$CFG->wwwroot."/".$CFG->admin."/registration/confirmregistration.php", 'moodle/site:config', true));
new moodle_url("/admin/registration/index.php")));
// hidden upgrade script
$ADMIN->add('root', new admin_externalpage('upgradesettings', new lang_string('upgradesettings', 'admin'), "$CFG->wwwroot/$CFG->admin/upgradesettings.php", 'moodle/site:config', true));
@@ -30,6 +23,7 @@ if ($hassiteconfig) {
$ADMIN->add('root', new admin_category('users', new lang_string('users','admin')));
$ADMIN->add('root', new admin_category('courses', new lang_string('courses','admin')));
$ADMIN->add('root', new admin_category('grades', new lang_string('grades')));
$ADMIN->add('root', new admin_category('analytics', new lang_string('analytics', 'analytics')));
$ADMIN->add('root', new admin_category('competencies', new lang_string('competencies', 'core_competency')));
$ADMIN->add('root', new admin_category('badges', new lang_string('badges'), empty($CFG->enablebadges)));
$ADMIN->add('root', new admin_category('location', new lang_string('location','admin')));
+3 -6
View File
@@ -15,15 +15,10 @@ if ($hassiteconfig
or has_capability('moodle/cohort:view', $systemcontext)) { // speedup for non-admins, add all caps used on this page
if (empty($CFG->loginhttps)) {
$securewwwroot = $CFG->wwwroot;
} else {
$securewwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
// stuff under the "accounts" subcategory
$ADMIN->add('accounts', new admin_externalpage('editusers', new lang_string('userlist','admin'), "$CFG->wwwroot/$CFG->admin/user.php", array('moodle/user:update', 'moodle/user:delete')));
$ADMIN->add('accounts', new admin_externalpage('userbulk', new lang_string('userbulk','admin'), "$CFG->wwwroot/$CFG->admin/user/user_bulk.php", array('moodle/user:update', 'moodle/user:delete')));
$ADMIN->add('accounts', new admin_externalpage('addnewuser', new lang_string('addnewuser'), "$securewwwroot/user/editadvanced.php?id=-1", 'moodle/user:create'));
$ADMIN->add('accounts', new admin_externalpage('addnewuser', new lang_string('addnewuser'), "$CFG->wwwroot/user/editadvanced.php?id=-1", 'moodle/user:create'));
// "User default preferences" settingpage.
$temp = new admin_settingpage('userdefaultpreferences', new lang_string('userdefaultpreferences', 'admin'));
@@ -189,6 +184,8 @@ if ($hassiteconfig
'phone2' => new lang_string('phone2'),
'department' => new lang_string('department'),
'institution' => new lang_string('institution'),
'city' => new lang_string('city'),
'country' => new lang_string('country'),
)));
$setting = new admin_setting_configtext('fullnamedisplay', new lang_string('fullnamedisplay', 'admin'),
new lang_string('configfullnamedisplay', 'admin'), 'language', PARAM_TEXT, 50);
@@ -0,0 +1,52 @@
{{!
This file is part of Moodle - http://moodle.org/
Moodle is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Moodle is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
}}
{{!
@template core_admin/setting_filetypes
Renders the admin_setting_filetypes setting element.
Context variables required for this template:
* id - element id
* name - form element name
* value - element value
* descriptions - data for the core_form/filetypes-descriptions template
Example context (json):
{
"id": "test0",
"name": "test",
"value": ".jpg,.gif",
"descriptions": {
"hasdescriptions": true,
"descriptions": [
{
"description": "Image (JPEG)",
"extensions": ".jpeg .jpe .jpg"
},
{
"description": "Image (GIF)",
"extensions": ".gif"
}
]
}
}
}}
<div class="form-text defaultsnext">
<input type="text" name="{{name}}" value="{{value}}" size="30" id="{{id}}" class="text-ltr">
<span data-filetypesbrowser="{{id}}"></span>
<div data-filetypesdescriptions="{{id}}">{{#descriptions}}{{>core_form/filetypes-descriptions}}{{/descriptions}}</div>
</div>
+26
View File
@@ -0,0 +1,26 @@
@core @core_admin
Feature: Manage tokens
In order to manage webservice usage
As an admin
I need to be able to create and delete tokens
Background:
Given the following "users" exist:
| username | password | firstname | lastname |
| testuser | testuser | Joe | Bloggs |
| testuser2 | testuser2 | TestFirstname | TestLastname |
And I log in as "admin"
And I am on site homepage
@javascript
Scenario: Add & delete a token
Given I navigate to "Plugins > Web services > Manage tokens" in site administration
And I follow "Add"
And I set the field "User" to "Joe Bloggs"
And I set the field "IP restriction" to "127.0.0.1"
When I press "Save changes"
Then I should see "Joe Bloggs"
And I should see "127.0.0.1"
And I follow "Delete"
And I press "Delete"
And I should not see "Joe Bloggs"
+1
View File
@@ -0,0 +1 @@
define(["jquery","core/str","core/modal_factory","core/notification"],function(a,b,c,d){return{loadInfo:function(e,f){var g=a('[data-model-log-id="'+e+'"]');b.get_string("loginfo","tool_analytics").then(function(b){var d=a("<ul>");return f.forEach(function(a){d.append("<li>"+a+"</li>")}),d.append("</ul>"),c.create({title:b,body:d.html(),large:!0},g)})["catch"](d.exception)}}});
+1
View File
@@ -0,0 +1 @@
define(["jquery","core/str","core/log","core/notification","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f){var g={clear:{title:{key:"clearpredictions",component:"tool_analytics"},body:{key:"clearmodelpredictions",component:"tool_analytics"}}},h=function(b){return a(b.closest("tr")[0]).find("span.target-name").text()};return{confirmAction:function(i,j){a('[data-action-id="'+i+'"]').on("click",function(i){i.preventDefault();var k=a(i.currentTarget);if("undefined"==typeof g[j])return void c.error('Action "'+j+'" is not allowed.');var l=[g[j].title,g[j].body];l[1].param=h(k);var m=b.get_strings(l),n=e.create({type:e.types.SAVE_CANCEL});a.when(m,n).then(function(a,b){return b.setTitle(a[0]),b.setBody(a[1]),b.setSaveButtonText(a[0]),b.getRoot().on(f.save,function(){window.location.href=k.attr("href")}),b.show(),b}).fail(d.exception)})}}});
+56
View File
@@ -0,0 +1,56 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Shows a dialogue with info about this logs.
*
* @module tool_analytics/log_info
* @class log_info
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define(['jquery', 'core/str', 'core/modal_factory', 'core/notification'], function($, str, ModalFactory, Notification) {
return /** @alias module:tool_analytics/log_info */ {
/**
* Prepares a modal info for a log's results.
*
* @method loadInfo
* @param {int} id
* @param {string[]} info
*/
loadInfo: function(id, info) {
var link = $('[data-model-log-id="' + id + '"]');
str.get_string('loginfo', 'tool_analytics').then(function(langString) {
var bodyInfo = $("<ul>");
info.forEach(function(item) {
bodyInfo.append('<li>' + item + '</li>');
});
bodyInfo.append("</ul>");
return ModalFactory.create({
title: langString,
body: bodyInfo.html(),
large: true,
}, link);
}).catch(Notification.exception);
}
};
});
+94
View File
@@ -0,0 +1,94 @@
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* AMD module for model actions confirmation.
*
* @module tool_analytics/model
* @copyright 2017 David Monllao
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define(['jquery', 'core/str', 'core/log', 'core/notification', 'core/modal_factory', 'core/modal_events'],
function($, Str, log, Notification, ModalFactory, ModalEvents) {
/**
* List of actions that require confirmation and confirmation message.
*/
var actionsList = {
clear: {
title: {
key: 'clearpredictions',
component: 'tool_analytics'
}, body: {
key: 'clearmodelpredictions',
component: 'tool_analytics'
}
}
};
/**
* Returns the model name.
*
* @param {Object} actionItem The action item DOM node.
* @return {String}
*/
var getModelName = function(actionItem) {
return $(actionItem.closest('tr')[0]).find('span.target-name').text();
};
/** @alias module:tool_analytics/model */
return {
/**
* Displays a confirm modal window before executing the action.
*
* @param {String} actionId
* @param {String} actionType
*/
confirmAction: function(actionId, actionType) {
$('[data-action-id="' + actionId + '"]').on('click', function(ev) {
ev.preventDefault();
var a = $(ev.currentTarget);
if (typeof actionsList[actionType] === "undefined") {
log.error('Action "' + actionType + '" is not allowed.');
return;
}
var reqStrings = [
actionsList[actionType].title,
actionsList[actionType].body
];
reqStrings[1].param = getModelName(a);
var stringsPromise = Str.get_strings(reqStrings);
var modalPromise = ModalFactory.create({type: ModalFactory.types.SAVE_CANCEL});
$.when(stringsPromise, modalPromise).then(function(strings, modal) {
modal.setTitle(strings[0]);
modal.setBody(strings[1]);
modal.setSaveButtonText(strings[0]);
modal.getRoot().on(ModalEvents.save, function() {
window.location.href = a.attr('href');
});
modal.show();
return modal;
}).fail(Notification.exception);
});
}
};
});
@@ -0,0 +1,119 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Model edit form.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output\form;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot.'/lib/formslib.php');
/**
* Model edit form.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class edit_model extends \moodleform {
/**
* Form definition
*/
public function definition() {
global $OUTPUT;
$mform = $this->_form;
if ($this->_customdata['model']->is_trained()) {
$message = get_string('edittrainedwarning', 'tool_analytics');
$mform->addElement('html', $OUTPUT->notification($message, \core\output\notification::NOTIFY_WARNING));
}
$mform->addElement('advcheckbox', 'enabled', get_string('enabled', 'tool_analytics'));
$indicators = array();
foreach ($this->_customdata['indicators'] as $classname => $indicator) {
$optionname = \tool_analytics\output\helper::class_to_option($classname);
$indicators[$optionname] = $indicator->get_name();
}
$options = array(
'multiple' => true
);
$mform->addElement('autocomplete', 'indicators', get_string('indicators', 'tool_analytics'), $indicators, $options);
$mform->setType('indicators', PARAM_ALPHANUMEXT);
$timesplittings = array('' => '');
foreach ($this->_customdata['timesplittings'] as $classname => $timesplitting) {
$optionname = \tool_analytics\output\helper::class_to_option($classname);
$timesplittings[$optionname] = $timesplitting->get_name();
}
$mform->addElement('select', 'timesplitting', get_string('timesplittingmethod', 'analytics'), $timesplittings);
$mform->addHelpButton('timesplitting', 'timesplittingmethod', 'analytics');
$mform->addElement('hidden', 'id', $this->_customdata['id']);
$mform->setType('id', PARAM_INT);
$mform->addElement('hidden', 'action', 'edit');
$mform->setType('action', PARAM_ALPHANUMEXT);
$this->add_action_buttons();
}
/**
* Form validation
*
* @param array $data data from the form.
* @param array $files files uploaded.
*
* @return array of errors.
*/
public function validation($data, $files) {
$errors = parent::validation($data, $files);
if (!empty($data['timesplitting'])) {
$realtimesplitting = \tool_analytics\output\helper::option_to_class($data['timesplitting']);
if (\core_analytics\manager::is_valid($realtimesplitting, '\core_analytics\local\time_splitting\base') === false) {
$errors['timesplitting'] = get_string('errorinvalidtimesplitting', 'analytics');
}
}
if (empty($data['indicators'])) {
$errors['indicators'] = get_string('errornoindicators', 'analytics');
} else {
foreach ($data['indicators'] as $indicator) {
$realindicatorname = \tool_analytics\output\helper::option_to_class($indicator);
if (\core_analytics\manager::is_valid($realindicatorname, '\core_analytics\local\indicator\base') === false) {
$errors['indicators'] = get_string('errorinvalidindicator', 'analytics', $realindicatorname);
}
}
}
if (!empty($data['enabled']) && empty($data['timesplitting'])) {
$errors['enabled'] = get_string('errorcantenablenotimesplitting', 'tool_analytics');
}
return $errors;
}
}
@@ -0,0 +1,61 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Typical crappy helper class with tiny functions.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output;
defined('MOODLE_INTERNAL') || die();
/**
* Helper class with general purpose tiny functions.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class helper {
/**
* Converts a class full name to a select option key
*
* @param string $class
* @return string
*/
public static function class_to_option($class) {
// Form field is PARAM_ALPHANUMEXT and we are sending fully qualified class names
// as option names, but replacing the backslash for a string that is really unlikely
// to ever be part of a class name.
return str_replace('\\', '2015102400ouuu', $class);
}
/**
* option_to_class
*
* @param string $option
* @return string
*/
public static function option_to_class($option) {
// Really unlikely but yeah, I'm a bad booyyy.
return str_replace('2015102400ouuu', '\\', $option);
}
}
@@ -0,0 +1,158 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Invalid analysables renderable.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output;
defined('MOODLE_INTERNAL') || die;
/**
* Invalid analysables renderable.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class invalid_analysables implements \renderable, \templatable {
/**
* @var \core_analytics\model
*/
protected $model = null;
/**
* @var int
*/
protected $page = 0;
/**
* @var int
*/
protected $perpage = 0;
/**
* Inits the invalid analysables renderable.
*
* @param \core_analytics\model $model
* @param int $page
* @param int $perpage
* @return \stdClass
*/
public function __construct(\core_analytics\model $model, $page, $perpage) {
$this->model = $model;
$this->page = $page;
$this->perpage = $perpage;
}
/**
* Export the data.
*
* @param \renderer_base $output
* @return \stdClass
*/
public function export_for_template(\renderer_base $output) {
global $PAGE;
$offset = $this->page * $this->perpage;
$analysables = $this->model->get_analyser(['notimesplitting' => true])->get_analysables();
$skipped = 0;
$enoughresults = false;
$morepages = false;
$results = array();
foreach ($analysables as $key => $analysable) {
$validtraining = $this->model->get_target()->is_valid_analysable($analysable, true);
if ($validtraining === true) {
if ($this->model->is_static()) {
// We still want to show this analysable if it is not valid to get predictions.
$validtraining = get_string('notrainingbasedassumptions', 'analytics');
} else {
// We skip analysables that are valid for training or valid for prediction.
continue;
}
}
$validprediction = $this->model->get_target()->is_valid_analysable($analysable, false);
if ($validprediction === true) {
// We skip analysables that are valid for training or valid for prediction.
continue;
}
if ($offset && $skipped < $offset) {
$skipped++;
continue;
}
// Add a new results if we don't have enough yet.
if (!$enoughresults) {
$results[$analysable->get_id()] = array($analysable, $validtraining, $validprediction);
if ($this->perpage && count($results) === $this->perpage) {
$enoughresults = true;
}
} else {
// Confirmed that we have results we can not fit into this page.
$morepages = true;
break;
}
unset($analysables[$key]);
}
// Prepare the context object.
$data = new \stdClass();
$data->modelname = $this->model->get_target()->get_name();
if ($this->page > 0) {
$prev = clone $PAGE->url;
$prev->param('page', $this->page - 1);
$button = new \single_button($prev, get_string('previouspage', 'tool_analytics'), 'get');
$data->prev = $button->export_for_template($output);
}
if ($morepages) {
$next = clone $PAGE->url;
$next->param('page', $this->page + 1);
$button = new \single_button($next, get_string('nextpage', 'tool_analytics'), 'get');
$data->next = $button->export_for_template($output);
}
$data->analysables = [];
foreach ($results as list($analysable, $validtraining, $validprediction)) {
$obj = new \stdClass();
$obj->url = \html_writer::link($analysable->get_context()->get_url(), $analysable->get_name(),
array('target' => '_blank'));
if ($validtraining !== true) {
$obj->validtraining = $validtraining;
}
if ($validprediction !== true) {
$obj->validprediction = $validprediction;
}
$data->analysables[] = $obj;
}
return $data;
}
}
@@ -0,0 +1,192 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Model logs table class.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output;
defined('MOODLE_INTERNAL') || die;
require_once($CFG->libdir . '/tablelib.php');
/**
* Model logs table class.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class model_logs extends \table_sql {
/**
* @var \core_analytics\model
*/
protected $model = null;
/**
* Sets up the table_log parameters.
*
* @param string $uniqueid unique id of form.
* @param \core_analytics\model $model
*/
public function __construct($uniqueid, $model) {
global $PAGE;
parent::__construct($uniqueid);
$this->model = $model;
$this->set_attribute('class', 'modellog generaltable generalbox');
$this->set_attribute('aria-live', 'polite');
$this->define_columns(array('time', 'version', 'indicators', 'timesplitting', 'accuracy', 'info', 'usermodified'));
$this->define_headers(array(
get_string('time'),
get_string('version'),
get_string('indicators', 'tool_analytics'),
get_string('timesplittingmethod', 'analytics'),
get_string('accuracy', 'tool_analytics'),
get_string('info', 'tool_analytics'),
get_string('fullnameuser'),
));
$this->pageable(true);
$this->collapsible(false);
$this->sortable(false);
$this->is_downloadable(false);
$this->define_baseurl($PAGE->url);
}
/**
* Generate the version column.
*
* @param \stdClass $log log data.
* @return string HTML for the version column
*/
public function col_version($log) {
$recenttimestr = get_string('strftimerecent', 'core_langconfig');
return userdate($log->version, $recenttimestr);
}
/**
* Generate the time column.
*
* @param \stdClass $log log data.
* @return string HTML for the time column
*/
public function col_time($log) {
$recenttimestr = get_string('strftimerecent', 'core_langconfig');
return userdate($log->timecreated, $recenttimestr);
}
/**
* Generate the indicators column.
*
* @param \stdClass $log log data.
* @return string HTML for the indicators column
*/
public function col_indicators($log) {
$indicatorclasses = json_decode($log->indicators);
$indicators = array();
foreach ($indicatorclasses as $indicatorclass) {
$indicator = \core_analytics\manager::get_indicator($indicatorclass);
if ($indicator) {
$indicators[] = $indicator->get_name();
} else {
debugging('Can\'t load ' . $indicatorclass . ' indicator', DEBUG_DEVELOPER);
}
}
return '<ul><li>' . implode('</li><li>', $indicators) . '</li></ul>';
}
/**
* Generate the context column.
*
* @param \stdClass $log log data.
* @return string HTML for the context column
*/
public function col_timesplitting($log) {
$timesplitting = \core_analytics\manager::get_time_splitting($log->timesplitting);
return $timesplitting->get_name();
}
/**
* Generate the accuracy column.
*
* @param \stdClass $log log data.
* @return string HTML for the accuracy column
*/
public function col_accuracy($log) {
return strval(round($log->score * 100, 2)) . '%';
}
/**
* Generate the info column.
*
* @param \stdClass $log log data.
* @return string HTML for the score column
*/
public function col_info($log) {
global $PAGE;
if (empty($log->info) && empty($log->dir)) {
return '';
}
$info = array();
if (!empty($log->info)) {
$info = json_decode($log->info);
}
if (!empty($log->dir)) {
$info[] = get_string('predictorresultsin', 'tool_analytics', $log->dir);
}
$PAGE->requires->js_call_amd('tool_analytics/log_info', 'loadInfo', array($log->id, $info));
return \html_writer::link('#', get_string('view'), array('data-model-log-id' => $log->id));
}
/**
* Generate the usermodified column.
*
* @param \stdClass $log log data.
* @return string HTML for the usermodified column
*/
public function col_usermodified($log) {
$user = \core_user::get_user($log->usermodified);
return fullname($user);
}
/**
* Query the logs table. Store results in the object for use by build_table.
*
* @param int $pagesize size of page for paginated displayed table.
* @param bool $useinitialsbar do you want to use the initials bar.
*/
public function query_db($pagesize, $useinitialsbar = true) {
$total = count($this->model->get_logs());
$this->pagesize($pagesize, $total);
$this->rawdata = $this->model->get_logs($this->get_page_start(), $this->get_page_size());
// Set initial bars.
if ($useinitialsbar) {
$this->initialbars($total > $pagesize);
}
}
}
@@ -0,0 +1,280 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Prediction models list page.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output;
defined('MOODLE_INTERNAL') || die();
/**
* Shows tool_analytics models list.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class models_list implements \renderable, \templatable {
/**
* models
*
* @var \core_analytics\model[]
*/
protected $models = array();
/**
* __construct
*
* @param \core_analytics\model[] $models
* @return void
*/
public function __construct($models) {
$this->models = $models;
}
/**
* Exports the data.
*
* @param \renderer_base $output
* @return \stdClass
*/
public function export_for_template(\renderer_base $output) {
global $PAGE;
$data = new \stdClass();
$onlycli = get_config('analytics', 'onlycli');
if ($onlycli === false) {
// Default applied if no config found.
$onlycli = 1;
}
$data->models = array();
foreach ($this->models as $model) {
$modeldata = $model->export();
// Check if there is a help icon for the target to show.
$identifier = $modeldata->target->get_identifier();
$component = $modeldata->target->get_component();
if (get_string_manager()->string_exists($identifier . '_help', $component)) {
$helpicon = new \help_icon($identifier, $component);
$modeldata->targethelp = $helpicon->export_for_template($output);
} else {
// We really want to encourage developers to add help to their targets.
debugging("The target '{$modeldata->target}' should include a '{$identifier}_help' string to
describe its purpose.", DEBUG_DEVELOPER);
}
// Check if there is a help icon for the indicators to show.
if (!empty($modeldata->indicators)) {
$indicators = array();
foreach ($modeldata->indicators as $ind) {
// Create the indicator with the details we want for the context.
$indicator = new \stdClass();
$indicator->name = $ind->out();
$identifier = $ind->get_identifier();
$component = $ind->get_component();
if (get_string_manager()->string_exists($identifier . '_help', $component)) {
$helpicon = new \help_icon($identifier, $component);
$indicator->help = $helpicon->export_for_template($output);
} else {
// We really want to encourage developers to add help to their indicators.
debugging("The indicator '{$ind}' should include a '{$identifier}_help' string to
describe its purpose.", DEBUG_DEVELOPER);
}
$indicators[] = $indicator;
}
$modeldata->indicators = $indicators;
}
// Check if there is a help icon for the time splitting method.
if (!empty($modeldata->timesplitting)) {
$identifier = $modeldata->timesplitting->get_identifier();
$component = $modeldata->timesplitting->get_component();
if (get_string_manager()->string_exists($identifier . '_help', $component)) {
$helpicon = new \help_icon($identifier, $component);
$modeldata->timesplittinghelp = $helpicon->export_for_template($output);
} else {
// We really want to encourage developers to add help to their time splitting methods.
debugging("The time splitting method '{$modeldata->timesplitting}' should include a '{$identifier}_help'
string to describe its purpose.", DEBUG_DEVELOPER);
}
}
// Has this model generated predictions?.
$predictioncontexts = $model->get_predictions_contexts();
// Model predictions list.
if (!$model->is_enabled()) {
$modeldata->noinsights = get_string('disabledmodel', 'analytics');
} else if ($model->uses_insights()) {
if ($predictioncontexts) {
foreach ($predictioncontexts as $contextid => $unused) {
// We prepare this to be used as single_select template options.
$context = \context::instance_by_id($contextid);
// Special name for system level predictions as showing "System is not visually nice".
if ($contextid == SYSCONTEXTID) {
$contextname = get_string('allpredictions', 'tool_analytics');
} else {
$contextname = shorten_text($context->get_context_name(true, true), 90);
}
$predictioncontexts[$contextid] = $contextname;
}
\core_collator::asort($predictioncontexts);
if (!empty($predictioncontexts)) {
$url = new \moodle_url('/report/insights/insights.php', array('modelid' => $model->get_id()));
$singleselect = new \single_select($url, 'contextid', $predictioncontexts);
$modeldata->insights = $singleselect->export_for_template($output);
}
}
if (empty($modeldata->insights)) {
if ($model->any_prediction_obtained()) {
$modeldata->noinsights = get_string('noinsights', 'analytics');
} else {
$modeldata->noinsights = get_string('nopredictionsyet', 'analytics');
}
}
} else {
$modeldata->noinsights = get_string('noinsightsmodel', 'analytics');
}
// Actions.
$actionsmenu = new \action_menu();
$actionsmenu->set_menu_trigger(get_string('actions'));
$actionsmenu->set_owner_selector('model-actions-' . $model->get_id());
$actionsmenu->set_alignment(\action_menu::TL, \action_menu::BL);
$urlparams = ['id' => $model->get_id(), 'sesskey' => sesskey()];
// Get predictions.
if (!$onlycli && $modeldata->enabled && !empty($modeldata->timesplitting)) {
$urlparams['action'] = 'getpredictions';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('i/notifications',
get_string('getpredictions', 'tool_analytics')), get_string('getpredictions', 'tool_analytics'));
$actionsmenu->add($icon);
}
// Evaluate machine-learning-based models.
if (!$onlycli && $model->get_indicators() && !$model->is_static()) {
$urlparams['action'] = 'evaluate';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('i/calc', get_string('evaluate', 'tool_analytics')),
get_string('evaluate', 'tool_analytics'));
$actionsmenu->add($icon);
}
// Machine-learning-based models evaluation log.
if (!$model->is_static()) {
$urlparams['action'] = 'log';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('i/report', get_string('viewlog', 'tool_analytics')),
get_string('viewlog', 'tool_analytics'));
$actionsmenu->add($icon);
}
// Edit model.
if (!$model->is_static()) {
$urlparams['action'] = 'edit';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('t/edit', get_string('edit')), get_string('edit'));
$actionsmenu->add($icon);
}
// Enable / disable.
if ($model->is_enabled()) {
$action = 'disable';
$text = get_string('disable');
$icontype = 't/block';
} else {
$action = 'enable';
$text = get_string('enable');
$icontype = 'i/checked';
}
$urlparams['action'] = $action;
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon($icontype, $text), $text);
$actionsmenu->add($icon);
// Export training data.
if (!$model->is_static() && $model->is_trained()) {
$urlparams['action'] = 'export';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('i/export',
get_string('exporttrainingdata', 'tool_analytics')), get_string('export', 'tool_analytics'));
$actionsmenu->add($icon);
}
// Invalid analysables.
$analyser = $model->get_analyser(['notimesplitting' => true]);
if (!$analyser instanceof \core_analytics\local\analyser\sitewide) {
$urlparams['action'] = 'invalidanalysables';
$url = new \moodle_url('model.php', $urlparams);
$pix = new \pix_icon('i/report', get_string('invalidanalysables', 'tool_analytics'));
$icon = new \action_menu_link_secondary($url, $pix, get_string('invalidanalysables', 'tool_analytics'));
$actionsmenu->add($icon);
}
// Clear model.
if (!empty($predictioncontexts)) {
$actionid = 'clear-' . $model->get_id();
$PAGE->requires->js_call_amd('tool_analytics/model', 'confirmAction', [$actionid, 'clear']);
$urlparams['action'] = 'clear';
$url = new \moodle_url('model.php', $urlparams);
$icon = new \action_menu_link_secondary($url, new \pix_icon('e/cleanup_messy_code',
get_string('clearpredictions', 'tool_analytics')), get_string('clearpredictions', 'tool_analytics'),
['data-action-id' => $actionid]);
$actionsmenu->add($icon);
}
$modeldata->actions = $actionsmenu->export_for_template($output);
$data->models[] = $modeldata;
}
if (!$onlycli) {
$data->warnings = array(
(object)array('message' => get_string('bettercli', 'tool_analytics'), 'closebutton' => true)
);
} else {
$url = new \moodle_url('/admin/settings.php', array('section' => 'analyticssettings'),
'id_s_analytics_onlycli');
$langstrid = 'clievaluationandpredictionsnoadmin';
if (is_siteadmin()) {
$langstrid = 'clievaluationandpredictions';
}
$data->infos = array(
(object)array('message' => get_string($langstrid, 'tool_analytics', $url->out()),
'closebutton' => true)
);
}
return $data;
}
}
@@ -0,0 +1,221 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Renderer.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\output;
defined('MOODLE_INTERNAL') || die();
use plugin_renderer_base;
use templatable;
use renderable;
/**
* Renderer class.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class renderer extends plugin_renderer_base {
/**
* Defer to template.
*
* @param \tool_analytics\output\models_list $modelslist
* @return string HTML
*/
protected function render_models_list(\tool_analytics\output\models_list $modelslist) {
$data = $modelslist->export_for_template($this);
return parent::render_from_template('tool_analytics/models_list', $data);
}
/**
* Renders a table.
*
* @param \table_sql $table
* @return string HTML
*/
public function render_table(\table_sql $table) {
ob_start();
$table->out(10, true);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
/**
* Web interface evaluate results.
*
* @param \stdClass[] $results
* @param string[] $logs
* @return string HTML
*/
public function render_evaluate_results($results, $logs = array()) {
global $OUTPUT;
$output = '';
foreach ($results as $timesplittingid => $result) {
if (!CLI_SCRIPT) {
$output .= $OUTPUT->box_start('generalbox m-b-3');
}
// Check that the array key is a string, not all results depend on time splitting methods (e.g. general errors).
if (!is_numeric($timesplittingid)) {
$timesplitting = \core_analytics\manager::get_time_splitting($timesplittingid);
$langstrdata = (object)array('name' => $timesplitting->get_name(), 'id' => $timesplittingid);
if (CLI_SCRIPT) {
$output .= $OUTPUT->heading(get_string('getpredictionsresultscli', 'tool_analytics', $langstrdata), 3);
} else {
$output .= $OUTPUT->heading(get_string('getpredictionsresults', 'tool_analytics', $langstrdata), 3);
}
}
if ($result->status == 0) {
$output .= $OUTPUT->notification(get_string('goodmodel', 'tool_analytics'),
\core\output\notification::NOTIFY_SUCCESS);
} else if ($result->status === \core_analytics\model::NO_DATASET) {
$output .= $OUTPUT->notification(get_string('nodatatoevaluate', 'tool_analytics'),
\core\output\notification::NOTIFY_WARNING);
}
if (isset($result->score)) {
// Score.
$output .= $OUTPUT->heading(get_string('accuracy', 'tool_analytics') . ': ' .
round(floatval($result->score), 4) * 100 . '%', 4);
}
if (!empty($result->info)) {
foreach ($result->info as $message) {
$output .= $OUTPUT->notification($message, \core\output\notification::NOTIFY_WARNING);
}
}
if (!CLI_SCRIPT) {
$output .= $OUTPUT->box_end();
}
}
// Info logged during evaluation.
if (!empty($logs) && debugging()) {
$output .= $OUTPUT->heading(get_string('extrainfo', 'tool_analytics'), 3);
foreach ($logs as $log) {
$output .= $OUTPUT->notification($log, \core\output\notification::NOTIFY_WARNING);
}
}
if (!CLI_SCRIPT) {
$output .= $OUTPUT->single_button(new \moodle_url('/admin/tool/analytics/index.php'), get_string('continue'), 'get');
}
return $output;
}
/**
* Web interface training & prediction results.
*
* @param \stdClass|false $trainresults
* @param string[] $trainlogs
* @param \stdClass|false $predictresults
* @param string[] $predictlogs
* @return string HTML
*/
public function render_get_predictions_results($trainresults = false, $trainlogs = array(), $predictresults = false, $predictlogs = array()) {
global $OUTPUT;
$output = '';
if ($trainresults || (!empty($trainlogs) && debugging())) {
$output .= $OUTPUT->heading(get_string('trainingresults', 'tool_analytics'), 3);
}
if ($trainresults) {
if ($trainresults->status == 0) {
$output .= $OUTPUT->notification(get_string('trainingprocessfinished', 'tool_analytics'),
\core\output\notification::NOTIFY_SUCCESS);
} else if ($trainresults->status === \core_analytics\model::NO_DATASET ||
$trainresults->status === \core_analytics\model::NOT_ENOUGH_DATA) {
$output .= $OUTPUT->notification(get_string('nodatatotrain', 'tool_analytics'),
\core\output\notification::NOTIFY_WARNING);
} else {
$output .= $OUTPUT->notification(get_string('generalerror', 'tool_analytics', $trainresults->status),
\core\output\notification::NOTIFY_ERROR);
}
}
if (!empty($trainlogs) && debugging()) {
$output .= $OUTPUT->heading(get_string('extrainfo', 'tool_analytics'), 4);
foreach ($trainlogs as $log) {
$output .= $OUTPUT->notification($log, \core\output\notification::NOTIFY_WARNING);
}
}
if ($predictresults || (!empty($predictlogs) && debugging())) {
$output .= $OUTPUT->heading(get_string('predictionresults', 'tool_analytics'), 3, 'main m-t-3');
}
if ($predictresults) {
if ($predictresults->status == 0) {
$output .= $OUTPUT->notification(get_string('predictionprocessfinished', 'tool_analytics'),
\core\output\notification::NOTIFY_SUCCESS);
} else if ($predictresults->status === \core_analytics\model::NO_DATASET ||
$predictresults->status === \core_analytics\model::NOT_ENOUGH_DATA) {
$output .= $OUTPUT->notification(get_string('nodatatopredict', 'tool_analytics'),
\core\output\notification::NOTIFY_WARNING);
} else {
$output .= $OUTPUT->notification(get_string('generalerror', 'tool_analytics', $predictresults->status),
\core\output\notification::NOTIFY_ERROR);
}
}
if (!empty($predictlogs) && debugging()) {
$output .= $OUTPUT->heading(get_string('extrainfo', 'tool_analytics'), 4);
foreach ($predictlogs as $log) {
$output .= $OUTPUT->notification($log, \core\output\notification::NOTIFY_WARNING);
}
}
if (!CLI_SCRIPT) {
$output .= $OUTPUT->single_button(new \moodle_url('/admin/tool/analytics/index.php'), get_string('continue'), 'get');
}
return $output;
}
/**
* Defer to template.
*
* @param \tool_analytics\output\invalid_analysables $invalidanalysables
* @return string HTML
*/
protected function render_invalid_analysables(\tool_analytics\output\invalid_analysables $invalidanalysables) {
$data = $invalidanalysables->export_for_template($this);
return parent::render_from_template('tool_analytics/invalid_analysables', $data);
}
}
@@ -0,0 +1,71 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Predict system models with new data available.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\task;
defined('MOODLE_INTERNAL') || die();
/**
* Predict system models with new data available.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class predict_models extends \core\task\scheduled_task {
/**
* get_name
*
* @return string
*/
public function get_name() {
return get_string('predictmodels', 'tool_analytics');
}
/**
* Executes the prediction task.
*
* @return void
*/
public function execute() {
global $OUTPUT, $PAGE;
$models = \core_analytics\manager::get_all_models(true, true);
if (!$models) {
mtrace(get_string('errornoenabledandtrainedmodels', 'tool_analytics'));
return;
}
foreach ($models as $model) {
$result = $model->predict();
if ($result) {
echo $OUTPUT->heading(get_string('modelresults', 'tool_analytics', $model->get_target()->get_name()));
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render_get_predictions_results(false, array(), $result, $model->get_analyser()->get_logs());
}
}
}
}
@@ -0,0 +1,82 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Train system models with new data available.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_analytics\task;
defined('MOODLE_INTERNAL') || die();
/**
* Train system models with new data available.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class train_models extends \core\task\scheduled_task {
/**
* get_name
*
* @return string
*/
public function get_name() {
return get_string('trainmodels', 'tool_analytics');
}
/**
* Executes the prediction task.
*
* @return void
*/
public function execute() {
global $OUTPUT, $PAGE;
$models = \core_analytics\manager::get_all_models(true);
if (!$models) {
mtrace(get_string('errornoenabledmodels', 'tool_analytics'));
return;
}
foreach ($models as $model) {
if ($model->is_static()) {
// Skip models based on assumptions.
continue;
}
if (!$model->get_time_splitting()) {
// Can not train if there is no time splitting method selected.
continue;
}
$result = $model->train();
if ($result) {
echo $OUTPUT->heading(get_string('modelresults', 'tool_analytics', $model->get_target()->get_name()));
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render_get_predictions_results($result, $model->get_analyser()->get_logs());
}
}
}
}
+72
View File
@@ -0,0 +1,72 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Enables the provided model.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require_once(__DIR__ . '/../../../../config.php');
require_once($CFG->libdir.'/clilib.php');
$help = "Enables the provided model.
Options:
--modelid Model id
--timesplitting Time splitting method full class name
-h, --help Print out this help
Example:
\$ php admin/tool/analytics/cli/enable_model.php --modelid=1 --timesplitting=\"\\core\\analytics\\time_splitting\\quarters\"
";
// Now get cli options.
list($options, $unrecognized) = cli_get_params(
array(
'help' => false,
'modelid' => false,
'timesplitting' => false
),
array(
'h' => 'help',
)
);
if ($options['help']) {
echo $help;
exit(0);
}
if ($options['modelid'] === false || $options['timesplitting'] === false) {
echo $help;
exit(0);
}
// We need admin permissions.
\core\session\manager::set_user(get_admin());
$model = new \core_analytics\model($options['modelid']);
// Evaluate its suitability to predict accurately.
$model->enable($options['timesplitting']);
cli_heading(get_string('success'));
exit(0);
+131
View File
@@ -0,0 +1,131 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Evaluates the provided model.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require_once(__DIR__ . '/../../../../config.php');
require_once($CFG->libdir.'/clilib.php');
$help = "Evaluates the provided model.
Options:
--modelid Model id
--non-interactive Not interactive questions
--timesplitting Restrict the evaluation to 1 single time splitting method (Optional)
--filter Analyser dependant. e.g. A courseid would evaluate the model using a single course (Optional)
--reuse-prev-analysed Reuse recently analysed courses instead of analysing the whole site. Set it to false while" .
" coding indicators. Defaults to true (Optional)" . "
-h, --help Print out this help
Example:
\$ php admin/tool/analytics/cli/evaluate_model.php --modelid=1 --timesplitting='\\core\\analytics\\time_splitting\\quarters' --filter=123,321
";
// Now get cli options.
list($options, $unrecognized) = cli_get_params(
array(
'help' => false,
'modelid' => false,
'timesplitting' => false,
'reuse-prev-analysed' => true,
'non-interactive' => false,
'filter' => false
),
array(
'h' => 'help',
)
);
if ($options['help']) {
echo $help;
exit(0);
}
if ($options['modelid'] === false) {
echo $help;
exit(0);
}
// Reformat them as an array.
if ($options['filter'] !== false) {
$options['filter'] = explode(',', $options['filter']);
}
// We need admin permissions.
\core\session\manager::set_user(get_admin());
$model = new \core_analytics\model($options['modelid']);
mtrace(get_string('analysingsitedata', 'tool_analytics'));
if ($options['reuse-prev-analysed']) {
mtrace(get_string('evaluationinbatches', 'tool_analytics'));
}
$analyseroptions = array(
'filter' => $options['filter'],
'timesplitting' => $options['timesplitting'],
'reuseprevanalysed' => $options['reuse-prev-analysed'],
);
// Evaluate its suitability to predict accurately.
$results = $model->evaluate($analyseroptions);
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render_evaluate_results($results, $model->get_analyser()->get_logs());
// Check that we have, at leasa,t 1 valid dataset (not necessarily good) to use.
foreach ($results as $result) {
if ($result->status !== \core_analytics\model::NO_DATASET &&
$result->status !== \core_analytics\model::GENERAL_ERROR) {
$validdatasets = true;
}
}
if (!empty($validdatasets) && !$model->is_enabled() && $options['non-interactive'] === false) {
// Select a dataset, train and enable the model.
$input = cli_input(get_string('clienablemodel', 'tool_analytics'));
while (!\core_analytics\manager::is_valid($input, '\core_analytics\local\time_splitting\base') && $input !== 'none') {
mtrace(get_string('errorunexistingtimesplitting', 'analytics'));
$input = cli_input(get_string('clienablemodel', 'tool_analytics'));
}
if ($input === 'none') {
exit(0);
}
// Refresh the instance to prevent unexpected issues.
$model = new \core_analytics\model($modelobj);
// Set the time splitting method file and enable it.
$model->enable($input);
mtrace(get_string('trainandpredictmodel', 'tool_analytics'));
// Train the model with the selected time splitting method and start predicting.
$model->train();
$model->predict();
}
exit(0);
@@ -0,0 +1,228 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Guesses course start and end dates based on activity logs.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require_once(__DIR__ . '/../../../../config.php');
require_once($CFG->libdir.'/clilib.php');
require_once($CFG->dirroot . '/course/lib.php');
require_once($CFG->dirroot . '/course/format/weeks/lib.php');
$help = "Guesses course start and end dates based on activity logs.
IMPORTANT: Don't use this script if you keep previous academic years users enrolled in courses. Guesses would not be accurate.
Options:
--guessstart Guess the course start date (default to true)
--guessend Guess the course end date (default to true)
--guessall Guess all start and end dates, even if they are already set (default to false)
--update Update the db or just notify the guess (default to false)
--filter Analyser dependant. e.g. A courseid would evaluate the model using a single course (Optional)
-h, --help Print out this help
Example:
\$ php admin/tool/analytics/cli/guess_course_start_and_end_dates.php --update=1 --filter=123,321
";
// Now get cli options.
list($options, $unrecognized) = cli_get_params(
array(
'help' => false,
'guessstart' => true,
'guessend' => true,
'guessall' => false,
'update' => false,
'filter' => false
),
array(
'h' => 'help',
)
);
if ($options['help']) {
echo $help;
exit(0);
}
if ($options['guessstart'] === false && $options['guessend'] === false && $options['guessall'] === false) {
echo $help;
exit(0);
}
// Reformat them as an array.
if ($options['filter'] !== false) {
$options['filter'] = explode(',', clean_param($options['filter'], PARAM_SEQUENCE));
}
// We need admin permissions.
\core\session\manager::set_user(get_admin());
$conditions = array('id != 1');
if (!$options['guessall']) {
if ($options['guessstart']) {
$conditions[] = '(startdate is null or startdate = 0)';
}
if ($options['guessend']) {
$conditions[] = '(enddate is null or enddate = 0)';
}
}
$coursessql = '';
$params = null;
if ($options['filter']) {
list($coursessql, $params) = $DB->get_in_or_equal($options['filter'], SQL_PARAMS_NAMED);
$conditions[] = 'id ' . $coursessql;
}
$courses = $DB->get_recordset_select('course', implode(' AND ', $conditions), $params, 'sortorder ASC');
foreach ($courses as $course) {
tool_analytics_calculate_course_dates($course, $options);
}
$courses->close();
/**
* tool_analytics_calculate_course_dates
*
* @param stdClass $course
* @param array $options CLI options
* @return void
*/
function tool_analytics_calculate_course_dates($course, $options) {
global $DB, $OUTPUT;
$courseman = new \core_analytics\course($course);
$notification = $course->shortname . ' (id = ' . $course->id . '): ';
$originalenddate = null;
$guessedstartdate = null;
$guessedenddate = null;
$samestartdate = null;
$lowerenddate = null;
if ($options['guessstart'] || $options['guessall']) {
$originalstartdate = $course->startdate;
$guessedstartdate = $courseman->guess_start();
$samestartdate = ($guessedstartdate == $originalstartdate);
$lowerenddate = ($course->enddate && ($course->enddate < $guessedstartdate));
if ($samestartdate) {
if (!$guessedstartdate) {
$notification .= PHP_EOL . ' ' . get_string('cantguessstartdate', 'tool_analytics');
} else {
// No need to update.
$notification .= PHP_EOL . ' ' . get_string('samestartdate', 'tool_analytics') . ': ' . userdate($guessedstartdate);
}
} else if (!$guessedstartdate) {
$notification .= PHP_EOL . ' ' . get_string('cantguessstartdate', 'tool_analytics');
} else if ($lowerenddate) {
$notification .= PHP_EOL . ' ' . get_string('cantguessstartdate', 'tool_analytics') . ': ' .
get_string('enddatebeforestartdate', 'error') . ' - ' . userdate($guessedstartdate);
} else {
// Update it to something we guess.
// We set it to $course even if we don't update because may be needed to guess the end one.
$course->startdate = $guessedstartdate;
$notification .= PHP_EOL . ' ' . get_string('startdate') . ': ' . userdate($guessedstartdate);
// Two different course updates because week's end date may be recalculated after setting the start date.
if ($options['update']) {
update_course($course);
// Refresh course data as end date may have been updated.
$course = $DB->get_record('course', array('id' => $course->id));
$courseman = new \core_analytics\course($course);
}
}
}
if ($options['guessend'] || $options['guessall']) {
if (!empty($lowerenddate) && !empty($guessedstartdate)) {
$course->startdate = $guessedstartdate;
}
$originalenddate = $course->enddate;
$format = course_get_format($course);
$formatoptions = $format->get_format_options();
// Change this for a course formats API level call in MDL-60702.
if (method_exists($format, 'update_end_date') && $formatoptions['automaticenddate']) {
// Special treatment for weeks-based formats with automatic end date.
if ($options['update']) {
$format::update_end_date($course->id);
$course->enddate = $DB->get_field('course', 'enddate', array('id' => $course->id));
$notification .= PHP_EOL . ' ' . get_string('weeksenddateautomaticallyset', 'tool_analytics') . ': ' .
userdate($course->enddate);
} else {
// We can't provide more info without actually updating it in db.
$notification .= PHP_EOL . ' ' . get_string('weeksenddatedefault', 'tool_analytics');
}
} else {
$guessedenddate = $courseman->guess_end();
if ($guessedenddate == $originalenddate) {
if (!$guessedenddate) {
$notification .= PHP_EOL . ' ' . get_string('cantguessenddate', 'tool_analytics');
} else {
// No need to update.
$notification .= PHP_EOL . ' ' . get_string('sameenddate', 'tool_analytics') . ': ' . userdate($guessedenddate);
}
} else if (!$guessedenddate) {
$notification .= PHP_EOL . ' ' . get_string('cantguessenddate', 'tool_analytics');
} else {
// Update it to something we guess.
$course->enddate = $guessedenddate;
$updateit = false;
if ($course->enddate < $course->startdate) {
$notification .= PHP_EOL . ' ' . get_string('errorendbeforestart', 'analytics', userdate($course->enddate));
} else if ($course->startdate + (YEARSECS + (WEEKSECS * 4)) > $course->enddate) {
$notification .= PHP_EOL . ' ' . get_string('coursetoolong', 'analytics');
} else {
$notification .= PHP_EOL . ' ' . get_string('enddate') . ': ' . userdate($course->enddate);
$updateit = true;
}
if ($options['update'] && $updateit) {
update_course($course);
}
}
}
}
mtrace($notification);
}
mtrace(get_string('success'));
exit(0);
+47
View File
@@ -0,0 +1,47 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This file defines tasks performed by the tool.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
// List of tasks.
$tasks = array(
array(
'classname' => 'tool_analytics\task\train_models',
'blocking' => 0,
'minute' => '0',
'hour' => 'R',
'day' => '*',
'dayofweek' => '*',
'month' => '*'
),
array(
'classname' => 'tool_analytics\task\predict_models',
'blocking' => 0,
'minute' => '0',
'hour' => 'R',
'day' => '*',
'dayofweek' => '*',
'month' => '*'
),
);
+37
View File
@@ -0,0 +1,37 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Prediction models tool frontend.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->libdir . '/adminlib.php');
admin_externalpage_setup('analyticmodels', '', null, '', array('pagelayout' => 'report'));
$models = \core_analytics\manager::get_all_models();
echo $OUTPUT->header();
$templatable = new \tool_analytics\output\models_list($models);
echo $PAGE->get_renderer('tool_analytics')->render($templatable);
echo $OUTPUT->footer();
@@ -0,0 +1,92 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Strings for tool_analytics.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['accuracy'] = 'Accuracy';
$string['allpredictions'] = 'All predictions';
$string['analysingsitedata'] = 'Analysing the site';
$string['analyticmodels'] = 'Analytics models';
$string['bettercli'] = 'Evaluating models and generating predictions may involve heavy processing. It is recommended to run these actions from the command line.';
$string['cantguessstartdate'] = 'Can\'t guess the start date';
$string['cantguessenddate'] = 'Can\'t guess the end date';
$string['clearpredictions'] = 'Clear predictions';
$string['clearmodelpredictions'] = 'Are you sure you want to clear all "{$a}" predictions?';
$string['clienablemodel'] = 'You can enable the model by selecting a time-splitting method by its ID. Note that you can also enable it later using the web interface (\'none\' to exit).';
$string['clievaluationandpredictions'] = 'A scheduled task iterates through enabled models and gets predictions. Models evaluation via the web interface is disabled. You can allow these processes to be executed manually via the web interface by disabling the <a href="{$a}">\'onlycli\'</a> analytics setting.';
$string['clievaluationandpredictionsnoadmin'] = 'A scheduled task iterates through enabled models and gets predictions. Models evaluation via the web interface is disabled. It may be enabled by a site administrator.';
$string['editmodel'] = 'Edit "{$a}" model';
$string['edittrainedwarning'] = 'This model has already been trained. Note that changing its indicators or its time-splitting method will delete its previous predictions and start generating new predictions.';
$string['enabled'] = 'Enabled';
$string['errorcantenablenotimesplitting'] = 'You need to select a time-splitting method before enabling the model';
$string['errornoenabledandtrainedmodels'] = 'There are no enabled and trained models to predict.';
$string['errornoenabledmodels'] = 'There are no enabled models to train.';
$string['errornoexport'] = 'Only trained models can be exported';
$string['errornostaticedit'] = 'Models based on assumptions cannot be edited.';
$string['errornostaticevaluated'] = 'Models based on assumptions cannot be evaluated. They are always 100% correct according to how they were defined.';
$string['errornostaticlog'] = 'Models based on assumptions cannot be evaluated because there is no performance log.';
$string['erroronlycli'] = 'Execution only allowed via command line';
$string['errortrainingdataexport'] = 'The model training data could not be exported';
$string['evaluate'] = 'Evaluate';
$string['evaluatemodel'] = 'Evaluate model';
$string['evaluationinbatches'] = 'The site contents are calculated and stored in batches. The evaluation process may be stopped at any time. The next time it is run, it will continue from the point when it was stopped.';
$string['export'] = 'Export';
$string['exporttrainingdata'] = 'Export training data';
$string['getpredictionsresultscli'] = 'Results using {$a->name} (id: {$a->id}) course duration splitting';
$string['getpredictionsresults'] = 'Results using {$a->name} course duration splitting';
$string['extrainfo'] = 'Info';
$string['generalerror'] = 'Evaluation error. Status code {$a}';
$string['getpredictions'] = 'Get predictions';
$string['goodmodel'] = 'This is a good model for using to obtain predictions. Enable it to start obtaining predictions.';
$string['indicators'] = 'Indicators';
$string['info'] = 'Info';
$string['insights'] = 'Insights';
$string['invalidanalysables'] = 'Invalid site elements';
$string['invalidanalysablesinfo'] = 'This pages lists this site analysable elements that can not be used by this prediction model. The listed elements can not be used neither to train the prediction model nor the prediction model can get predictions for them.';
$string['invalidanalysablestable'] = 'Invalid site analysable elements table';
$string['invalidprediction'] = 'Invalid to get predictions';
$string['invalidtraining'] = 'Invalid to train the model';
$string['loginfo'] = 'Log extra info';
$string['modelinvalidanalysables'] = 'Invalid analysable elements for "{$a}" model';
$string['modelresults'] = '{$a} results';
$string['modeltimesplitting'] = 'Time splitting';
$string['nextpage'] = 'Next page';
$string['nodatatoevaluate'] = 'There is no data to evaluate the model';
$string['nodatatopredict'] = 'No new elements to get predictions for';
$string['nodatatotrain'] = 'There is no new data that can be used for training';
$string['notdefined'] = 'Not yet defined';
$string['pluginname'] = 'Analytic models';
$string['predictionresults'] = 'Prediction results';
$string['predictmodels'] = 'Predict models';
$string['predictorresultsin'] = 'Predictor logged information in {$a} directory';
$string['predictionprocessfinished'] = 'Prediction process finished';
$string['previouspage'] = 'Previous page';
$string['samestartdate'] = 'Current start date is good';
$string['sameenddate'] = 'Current end date is good';
$string['target'] = 'Target';
$string['trainandpredictmodel'] = 'Training model and calculating predictions';
$string['trainingprocessfinished'] = 'Training process finished';
$string['trainingresults'] = 'Training results';
$string['trainmodels'] = 'Train models';
$string['viewlog'] = 'Log';
$string['weeksenddateautomaticallyset'] = 'End date automatically set based on start date and the number of sections';
$string['weeksenddatedefault'] = 'End date automatically calculated from the course start date.';
+241
View File
@@ -0,0 +1,241 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Model-related actions.
*
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../../config.php');
$id = required_param('id', PARAM_INT);
$action = required_param('action', PARAM_ALPHANUMEXT);
$context = context_system::instance();
require_login();
$model = new \core_analytics\model($id);
\core_analytics\manager::check_can_manage_models();
$params = array('id' => $id, 'action' => $action);
$url = new \moodle_url('/admin/tool/analytics/model.php', $params);
switch ($action) {
case 'edit':
$title = get_string('editmodel', 'tool_analytics', $model->get_target()->get_name());
break;
case 'evaluate':
$title = get_string('evaluatemodel', 'tool_analytics');
break;
case 'getpredictions':
$title = get_string('getpredictions', 'tool_analytics');
break;
case 'log':
$title = get_string('viewlog', 'tool_analytics');
break;
case 'enable':
$title = get_string('enable');
break;
case 'disable':
$title = get_string('disable');
break;
case 'export':
$title = get_string('export', 'tool_analytics');
break;
case 'clear':
$title = get_string('clearpredictions', 'tool_analytics');
break;
case 'invalidanalysables':
$title = get_string('invalidanalysables', 'tool_analytics');
break;
default:
throw new moodle_exception('errorunknownaction', 'analytics');
}
$PAGE->set_context($context);
$PAGE->set_url($url);
$PAGE->set_pagelayout('report');
$PAGE->set_title($title);
$PAGE->set_heading($title);
$onlycli = get_config('analytics', 'onlycli');
if ($onlycli === false) {
// Default applied if no config found.
$onlycli = 1;
}
switch ($action) {
case 'enable':
confirm_sesskey();
$model->enable();
redirect(new \moodle_url('/admin/tool/analytics/index.php'));
break;
case 'disable':
confirm_sesskey();
$model->update(0, false, false);
redirect(new \moodle_url('/admin/tool/analytics/index.php'));
break;
case 'edit':
confirm_sesskey();
if ($model->is_static()) {
echo $OUTPUT->header();
throw new moodle_exception('errornostaticedit', 'tool_analytics');
}
$customdata = array(
'id' => $model->get_id(),
'model' => $model,
'indicators' => $model->get_potential_indicators(),
'timesplittings' => \core_analytics\manager::get_enabled_time_splitting_methods()
);
$mform = new \tool_analytics\output\form\edit_model(null, $customdata);
if ($mform->is_cancelled()) {
redirect(new \moodle_url('/admin/tool/analytics/index.php'));
} else if ($data = $mform->get_data()) {
// Converting option names to class names.
$indicators = array();
foreach ($data->indicators as $indicator) {
$indicatorclass = \tool_analytics\output\helper::option_to_class($indicator);
$indicators[] = \core_analytics\manager::get_indicator($indicatorclass);
}
$timesplitting = \tool_analytics\output\helper::option_to_class($data->timesplitting);
$model->update($data->enabled, $indicators, $timesplitting);
redirect(new \moodle_url('/admin/tool/analytics/index.php'));
}
echo $OUTPUT->header();
$modelobj = $model->get_model_obj();
$callable = array('\tool_analytics\output\helper', 'class_to_option');
$modelobj->indicators = array_map($callable, json_decode($modelobj->indicators));
$modelobj->timesplitting = \tool_analytics\output\helper::class_to_option($modelobj->timesplitting);
$mform->set_data($modelobj);
$mform->display();
break;
case 'evaluate':
confirm_sesskey();
echo $OUTPUT->header();
if ($model->is_static()) {
throw new moodle_exception('errornostaticevaluate', 'tool_analytics');
}
if ($onlycli) {
throw new moodle_exception('erroronlycli', 'tool_analytics');
}
// Web interface is used by people who can not use CLI nor code stuff, always use
// cached stuff as they will change the model through the web interface as well
// which invalidates the previously analysed stuff.
$results = $model->evaluate(array('reuseprevanalysed' => true));
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render_evaluate_results($results, $model->get_analyser()->get_logs());
break;
case 'getpredictions':
confirm_sesskey();
echo $OUTPUT->header();
if ($onlycli) {
throw new moodle_exception('erroronlycli', 'tool_analytics');
}
$trainresults = $model->train();
$trainlogs = $model->get_analyser()->get_logs();
// Looks dumb to get a new instance but better be conservative.
$model = new \core_analytics\model($model->get_model_obj());
if ($model->is_trained()) {
$predictresults = $model->predict();
$predictlogs = $model->get_analyser()->get_logs();
} else {
$predictresults = false;
$predictlogs = array();
}
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render_get_predictions_results($trainresults, $trainlogs, $predictresults, $predictlogs);
break;
case 'log':
echo $OUTPUT->header();
if ($model->is_static()) {
throw new moodle_exception('errornostaticlog', 'tool_analytics');
}
$renderer = $PAGE->get_renderer('tool_analytics');
$modellogstable = new \tool_analytics\output\model_logs('model-' . $model->get_id(), $model);
echo $renderer->render_table($modellogstable);
break;
case 'export':
if ($model->is_static() || !$model->is_trained()) {
throw new moodle_exception('errornoexport', 'tool_analytics');
}
$file = $model->get_training_data();
if (!$file) {
redirect(new \moodle_url('/admin/tool/analytics/index.php'), get_string('errortrainingdataexport', 'tool_analytics'),
null, \core\output\notification::NOTIFY_ERROR);
}
$filename = 'training-data.' . $model->get_id() . '.' . time() . '.csv';
send_file($file, $filename, null, 0, false, true);
break;
case 'clear':
confirm_sesskey();
$model->clear();
redirect(new \moodle_url('/admin/tool/analytics/index.php'));
break;
case 'invalidanalysables':
echo $OUTPUT->header();
$page = optional_param('page', 0, PARAM_INT);
// No option in the UI to change this, only for url hackers ;).
$perpage = optional_param('perpage', 10, PARAM_INT);
$renderable = new \tool_analytics\output\invalid_analysables($model, $page, $perpage);
$renderer = $PAGE->get_renderer('tool_analytics');
echo $renderer->render($renderable);
break;
}
echo $OUTPUT->footer();
+28
View File
@@ -0,0 +1,28 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Adds settings links to admin tree.
*
* @package tool_analytics
* @copyright 2016 David Monllao {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$ADMIN->add('analytics', new admin_externalpage('analyticmodels', get_string('analyticmodels', 'tool_analytics'),
"$CFG->wwwroot/$CFG->admin/tool/analytics/index.php", 'moodle/analytics:managemodels'));
@@ -0,0 +1,78 @@
{{!
This file is part of Moodle - http://moodle.org/
Moodle is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Moodle is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
}}
{{!
@template tool_analytics/invalid_analysables
Template for invalid analysables.
Classes required for JS:
* none
Data attributes required for JS:
* none
Context variables required for this template:
* none
Example context (json):
{
"modelname": "Not engaging courses",
"analysables": [
{
"url": "<a href=\"#\">Maths</a>",
"validtraining": "Ongoing course",
"validprediction": "Not enough students activity"
}, {
"url": "<a href=\"#\">Psichology</a>",
"validtraining": "No students",
"validprediction": "No students"
}
]
}
}}
<div class="box">
<h3>{{#str}}modelinvalidanalysables, tool_analytics, {{modelname}}{{/str}}</h3>
<div>{{#str}}invalidanalysablesinfo, tool_analytics{{/str}}</div>
<div class="m-t-2 m-b-1">
<span>{{#prev}}{{> core/single_button}}{{/prev}}</span>
<span>{{#next}}{{> core/single_button}}{{/next}}</span>
</div>
<table class="generaltable fullwidth">
<caption class="accesshide">{{#str}}invalidanalysablestable, tool_analytics{{/str}}</caption>
<thead>
<tr>
<th scope="col">{{#str}}name{{/str}}</th>
<th scope="col">{{#str}}invalidtraining, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}invalidprediction, tool_analytics{{/str}}</th>
</tr>
</thead>
<tbody>
{{#analysables}}
<tr>
<td>{{{url}}}</td>
<td>{{validtraining}}</td>
<td>{{validprediction}}</td>
</tr>
{{/analysables}}
</tbody>
</table>
<div class="m-t-1 m-b-2">
<span>{{#prev}}{{> core/single_button}}{{/prev}}</span>
<span>{{#next}}{{> core/single_button}}{{/next}}</span>
</div>
</div>
@@ -0,0 +1,183 @@
{{!
This file is part of Moodle - http://moodle.org/
Moodle is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Moodle is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
}}
{{!
@template tool_analytics/models_list
Template for models list.
Classes required for JS:
* none
Data attributes required for JS:
* none
Context variables required for this template:
* none
Example context (json):
{
"models": [
{
"target": "Prevent devs at risk",
"targethelp": [
{
"title": "Help with something",
"url": "http://example.org/help",
"linktext": "",
"icon":{
"extraclasses": "iconhelp",
"attributes": [
{"name": "src", "value": "../../../pix/help.svg"},
{"name": "alt", "value": "Help icon"}
]
}
}
],
"enabled": 1,
"indicators": [{
"name": "Indicator 1",
"help": [{
"title": "Help with something",
"url": "http://example.org/help",
"linktext": "",
"icon":{
"extraclasses": "iconhelp",
"attributes": [
{"name": "src", "value": "../../../pix/help.svg"},
{"name": "alt", "value": "Help icon"}
]
}
}]
},
{
"name": "Indicator 2",
"help": [{
"title": "Help with something",
"url": "http://example.org/help",
"linktext": "",
"icon":{
"extraclasses": "iconhelp",
"attributes": [
{"name": "src", "value": "../../../pix/help.svg"},
{"name": "alt", "value": "Help icon"}
]
}
}]
}],
"timesplitting": "Quarters",
"timesplittinghelp": [
{
"title": "Help with something",
"url": "http://example.org/help",
"linktext": "",
"icon":{
"extraclasses": "iconhelp",
"attributes": [
{"name": "src", "value": "../../../pix/help.svg"},
{"name": "alt", "value": "Help icon"}
]
}
}
],
"noinsights": "No insights available yet"
}
],
"warnings": {
"message": "Hey, this is a warning"
}
}
}}
{{#warnings}}
{{> core/notification_warning}}
{{/warnings}}
{{#infos}}
{{> core/notification_info}}
{{/infos}}
<div class="box">
<table class="generaltable fullwidth">
<caption>{{#str}}analyticmodels, tool_analytics{{/str}}</caption>
<thead>
<tr>
<th scope="col">{{#str}}target, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}enabled, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}indicators, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}modeltimesplitting, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}insights, tool_analytics{{/str}}</th>
<th scope="col">{{#str}}actions{{/str}}</th>
</tr>
</thead>
<tbody>
{{#models}}
<tr>
<td>
<span class="target-name">{{target}}</span>
{{#targethelp}}
{{>core/help_icon}}
{{/targethelp}}
</td>
<td>
{{#enabled}}
{{#pix}}i/checked, core, {{#str}}yes{{/str}}{{/pix}}
{{/enabled}}
{{^enabled}}
{{#str}}no{{/str}}
{{/enabled}}
</td>
<td>
<ul>
{{#indicators}}
<li>
{{name}}
{{#help}}
{{>core/help_icon}}
{{/help}}
</li>
{{/indicators}}
</ul>
</td>
<td>
{{#timesplitting}}
{{timesplitting}}
{{#timesplittinghelp}}
{{>core/help_icon}}
{{/timesplittinghelp}}
{{/timesplitting}}
{{^timesplitting}}
{{#str}}notdefined, tool_analytics{{/str}}
{{/timesplitting}}
</td>
<td>
{{! models_list renderer is responsible of sending one or the other}}
{{#insights}}
{{> core/single_select }}
{{/insights}}
{{#noinsights}}
{{.}}
{{/noinsights}}
</td>
<td>
{{#actions}}
{{> core/action_menu}}
{{/actions}}
</td>
</tr>
{{/models}}
</tbody>
</table>
</div>
@@ -15,15 +15,15 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Version details
* Version details.
*
* @package auth_fc
* @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com)
* @package tool_analytics
* @copyright 2017 David Monllao {@link http://www.davidmonllao.com/}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->component = 'auth_fc'; // Full name of the plugin (used for diagnostics)
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // Requires this Moodle version.
$plugin->component = 'tool_analytics'; // Full name of the plugin (used for diagnostics).
+3 -3
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->component = 'tool_assignmentupgrade';
$plugin->dependencies = array('mod_assign' => 2017050500);
$plugin->dependencies = array('mod_assign' => 2017110800);
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->component = 'tool_availabilityconditions';
+2 -3
View File
@@ -24,9 +24,6 @@
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->libdir . '/behat/classes/behat_selectors.php');
/**
* Renderer for behat tool web features
*
@@ -44,6 +41,8 @@ class tool_behat_renderer extends plugin_renderer_base {
* @return string HTML code
*/
public function render_stepsdefinitions($stepsdefinitions, $form) {
global $CFG;
require_once($CFG->libdir . '/behat/classes/behat_selectors.php');
$html = $this->generic_info();
@@ -221,7 +221,7 @@ Feature: Set up contextual data for tests
And I should see "Test workshop name"
And I follow "Test assignment name"
And I should see "Test assignment description"
And I follow "C1"
And I am on "Course 1" course homepage
And I follow "Test assignment name with scale"
And I follow "Edit settings"
And the field "Type" matches value "Scale"
@@ -312,7 +312,6 @@ Feature: Set up contextual data for tests
| fullname | course | gradecategory |
| Grade sub category 2 | C1 | Grade category 1 |
When I log in as "admin"
And I am on course index
And I am on "Course 1" course homepage
And I navigate to "View > Grader report" in the course gradebook
Then I should see "Grade category 1"
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017110800; // 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 = 2017051500; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017050500; // Requires this Moodle version.
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // 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 = 2017051500; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017050500; // Requires this Moodle version.
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // Requires this Moodle version.
$plugin->component = 'tool_cohortroles'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
+3 -9
View File
@@ -29,20 +29,14 @@ defined('MOODLE_INTERNAL') || die();
function xmldb_tool_customlang_upgrade($oldversion) {
global $CFG;
// Moodle v2.8.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.9.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.0.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.1.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.2.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.3.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 = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->component = 'tool_customlang'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017050500; // Requires this Moodle version.
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // Requires this Moodle version.
$plugin->component = 'tool_dbtransfer'; // Full name of the plugin (used for diagnostics).
@@ -31,7 +31,7 @@ $string['delete_confirmation'] = 'Are you absolutely sure you want to remove <st
$string['deletea'] = 'Delete {$a}';
$string['deletefiletypes'] = 'Delete a file type';
$string['description'] = 'Custom description';
$string['description_help'] = 'Simple file type description, e.g. &lsquo;Kindle ebook&rsquo;. If your site supports multiple languages and uses the multi-language filter, you can enter multi-language tags in this field to supply a description in different languages.';
$string['description_help'] = 'Simple file type description, e.g. \'Kindle ebook\'. If your site supports multiple languages and uses the multi-language filter, you can enter multi-language tags in this field to supply a description in different languages.';
$string['descriptiontype'] = 'Description type';
$string['descriptiontype_help'] = 'There are three possible ways to specify a description.
@@ -49,15 +49,15 @@ $string['error_defaulticon'] = 'Another file extension with the same MIME type i
$string['error_extension'] = 'The file type extension <strong>{$a}</strong> already exists or is invalid. File extensions must be unique and must not contain special characters.';
$string['error_notfound'] = 'The file type with extension {$a} cannot be found.';
$string['extension'] = 'Extension';
$string['extension_help'] = 'File name extension without the dot, e.g. &lsquo;mobi&rsquo;';
$string['extension_help'] = 'File name extension without the dot, e.g. \'mobi\'';
$string['groups'] = 'Type groups';
$string['groups_help'] = 'Optional list of file type groups that this type belongs to. These are generic categories such as &lsquo;document&rsquo; and &lsquo;image&rsquo;.';
$string['groups_help'] = 'Optional list of file type groups that this type belongs to. These are generic categories such as \'document\' and \'image\'.';
$string['icon'] = 'File icon';
$string['icon_help'] = 'Icon filename.
The list of icons is taken from the /pix/f directory inside your Moodle installation. You can add custom icons to this folder if required.';
$string['mimetype'] = 'MIME type';
$string['mimetype_help'] = 'MIME type associated with this file type, e.g. &lsquo;application/x-mobipocket-ebook&rsquo;';
$string['mimetype_help'] = 'MIME type associated with this file type, e.g. \'application/x-mobipocket-ebook\'';
$string['pluginname'] = 'File types';
$string['revert'] = 'Restore {$a} to Moodle defaults';
$string['revert_confirmation'] = 'Are you sure you want to restore <strong>.{$a}</strong> to Moodle defaults, discarding your changes?';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->component = 'tool_filetypes';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->component = 'tool_generator';
+2 -2
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017110800; // 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
+52
View File
@@ -0,0 +1,52 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Site wide http -> https search-replace form.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_httpsreplace;
defined('MOODLE_INTERNAL') || die();
require_once("$CFG->libdir/formslib.php");
/**
* Site wide http -> https search-replace form.
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class form extends \moodleform {
/**
* Define the form.
*/
public function definition() {
$mform = $this->_form;
$mform->addElement('header', 'confirmhdr', get_string('confirm'));
$mform->setExpanded('confirmhdr', true);
$mform->addElement('checkbox', 'sure', get_string('disclaimer', 'tool_httpsreplace'));
$mform->addRule('sure', get_string('required'), 'required', null, 'client');
$mform->disable_form_change_checker();
$this->add_action_buttons(false, get_string('doit', 'tool_httpsreplace'));
}
}
@@ -0,0 +1,264 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* url_finder class definition.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_httpsreplace;
use database_column_info;
use progress_bar;
defined('MOODLE_INTERNAL') || die();
/**
* Examines DB for non-https src or data links
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class url_finder {
/**
* Returns a hash of what hosts are referred to over http and would need to be changed.
*
* @param progress_bar $progress Progress bar keeping track of this process.
* @return array Hash of domains with number of references as the value.
*/
public function http_link_stats($progress = null) {
return $this->process(false, $progress);
}
/**
* Changes all resources referred to over http to https.
*
* @param progress_bar $progress Progress bar keeping track of this process.
* @return bool True upon success
*/
public function upgrade_http_links($progress = null) {
return $this->process(true, $progress);
}
/**
* Replace http domains with https equivalent, with two types of exceptions
* for less straightforward swaps.
*
* @param string $table
* @param database_column_info $column
* @param string $domain
* @param string $search search string that has prefix, protocol, domain name and one extra character,
* example1: src="http://host.com/
* example2: DATA="HTTP://MYDOMAIN.EDU"
* example3: src="HTTP://hello.world?
* @return void
*/
protected function domain_swap($table, $column, $domain, $search) {
global $DB;
$renames = json_decode(get_config('tool_httpsreplace', 'renames'), true);
if (isset($renames[$domain])) {
$replace = preg_replace('|http://'.preg_quote($domain).'|i', 'https://' . $renames[$domain], $search);
} else {
$replace = preg_replace('|http://|i', 'https://', $search);
}
$DB->set_debug(true);
$DB->replace_all_text($table, $column, $search, $replace);
$DB->set_debug(false);
}
/**
* Returns SQL to be used to match embedded http links in the given column
*
* @param string $columnname name of the column (ready to be used in the SQL query)
* @return array
*/
protected function get_select_search_in_column($columnname) {
global $DB;
if ($DB->sql_regex_supported()) {
// Database supports regex, use it for better match.
$select = $columnname . ' ' . $DB->sql_regex() . ' ?';
$params = ["(src|data)\ *=\ *[\\\"\']http://"];
} else {
// Databases without regex support should use case-insensitive LIKE.
// This will have false positive matches and more results than we need, we'll have to filter them in php.
$select = $DB->sql_like($columnname, '?', false);
$params = ['%=%http://%'];
}
return [$select, $params];
}
/**
* Originally forked from core function db_search().
* @param bool $replacing Whether or not to replace the found urls.
* @param progress_bar $progress Progress bar keeping track of this process.
* @return bool|array If $replacing, return true on success. If not, return hash of http urls to number of times used.
*/
protected function process($replacing = false, $progress = null) {
global $DB, $CFG;
require_once($CFG->libdir.'/filelib.php');
// TODO: block_instances have HTML content as base64, need to decode then
// search, currently just skipped. See MDL-60024.
$skiptables = array(
'block_instances',
'config',
'config_log',
'config_plugins',
'events_queue',
'files',
'filter_config',
'grade_grades_history',
'grade_items_history',
'log',
'logstore_standard_log',
'repository_instance_config',
'sessions',
'upgrade_log',
'grade_categories_history',
'',
);
// Turn off time limits.
\core_php_time_limit::raise();
if (!$tables = $DB->get_tables() ) { // No tables yet at all.
return false;
}
$urls = array();
$numberoftables = count($tables);
$tablenumber = 0;
foreach ($tables as $table) {
if ($progress) {
$progress->update($tablenumber, $numberoftables, get_string('searching', 'tool_httpsreplace', $table));
$tablenumber++;
}
if (in_array($table, $skiptables)) {
continue;
}
if ($columns = $DB->get_columns($table)) {
foreach ($columns as $column) {
// Only convert columns that are either text or long varchar.
if ($column->meta_type == 'X' || ($column->meta_type == 'C' && $column->max_length > 255)) {
$columnname = $column->name;
$columnnamequoted = $DB->get_manager()->generator->getEncQuoted($columnname);
list($select, $params) = $this->get_select_search_in_column($columnnamequoted);
$rs = $DB->get_recordset_select($table, $select, $params, '', $columnnamequoted);
$found = array();
foreach ($rs as $record) {
// Regex to match src=http://etc. and data=http://etc.urls.
// Standard warning on expecting regex to perfectly parse HTML
// read http://stackoverflow.com/a/1732454 for more info.
$regex = '#((src|data)\ *=\ *[\'\"])(http://)([^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))[\'\"]#i';
preg_match_all($regex, $record->$columnname, $match);
foreach ($match[0] as $i => $fullmatch) {
if (\core_text::strpos($fullmatch, $CFG->wwwroot) !== false) {
continue;
}
$prefix = $match[1][$i];
$protocol = $match[3][$i];
$url = $protocol . $match[4][$i];
$host = \core_text::strtolower(parse_url($url, PHP_URL_HOST));
if (empty($host)) {
continue;
}
if ($replacing) {
// For replace string use: prefix, protocol, host and one extra character.
$found[$prefix . \core_text::substr($url, 0, \core_text::strlen($host) + 8)] = $host;
} else {
$entry["table"] = $table;
$entry["columnname"] = $columnname;
$entry["url"] = $url;
$entry["host"] = $host;
$entry["raw"] = $record->$columnname;
$entry["ssl"] = '';
$urls[] = $entry;
}
}
}
$rs->close();
if ($replacing) {
foreach ($found as $search => $domain) {
$this->domain_swap($table, $column, $domain, $search);
}
}
}
}
}
}
if ($replacing) {
rebuild_course_cache(0, true);
purge_all_caches();
return true;
}
$domains = array_map(function ($i) {
return $i['host'];
}, $urls);
$uniquedomains = array_unique($domains);
$sslfailures = array();
foreach ($uniquedomains as $domain) {
if (!$this->check_domain_availability("https://$domain/")) {
$sslfailures[] = $domain;
}
}
$results = array();
foreach ($urls as $url) {
$host = $url['host'];
foreach ($sslfailures as $badhost) {
if ($host == $badhost) {
if (!isset($results[$host])) {
$results[$host] = 1;
} else {
$results[$host]++;
}
}
}
}
return $results;
}
/**
* Check if url is available (GET request returns 200)
*
* @param string $url
* @return bool
*/
protected function check_domain_availability($url) {
$curl = new \curl();
$curl->head($url);
$info = $curl->get_info();
return !empty($info['http_code']) && $info['http_code'] == 200;
}
}
@@ -0,0 +1,93 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* url_replace cli script. Examines DB for non-https src or data links, and lists broken ones or replaces all links.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require(__DIR__ . '/../../../../config.php');
require_once($CFG->libdir.'/clilib.php');
list($options, $unrecognized) = cli_get_params(
array(
'help' => false,
'list' => false,
'replace' => false,
'confirm' => false,
),
array(
'h' => 'help',
'l' => 'list',
'r' => 'replace',
)
);
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
cli_error(get_string('cliunknowoption', 'admin', $unrecognized), 2);
}
if ($options['help'] || (!$options['list'] && !$options['replace'])) {
$help = "Examines DB for non-https src or data links, and lists broken links or replaces all links.
Options:
-h, --help Print out this help
-l, --list List of http (not https) urls on a site in the DB that would become broken.
-r, --replace List of http (not https) urls on a site in the DB that would become broken.
--confirm Replaces http urls with https across a site's content.
Example:
\$ sudo -u www-data /usr/bin/php admin/tool/httpsreplace/cli/url_replace.php --list \n";
echo $help;
exit(0);
}
if (!$DB->replace_all_text_supported()) {
echo $OUTPUT->notification(get_string('notimplemented', 'tool_httpsreplace'));
exit(1);
}
if (!is_https()) {
echo $OUTPUT->notification(get_string('httpwarning', 'tool_httpsreplace'), 'warning');
echo "\n";
}
if ($options['replace']) {
if ($options['confirm']) {
$urlfinder = new \tool_httpsreplace\url_finder();
$urlfinder->upgrade_http_links();
} else {
echo "Once this is tool run, changes made can't be reverted. \n" .
"A complete backup should be made before running this script. \n\n" .
"There is a low risk that the wrong content will be replaced, introducing problems. \n" .
"If you are sure you want to continue, add --confirm\n\n";
}
} else {
$urlfinder = new \tool_httpsreplace\url_finder();
$results = $urlfinder->http_link_stats();
asort($results);
$fp = fopen('php://stdout', 'w');
fputcsv($fp, ['clientsite', 'httpdomain', 'urlcount']);
foreach ($results as $domain => $count) {
fputcsv($fp, [$SITE->shortname, $domain, $count]);
}
fclose($fp);
}
+59
View File
@@ -0,0 +1,59 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Search and replace http -> https throughout all texts in the whole database
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->libdir . '/adminlib.php');
admin_externalpage_setup('toolhttpsreplace');
$context = context_system::instance();
require_login();
require_capability('moodle/site:config', $context);
$PAGE->set_context($context);
$PAGE->set_url(new moodle_url('/admin/tool/httpsreplace/index.php'));
$PAGE->set_title(get_string('pageheader', 'tool_httpsreplace'));
$PAGE->set_pagelayout('admin');
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('pageheader', 'tool_httpsreplace'));
if (!$DB->replace_all_text_supported()) {
echo $OUTPUT->notification(get_string('notimplemented', 'tool_httpsreplace'));
echo $OUTPUT->footer();
die;
}
if (!is_https()) {
echo $OUTPUT->notification(get_string('httpwarning', 'tool_httpsreplace'), 'warning');
}
echo '<p>'.get_string('domainexplain', 'tool_httpsreplace').'</p>';
echo '<p>'.page_doc_link(get_string('doclink', 'tool_httpsreplace')).'</p>';
echo $OUTPUT->continue_button(new moodle_url('/admin/tool/httpsreplace/tool.php'));
echo $OUTPUT->footer();
@@ -0,0 +1,43 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Strings for component 'tool_httpsreplace'
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['complete'] = 'Completed';
$string['count'] = 'Number of embedded content items';
$string['disclaimer'] = 'I understand the risks of this operation';
$string['doclink'] = 'HTTPS conversion tool';
$string['doit'] = 'Perform conversion';
$string['domain'] = 'Problematic domain';
$string['domainexplain'] = 'When a site is moved from HTTP to HTTPS, all embeded HTTP content will stop working. This tool allows you to automatically convert HTTP content to HTTPS.
Before performing the conversion, content will be scanned to find any URLs which may not work after conversion. You may want to check each one has HTTPS available, or find alternative resources.';
$string['domainexplainhelp'] = 'These domains are found in your content, but do not appear to support HTTPS content. After switching to HTTPS, the content included from these sites will no longer display within Moodle for users with secure modern browsers. It is possible that these sites are temporarily or permanently unavailable and will not work with either security setting. Proceed only after reviewing these results and determining if this externally-hosted content is non-essential. Note: This content would no longer work upon switching to HTTPS anyway.';
$string['httpwarning'] = 'This instance is still running on HTTP. You can still run this tool and external content will be changed to HTTPS, but internal content will remain on HTTP. You will need to run this script again after switching to HTTPS to convert internal content.';
$string['notimplemented'] = 'Sorry, this feature is not implemented in your database driver.';
$string['oktoprocede'] = 'The scan finds no issues with your content. You can proceed to upgrade any HTTP content to use HTTPS.';
$string['pageheader'] = 'Upgrade externally-hosted content URLs to HTTPS';
$string['pluginname'] = 'HTTPS conversion tool';
$string['replacing'] = 'Replacing HTTP content with HTTPS...';
$string['searching'] = 'Searching {$a}';
$string['takeabackupwarning'] = 'Warning: After running this tool, changes cannot be reverted. It is recommended that a site backup is made before proceeding, as there is a small risk of wrong content being replaced.';
$string['toolintro'] = 'If you are planning on converting your site to HTTPS, you can use the <a href="{$a}">HTTPS conversion tool</a> to convert your embedded content to HTTPS.';
+41
View File
@@ -0,0 +1,41 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Link to http -> https replace script.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
if ($hassiteconfig) {
$pluginname = get_string('pluginname', 'tool_httpsreplace');
$url = $CFG->wwwroot.'/'.$CFG->admin.'/tool/httpsreplace/index.php';
$ADMIN->add('security', new admin_externalpage('toolhttpsreplace', $pluginname, $url, 'moodle/site:config', true));
$httpsreplaceurl = $CFG->wwwroot.'/'.$CFG->admin.'/tool/httpsreplace/index.php';
$ADMIN->locate('httpsecurity')->add(
new admin_setting_heading(
'tool_httpsreplaceheader',
new lang_string('pluginname', 'tool_httpsreplace'),
new lang_string('toolintro', 'tool_httpsreplace', $httpsreplaceurl)
)
);
}
@@ -0,0 +1,29 @@
@tool @tool_httpsreplace
Feature: View the httpsreplace report
In order to switch to https
As an admin
I need to be able to automatically replace http links
Background: Create some http links
Given I am on site homepage
And the following "courses" exist:
| fullname | shortname | category | summary |
| Course 1 | C1 | 0 | <img src="http://intentionally.unavailable/test.png"> <img src="http://download.moodle.org/unittest/test.jpg"> |
And I log in as "admin"
@javascript
Scenario: Go to the HTTPS replace report screen. Make sure broken domains are reported.
When I navigate to "HTTP security" node in "Site administration > Security"
And I follow "HTTPS conversion tool"
And I press "Continue"
Then I should see "intentionally.unavailable"
@javascript
Scenario: Use the find and replace tool.
When I navigate to "HTTP security" node in "Site administration > Security"
And I follow "HTTPS conversion tool"
And I press "Continue"
And I set the field "I understand the risks of this operation" to "1"
And I press "Perform conversion"
Then I should see "intentionally.unavailable"
And I should see "download.moodle.org"
@@ -0,0 +1,413 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* HTTPS find and replace Tests
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_httpsreplace\tests;
defined('MOODLE_INTERNAL') || die();
/**
* Tests the httpsreplace tool.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class httpsreplace_test extends \advanced_testcase {
/**
* Data provider for test_upgrade_http_links
*/
public function upgrade_http_links_provider() {
global $CFG;
// Get the http url, since the default test wwwroot is https.
$wwwroothttp = preg_replace('/^https:/', 'http:', $CFG->wwwroot);
return [
"Test image from another site should be replaced" => [
"content" => '<img src="' . $this->getExternalTestFileUrl('/test.jpg', false) . '">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<img src="' . $this->getExternalTestFileUrl('/test.jpg', true) . '">',
],
"Test object from another site should be replaced" => [
"content" => '<object data="' . $this->getExternalTestFileUrl('/test.swf', false) . '">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<object data="' . $this->getExternalTestFileUrl('/test.swf', true) . '">',
],
"Test image from a site with international name should be replaced" => [
"content" => '<img src="http://中国互联网络信息中心.中国/logosy/201706/W01.png">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<img src="https://中国互联网络信息中心.中国/logosy/201706/W01.png">',
],
"Link that is from this site should be replaced" => [
"content" => '<img src="' . $wwwroothttp . '/logo.png">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<img src="' . $CFG->wwwroot . '/logo.png">',
],
"Link that is from this site, https new so doesn't need replacing" => [
"content" => '<img src="' . $CFG->wwwroot . '/logo.png">',
"outputregex" => '/^$/',
"expectedcontent" => '<img src="' . $CFG->wwwroot . '/logo.png">',
],
"Unavailable image should be replaced" => [
"content" => '<img src="http://intentionally.unavailable/link1.jpg">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<img src="https://intentionally.unavailable/link1.jpg">',
],
"Https content that has an http url as a param should not be replaced" => [
"content" => '<img src="https://anothersite.com?param=http://asdf.com">',
"outputregex" => '/^$/',
"expectedcontent" => '<img src="https://anothersite.com?param=http://asdf.com">',
],
"Search for params should be case insensitive" => [
"content" => '<object DATA="' . $this->getExternalTestFileUrl('/test.swf', false) . '">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<object DATA="' . $this->getExternalTestFileUrl('/test.swf', true) . '">',
],
"URL should be case insensitive" => [
"content" => '<object data="HTTP://some.site/path?query">',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<object data="https://some.site/path?query">',
],
"More params should not interfere" => [
"content" => '<img alt="A picture" src="' . $this->getExternalTestFileUrl('/test.png', false) .
'" width="1”><p style="font-size: \'20px\'"></p>',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<img alt="A picture" src="' . $this->getExternalTestFileUrl('/test.png', true) .
'" width="1”><p style="font-size: \'20px\'"></p>',
],
"Broken URL should not be changed" => [
"content" => '<img src="broken.' . $this->getExternalTestFileUrl('/test.png', false) . '">',
"outputregex" => '/^$/',
"expectedcontent" => '<img src="broken.' . $this->getExternalTestFileUrl('/test.png', false) . '">',
],
"Link URL should not be changed" => [
"content" => '<a href="' . $this->getExternalTestFileUrl('/test.png', false) . '">' .
$this->getExternalTestFileUrl('/test.png', false) . '</a>',
"outputregex" => '/^$/',
"expectedcontent" => '<a href="' . $this->getExternalTestFileUrl('/test.png', false) . '">' .
$this->getExternalTestFileUrl('/test.png', false) . '</a>',
],
"Test image from another site should be replaced but link should not" => [
"content" => '<a href="' . $this->getExternalTestFileUrl('/test.png', false) . '"><img src="' .
$this->getExternalTestFileUrl('/test.jpg', false) . '"></a>',
"outputregex" => '/UPDATE/',
"expectedcontent" => '<a href="' . $this->getExternalTestFileUrl('/test.png', false) . '"><img src="' .
$this->getExternalTestFileUrl('/test.jpg', true) . '"></a>',
],
];
}
/**
* Test upgrade_http_links
* @param string $content Example content that we'll attempt to replace.
* @param string $ouputregex Regex for what output we expect.
* @param string $expectedcontent What content we are expecting afterwards.
* @dataProvider upgrade_http_links_provider
*/
public function test_upgrade_http_links($content, $ouputregex, $expectedcontent) {
global $DB;
$this->resetAfterTest();
$this->expectOutputRegex($ouputregex);
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course = $generator->create_course((object) [
'summary' => $content,
]);
$finder->upgrade_http_links();
$summary = $DB->get_field('course', 'summary', ['id' => $course->id]);
$this->assertContains($expectedcontent, $summary);
}
/**
* Data provider for test_http_link_stats
*/
public function http_link_stats_provider() {
global $CFG;
// Get the http url, since the default test wwwroot is https.
$wwwrootdomain = 'www.example.com';
$wwwroothttp = preg_replace('/^https:/', 'http:', $CFG->wwwroot);
$testdomain = 'download.moodle.org';
return [
"Test image from an available site so shouldn't be reported" => [
"content" => '<img src="' . $this->getExternalTestFileUrl('/test.jpg', false) . '">',
"domain" => $testdomain,
"expectedcount" => 0,
],
"Link that is from this site shouldn't be reported" => [
"content" => '<img src="' . $wwwroothttp . '/logo.png">',
"domain" => $wwwrootdomain,
"expectedcount" => 0,
],
"Unavailable, but https shouldn't be reported" => [
"content" => '<img src="https://intentionally.unavailable/logo.png">',
"domain" => 'intentionally.unavailable',
"expectedcount" => 0,
],
"Unavailable image should be reported" => [
"content" => '<img src="http://intentionally.unavailable/link1.jpg">',
"domain" => 'intentionally.unavailable',
"expectedcount" => 1,
],
"Unavailable object should be reported" => [
"content" => '<object data="http://intentionally.unavailable/file.swf">',
"domain" => 'intentionally.unavailable',
"expectedcount" => 1,
],
"Link should not be reported" => [
"content" => '<a href="http://intentionally.unavailable/page.php">Link</a>',
"domain" => 'intentionally.unavailable',
"expectedcount" => 0,
],
"Text should not be reported" => [
"content" => 'http://intentionally.unavailable/page.php',
"domain" => 'intentionally.unavailable',
"expectedcount" => 0,
],
];
}
/**
* Test http_link_stats
* @param string $content Example content that we'll attempt to replace.
* @param string $domain The domain we will check was replaced.
* @param string $expectedcount Number of urls from that domain that we expect to be replaced.
* @dataProvider http_link_stats_provider
*/
public function test_http_link_stats($content, $domain, $expectedcount) {
$this->resetAfterTest();
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course = $generator->create_course((object) [
'summary' => $content,
]);
$results = $finder->http_link_stats();
$this->assertEquals($expectedcount, $results[$domain] ?? 0);
}
/**
* Test links and text are not changed
*/
public function test_links_and_text() {
global $DB;
$this->resetAfterTest();
$this->expectOutputRegex('/^$/');
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course = $generator->create_course((object) [
'summary' => '<a href="http://intentionally.unavailable/page.php">Link</a> http://other.unavailable/page.php',
]);
$results = $finder->http_link_stats();
$this->assertCount(0, $results);
$finder->upgrade_http_links();
$results = $finder->http_link_stats();
$this->assertCount(0, $results);
$summary = $DB->get_field('course', 'summary', ['id' => $course->id]);
$this->assertContains('http://intentionally.unavailable/page.php', $summary);
$this->assertContains('http://other.unavailable/page.php', $summary);
$this->assertNotContains('https://intentionally.unavailable', $summary);
$this->assertNotContains('https://other.unavailable', $summary);
}
/**
* If we have an http wwwroot then we shouldn't report it.
*/
public function test_httpwwwroot() {
global $DB, $CFG;
$this->resetAfterTest();
$CFG->wwwroot = preg_replace('/^https:/', 'http:', $CFG->wwwroot);
$this->expectOutputRegex('/^$/');
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course = $generator->create_course((object) [
'summary' => '<img src="' . $CFG->wwwroot . '/image.png">',
]);
$results = $finder->http_link_stats();
$this->assertCount(0, $results);
$finder->upgrade_http_links();
$summary = $DB->get_field('course', 'summary', ['id' => $course->id]);
$this->assertContains($CFG->wwwroot, $summary);
}
/**
* Test that links in excluded tables are not replaced
*/
public function test_upgrade_http_links_excluded_tables() {
$this->resetAfterTest();
set_config('test_upgrade_http_links', '<img src="http://somesite/someimage.png" />');
$finder = new tool_httpreplace_url_finder_test();
ob_start();
$results = $finder->upgrade_http_links();
$output = ob_get_contents();
ob_end_clean();
$this->assertTrue($results);
$this->assertNotContains('https://somesite', $output);
$testconf = get_config('core', 'test_upgrade_http_links');
$this->assertContains('http://somesite', $testconf);
$this->assertNotContains('https://somesite', $testconf);
}
/**
* Test renamed domains
*/
public function test_renames() {
global $DB, $CFG;
$this->resetAfterTest();
$this->expectOutputRegex('/UPDATE/');
$renames = [
'example.com' => 'secure.example.com',
];
set_config('renames', json_encode($renames), 'tool_httpsreplace');
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course = $generator->create_course((object) [
'summary' => '<script src="http://example.com/test.js"><img src="http://EXAMPLE.COM/someimage.png">',
]);
$results = $finder->http_link_stats();
$this->assertCount(0, $results);
$finder->upgrade_http_links();
$summary = $DB->get_field('course', 'summary', ['id' => $course->id]);
$this->assertContains('https://secure.example.com', $summary);
$this->assertNotContains('http://example.com', $summary);
$this->assertEquals('<script src="https://secure.example.com/test.js">' .
'<img src="https://secure.example.com/someimage.png">', $summary);
}
/**
* When there are many different pieces of contents from the same site, we should only run replace once
*/
public function test_multiple() {
global $DB;
$this->resetAfterTest();
$original1 = '';
$expected1 = '';
$original2 = '';
$expected2 = '';
for ($i = 0; $i < 15; $i++) {
$original1 .= '<img src="http://example.com/image' . $i . '.png">';
$expected1 .= '<img src="https://example.com/image' . $i . '.png">';
$original2 .= '<img src="http://example.com/image' . ($i + 15 ) . '.png">';
$expected2 .= '<img src="https://example.com/image' . ($i + 15) . '.png">';
}
$finder = new tool_httpreplace_url_finder_test();
$generator = $this->getDataGenerator();
$course1 = $generator->create_course((object) ['summary' => $original1]);
$course2 = $generator->create_course((object) ['summary' => $original2]);
ob_start();
$finder->upgrade_http_links();
$output = ob_get_contents();
ob_end_clean();
// Make sure everything is replaced.
$summary1 = $DB->get_field('course', 'summary', ['id' => $course1->id]);
$this->assertEquals($expected1, $summary1);
$summary2 = $DB->get_field('course', 'summary', ['id' => $course2->id]);
$this->assertEquals($expected2, $summary2);
// Make sure only one UPDATE statment was called.
$this->assertEquals(1, preg_match_all('/UPDATE/', $output));
}
/**
* Test the tool when the column name is a reserved word in SQL (in this case 'where')
*/
public function test_reserved_words() {
global $DB;
$this->resetAfterTest();
$this->expectOutputRegex('/UPDATE/');
// Create a table with a field that is a reserved SQL word.
$dbman = $DB->get_manager();
$table = new \xmldb_table('reserved_words_temp');
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('where', XMLDB_TYPE_TEXT, null, null, null, null, null);
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
$dbman->create_table($table);
// Insert a record with an <img> in this table and run tool.
$content = '<img src="http://example.com/image.png">';
$expectedcontent = '<img src="https://example.com/image.png">';
$columnamequoted = $dbman->generator->getEncQuoted('where');
$DB->execute("INSERT INTO {reserved_words_temp} ($columnamequoted) VALUES (?)", [$content]);
$finder = new tool_httpreplace_url_finder_test();
$finder->upgrade_http_links();
$record = $DB->get_record('reserved_words_temp', []);
$this->assertContains($expectedcontent, $record->where);
$dbman->drop_table($table);
}
}
/**
* Class tool_httpreplace_url_finder_test for testing replace tool without calling curl
*
* @package tool_httpsreplace
* @copyright 2017 Marina Glancy
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tool_httpreplace_url_finder_test extends \tool_httpsreplace\url_finder {
/**
* Check if url is available (check hardcoded for unittests)
*
* @param string $url
* @return bool
*/
protected function check_domain_availability($url) {
return !preg_match('|\.unavailable/$|', $url);
}
}
+109
View File
@@ -0,0 +1,109 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Search and replace http -> https throughout all texts in the whole database
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('NO_OUTPUT_BUFFERING', true);
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->dirroot . '/course/lib.php');
require_once($CFG->libdir . '/adminlib.php');
admin_externalpage_setup('toolhttpsreplace');
$context = context_system::instance();
require_login();
require_capability('moodle/site:config', $context);
$PAGE->set_context($context);
$PAGE->set_url(new moodle_url('/admin/tool/httpsreplace/index.php'));
$PAGE->set_title(get_string('pageheader', 'tool_httpsreplace'));
$PAGE->set_pagelayout('admin');
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('pageheader', 'tool_httpsreplace'));
if (!$DB->replace_all_text_supported()) {
echo $OUTPUT->notification(get_string('notimplemented', 'tool_httpsreplace'));
echo $OUTPUT->footer();
die;
}
if (!is_https()) {
echo $OUTPUT->notification(get_string('httpwarning', 'tool_httpsreplace'), 'warning');
}
$form = new \tool_httpsreplace\form();
$finder = new \tool_httpsreplace\url_finder();
$PAGE->set_cacheable(false);
$progressbar = new progress_bar();
if (!$data = $form->get_data()) {
echo $progressbar->create();
$results = $finder->http_link_stats($progressbar);
$progressbar->update_full(100, get_string('complete', 'tool_httpsreplace'));
if (empty($results)) {
echo '<p>'.get_string('oktoprocede', 'tool_httpsreplace').'</p>';
} else {
arsort($results);
$table = new html_table();
$table->id = 'plugins-check';
$table->head = array(
get_string('domain', 'tool_httpsreplace'),
get_string('count', 'tool_httpsreplace'),
);
$data = array();
foreach ($results as $domain => $count) {
$cleandomain = format_text($domain, FORMAT_PLAIN);
$data[] = [$cleandomain, $count];
}
$table->data = $data;
echo html_writer::table($table);
echo get_string('domainexplainhelp', 'tool_httpsreplace');
}
echo $OUTPUT->notification(get_string('takeabackupwarning', 'tool_httpsreplace'), 'warning');
$form->display();
} else {
// Scroll to the end when finished.
$PAGE->requires->js_init_code("window.scrollTo(0, document.body.scrollHeight);");
echo html_writer::tag('p', get_string('replacing', 'tool_httpsreplace'));
echo $progressbar->create();
echo $OUTPUT->box_start();
$finder->upgrade_http_links($progressbar);
echo $OUTPUT->box_end();
$progressbar->update_full(100, get_string('complete', 'tool_httpsreplace'));
echo $OUTPUT->continue_button(new moodle_url('/admin/settings.php', ['section' => 'httpsecurity']));
}
echo $OUTPUT->footer();
+29
View File
@@ -0,0 +1,29 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Version details.
*
* @package tool_httpsreplace
* @copyright Copyright (c) 2016 Blackboard Inc. (http://www.blackboard.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // 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 = 2017051500; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017110800; // 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 = 2017051500;
$plugin->requires = 2017050500;
$plugin->version = 2017111300;
$plugin->requires = 2017110800;
$plugin->maturity = MATURITY_STABLE;
+6 -4
View File
@@ -40,7 +40,7 @@ if (empty($CFG->langotherroot)) {
$mode = optional_param('mode', 0, PARAM_INT); // action
$pack = optional_param_array('pack', array(), PARAM_SAFEDIR); // pack to install
$uninstalllang = optional_param_array('uninstalllang', array(), PARAM_LANG);// installed pack to uninstall
$confirmtounistall = optional_param('confirmtouninstall', '', PARAM_ALPHAEXT); // uninstallation confirmation
$confirmtounistall = optional_param('confirmtouninstall', '', PARAM_SAFEPATH); // uninstallation confirmation
$purgecaches = optional_param('purgecaches', false, PARAM_BOOL); // explicit caches reset
if ($purgecaches) {
@@ -74,7 +74,7 @@ if ($mode == DELETION_OF_SELECTED_LANG and (!empty($uninstalllang) or !empty($co
// Actually deleting languages, languages to delete are passed as GET parameter as string
// ...need to populate them to array.
if (empty($uninstalllang)) {
$uninstalllang = explode('-', $confirmtounistall);
$uninstalllang = explode('/', $confirmtounistall);
}
if (in_array('en', $uninstalllang)) {
@@ -84,8 +84,10 @@ if ($mode == DELETION_OF_SELECTED_LANG and (!empty($uninstalllang) or !empty($co
} else if (empty($confirmtounistall) and confirm_sesskey()) { // User chose langs to be deleted, show confirmation.
echo $OUTPUT->header();
echo $OUTPUT->confirm(get_string('uninstallconfirm', 'tool_langimport', implode(', ', $uninstalllang)),
'index.php?mode='.DELETION_OF_SELECTED_LANG.'&confirmtouninstall='.implode('-', $uninstalllang),
'index.php');
new moodle_url($PAGE->url, array(
'mode' => DELETION_OF_SELECTED_LANG,
'confirmtouninstall' => implode('/', $uninstalllang),
)), $PAGE->url);
echo $OUTPUT->footer();
die;
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2017110800; // Requires this Moodle version
$plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
@@ -84,8 +84,7 @@ abstract class restore_tool_log_logstore_subplugin extends restore_subplugin {
}
}
// Roll dates.
$data->timecreated = $this->apply_date_offset($data->timecreated);
// There is no need to roll dates. Logs are supposed to be immutable. See MDL-44961.
// Revert other to its original php way.
$data->other = unserialize(base64_decode($data->other));
+3 -9
View File
@@ -33,20 +33,14 @@ defined('MOODLE_INTERNAL') || die();
function xmldb_tool_log_upgrade($oldversion) {
global $CFG;
// Moodle v2.8.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.9.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.0.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.1.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.2.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.3.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
@@ -88,6 +88,7 @@ class store implements \tool_log\log\writer, \core\log\sql_reader {
$dboptions['dbport'] = $this->get_config('dbport', '');
$dboptions['dbschema'] = $this->get_config('dbschema', '');
$dboptions['dbcollation'] = $this->get_config('dbcollation', '');
$dboptions['dbhandlesoptions'] = $this->get_config('dbhandlesoptions', false);
try {
$db->connect($this->get_config('dbhost'), $this->get_config('dbuser'), $this->get_config('dbpass'),
$this->get_config('dbname'), false, $dboptions);
+3 -9
View File
@@ -27,20 +27,14 @@ defined('MOODLE_INTERNAL') || die();
function xmldb_logstore_database_upgrade($oldversion) {
global $CFG;
// Moodle v2.8.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v2.9.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.0.0 release upgrade line.
// Put any upgrade step following this.
// Moodle v3.1.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.2.0 release upgrade line.
// Put any upgrade step following this.
// Automatically generated Moodle v3.3.0 release upgrade line.
// Put any upgrade step following this.
return true;
}
@@ -31,6 +31,8 @@ $string['databasesettings_help'] = 'Connection details for the external log data
$string['databasepersist'] = 'Persistent database connections';
$string['databaseschema'] = 'Database schema';
$string['databasecollation'] = 'Database collation';
$string['databasehandlesoptions'] = 'Database handles options';
$string['databasehandlesoptions_help'] = 'Does the remote database handle its own options.';
$string['databasetable'] = 'Database table';
$string['databasetable_help'] = 'Name of the table where logs will be stored. This table should have a structure identical to the one used by logstore_standard (mdl_logstore_standard_log).';
$string['includeactions'] = 'Include actions of these types';
@@ -54,6 +54,8 @@ if ($hassiteconfig) {
'logstore_database'), '', ''));
$settings->add(new admin_setting_configtext('logstore_database/dbcollation', get_string('databasecollation',
'logstore_database'), '', ''));
$settings->add(new admin_setting_configcheckbox('logstore_database/dbhandlesoptions', get_string('databasehandlesoptions',
'logstore_database'), get_string('databasehandlesoptions_help', 'logstore_database'), '0'));
$settings->add(new admin_setting_configtext('logstore_database/buffersize', get_string('buffersize',
'logstore_database'), get_string('buffersize_help', 'logstore_database'), 50));
@@ -64,6 +64,7 @@ $dboptions['dbsocket'] = get_config('logstore_database', 'dbsocket');
$dboptions['dbport'] = get_config('logstore_database', 'dbport');
$dboptions['dbschema'] = get_config('logstore_database', 'dbschema');
$dboptions['dbcollation'] = get_config('logstore_database', 'dbcollation');
$dboptions['dbhandlesoptions'] = get_config('logstore_database', 'dbhandlesoptions');
try {
$db->connect(get_config('logstore_database', 'dbhost'), get_config('logstore_database', 'dbuser'),
@@ -83,6 +83,11 @@ class logstore_database_store_testcase extends advanced_testcase {
} else {
set_config('dbcollation', '', 'logstore_database');
}
if (!empty($CFG->dboptions['dbhandlesoptions'])) {
set_config('dbhandlesoptions', $CFG->dboptions['dbhandlesoptions'], 'logstore_database');
} else {
set_config('dbhandlesoptions', false, 'logstore_database');
}
// Enable logging plugin.
set_config('enabled_stores', 'logstore_database', 'tool_log');
+11
View File
@@ -0,0 +1,11 @@
This files describes API changes in the logstore_database code.
=== 3.4 ===
* PostgreSQL connections now use advanced options to reduce connection overhead. These options are not compatible
with some connection poolers. The dbhandlesoptions parameter has been added to allow the database to configure the
required defaults. The parameters that are required in the database are;
ALTER DATABASE moodle SET client_encoding = UTF8;
ALTER DATABASE moodle SET standard_conforming_strings = on;
ALTER DATABASE moodle SET search_path = 'moodle,public'; -- Optional, if you wish to use a custom schema.
You can set these options against the database or the moodle user who connects.
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017050500; // Requires this Moodle version.
$plugin->version = 2017111300; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2017110800; // Requires this Moodle version.
$plugin->component = 'logstore_database'; // Full name of the plugin (used for diagnostics).

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