Compare commits

..

131 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 2204fd7ad7 Moodle release 4.2rc2 2023-04-21 19:19:59 +02:00
Eloy Lafuente (stronk7) ae4d40b517 Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2023-04-21 19:19:53 +02:00
Jake Dallimore 0074137749 Merge branch 'MDL-77889-integration-master-fix' of https://github.com/mihailges/moodle 2023-04-21 17:15:26 +08:00
Mihail Geshoski ad7839f6ff MDL-77889 gradebook: Tighten up backward compatibility checks 2023-04-21 16:53:47 +08:00
Jun Pataleta d3fa6641a2 Merge branch 'MDL-77229-patch' of https://github.com/ilyatregubov/moodle 2023-04-21 16:44:22 +08:00
Ilya Tregubov a0b40bd104 MDL-77229 mod_lesson: Black list detailed statistics in classic Behat.
The nav element to go to detailed stats page is missing in classic
2023-04-21 15:03:02 +08:00
Shamim Rezaie e38262e271 MDL-77889 gradereport: restore backwards compatibility in searchwidget
The widgetbase module was intended to be a generic search widget,
despite its location in grade/amd/src. As such, other modules may
depend on this. This was modified in MDL-76246, which added new
requires params to the js, and changed the js to expect certain new
data attributes in the templates. This broke b/c for existing
dependents.

This patch makes sure the existing uses of the basewidget continue
to work by adding b/c code. See MDL-77991 which deals with deprecating
this search widget and replacing it with one that just implements the
desired combobox logic, without the b/c code. That issue should also
make it abundantly clear that this widget is for public consumption.
2023-04-21 14:19:43 +08:00
Jun Pataleta 8dd488cb5b Merge branch 'MDL-77989-master' of https://github.com/andrewnicols/moodle 2023-04-21 13:44:51 +08:00
Andrew Nicols fcba0cb379 MDL-77989 core: Fix uses of legacy external API 2023-04-21 13:33:56 +08:00
Andrew Nicols 1a53cbbae4 MDL-77989 testing: Add test file isolation helper
When we deprecate the use of a file, we often include tests which ensure
that the legacy behaviour is maintained. There are also legacy uses
in the community where people would like to use the deprecated API for a
period.

The issue that we face is that, if the deprecated file is included once,
then it will be included for all other, unrelated, tests. This means
that other tests may not detect cases where the deprecated file was
included.

We can solve these cases by running the test that performs the inclusion
in a deprecated process. This means that the inclusion is only performed
in that isolated process, and other unrelated tests do not include the
file.

However, we also then need to detect which files which are including the
file and which we do not know about.

This change introduces:
- an override to the TestCase::setInIsolation method to define a
  constant when the test is running in isolation
- a new function that a file can call when it is included, to make sure
  that the test process was isolated, where there is any test.
2023-04-21 13:33:56 +08:00
Ilya Tregubov 04bf346ca3 Merge branch 'MDL-77903' of https://github.com/Chocolate-lightning/moodle 2023-04-21 13:18:14 +08:00
Jun Pataleta 19022cd940 Merge branch 'MDL-77927-master' of https://github.com/stevandoMoodle/moodle 2023-04-21 13:11:43 +08:00
Mathew May f9c6548189 MDL-77903 gradereport_grader: Keyboard accessibility 2023-04-21 13:09:25 +08:00
Jun Pataleta 4bf6bb37c2 MDL-77927 core: Delete other mod_assignment subplugins
Non-core mod_assignment subplugin data may still be present on the
database. We need to make sure to remove these too during upgrade.
2023-04-21 12:32:10 +08:00
Jun Pataleta 0720524804 MDL-77927 core: mod_assignment subplugins environment check 2023-04-21 12:32:06 +08:00
Jun Pataleta dddc9a08cd MDL-77927 core: Move assignment removal upgrade code
Move the fixed assignment removal upgrade code to the end of the upgrade
script as a new upgrade step. Already upgraded sites with mod_assignment
removed should just be able to rerun this without any issues.
2023-04-21 12:31:11 +08:00
Stevani Andolo d023b5356c MDL-77927 grade: Delete mod_assignment orphaned data before its removal 2023-04-21 12:31:07 +08:00
Ilya Tregubov ad401db0f8 Merge branch 'MDL-77229-master' of https://github.com/ilyatregubov/moodle 2023-04-21 12:11:59 +08:00
Ilya Tregubov 1601a2610f MDL-77229 lesson: Add Behat test 2023-04-21 12:02:34 +08:00
Andrew Nicols ba81947f43 Merge branch 'MDL-77849-master' of https://github.com/ilyatregubov/moodle 2023-04-21 11:31:22 +08:00
Jun Pataleta e07f28e276 Merge branch 'MDL-77896' of https://github.com/paulholden/moodle 2023-04-21 11:21:40 +08:00
Mihail Geshoski bc977c3588 MDL-77849 gradereport_grader: Align content in user identity cells 2023-04-21 09:59:30 +08:00
Ilya Tregubov 2bfd75d9a0 MDL-77849 gradereport_grader: Align properly grade display types 2023-04-21 09:59:30 +08:00
Ilya Tregubov 4c699d007a MDL-77849 gradereport_grader: Make menus aligned with text 2023-04-21 09:59:25 +08:00
Shamim Rezaie 39c4e7f3cb MDL-77849 gradereport_grader: Switch from px to rem values 2023-04-21 09:58:58 +08:00
Shamim Rezaie 3816a64f32 MDL-77849 gradereport_grader: Numerical grades should be right-aligned 2023-04-21 09:58:50 +08:00
Andrew Nicols f7d7ad7fed MDL-77989 core_external: Isolate testing of deprecated file
The inclusion of this deprecated file leads to tests passing which may
fail when run in a different order, or for just a single testsuite.
2023-04-21 09:33:53 +08:00
Dan Marsden 9d162d1b8a MDL-77989 webservices: fix unit test error with xmlize_result 2023-04-21 09:31:57 +08:00
AMOS bot 2a5bf37102 Automatically generated installer lang files 2023-04-21 00:07:45 +00:00
Paul Holden 571292b6eb MDL-77896 editor_tiny: approximate height for non-visible editors.
When an editor is renderer initially invisible to the browser, e.g.
the forum "Add discussion" form, it has a `clientHeight` value of
zero. We can approximate an alternative value based on the number
of rows in the textarea.

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2023-04-20 15:24:23 +01:00
Juan Leyva f14c09406a MDL-77229 lesson: Fix error for empty responses (numerical pagetype) 2023-04-20 12:46:21 +02:00
Jun Pataleta 445a139d21 Merge branch 'MDL-73012-master' of https://github.com/ferranrecio/moodle 2023-04-20 16:32:15 +08:00
Jun Pataleta a14f23aa2a Merge branch 'MDL-77922-master' of https://github.com/ferranrecio/moodle 2023-04-20 16:09:56 +08:00
Ilya Tregubov 1c25a0cc2f Merge branch 'MDL-77577-master' of https://github.com/andelacruz/moodle 2023-04-20 12:33:23 +08:00
Andrew Nicols 6732d8819d Merge branch 'MDL-77973-master' of https://github.com/snake/moodle 2023-04-20 12:14:40 +08:00
Jake Dallimore fffc7ebf7c MDL-77973 core: fix broken navigation when moodlenet misconfigured
Instead of failing with an exception, throw a debugging notice.
2023-04-20 11:47:54 +08:00
Ilya Tregubov 05a0d7c8b6 Merge branch 'MDL-77918' of https://github.com/Chocolate-lightning/moodle 2023-04-20 09:32:16 +08:00
Andrew Nicols 59d42e1ed2 MDL-77718 editor_tiny: Restrict the revision to int for loaders
The revision should always be an int. I suspect this was missed during
debugging and not corrected.
2023-04-19 16:44:19 +00:00
Paul Holden 5521d1d6e8 MDL-77187 mod_wiki: validate external method sort parameters. 2023-04-19 16:44:19 +00:00
Paul Holden a8da761f8b MDL-77959 moodlenet: void return type style fixes in test. 2023-04-19 17:35:12 +01:00
Paul Holden 5338fc591e Merge branch 'MDL-77959-master' of https://github.com/HuongNV13/moodle 2023-04-19 17:25:14 +01:00
Jun Pataleta ad37980aeb Merge branch 'MDL-77955' of https://github.com/paulholden/moodle 2023-04-19 23:45:25 +08:00
Paul Holden c81bfc4f45 Merge branch 'MDL-77897-master' of https://github.com/andrewnicols/moodle 2023-04-19 14:13:03 +01:00
Paul Holden 1af2d18adb Merge branch 'MDL-77960-master' of https://github.com/lameze/moodle 2023-04-19 13:41:31 +01:00
Paul Holden b952c16086 Merge branch 'MDL-77944-master' of https://github.com/andrewnicols/moodle 2023-04-19 13:06:40 +01:00
Huong Nguyen 5548b91e3e MDL-77959 core_moodlenet: Convert activity intro to plaintext 2023-04-19 17:40:21 +07:00
Paul Holden f2f44e5ec9 MDL-77932 gradereport_grader: simplify range/average cell collapsing. 2023-04-19 11:27:43 +01:00
Paul Holden 078e0fd885 Merge branch 'MDL-77932-master' of https://github.com/mihailges/moodle 2023-04-19 11:25:59 +01:00
Ferran Recio 86fe8e582e MDL-73012 core_courseformat: add pending to move section modal 2023-04-19 12:15:32 +02:00
Jun Pataleta 02ba4ceefa Merge branch 'MDL-77940' of https://github.com/stronk7/moodle 2023-04-19 17:43:23 +08:00
Jake Dallimore 555ad338bf Merge branch 'MDL-77958-master' of https://github.com/andrewnicols/moodle 2023-04-19 17:08:14 +08:00
Andrew Nicols 3ac1acacca MDL-77958 moodlenet: Various style fixes
This change contains various style fixes which I encountered and fixed
whilst addressing the other issues identified in this issue.
2023-04-19 16:12:50 +08:00
Andrew Nicols 581ccb9a47 MDL-77958 moodlenet: Pass stored_file to improve memory usage
Previously the content of the stored file was extracted and stored in a
variable, passed around, and then submitted to MoodleNet. This results
in very high memory consumption when dealing with MoodleNet.

The stored_file should be passed around as a first-level param to
discourage this, and the content should _never_ be loaded into memory.
Instead file streams and resources should be used to allow Guzzle/Curl
to buffer the file from disk/other storage straight to MoodleNet.
2023-04-19 16:12:50 +08:00
Paul Holden 8d3b99d2a3 Merge branch 'MDL-77898-master' of https://github.com/junpataleta/moodle 2023-04-19 09:03:22 +01:00
Jun Pataleta 07243a3ae3 Merge branch 'MDL-77785' of https://github.com/timhunt/moodle 2023-04-19 15:45:55 +08:00
Andrew Nicols 489a53ceb2 MDL-77897 editor_tiny: Save editor content on editor blur 2023-04-19 14:57:10 +08:00
Mathew May b0aff926da MDL-77918 gradereport_grader: zindex the dropdowns to overlap better 2023-04-19 14:26:42 +08:00
Simey Lameze 4e6528182f MDL-77960 behat: make verification steps more specific 2023-04-19 14:09:58 +08:00
Andrew Nicols 96a1a0abce MDL-77958 file: Add psr stream functionality to file API
This change introduces a new get_psr_stream() method to:
* stored_file
* file_system

This allows us to fetch a Psr Stream implementing the
PSR\Http\Message\StreamInterface and pass it into Guzzle, which means
that there is no need to load the entire file content into memory to
serve it.
2023-04-19 13:51:49 +08:00
Ilya Tregubov 43205a0460 Merge branch 'MDL-77935' of https://github.com/paulholden/moodle 2023-04-19 13:26:15 +08:00
Jun Pataleta b1954bfdf9 Merge branch 'MDL-77953' of https://github.com/stronk7/moodle 2023-04-19 12:37:55 +08:00
Andrew Nicols a089496f96 Merge branch 'MDL-77954' of https://github.com/paulholden/moodle 2023-04-19 11:16:50 +08:00
Mihail Geshoski 71241e64a5 MDL-77932 gradereport_grader: Make range row cells collapsible 2023-04-19 10:09:57 +08:00
Paul Holden 78d24550af MDL-77955 moodlenet: destroy backup controller in class destructor.
This ensures that it's always cleaned up during tests, where not doing
so can cause spurious errors on Windows.
2023-04-18 22:42:13 +01:00
Paul Holden fd8184a295 MDL-77954 moodlenet: store packaged activities in user draft.
We shouldn't invent fileareas with invalid values (specifically in
this case, the `itemid` overflowed maximum length of the field on
Oracle).

Given the generated file is transitory in nature, instead store it
in the users draft area.
2023-04-18 18:40:15 +01:00
Eloy Lafuente (stronk7) 30e94a8916 MDL-77953 pagelib: Ensure that null $SCRIPT continues behaving the same
It's possible to have some Moodle components soft linked instead
of being real directories within codebase (within dirroot).

For example, Composer's "vendor" directory can be soft linked
(from elsewhere), or also plugins can be installed using soft
links.

In those cases, Moodle calculates the $SCRIPT global as null. And,
then, string operations on it are emitting a PHP deprecation message
with PHP 8.1 and up.

This fix just ensures that the behaviour is the same than before
PHP 8.1, aka: ltrim(null) = '' (empty string), without any PHP warning.
2023-04-18 18:48:58 +02:00
Eloy Lafuente (stronk7) c2b716a8cc MDL-77940 versions: main version bump 2023-04-18 18:09:28 +02:00
Eloy Lafuente (stronk7) 061c9d7ba0 MDL-77940 versions: bump all versions and requires near release
version = 2023042400 release version
requires= 2023041800 current rc1 version
2023-04-18 18:08:09 +02:00
Paul Holden 7343c65bea Merge branch 'MDL-77941-master' of https://github.com/aanabit/moodle 2023-04-18 16:57:40 +01:00
Amaia Anabitarte f4a172afde MDL-77941 blocks_overview: Remove duplicated strings for zero states 2023-04-18 17:36:57 +02:00
Andrew Nicols 3933cbfb5a Merge branch 'MDL-77895' of https://github.com/paulholden/moodle 2023-04-18 23:34:59 +08:00
Andrew Nicols 7beda01cae Moodle release 4.2rc1 2023-04-18 22:29:14 +08:00
Andrew Nicols 5124b6747c NOBUG: Fixed SVG browser compatibility 2023-04-18 22:29:11 +08:00
Andrew Nicols 09912bfefa Merge branch 'install_master' of https://git.in.moodle.com/amosbot/moodle-install 2023-04-18 22:29:10 +08:00
Ferran Recio f81b79a4b1 MDL-77922 core_courseformat: add pending to move activity modal 2023-04-18 13:22:08 +02:00
Jake Dallimore c9e8aa0406 Merge branch 'MDL-75316-master-4' of https://github.com/mickhawkins/moodle 2023-04-18 17:24:55 +08:00
Michael Hawkins 2e024f304a MDL-75316 core: MoodleNet integration final improvements 2023-04-18 17:00:54 +08:00
Huong Nguyen 58ced4add0 MDL-75316 core_moodlenet: Share to MoodleNet modal and activity menu
Originally implemented as MDL-75785
2023-04-18 17:05:07 +08:00
Huong Nguyen 6a877d438b MDL-75316 core: Webservice for sending activity to MoodleNet
Originally implemented as MDL-75933
2023-04-18 17:04:46 +08:00
Michael Hawkins 42ba0492e2 MDL-75316 core: Corrected oauth2_client::get_accesstoken() docblock
Originally implemented as MDL-75932
2023-04-18 17:04:30 +08:00
Michael Hawkins 77f85ed287 MDL-75316 core: Add activity sender & moodlenet_client to MoodleNet API
This makes it possible to share a single activity to a MoodleNet
instance (which has been enabled for sharing in site admin).
This utilises the core\moodlenet\activity_packager to create an
activity backup, then sends it using the MoodleNet create resource
API specification.

Originally implemented as MDL-75932
2023-04-18 17:04:14 +08:00
raortegar 9bc769a610 MDL-75316 core: Add activity packager to MoodleNet API
This makes it possible to package a single activity as a Moodle backup
file, excluding user data so it is ready to be shared as a MoodleNet
resource.

Co-authored-by: Michael Hawkins <michaelh@moodle.com>

Originally implemented as MDL-75932
2023-04-18 17:03:45 +08:00
Michael Hawkins d6c4c0fbbd MDL-75316 core: Set up MoodleNet API structure and utilities helper
Initial folder structure and declaring API.
Created utilities class.

Originally implemented as MDL-75932
2023-04-18 17:03:18 +08:00
Huong Nguyen cd097f117b MDL-75316 core_moodlenet: Rename settings
Originally implemented as MDL-75319
2023-04-18 17:03:02 +08:00
Huong Nguyen 7727745bf7 MDL-75316 core_moodlenet: Create MoodleNet capability
Originally implemented as MDL-75319
2023-04-18 17:02:47 +08:00
Huong Nguyen 852e31dbc4 MDL-75316 tool_moodlenet: Rename setting section
Rename the existing section from "MoodleNet settings" to "MoodleNet inbound settings"

Originally implemented as MDL-75319
2023-04-18 17:02:19 +08:00
Huong Nguyen ef2a1934a0 MDL-75316 core_moodlenet: Add setting to control sharing
Originally implemented as MDL-75319
2023-04-18 17:01:38 +08:00
Huong Nguyen d9a6577410 MDL-75316 admin: Create Share to MoodleNet experimental setting
Originally implemented as MDL-75319
2023-04-18 17:00:54 +08:00
Jun Pataleta 4df52460b5 MDL-77898 calendar: Add iconclass for upcoming_mini template
The icon's iconclass context data adds additional CSS class(es) to
calendar event icons to better control how the event icon is displayed.
e.g. without filtering for activity events that don't hae monologo
versions of their icons.
2023-04-18 15:58:09 +08:00
Paul Holden adb6d5468e MDL-77895 editor_tiny: standardize quickbar selection toolbar.
Ensure the same heading tags are available as those defined in the
editor block formats configuration (c51b7e2c).

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2023-04-18 07:46:05 +01:00
Ilya Tregubov 34d7edf079 Merge branch 'MDL-77916' of https://github.com/paulholden/moodle 2023-04-18 14:27:49 +08:00
Andrew Nicols 797f03228b Merge branch 'MDL-77893-master' of https://github.com/jleyva/moodle 2023-04-18 13:28:12 +08:00
Andrew Nicols 825e621264 Merge branch 'MDL-77735-master' of https://github.com/sarjona/moodle 2023-04-18 12:11:08 +08:00
Ilya Tregubov aac60d73a1 Merge branch 'MDL-77770' of https://github.com/paulholden/moodle 2023-04-18 12:01:28 +08:00
Ilya Tregubov 43c2c25645 Merge branch 'MDL-76855' of https://github.com/Chocolate-lightning/moodle 2023-04-18 11:17:43 +08:00
Andrew Nicols 5e4559c85a Merge branch 'MDL-77355' of https://github.com/paulholden/moodle 2023-04-18 10:32:49 +08:00
Ilya Tregubov 6255f92d66 Merge branch 'MDL-77943' of https://github.com/paulholden/moodle 2023-04-18 10:17:45 +08:00
Andrew Nicols df2e6c1cd4 Merge branch 'MDL-77902' of https://github.com/Chocolate-lightning/moodle 2023-04-18 10:10:39 +08:00
Mathew May ae6826953e MDL-77902 gradereport_grader: Clear btn & user differentiation 2023-04-18 09:59:13 +08:00
Andrew Nicols dfec1a8e00 MDL-77944 behat: Rename chrome options for w3c support
From Selenium 4.8.0, support for non-w3c browser control has ended.

We only use W3C browser control these days, and this was missed as part
of the move to W3C. All browser options must be vendor-prefixed.
2023-04-18 09:03:35 +08:00
Ilya Tregubov 688c9b13d4 Merge branch 'MDL-77827-master' of https://github.com/HuongNV13/moodle 2023-04-18 08:58:33 +08:00
AMOS bot e93fd454a2 Automatically generated installer lang files 2023-04-18 00:07:41 +00:00
Paul Holden ba64c15814 MDL-77943 group: use shorter names for visibility report elements. 2023-04-17 19:36:55 +01:00
Paul Holden 6a5a787844 Merge branch 'MDL-77878-master-enfix' of https://github.com/vmdef/moodle 2023-04-17 19:12:36 +01:00
Juan Leyva cf76d1bf9f MDL-77893 airnotifier: Apply payload size optimisation to all push 2023-04-17 15:36:28 +02:00
Juan Leyva 862a9fb24c MDL-77893 airnotifier: Allow configuring how to process encrypted notifs 2023-04-17 15:36:28 +02:00
Paul Holden 71cdfae287 Merge branch 'MDL-77842-master' of https://github.com/sarjona/moodle 2023-04-17 13:49:58 +01:00
Juan Leyva bdf525a43e MDL-77893 airnotifier: Leave only message data processed by Airnotifier 2023-04-17 13:34:55 +02:00
Paul Holden f2c1e6c114 Merge branch 'MDL-76212-master-nav' of https://github.com/kevpercy/moodle 2023-04-17 11:49:23 +01:00
Paul Holden 44e3cb05e5 Merge branch 'MDL-77324-master-2' of https://github.com/ilyatregubov/moodle 2023-04-17 11:05:55 +01:00
Juan Leyva 964ad9d264 MDL-77893 airnotifier: Allow to set publickey when creating new device 2023-04-17 11:03:15 +02:00
Paul Holden b4b88da77d MDL-77935 contentbank: avoid phpunit crashes during isolated tests.
Simplify the test for allowed contexts by removing problematic use of
data provider annotation.

See: https://github.com/sebastianbergmann/phpunit/issues/2739
2023-04-17 09:26:16 +01:00
Víctor Déniz b576b068bd MDL-77878 lang: Use fixed strings in tests 2023-04-17 08:49:59 +01:00
Mathew May fbc51cd591 MDL-77902 gradebook: Ensure dyn search works with pagination 2023-04-17 13:10:56 +08:00
Mathew May 53675693b4 MDL-76855 gradereport_user: Prevent parent access errors 2023-04-17 11:24:51 +08:00
Andrew Nicols 35118869c7 Merge branch 'MDL-77874' of https://github.com/paulholden/moodle 2023-04-17 11:20:53 +08:00
Helen Foster ee8408c4d5 MDL-77878 lang: Import fixed English strings (en_fix) 2023-04-14 13:08:38 +01:00
Sara Arjona d2e27ec8bb Merge branch 'MDL-77913' of https://github.com/paulholden/moodle 2023-04-14 14:02:08 +02:00
Sara Arjona ed53d81dc7 MDL-77842 badges: Improve debugging information for Badgr
In MDL-77086 some extra information was added when a badge can't be
sent to a backpack. However, as the Badgr is not following the
specification, it's still hard to debug it when it fails (as
raised in MDL-75552, Badgr is not working because, in some cases,
it's returning the "Method Not Allowed / Request method 'POST'
not supported" error.
2023-04-14 13:47:23 +02:00
Sara Arjona 440edc5e42 MDL-77735 core: Check $CFG->lang isset
In some cases, $CFG->lang might not be set, and this is causing a
Notice to be displayed when, for instance, database connection fails.
This patch should fix this case.
2023-04-14 13:46:18 +02:00
Huong Nguyen f5867c078d MDL-77827 events: Changed JSON comparison to be less strict 2023-04-14 12:28:55 +07:00
Paul Holden 62d48a1d47 MDL-77916 h5p: register autoloader in helper testcase. 2023-04-13 23:12:13 +01:00
Paul Holden dcdeb47f39 MDL-77913 qbank_previewquestion: deterministic ordering of versions.
Ensure the ordering of loaded question versions is consistent, avoids
random Oracle failures.
2023-04-13 21:13:41 +01:00
Ilya Tregubov 0fdd514f11 MDL-77324 gradereport_singleview: Make action menus consistent 2023-04-13 16:57:48 +08:00
Kevin Percy b9ad54bad8 MDL-76212 gradebook_nav: Fixed tertiary nav for smaller screens 2023-04-12 13:29:13 +08:00
Paul Holden aaf231551a MDL-77874 tiny_link: define help link text language string. 2023-04-06 19:08:03 +01:00
Paul Holden e80192f606 MDL-77770 gradereport_user: fix errors when no users to navigate. 2023-04-06 14:40:58 +01:00
Paul Holden 997713f43e MDL-77355 webservice: Behat scenario for adding service functions. 2023-04-06 11:58:53 +01:00
Matt Porritt 6abfde47dc MDL-77355 Web services: add function class not found
Fixes a regression caused by MDL-76583 That prevents functions
being added to new or existing external services.
2023-04-06 11:46:35 +01:00
Tim Hunt 47ff5c8e5b MDL-77785 quiz/question: display long question numbers better 2023-03-29 15:04:34 +01:00
Angelia Dela Cruz 374b6d8e0e MDL-77577 Behat: Replaced the use of "Install selected language pack(s)
Evaluated usage of "Install selected language pack(s)" in Behat and
replaced the steps to use generator to install language packs as part
of test setup.
2023-03-21 11:58:30 +08:00
623 changed files with 5599 additions and 1569 deletions
-3
View File
@@ -4110,9 +4110,6 @@
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
<FEEDBACK>
<ON_ERROR message="modassignmentinuse" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
+57
View File
@@ -0,0 +1,57 @@
<?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/>.
/**
* MoodleNet callback.
*
* @package core
* @copyright 2023 Huong Nguyen <huongnv13@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use core\moodlenet\moodlenet_client;
use core\oauth2\api;
require_once(__DIR__ . '/../config.php');
require_login();
// Parameters.
$issuerid = required_param('issuerid', PARAM_INT);
$error = optional_param('error', '', PARAM_RAW);
$message = optional_param('error_description', null, PARAM_RAW);
// Headers to make it not cacheable.
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
$PAGE->set_context(context_system::instance());
$PAGE->set_url('/admin/moodlenet_oauth2_callback.php');
$PAGE->set_pagelayout('popup');
// Wait as long as it takes for this script to finish.
core_php_time_limit::raise();
$issuer = api::get_issuer($issuerid);
$returnurl = new moodle_url('/admin/moodlenet_oauth2_callback.php');
$returnurl->param('issuerid', $issuerid);
$returnurl->param('callback', 'yes');
$returnurl->param('sesskey', sesskey());
$oauthclient = api::get_user_oauth_client($issuer, $returnurl, moodlenet_client::API_SCOPE_CREATE_RESOURCE, true);
$oauthclient->is_logged_in(); // Will upgrade the auth code to a token.
echo $OUTPUT->header();
$PAGE->requires->js_call_amd('core/moodlenet/oauth2callback', 'init', [$error, $message]);
echo $OUTPUT->footer();
+5
View File
@@ -33,6 +33,11 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
new lang_string('enablecourserelativedates', 'core_admin'),
new lang_string('enablecourserelativedates_desc', 'core_admin'), 0));
// Sharing to MoodleNet setting.
$temp->add(new admin_setting_configcheckbox('enablesharingtomoodlenet',
new lang_string('enablesharingtomoodlenet', 'core_admin'),
new lang_string('enablesharingtomoodlenet_desc', 'core_admin'), 0));
$ADMIN->add('experimental', $temp);
// "debugging" settingpage
+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/>.
/**
* This file gives information about MoodleNet.
*
* @package core
* @copyright 2023 Huong Nguyen <huongnv13@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
if ($hassiteconfig) {
if (!empty($CFG->enablesharingtomoodlenet)) {
if (!$ADMIN->locate('moodlenet')) {
$ADMIN->add('root', new admin_category('moodlenet', get_string('pluginname', 'tool_moodlenet')));
}
// Outbound settings page.
$settings = new admin_settingpage('moodlenetoutbound', new lang_string('moodlenet:outboundsettings', 'moodle'));
$ADMIN->add('moodlenet', $settings);
// Get all the issuers.
$issuers = \core\oauth2\api::get_all_issuers();
$oauth2services = [
'' => new lang_string('none', 'admin'),
];
foreach ($issuers as $issuer) {
// Get the enabled issuer with the service type is MoodleNet only.
if ($issuer->get('servicetype') == 'moodlenet' && $issuer->get('enabled')) {
$oauth2services[$issuer->get('id')] = s($issuer->get('name'));
}
}
$url = new \moodle_url('/admin/tool/oauth2/issuers.php');
$settings->add(new admin_setting_configselect('moodlenet/oauthservice', new lang_string('issuer', 'auth_oauth2'),
new lang_string('moodlenet:configoauthservice', 'moodle', $url->out()), '', $oauth2services));
}
}
+36 -36
View File
@@ -8,52 +8,52 @@ Feature: An administrator can manage Block plugins
Scenario: An administrator can control the enabled state of block plugins using JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
When I click on "Disable the Latest badges plugin" "link"
Then I should see "The Latest badges plugin has been disabled"
And "Disable the Latest badges plugin" "link" should not exist
But "Enable the Latest badges plugin" "link" should exist
When I click on "Enable the Latest badges plugin" "link"
Then I should see "The Latest badges plugin has been enabled"
And "Enable the Latest badges plugin" "link" should not exist
But "Disable the Latest badges plugin" "link" should exist
When I click on "Disable Latest badges" "link"
Then I should see "Latest badges disabled."
And "Disable Latest badges" "link" should not exist
But "Enable Latest badges" "link" should exist
When I click on "Enable Latest badges" "link"
Then I should see "Latest badges enabled."
And "Enable Latest badges" "link" should not exist
But "Disable Latest badges" "link" should exist
Scenario: An administrator can control the enabled state of block plugins without JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
When I click on "Disable the Latest badges plugin" "link"
Then I should see "The Latest badges plugin has been disabled"
And "Disable the Latest badges plugin" "link" should not exist
But "Enable the Latest badges plugin" "link" should exist
When I click on "Enable the Latest badges plugin" "link"
Then I should see "The Latest badges plugin has been enabled"
And "Enable the Latest badges plugin" "link" should not exist
But "Disable the Latest badges plugin" "link" should exist
When I click on "Disable Latest badges" "link"
Then I should see "Latest badges disabled."
And "Disable Latest badges" "link" should not exist
But "Enable Latest badges" "link" should exist
When I click on "Enable Latest badges" "link"
Then I should see "Latest badges enabled."
And "Enable Latest badges" "link" should not exist
But "Disable Latest badges" "link" should exist
@javascript
Scenario: An administrator can control the protected state of block plugins using JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
When I click on "Protect instances of the Latest badges block" "link"
Then I should see "The Latest badges block is now protected"
And "Protect instances of the Latest badges block" "link" should not exist
But "Unprotect instances of the Latest badges block" "link" should exist
And "Protect instances of the Activities block" "link" should exist
When I click on "Unprotect instances of the Latest badges block" "link"
Then I should see "The Latest badges block is no longer protected"
And "Unprotect instances of the Activities block" "link" should not exist
But "Protect instances of the Latest badges block" "link" should exist
And "Protect instances of the Activities block" "link" should exist
When I click on "Protect instances of Latest badges" "link"
Then I should see "Latest badges block instances are protected."
And "Protect instances of Latest badges" "link" should not exist
But "Unprotect instances of Latest badges" "link" should exist
And "Protect instances of Activities" "link" should exist
When I click on "Unprotect instances of Latest badges" "link"
Then I should see "Latest badges block instances are unprotected."
And "Unprotect instances of Activities" "link" should not exist
But "Protect instances of Latest badges" "link" should exist
And "Protect instances of Activities" "link" should exist
Scenario: An administrator can control the protected state of block plugins without JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
When I click on "Protect instances of the Latest badges block" "link"
Then I should see "The Latest badges block is now protected"
And "Protect instances of the Latest badges block" "link" should not exist
But "Unprotect instances of the Latest badges block" "link" should exist
And "Protect instances of the Activities block" "link" should exist
When I click on "Unprotect instances of the Latest badges block" "link"
Then I should see "The Latest badges block is no longer protected"
And "Unprotect instances of the Activities block" "link" should not exist
But "Protect instances of the Latest badges block" "link" should exist
And "Protect instances of the Activities block" "link" should exist
When I click on "Protect instances of Latest badges" "link"
Then I should see "Latest badges block instances are protected."
And "Protect instances of Latest badges" "link" should not exist
But "Unprotect instances of Latest badges" "link" should exist
And "Protect instances of Activities" "link" should exist
When I click on "Unprotect instances of Latest badges" "link"
Then I should see "Latest badges block instances are unprotected."
And "Unprotect instances of Activities" "link" should not exist
But "Protect instances of Latest badges" "link" should exist
And "Protect instances of Activities" "link" should exist
+16 -16
View File
@@ -8,23 +8,23 @@ Feature: An administrator can manage Media plugins
Scenario: An administrator can control the enabled state of media plugins using JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Media players > Manage media players" in site administration
When I click on "Disable the YouTube plugin" "link"
Then I should see "The YouTube plugin has been disabled"
And "Disable the YouTube plugin" "link" should not exist
But "Enable the YouTube plugin" "link" should exist
When I click on "Enable the YouTube plugin" "link"
Then I should see "The YouTube plugin has been enabled"
And "Enable the YouTube plugin" "link" should not exist
But "Disable the YouTube plugin" "link" should exist
When I click on "Disable YouTube" "link"
Then I should see "YouTube disabled."
And "Disable YouTube" "link" should not exist
But "Enable YouTube" "link" should exist
When I click on "Enable YouTube" "link"
Then I should see "YouTube enabled."
And "Enable YouTube" "link" should not exist
But "Disable YouTube" "link" should exist
Scenario: An administrator can control the enabled state of media plugins without JavaScript
Given I am logged in as "admin"
And I navigate to "Plugins > Media players > Manage media players" in site administration
When I click on "Disable the YouTube plugin" "link"
Then I should see "The YouTube plugin has been disabled"
And "Disable the YouTube plugin" "link" should not exist
But "Enable the YouTube plugin" "link" should exist
When I click on "Enable the YouTube plugin" "link"
Then I should see "The YouTube plugin has been enabled"
And "Enable the YouTube plugin" "link" should not exist
But "Disable the YouTube plugin" "link" should exist
When I click on "Disable YouTube" "link"
Then I should see "YouTube disabled."
And "Disable YouTube" "link" should not exist
But "Enable YouTube" "link" should exist
When I click on "Enable YouTube" "link"
Then I should see "YouTube enabled."
And "Enable YouTube" "link" should not exist
But "Disable YouTube" "link" should exist
@@ -0,0 +1,52 @@
@core @core_admin
Feature: MoodleNet outbound configuration
In order to send activity/resource to MoodleNet
As a Moodle administrator
I need to set outbound configuration
Background:
Given I log in as "admin"
Scenario: Share to MoodleNet experimental flag
Given I navigate to "Development > Experimental" in site administration
Then "Enable sharing to MoodleNet" "field" should exist
And the field "Enable sharing to MoodleNet" matches value "0"
Scenario: Outbound configuration without experimental flag enable yet
Given I navigate to "MoodleNet" in site administration
Then I should not see "MoodleNet outbound settings"
Scenario: Outbound configuration without OAuth 2 service setup yet
Given the following config values are set as admin:
| enablesharingtomoodlenet | 1 |
When I navigate to "MoodleNet" in site administration
Then I should see "MoodleNet outbound settings"
And I click on "MoodleNet outbound settings" "link"
And the field "OAuth 2 service" matches value "None"
And I should see "Select a MoodleNet OAuth 2 service to enable sharing to that MoodleNet site. If the service doesn't exist yet, you will need to create it."
And I click on "create" "link"
And I should see "OAuth 2 services"
Scenario: Outbound configuration with OAuth 2 service setup
Given a MoodleNet mock server is configured
And the following config values are set as admin:
| enablesharingtomoodlenet | 1 |
And I navigate to "Server > OAuth 2 services" in site administration
And I press "Custom"
And I should see "Create new service: Custom"
And I set the following fields to these values:
| Name | Testing custom service |
| Client ID | thisistheclientid |
| Client secret | supersecret |
And I press "Save changes"
When I navigate to "MoodleNet > MoodleNet outbound settings" in site administration
Then the field "OAuth 2 service" matches value "None"
And I navigate to "Server > OAuth 2 services" in site administration
And I press "MoodleNet"
And I should see "Create new service: MoodleNet"
And I change the MoodleNet field "Service base URL" to mock server
And I press "Save changes"
And I navigate to "MoodleNet > MoodleNet outbound settings" in site administration
And the "OAuth 2 service" "field" should be enabled
And I should see "MoodleNet" in the "OAuth 2 service" "select"
And I should not see "Testing custom service" in the "OAuth 2 service" "select"
+11 -1
View File
@@ -1,4 +1,4 @@
@core @core_admin
@core @core_admin @core_webservice
Feature: Web service user settings
In order to configure authorised users for a web service
As an admin
@@ -29,3 +29,13 @@ Feature: Web service user settings
Then I should see "User One" in the ".alloweduserlist" "css_element"
And I should see "1@example.org" in the ".alloweduserlist" "css_element"
And I should see "Kermit" in the ".alloweduserlist" "css_element"
@javascript
Scenario: Add a function to a web service
When I log in as "admin"
And I navigate to "Server > Web services > External services" in site administration
And I click on "Functions" "link" in the "Silly service" "table_row"
And I follow "Add functions"
And I set the field "Name" to "core_blog_get_entries"
And I click on "Add functions" "button" in the "#fgroup_id_buttonar" "css_element"
Then I should see "core_blog_get_entries" in the "generaltable" "table"
@@ -14,11 +14,11 @@ Feature: I can apply presets
Scenario: Applying Starter Moodle preset changes status and settings
# Checking the settings before applying Full Moodle preset (we're only testing one of each type).
Given I navigate to "Plugins > Activity modules > Manage activities" in site administration
And "Disable the Chat plugin" "icon" should exist in the "Chat" "table_row"
And "Disable Chat" "icon" should exist in the "Chat" "table_row"
And I navigate to "Plugins > Availability restrictions > Manage restrictions" in site administration
And "Hide" "icon" should exist in the "Restriction by grouping" "table_row"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
And "Disable the Logged in user plugin" "icon" should exist in the "Logged in user" "table_row"
And "Disable Logged in user" "icon" should exist in the "Logged in user" "table_row"
And I navigate to "Plugins > Course formats > Manage course formats" in site administration
And "Disable" "icon" should exist in the "Social format" "table_row"
And I navigate to "Plugins > Question behaviours > Manage question behaviours" in site administration
@@ -109,11 +109,11 @@ Feature: I can apply presets
And the field "Enable badges" matches value "0"
And the field "Enable competencies" matches value "0"
And I navigate to "Plugins > Activity modules > Manage activities" in site administration
And "Disable the Chat plugin" "icon" should not exist in the "Chat" "table_row"
And "Disable Chat" "icon" should not exist in the "Chat" "table_row"
And I navigate to "Plugins > Availability restrictions > Manage restrictions" in site administration
And "Hide" "icon" should not exist in the "Restriction by grouping" "table_row"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
And "Disable the Logged in user plugin" "icon" should not exist in the "Logged in user" "table_row"
And "Disable Logged in user" "icon" should not exist in the "Logged in user" "table_row"
And I navigate to "Plugins > Course formats > Manage course formats" in site administration
And "Disable" "icon" should not exist in the "Social format" "table_row"
And I navigate to "Plugins > Question behaviours > Manage question behaviours" in site administration
@@ -20,11 +20,11 @@ Feature: I can revert changes after a load
And the field "Enable badges" matches value "0"
And the field "Enable competencies" matches value "0"
And I navigate to "Plugins > Activity modules > Manage activities" in site administration
And "Disable the Chat plugin" "icon" should not exist in the "Chat" "table_row"
And "Disable Chat" "icon" should not exist in the "Chat" "table_row"
And I navigate to "Plugins > Availability restrictions > Manage restrictions" in site administration
And "Hide" "icon" should not exist in the "Restriction by grouping" "table_row"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
And "Disable the Logged in user plugin" "icon" should not exist in the "Logged in user" "table_row"
And "Disable Logged in user" "icon" should not exist in the "Logged in user" "table_row"
And I navigate to "Plugins > Course formats > Manage course formats" in site administration
And "Disable" "icon" should not exist in the "Social format" "table_row"
And I navigate to "Plugins > Question behaviours > Manage question behaviours" in site administration
@@ -39,11 +39,11 @@ Feature: I can revert changes after a load
Then the field "Enable badges" matches value "1"
And the field "Enable competencies" matches value "1"
And I navigate to "Plugins > Activity modules > Manage activities" in site administration
And "Disable the Chat plugin" "icon" should exist in the "Chat" "table_row"
And "Disable Chat" "icon" should exist in the "Chat" "table_row"
And I navigate to "Plugins > Availability restrictions > Manage restrictions" in site administration
And "Hide" "icon" should exist in the "Restriction by grouping" "table_row"
And I navigate to "Plugins > Blocks > Manage blocks" in site administration
And "Disable the Logged in user plugin" "icon" should exist in the "Logged in user" "table_row"
And "Disable Logged in user" "icon" should exist in the "Logged in user" "table_row"
And I navigate to "Plugins > Course formats > Manage course formats" in site administration
And "Disable" "icon" should exist in the "Social format" "table_row"
And I navigate to "Plugins > Question behaviours > Manage question behaviours" in site administration
+2 -2
View File
@@ -26,5 +26,5 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_admin_presets';
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_analytics'; // Full name of the plugin (used for diagnostics).
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_availabilityconditions';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022120900; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_behat'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -25,5 +25,5 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_brickfield';
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_capability'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112801; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_cohortroles'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -21,6 +21,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_componentlibrary';
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$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 = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_dataprivacy';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_dbtransfer'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_filetypes';
@@ -47,9 +47,8 @@ $string['coursesize_2'] = 'M (~100MB; create in ~2 minutes)';
$string['coursesize_3'] = 'L (~1GB; create in ~30 minutes)';
$string['coursesize_4'] = 'XL (~10GB; create in ~2 hours)';
$string['coursesize_5'] = 'XXL (~20GB; create in ~4 hours)';
$string['additionalmodules'] = 'Additional modules';
$string['additionalmodules_help'] = 'We normally create standard modules in the course (like forum, page or label),
but you can select any other module that implements the course_backend_generator_create_activity function.';
$string['additionalmodules'] = 'Additional activities';
$string['additionalmodules_help'] = 'Select more activities that implement the course_backend_generator_create_activity function to include in the test course.';
$string['coursewithoutusers'] = 'The selected course has no users';
$string['createcourse'] = 'Create course';
$string['createtestplan'] = 'Create test plan';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_generator';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // 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 = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // 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 = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->maturity = MATURITY_STABLE;
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400;
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_licensemanager';
$plugin->maturity = MATURITY_STABLE;
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'logstore_database'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'logstore_standard'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_log'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_lp'; // Full name of the plugin (used for diagnostics).
+3 -3
View File
@@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_lpimportcsv'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array('tool_lp' => 2022111800);
$plugin->dependencies = array('tool_lp' => 2023041800);
+2 -2
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_lpmigrate'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
'tool_lp' => ANY_VERSION
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_messageinbound';
+3 -3
View File
@@ -23,9 +23,9 @@
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_mobile'; // Full name of the plugin (used for diagnostics).
$plugin->dependencies = array(
'webservice_rest' => 2022111800
'webservice_rest' => 2023041800
);
+2 -2
View File
@@ -26,6 +26,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_monitor'; // Full name of the plugin (used for diagnostics).
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$string['autoenablenotification'] = '<p>In Moodle 4.0 onwards, the <a href="https://moodle.net/">MoodleNet</a> integration is enabled by default in Advanced features. Users with the capability to create and manage activities can browse MoodleNet via the activity chooser and import MoodleNet resources into their courses.</p><p>If desired, an alternative MoodleNet instance may be specified in the <a href="{$a->settingslink}">MoodleNet settings</a>.</p>';
$string['autoenablenotification'] = '<p>In Moodle 4.0 onwards, the <a href="https://moodle.net/">MoodleNet</a> integration is enabled by default in Advanced features. Users with the capability to create and manage activities can browse MoodleNet via the activity chooser and import MoodleNet resources into their courses.</p><p>If desired, an alternative MoodleNet instance may be specified in the <a href="{$a->settingslink}">MoodleNet inbound settings</a>.</p>';
$string['autoenablenotification_subject'] = 'Default MoodleNet setting changed.';
$string['addingaresource'] = 'Adding content from MoodleNet';
$string['aria:enterprofile'] = "Enter your MoodleNet profile ID";
@@ -38,7 +38,7 @@ $string['defaultmoodlenet_desc'] = 'The URL of the MoodleNet instance available
$string['defaultmoodlenetname'] = "MoodleNet instance name";
$string['defaultmoodlenetnamevalue'] = 'MoodleNet Central';
$string['defaultmoodlenetname_desc'] = 'The name of the MoodleNet instance available via the activity chooser.';
$string['enablemoodlenet'] = 'Enable MoodleNet integration';
$string['enablemoodlenet'] = 'Enable MoodleNet integration (inbound)';
$string['enablemoodlenet_desc'] = 'If enabled, a user with the capability to create and manage activities can browse MoodleNet via the activity chooser and import MoodleNet resources into their course. In addition, a user with the capability to restore backups can select a backup file on MoodleNet and restore it into Moodle.';
$string['errorduringdownload'] = 'An error occurred while downloading the file: {$a}';
$string['forminfo'] = 'Your MoodleNet profile ID will be automatically saved in your profile on this site.';
@@ -55,7 +55,7 @@ $string['missinginvalidpostdata'] = 'The resource information from MoodleNet is
If this happens repeatedly, please contact the site administrator.';
$string['mnetprofile'] = 'MoodleNet profile';
$string['mnetprofiledesc'] = '<p>Enter your MoodleNet profile details here to be redirected to your profile while visiting MoodleNet.</p>';
$string['moodlenetsettings'] = 'MoodleNet settings';
$string['moodlenetsettings'] = 'MoodleNet inbound settings';
$string['moodlenetnotenabled'] = 'The MoodleNet integration must be enabled in Site administration / MoodleNet before resource imports can be processed.';
$string['notification'] = 'You are about to import the content "{$a->name} ({$a->type})" into your site. Select the course in which it should be added, or <a href="{$a->cancellink}">cancel</a>.';
$string['removedmnetprofilenotification'] = 'Due to recent changes on the MoodleNet platform, any users who previously saved their MoodleNet profile ID on the site will need to enter a MoodleNet profile ID in the new format in order to authenticate on the MoodleNet platform.';
+3 -1
View File
@@ -35,7 +35,9 @@ if ($hassiteconfig) {
// Create a MoodleNet category.
if (get_config('tool_moodlenet', 'enablemoodlenet')) {
$ADMIN->add('root', new admin_category('moodlenet', get_string('pluginname', 'tool_moodlenet')));
if (!$ADMIN->locate('moodlenet')) {
$ADMIN->add('root', new admin_category('moodlenet', get_string('pluginname', 'tool_moodlenet')));
}
// Our settings page.
$settings = new admin_settingpage('tool_moodlenet', get_string('moodlenetsettings', 'tool_moodlenet'));
$ADMIN->add('moodlenet', $settings);
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'tool_moodlenet';
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->maturity = MATURITY_ALPHA;
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_multilangupgrade'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_oauth2'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_phpunit'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_policy'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_profiling'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_recyclebin'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_replace'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'tool_spamcleaner'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112801; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_task'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -21,6 +21,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_templatelibrary'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_unsuproles'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_uploadcourse'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_uploaduser'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current module version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current module version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_usertours'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'tool_xmldb'; // Full name of the plugin (used for diagnostics)
+1 -1
View File
@@ -196,7 +196,7 @@ class external_service_functions_form extends moodleform {
//we add the descriptions to the functions
foreach ($functions as $functionid => $functionname) {
//retrieve full function information (including the description)
$function = external_api::external_function_info($functionname);
$function = \core_external\external_api::external_function_info($functionname);
if (empty($function->deprecated)) {
$functions[$functionid] = $function->name . ':' . $function->description;
} else {
+3 -3
View File
@@ -26,8 +26,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_cas'; // Full name of the plugin (used for diagnostics)
$plugin->dependencies = array('auth_ldap' => 2022111800);
$plugin->dependencies = array('auth_ldap' => 2023041800);
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_db'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_email'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_ldap'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_lti'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_manual'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_mnet'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_nologin'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_none'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_oauth2'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_shibboleth'; // Full name of the plugin (used for diagnostics)
+7 -8
View File
@@ -18,17 +18,16 @@ Feature: Test if the login form provides the correct feedback
Scenario: Test login language selector
Given remote langimport tests are enabled
And I log in as "admin"
And I navigate to "Language > Language packs" in site administration
And I set the field "Available language packs" to "nl,es"
And I press "Install selected language pack(s)"
And I trigger cron
And I am on homepage
And I log out
And the following "language packs" exist:
| language |
| nl |
| es |
And the following config values are set as admin:
| langmenu | 1 |
And I follow "Log in"
And I open the action menu in "region-main" "region"
# The line below contains the unicode character U+200E before and after the brackets, please be very careful editing this line.
And I choose "Nederlands (nl)" in the open action menu
When I choose "Nederlands (nl)" in the open action menu
Then I should see "Gebruikersnaam"
@_file_upload
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'auth_webservice'; // Full name of the plugin (used for diagnostics)
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_completion';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_date';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_grade';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_group';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_grouping';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'availability_profile';
+1 -1
View File
@@ -156,7 +156,7 @@ abstract class backup implements checksumable {
* point is backup when some behavior/approach channged, in order to allow
* conditional coding based on it.
*/
const VERSION = 2022112800;
const VERSION = 2023042400;
/**
* Usually same than major release zero version, mainly for informative/historic purposes.
*/
+19 -4
View File
@@ -228,11 +228,26 @@ class backpack_api2p1 {
$msg['status'] = \core\output\notification::NOTIFY_SUCCESS;
$msg['message'] = get_string('addedtobackpack', 'badges');
} else {
$statuserror = $response->status->error;
if (is_array($statuserror)) {
if ($response) {
// Although the specification defines that status error is a string, some providers, like Badgr, are wrongly
// returning an array. It has been reported, but adding this extra check doesn't hurt, just in case.
$statuserror = implode($statuserror);
// returning an array. It has been reported, but adding these extra checks doesn't hurt, just in case.
if (
property_exists($response, 'status') &&
is_object($response->status) &&
property_exists($response->status, 'error')
) {
$statuserror = $response->status->error;
if (is_array($statuserror)) {
$statuserror = implode($statuserror);
}
} else if (property_exists($response, 'error')) {
$statuserror = $response->error;
if (property_exists($response, 'message')) {
$statuserror .= '. Message: ' . $response->message;
}
}
} else {
$statuserror = 'Empty response';
}
$data = [
'badgename' => $data['assertion']['badge']['name'],
+2 -2
View File
@@ -26,8 +26,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'block_accessreview';
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->dependencies = array(
'tool_brickfield' => ANY_VERSION,
);
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_activity_modules'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_activity_results'; // Full name of the plugin (used for diagnostics).
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_admin_bookmarks'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_badges';
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_blog_menu'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_blog_recent'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_blog_tags'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_calendar_month'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_calendar_upcoming'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_comments'; // Full name of the plugin (used for diagnostics)
+3 -3
View File
@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_completionstatus';
$plugin->dependencies = array('report_completion' => 2022111800);
$plugin->dependencies = array('report_completion' => 2023041800);
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_course_list'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_course_summary'; // Full name of the plugin (used for diagnostics)
+3 -3
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_feedback'; // Full name of the plugin (used for diagnostics)
$plugin->dependencies = array('mod_feedback' => 2022111800);
$plugin->dependencies = array('mod_feedback' => 2023041800);
+2 -2
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die;
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'block_globalsearch';
@@ -17,7 +17,7 @@ Feature: Add the glossary random block when main feature is enabled
Scenario: The glossary random block cannot be added when glossary module is disabled
Given I navigate to "Plugins > Activity modules > Manage activities" in site administration
And I click on "Disable the Glossary plugin" "icon" in the "Glossary" "table_row"
And I click on "Disable Glossary" "icon" in the "Glossary" "table_row"
And I am on "Course 1" course homepage with editing mode on
When I click on "Add a block" "link"
Then I should not see "Random glossary entry"
@@ -15,7 +15,7 @@ Feature: Add the glossary random block when main feature is disabled
And I add the "Random glossary entry" block to the default region with:
| Title | Random glossary entry |
When I navigate to "Plugins > Activity modules > Manage activities" in site administration
And I click on "Disable the Glossary plugin" "icon" in the "Glossary" "table_row"
And I click on "Disable Glossary" "icon" in the "Glossary" "table_row"
And I am on "Course 1" course homepage with editing mode on
Then I should see "Random glossary entry"
@@ -29,7 +29,7 @@ Feature: Add the glossary random block when main feature is disabled
And I click on "Cancel" "button" in the "Delete block?" "dialogue"
And I should see "Random glossary entry"
When I navigate to "Plugins > Activity modules > Manage activities" in site administration
And I click on "Disable the Glossary plugin" "icon" in the "Glossary" "table_row"
And I click on "Disable Glossary" "icon" in the "Glossary" "table_row"
And I am on "Course 1" course homepage with editing mode on
And I open the "Random glossary entry" blocks action menu
And I click on "Delete Random glossary entry block" "link" in the "Random glossary entry" "block"
+3 -3
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_glossary_random'; // Full name of the plugin (used for diagnostics)
$plugin->dependencies = array('mod_glossary' => 2022111800);
$plugin->dependencies = array('mod_glossary' => 2023041800);
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_html'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2022111800; // Requires this Moodle version.
$plugin->version = 2023042400; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2023041800; // Requires this Moodle version.
$plugin->component = 'block_login'; // Full name of the plugin (used for diagnostics)
+2 -2
View File
@@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2022112800;
$plugin->requires = 2022111800;
$plugin->version = 2023042400;
$plugin->requires = 2023041800;
$plugin->component = 'block_lp';
$plugin->dependencies = array(
'tool_lp' => ANY_VERSION

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