Compare commits

...

777 Commits

Author SHA1 Message Date
Huong Nguyen 375a116337 Moodle release 3.11.18 2023-12-08 09:21:33 +07:00
Sara Arjona 48798148dc weekly release 3.11.17+ 2023-12-07 16:22:22 +01:00
Paul Holden f5226e5c14 MDL-79980 mod_survey: remove responses link if user cannot access. 2023-12-07 12:09:53 +01:00
Brendan Heywood 48c204698d MDL-80309 tasks: Clean up mtrace logs 2023-12-07 12:07:22 +08:00
Paul Holden f988260db0 MDL-79980 mod_survey: respect activity group mode getting report. 2023-12-07 09:13:12 +08:00
Stephan Robotta 20b9a7964a MDL-41465 reports: In separate group mode, limit to same group users 2023-12-06 13:48:29 +07:00
Huong Nguyen 4301eca208 MDL-79759 repository_url: Remove types properties 2023-12-05 08:47:01 +07:00
David Woloszyn b4aa28fb2a MDL-79759 repository_url: Limit css imports and remove fragments
There are checks to urls that attempt to limit recurrsion when
parse_file is called. This is problematic for css import urls that
can call an indefinite amount of nested import urls. An import limit
has been introduced to address this. Fragments have also been removed.
2023-12-04 15:08:04 +07:00
Stevani Andolo 803e4c5c2e MDL-80174 tool_log: ensure "other" data is safely unserialized. 2023-12-04 13:41:58 +07:00
Paul Holden fe65dccec9 MDL-80268 badges: require capability to view awarded badges. 2023-12-04 10:16:01 +07:00
Paul Holden 6bddc0f54a MDL-79797 backup: ensure block config is safely unserialized. 2023-12-01 06:14:20 +01:00
Ilya Tregubov edced24880 weekly release 3.11.17+ 2023-12-01 13:12:48 +08:00
Ilya Tregubov a2b130b597 Merge branch 'MDL-79603-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-11-28 13:55:08 +08:00
Huong Nguyen f53220798a weekly release 3.11.17+ 2023-11-24 12:23:59 +07:00
Huong Nguyen cfaabc4c5e Merge branch 'MDL-78496-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-11-23 09:24:24 +07:00
Andrew Nicols f02bdb5abc MDL-78496 environment: Moodle 4.4 requirements
The only changes to requirements since Moodle 4.3 are increases to:

* the minimum PHP version required; and
* the minimum required Moodle version.
2023-11-17 21:50:16 +08:00
Sara Arjona 77aee43990 weekly release 3.11.17+ 2023-11-16 16:23:00 +01:00
Sara Arjona 2058a17103 Merge branch 'MDL-79981-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-11-15 17:10:42 +01:00
Angelia Dela Cruz 461c5253ac MDL-79603 mod_scorm: Behat coverage for Scorm package display options 2023-11-15 12:57:13 +08:00
Ilya Tregubov fb4c35353e weekly release 3.11.17+ 2023-11-10 09:17:34 +08:00
Ilya Tregubov e2cd341d74 Merge branch 'MDL-80029-311' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2023-11-09 09:36:58 +08:00
Andrew Nicols 28c0b1da10 MDL-79981 core: Add ability to manually run and filter phpunit on GHA 2023-11-08 12:54:21 +08:00
Jun Pataleta a4c5b3bbc7 MDL-80029 grade: Behat test fixes
* Feature: We can use a minimum grade different than zero
  - Use correct minimum input values.
  - Use data generators for faster test execution.
* Scenario: Disable category overriding
  - Use the field name to ensure that the correct field is being tested.

Cherry-picked from MDL-79062.
2023-11-07 20:46:21 +08:00
Jun Pataleta f4877790f9 weekly release 3.11.17+ 2023-10-27 09:43:22 +08:00
Jun Pataleta 41bd964b36 Merge branch 'MDL-79768-311-fix' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-10-26 23:05:07 +08:00
Angelia Dela Cruz 71356844b9 MDL-79768 fix: Fixed random failing Behat due to time difference 2023-10-26 17:35:23 +08:00
Jun Pataleta 714f288a2a Merge branch 'MDL-79768-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-10-26 10:46:46 +08:00
Angelia Dela Cruz 781b4aad36 MDL-79768 mod_data: Test for student can see upcoming data activity 2023-10-23 08:42:45 +08:00
Sara Arjona 0db96976f2 weekly release 3.11.17+ 2023-10-20 12:16:45 +02:00
Huong Nguyen 687b9e88ac Merge branch 'MDL-79689-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-10-19 10:06:34 +07:00
Angelia Dela Cruz 2c265507e2 MDL-79689 mod_assign: Behat for enabling anonymous submissions 2023-10-18 12:24:21 +08:00
Ilya Tregubov 1f30f4b61a Merge branch 'MDL-79691-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-10-17 10:30:28 +08:00
Angelia Dela Cruz 811738c8f3 MDL-79691 mod_h5pactivity: Behat coverage for H5P activity grades reset 2023-10-16 17:59:02 +08:00
Huong Nguyen 28008f4218 Merge branch 'MDL-79698-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-10-16 11:41:24 +07:00
Huong Nguyen cf24a2993a Merge branch 'MDL-79653-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-10-16 10:56:13 +07:00
Andrew Nicols a1c66cd1bb MDL-79698 core: Correct duplicate array key in test provider 2023-10-13 15:44:48 +08:00
Ilya Tregubov bd61d3f99d weekly release 3.11.17+ 2023-10-13 13:39:52 +08:00
Angelia Dela Cruz 7a04961d55 MDL-79653 gradingform_guide: Behat coverage for deleting marking guide 2023-10-13 11:37:37 +08:00
Huong Nguyen 46d014e89a Merge branch 'MDL-79638-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-10-12 11:09:08 +07:00
Andrew Nicols 6c96bcd1ee MDL-79638 phpunit: Add unit test for increment resets 2023-10-11 00:10:33 +08:00
Andrew Nicols 0c5e7442b9 MDL-79638 phpunit: Adjust version checks for mysql/mariadb hack
This hack was introduced to work around a bug in MySQL 5.6.14 and
MariaDB at the time.

https://bugs.mysql.com/bug.php?id=69882

It was addressed a few months later in 5.6.16, and 5.7.4.
MariaDB merged version 5.6.16 of MySQL's InnoDB engine in MariaDB
10.0.11 and got the patch from there.

Moodle has required MySQL 5.7, and MariaDB 10.2.29 since Moodle 3.11 and
it is therefore safe to remove these hacks for these versions.
2023-10-11 00:03:42 +08:00
Jun Pataleta a11ca2d1ff Moodle release 3.11.17 2023-10-07 11:30:05 +08:00
Sara Arjona e2d19fccdd weekly release 3.11.16+ 2023-10-06 14:02:42 +02:00
Paul Holden 6e211165a5 MDL-79310 enrol: restrict searched users to those user can view. 2023-10-04 14:32:16 +08:00
Paul Holden cb041cbdf6 MDL-79310 forumreport_summary: report only on users who can be viewed. 2023-10-04 14:32:15 +08:00
Paul Holden e2e653ea38 MDL-79310 mod_forum: ensure only visible users can be exported. 2023-10-04 14:32:15 +08:00
Mikel Martín c5ff2f6ab2 MDL-79509 mod_wiki: Improve comment editing 2023-10-04 02:04:16 +02:00
Paul Holden 73280a536f MDL-72249 message: stricter cleaning of processor type parameter. 2023-10-04 02:04:16 +02:00
Paul Holden 119feea95d MDL-79426 gradeimport_csv: safely preview CSV content during import. 2023-10-04 02:04:16 +02:00
Paul Holden ae87081d8f MDL-79455 tool_uploadcourse: clean course data fields individually. 2023-10-04 02:04:16 +02:00
Paul Holden c7969fb552 MDL-79455 tool_uploadcourse: safe preview of uploaded course data. 2023-10-04 02:04:16 +02:00
Paul Holden 1f2fbeb50c MDL-79409 mod_imscp: appropriate unserialization of package structure. 2023-10-04 02:04:16 +02:00
Paul Holden c7728de187 MDL-79408 mod_lesson: safer unserializing/comparison of properties. 2023-10-04 02:04:16 +02:00
David Woloszyn 9ecef71191 MDL-77846 core: Make endpoint revision number checks stricter
In some places we prevented cache poisoning, in others we did not. We
also did not place any restriction on the minimum value for a revision.

This change introduces a new set of functions for configonly endpoints
which validates the revision numbers passed in. If the revision is
either too old, or too new, it is rejected and the file content is not
cached. The content is still served, but caching headers are not sent,
and any local storage caching is prevented.

The current time is used as the maximum version, with 60 seconds added
to allow for any clock skew between cluster nodes. Previously some
locations used one hour, but there should never be such a large clock
skew on a correctly configured system.

Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2023-10-04 02:04:16 +02:00
Huong Nguyen 691c09afac MDL-66730 core_course: Improve permission check for category moving
Co-authored-by: Erica Bithell <egb10@cam.ac.uk>
2023-10-04 02:04:16 +02:00
Paul Holden 17d208e98b MDL-78820 h5p: use fullname of current user as the xAPI actor name. 2023-10-04 02:04:16 +02:00
meirzamoodle 382d16e311 MDL-78969 oauth2: remove auto-login after successful confirmation
With the new flow, users can go to the login page from the confirmed page,
and if the user successfully logs in, the user will be directed to the confirmed page.
To avoid that, the confirmed page can only be seen by users who are not logged in.
2023-10-04 02:04:16 +02:00
Jun Pataleta b807f99700 weekly release 3.11.16+ 2023-10-04 07:49:27 +08:00
Huong Nguyen 79fe14d66f Merge branch 'MDL-79247_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-10-03 09:58:52 +07:00
Eloy Lafuente (stronk7) ee20a85b7c MDL-79247 forum: Workaround same-time discussion modified dates bug
Within the forum_get_discussion_neighbours() function of forum
when the discussions timemodified (last post) is the same, there
is a bug that does strange things when calculating the prev and
next discussions.

Note that, in real life, this is really hard to achieve, but in tests,
when multiple discussions and post can be created by generators in the
same second (specially when the test machine is quick), chances of
facing that problem are higher.

By adding 1 second wait, we ensure that the discussions won't have
the same timemodified (last post) and workaround the problem.

No mater of that, the problem deserves an issue to be created
so we guarantee from code that it also works ok when the same
timemodified (last post) situation happens.
2023-10-01 23:47:32 +02:00
Eloy Lafuente (stronk7) d47d059ca0 MDL-79247 forum: Make discussion list ordering deterministic
Note that normally this doesn't matter much, but there are situations
when we want the discussion list ordering fully consistent /
deterministic.

Specifically, when discussions (or forum posts )are created in the
same second, or when the discussion titles are repeated, or 2
discussions have the same number of votes... (any criteria in general),
in the context of testing, we don't want the order
to be non-consistent, so we need to provide an extra sorting
criterion to make it fully deterministic.

So, in this case, we are adding a sort by discussion.id <<DIRECTION>>
that is an unique value, primary key... so cheap to calculate and,
that way, when the 1st sorting column has repeated values, the id
will decide.
2023-10-01 23:47:32 +02:00
Jun Pataleta 94695eb456 weekly release 3.11.16+ 2023-09-29 22:07:32 +08:00
Ilya Tregubov 972fc66150 Merge branch 'MDL-79360/311' of https://github.com/skodak/moodle into MOODLE_311_STABLE 2023-09-28 09:39:41 +08:00
Sara Arjona f31ece632b weekly release 3.11.16+ 2023-09-15 17:34:28 +02:00
Petr Skoda 5394d544e9 MDL-79360 filter: fix nolink tag regression from MDL-77525 2023-09-15 12:46:00 +02:00
Ilya Tregubov eba8369828 Merge branch 'MDL-79220-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-09-14 17:44:40 +08:00
Ilya Tregubov 3a5ca89951 Merge branch 'MDL-79195-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-09-14 09:39:01 +08:00
Ilya Tregubov 113b846fa9 Merge branch 'MDL-78806-311' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2023-09-13 10:56:32 +08:00
Eloy Lafuente (stronk7) 4b72a9bf3f weekly release 3.11.16+ 2023-09-12 18:54:17 +02:00
Angelia Dela Cruz 5a2f76afa8 MDL-79195 core_course: Activity and resource description display behat 2023-09-12 12:54:19 +08:00
Huong Nguyen 52377ed1eb Merge branch 'MDL-79246-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-09-12 08:52:19 +07:00
Jun Pataleta 5cf07cf084 MDL-78806 mod_assign: Use new Behat step for checking page title 2023-09-10 23:34:31 +08:00
Jun Pataleta d61bd0f37f MDL-78806 behat: Create a step that for checking the page title
Create a Behat step "the page title should contain ':title'" to check
the page title.
2023-09-10 23:34:31 +08:00
Jun Pataleta 8a0e29ef91 weekly release 3.11.16+ 2023-09-08 22:35:24 +08:00
Angelia Dela Cruz b436c50274 MDL-79220 mod_glossary: Behat for glossary entry with attachment 2023-09-07 10:52:00 +08:00
Ilya Tregubov 605edbd719 Merge branch 'MDL-76459_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-09-06 10:04:13 +08:00
Andrew Nicols c30664ffc9 MDL-79246 gradingform_rubric: Use i_click_on for behat clicks 2023-09-04 09:13:16 +08:00
Eloy Lafuente (stronk7) 63111e47bf MDL-76459 xmldb: Add environmental check to verify $CFG->prefix
While, right now, sites using long (> 10 chars) $CFG->prefix
can continue working (because we still don't have any table
> 28 chars), as soon as some new table with long name is added,
it won't work with PostgreSQL anymore (if the 63 limit is raised).

Hence, this environmental check will verify on both install and
upgrade that the $CFG->prefix is always <= 10 chars.

Sites with longer prefixes will need to rename all their tables
(and maybe other objects, depending on the dbtype) to use a shorter
prefix.
2023-09-02 09:22:44 +02:00
Andrew Nicols 9b652a2582 weekly release 3.11.16+ 2023-09-02 08:18:44 +08:00
Andrew Nicols bce7262140 Merge branch 'MDL-77831-311' of https://github.com/mickhawkins/moodle into MOODLE_311_STABLE 2023-09-01 10:38:58 +08:00
Jun Pataleta 70612970af Merge branch 'MDL-79017-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-08-31 20:31:45 +08:00
Michael Hawkins e13ca87976 MDL-77831 core: Updated security.txt expiry and added additional info 2023-08-31 18:30:08 +08:00
Huong Nguyen 3179d4ec0e Merge branch 'MDL-79207-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-08-31 12:28:01 +07:00
Angelia Dela Cruz fc85f207c1 MDL-79207 core_course: Behat coverage for activity and resource deletion 2023-08-31 11:28:58 +08:00
Jun Pataleta 2863ae670e weekly release 3.11.16+ 2023-08-26 11:03:35 +08:00
Jun Pataleta d5f69200ea Merge branch 'MDL-79015-311-fix' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-08-25 09:54:59 +08:00
Simey Lameze f712df8c43 MDL-79015 behat: make verification step more specific 2023-08-25 09:04:26 +08:00
Sara Arjona 6caf5df4a5 Merge branch 'MDL-78965-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-08-24 16:38:59 +02:00
Jun Pataleta 74cf92acb4 Merge branch 'MDL-79015-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-08-24 15:53:27 +08:00
Angelia Dela Cruz 4ae3175b67 MDL-78965 mod_quiz: Behat coverage for quiz with certainty-based marking 2023-08-24 15:26:26 +08:00
Angelia Dela Cruz 1d02e9afab MDL-79015 mod_lesson: Behat coverage for lesson with access restriction 2023-08-24 13:44:40 +08:00
Jun Pataleta 696d6390d4 Merge branch 'MDL-78941-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-08-24 13:05:28 +08:00
Angelia Dela Cruz 14d0110ac6 MDL-78941 mod_quiz: Behat coverage for student flagging quiz questions 2023-08-24 11:34:22 +08:00
Huong Nguyen 3c25374cc4 Merge branch 'MDL-78843-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-08-24 08:58:56 +07:00
Paul Holden 8461a18143 MDL-79017 core: re-factor method to unserialize array.
We can use the existing helper for object unserialization as the
base for this method, rather than manual string parsing.
2023-08-21 21:02:51 +01:00
Ilya Tregubov a1dee0fff4 weekly release 3.11.16+ 2023-08-18 11:24:08 +08:00
Eloy Lafuente (stronk7) f5f6c30829 Merge branch 'MDL-78684-311-fix-2' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-08-17 19:58:08 +02:00
Simey Lameze 7c45d12dce MDL-78684 behat: fix behat failures 2023-08-17 21:16:31 +08:00
Jun Pataleta b87e6ac0e6 Merge branch 'MDL-78938-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-08-17 09:57:04 +08:00
Andrew Nicols b89030e3ee Merge branch 'MDL-77695-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-08-16 23:23:50 +08:00
Andrew Nicols b0f04ad753 Merge branch 'MDL-78684-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-08-16 22:45:15 +08:00
Simey Lameze b24d54ac5a MDL-77695 behat: use automatic completion to award badges 2023-08-16 21:16:11 +08:00
Andrew Nicols 307c7244f0 MDL-78938 course: Wrap manual completion toggle in pending
This commit makes two changes to reduce random failures in behat:
- wrap the toggling of manually configured completion in pendingjs
- set the loading spinner content without forcing the completion toggle
  ws to wait for the loading spinner to update.
2023-08-16 21:03:03 +08:00
Andrew Nicols 5ddc9ac171 MDL-78938 report_progres: Wrap completion status update in pending 2023-08-16 21:03:03 +08:00
Shamim Rezaie 37b991918e Moodle release 3.11.16 2023-08-11 23:20:22 +10:00
Huong Nguyen aed88796f8 weekly release 3.11.15+ 2023-08-10 22:51:02 +07:00
meirzamoodle e46177eb1a MDL-78685 auth_oauth2: Added logged-in status check 2023-08-10 18:46:04 +07:00
Jun Pataleta dddcb38ff6 MDL-78620 auth_cas: Pass base service URL for the CAS client
Since phpCAS v1.6.0, a required base service URL parameterneeds to be
passed to phpCAS::client(). This is basically the protocol, hostname,
and port number (optional) of the site connecting to the CAS server
in order for it to perform service URL discovery.
2023-08-10 18:46:04 +07:00
Jun Pataleta 62dd642610 MDL-78620 auth_cas: Bump thirdpartylibs version to 1.6.0 2023-08-10 18:46:04 +07:00
Jun Pataleta 036108f486 MDL-78620 auth_cas: Update phpCAS to v1.6.0 2023-08-10 18:46:03 +07:00
David Woloszyn 6950b44344 MDL-78620 lib: Set Moodle files after phpCAS upgrade 2023-08-10 18:46:03 +07:00
David Woloszyn da28e80a2a MDL-78620 lib: Upgrade phpCAS to 1.5.0 2023-08-10 18:46:03 +07:00
cescobedo 47929214db MDL-78620 auth_cas: Set Moodle files after phpCAS upgrade 2023-08-10 18:46:03 +07:00
cescobedo 7acab0852e MDL-78620 auth_cas: Upgrade phpCAS to 1.4.0 2023-08-10 18:46:03 +07:00
Michael Hawkins 3f5aeb8baa MDL-78763 tool_policy: Initialise returnurl as a moodle_url in viewall 2023-08-10 18:46:02 +07:00
Paul Holden 9a200b3ef9 MDL-78792 message: access checks in processor fragment callback. 2023-08-10 18:46:02 +07:00
raortegar 21f8789306 MDL-74289 lib: Improve the proxy bypass matching 2023-08-10 18:45:58 +07:00
Simey Lameze d51b5bf5b1 MDL-78843 behat: update get_forum_id to search for idnumber or name
This commit also converts manual steps to create discussions on the
Annoucements forum to data generator.
2023-08-10 10:13:50 +08:00
Paul Holden 3fda948413 MDL-78647 files: safer unserializing of file reference data. 2023-08-09 06:34:16 +02:00
Shamim Rezaie f156d2b1bf MDL-66212 tool_lpimport: properly check capabilities
The moodle/competency:competencymanage capability should be checked
before showing the import and export pages.
2023-08-09 06:34:16 +02:00
Matt Porritt 5223ac3ac5 MDL-78340 Blocks: Dashboards now respect block permission overrides
Patch makes user dashboard respect permission overrides
that have been set on individual blocks on the system
dashboard (indexsys.php). When a user dashboard is created
either when the user visits their dashboard for the first
time or after an admin reset. When blcoks are copied to
the new dashbaord overriden permissions are also copied.
2023-08-09 06:34:16 +02:00
Rajneel Totaram b4f26f1564 MDL-71728 mod_quiz: check if user can access this page 2023-08-09 06:34:16 +02:00
David Woloszyn 15cd073a2f MDL-74544 lib: Set Moodle files after JQuery UI upgrade 2023-08-09 12:28:25 +08:00
David Woloszyn f86061e840 MDL-74544 lib: Upgrade JQuery UI to 1.13.2 2023-08-09 12:28:25 +08:00
Sara Arjona 30844ce06e weekly release 3.11.15+ 2023-08-04 12:40:20 +02:00
Jun Pataleta c718f276ff MDL-78498 mod_forum: Prevent race condition in forum recent activity
* Using the generator to create the forum discussions, the timecreated
of a discussion can be set before the user's last course access which
will prevent forum_print_recent_activity() from including this generated
discussion in the recent activity results. To work around this, generate
the forum discussion 1 second after the current time to make sure that
the user's last course access will always be before the discussion's
creation time.
* This patch also includes some optimisations by:
  - Removing the unnecessary @javascript tag for the
    `Time limit expires` scenario
  - Bringing the discussion generation to each scenario to allow each
    scenario to customise the data passed to the generator like for the
    `Time limit expires` scenario.
  - Navigating directly to the forum instance.
2023-08-03 11:33:45 +08:00
Jun Pataleta 38138a121e Merge branch 'MDL-78498-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-08-02 11:22:38 +08:00
Sara Arjona 799684f2e0 Merge branch 'MDL-78703-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-08-01 13:45:31 +02:00
Simey Lameze d415e8be91 MDL-78498 behat: add support for private replies
This commit adds support for private replies in the
'the following forum replies exist in course' custom step.
2023-08-01 19:14:14 +08:00
Angelia Dela Cruz 7368e0021b MDL-78498 Behat: Use data generators for forum posts and replies
This commit does few things:
* Replace manual forum posts and replies to use data generator.
* It also changes the code to handle social forums.
* Other behat clean-ups and optimization.

Co-authored-by: Simey Lameze <simey@moodle.com>
2023-08-01 19:14:13 +08:00
Angelia Dela Cruz 59dd8d9c07 MDL-78684 Behat: Replace gradebook navigation to use page resolvers
This commit also does other things such as:
- Replace manual steps to setup gradebook by data generators
- Added support for outcomes and scales page resolvers
- Behat clean up
2023-08-01 15:52:07 +08:00
Huong Nguyen c36111bfbb weekly release 3.11.15+ 2023-07-21 20:56:40 +07:00
Paul Holden f9b1542e04 MDL-78703 behat: fix HTTP GET method capitalization on redirect. 2023-07-15 01:00:13 +01:00
Ilya Tregubov 697bca3e32 weekly release 3.11.15+ 2023-07-14 09:25:50 +08:00
Eloy Lafuente (stronk7) 4d2208917e Merge branch 'MDL-78673-311-fix' of https://github.com/sarjona/moodle into MOODLE_311_STABLE 2023-07-12 19:02:45 +02:00
Sara Arjona 6123ba63f9 MDL-78673 behat: Replace arrow function 2023-07-12 18:42:17 +02:00
Sara Arjona f7162366b9 Merge branch 'MDL-78673-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-07-12 18:18:36 +02:00
Andrew Nicols 5126b097b6 Merge branch 'MDL-77450-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-07-13 00:10:51 +08:00
Sara Arjona 8fa5121518 Merge branch 'MDL-78455-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-07-12 17:37:33 +02:00
Andrew Nicols b08037be76 MDL-78673 grade: Switch test to use generators 2023-07-11 22:23:00 +08:00
Andrew Nicols 3706532781 MDL-78673 grade: Switch to behat navigation steps 2023-07-11 22:22:59 +08:00
Andrew Nicols 7f33e77509 MDL-78673 grade: Address random failure due to toast 2023-07-11 22:22:59 +08:00
Angelia Dela Cruz c69064344c MDL-77450 Behat: Behat cleanup and optimisation 2023-07-11 15:14:16 +08:00
Andrew Nicols 42431fc1b4 MDL-78673 behat: Allow plugins to define their expansion of > 2023-07-10 11:35:32 +08:00
Ilya Tregubov 55610477be weekly release 3.11.15+ 2023-07-07 11:52:40 +08:00
Andrew Nicols 2ceac82771 Merge branch 'MDL-78614-311' of https://github.com/noeldemartin/moodle into MOODLE_311_STABLE 2023-07-05 20:31:38 +08:00
Andrew Nicols 6e982e8c72 Merge branch 'MDL-78158-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-07-05 10:24:48 +08:00
Angelia Dela Cruz b1136dbfe1 MDL-78158 behat: Behat cleanup and optimisation 2023-07-04 10:13:21 +08:00
Angelia Dela Cruz 804040d326 MDL-78158 Behat: Use data generators to add blocks 2023-07-04 09:52:43 +08:00
Noel De Martin 81ac46beae MDL-78614 behat: Remove trailing quotes 2023-07-03 11:19:10 +02:00
Huong Nguyen 5925e7cbcb weekly release 3.11.15+ 2023-06-29 22:22:31 +07:00
Jun Pataleta 991549f424 Merge branch 'MDL-76724_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-06-26 19:38:48 +08:00
Eloy Lafuente (stronk7) f917d4590b MDL-76724 environment: Moodle 4.3 requirements
Note that there aren't changes since Moodle 4.2
so this is a complete copy of the information
for that version.
2023-06-24 12:30:16 +02:00
Sara Arjona 785d7cee58 weekly release 3.11.15+ 2023-06-23 09:00:40 +02:00
Sara Arjona d08ff81ba8 Merge branch 'MDL-76635-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-06-21 14:02:45 +02:00
Simey Lameze 42420d357a MDL-76635 comment: render the delete icon in the right place
Special thanks to Andrew Lyons.
2023-06-21 12:45:52 +08:00
Simey Lameze 05e6efa16b MDL-76635 behat: improve submission comments test 2023-06-21 12:45:52 +08:00
Ilya Tregubov e77e73a8e2 Merge branch 'MDL-77525/311' of https://github.com/skodak/moodle into MOODLE_311_STABLE 2023-06-20 13:07:12 +08:00
Jun Pataleta e798660dc1 Merge branch 'MDL-74021-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-06-20 10:13:06 +08:00
Angelia Dela Cruz b21d7aede1 MDL-74021 behat: Page behat generators use UI
Replace steps that manually add page instances via the UI and use
Behat generators. This improves the speed of Behat test runs.

Co-authored-by: Simey Lameze <simey@moodle.com>
2023-06-19 17:22:33 +08:00
Petr Skoda d38ae1d215 MDL-77525 filter: add filtering stages 2023-06-17 17:13:21 +02:00
Andrew Nicols 6e54dc5203 weekly release 3.11.15+ 2023-06-16 12:04:40 +08:00
Angelia Dela Cruz 06774fbb9b MDL-78455 Behat: Behat cleanup and optimisation for blog/tests/behat 2023-06-16 09:25:34 +08:00
Angelia Dela Cruz f94af12e67 MDL-78455 Behat: Add Behat for adding, editing and deleting blog entries 2023-06-16 09:24:40 +08:00
Ilya Tregubov 107da5270d Merge branch 'MDL-70152-311-fix' of https://github.com/ilyatregubov/moodle into MOODLE_311_STABLE 2023-06-15 12:11:41 +08:00
Simey Lameze f725c3e1fb MDL-70152 behat: reply to post using data generator 2023-06-15 12:08:33 +08:00
Andrew Nicols 3c8547bf8a Merge branch 'MDL-69231-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-06-15 10:57:45 +08:00
Ilya Tregubov 4e68d7da17 Merge branch 'MDL-76733-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-06-15 10:25:29 +08:00
Andrew Nicols cdc7bf120e MDL-76733 mod_assign: Remove JS requirement for time-based tests
Converting these tests to use an onlinetext submission and drop the JS
requirement means that they are much less susceptible to runtime issues,
and not susceptible to those caused by JS at all.
2023-06-15 09:34:37 +08:00
Sara Arjona c13bc0271f Merge branch 'MDL-76733-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-06-14 16:22:56 +02:00
Ilya Tregubov 17c8d1679e Merge branch 'MDL-70152-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-06-14 13:26:03 +08:00
Ilya Tregubov bfbae65caa Moodle release 3.11.15 2023-06-10 14:07:30 +08:00
Ilya Tregubov 8c52e7ca55 weekly release 3.11.14+ 2023-06-09 13:14:36 +08:00
Andrew Nicols fc66630f6c Merge branch 'wip_MDL-78400_m311' of https://github.com/gjb2048/moodle into MOODLE_311_STABLE 2023-06-08 10:59:13 +08:00
Andrew Nicols 9464e3449e Merge branch 'MDL-76406-311' of https://github.com/safatshahin/moodle into MOODLE_311_STABLE 2023-06-08 10:43:23 +08:00
Stevani Andolo 65ab20645a MDL-78215 core: Added support unit test 2023-06-08 09:37:41 +08:00
Stevani Andolo 41afb596e6 MDL-78215 core: support checking if 0.0.0.0 is in subnet 2023-06-08 09:37:40 +08:00
Paul Holden 224a3af976 MDL-77193 mnet: correct sorting of access control table. 2023-06-07 09:54:12 +08:00
Gareth Barnard 78cf3e1b49 MDL-78400 JavaScript: Building JS puts build files in src dir on Win. 2023-06-05 14:47:52 +01:00
Simey Lameze 9f48fa5d8e MDL-69231 behat: remaining work for role capability generator
This commit does few things:
* Unify data generators usage to role short name.
* Replace remaining manual steps to use the new data generator.
* Also replaced other manual steps to set config to use data generators.
* Tidy up of some tests, aligning pipes and splitting one line steps into multiple lines.
* Fixes tests to have one Given/When/Then per scenario.
2023-06-02 12:37:13 +08:00
Andrew Nicols d2e7608fec MDL-69231 behat: Update tests to use new generator 2023-06-02 12:37:13 +08:00
Andrew Nicols 9a5085071f MDL-69231 tests: Add role capability setting generator 2023-06-02 12:37:13 +08:00
Andrew Nicols 48b626591c MDL-69231 tests: Improve existing role generator
Support definition of context levels and permissions.
2023-06-02 12:37:13 +08:00
Safat e7240a2adb MDL-76406 core: Add environment check for versions not supporting 8.2 2023-06-02 12:10:07 +10:00
Petr Skoda bbf492040e MDL-76683 core_group: fix template 2023-06-02 02:04:16 +00:00
Ilya Tregubov 5291b32c63 weekly release 3.11.14+ 2023-06-02 09:55:53 +08:00
Ilya Tregubov 2c636fe760 Merge branch 'MDL-75961-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-06-01 09:09:27 +08:00
Sara Arjona 8dca7193e7 Merge branch 'MDL-77907-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-05-31 12:18:28 +02:00
Angelia Dela Cruz df762bf9b8 MDL-70152 behat: Forum behat generators use UI
Behat cleanup and optimisation
2023-05-29 10:22:03 +08:00
Angelia Dela Cruz d063f12fb8 MDL-70152 behat: Forum behat generators use UI
Replace steps that manually add forum and forum post instances
via the UI and use Behat generators. This improves the speed of
Behat test runs.
2023-05-29 10:21:49 +08:00
Andrew Nicols e5f5aaeba1 MDL-70152 forum: Create behat data generator
* Convert track_read_posts.feature to use activity and discussion
data generators as exmaple.

Co-authored-by: Jun Pataleta <jun@moodle.com>
2023-05-29 10:21:49 +08:00
Sara Arjona 9dbb082f04 weekly release 3.11.14+ 2023-05-26 09:29:05 +02:00
Jun Pataleta 87e29b9b4a Merge branch 'MDL-76065-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-05-25 11:57:34 +08:00
Andrew Nicols 6e21aa585a Merge branch 'MDL-77995-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-05-25 09:51:08 +08:00
Simey Lameze a3f8c78437 MDL-75961 behat: review and enhance mod_imscp tests
This commit makes the following improvements to mod_imscp tests:
* Removes unnecessary @javascript and @_file_upload tags from non-JS tests.
* Removes user/enrol data generation from tests that can be performed as admin.
* Removes "I log out" and other unnecessary steps.
2023-05-24 10:43:19 +08:00
Angelia Dela Cruz c2454323b2 MDL-75961 behat: IMSCP behat generators use UI
Replace steps that manually add IMSCP instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2023-05-24 10:43:19 +08:00
Jun Pataleta 1ca2a55381 Merge branch 'MDL-76688/311' of https://github.com/skodak/moodle into MOODLE_311_STABLE 2023-05-23 15:21:40 +08:00
Simey Lameze a989d788c7 MDL-76065 behat: Review and enhance mod_lti Behat tests
In this commit, the following improvements were made to the mod_lti Behat tests:

* Replaced manual steps with data generators to set completion.
* Eliminated unnecessary user and course enrolments data generation as some tests can be performed as an admin.
* Removed the @javascript tag from non-JS tests.
* Updated the LTI data generator to generate an internal Moodle URL in the toolurl field, enabling the use of XML files.
2023-05-23 12:35:01 +08:00
Angelia Dela Cruz e5830e234d MDL-76065 behat: LTI behat generators use UI
Replace steps that manually add LTI instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2023-05-23 12:32:05 +08:00
Andrew Nicols b7a6083509 MDL-76733 mod_assign: Tidy up availability behat tests
This feature had lots of small issues and it made sense to fix it whilst
investigating a query:

* most of the steps do not require JavaScript
* it uses the UI to set an admin setting, for every scenario:
** only 3-4 of the scenarios actually test that setting
** it is very slow to do it his way when we have a generator step we can use
* we create two assignments in the Background, but each test only uses one of them
* we create the assignments in the Background with a generator, but
  update them to modify various settings in each Scenario using the UI
  when we should just create one assignment for each test and set it up
  correctly for that Scenario
2023-05-23 11:12:27 +08:00
Jun Pataleta f459ae270b weekly release 3.11.14+ 2023-05-19 21:14:09 +08:00
Andrew Nicols 5d14b0b0c2 MDL-77733 behat: Remove extraneous no-axe option
There is no need for no-axe if we make axe a boolean value. We already
have automatic support for negated boolean flags.
2023-05-19 11:28:29 +08:00
Andrew Nicols b1fc632e5c MDL-77733 behat: Correct version number in upgrade.txt 2023-05-18 13:28:28 +08:00
Andrew Nicols 35c252a91d Merge branch 'MDL-77733-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-05-18 13:27:53 +08:00
Angelia Dela Cruz fa96021455 MDL-77907 Behat: Coverage for duplicating competency framework 2023-05-15 17:24:52 +08:00
Petr Skoda 2edc104c11 MDL-76688 filter_text: prevent LaTeX3 syntax 2023-05-08 10:13:04 +02:00
Sara Arjona 63555942ce weekly release 3.11.14+ 2023-05-04 12:43:09 +02:00
Jun Pataleta 6f2aca4839 Merge branch 'MDL-76857-311' of https://github.com/sarjona/moodle into MOODLE_311_STABLE 2023-05-02 15:44:30 +08:00
Sara Arjona 15224105f4 MDL-76857 filter_displayh5p: Improve behat tests
Although the screenshots in the failures for some of the scenarios in
filter/displayh5p/tests/behat/h5p_filter.feature, like "Render a local
H5P file as teacher" were displaying the expected result, there were
some javascript errors (probably due to behat is quicker and the
iframes were not always ready).
I've added one extra step before accessing the iframe to give more
time to the H5P player to load and confirm the page is displayed
properly.
2023-04-27 11:22:42 +02:00
Paul Holden 0aa9dce2a3 MDL-77995 javascript: more precise path matching building JS. 2023-04-24 10:51:23 +01:00
Jun Pataleta 9d8ec047be Moodle release 3.11.14 2023-04-22 16:22:30 +08:00
Eloy Lafuente (stronk7) 731ff89794 weekly release 3.11.13+ 2023-04-21 19:19:29 +02:00
Eloy Lafuente (stronk7) a9ca81e8c9 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-04-21 19:19:24 +02:00
Jun Pataleta d3f5a3c2cc Merge branch 'MDL-77927-311' of https://github.com/stevandoMoodle/moodle into MOODLE_311_STABLE 2023-04-21 16:51:20 +08:00
Jun Pataleta 5f8d85fe23 MDL-77927 core: mod_assignment subplugins environment check 2023-04-21 15:57:36 +08:00
AMOS bot 4f793fe59a Automatically generated installer lang files 2023-04-21 00:07:34 +00:00
Paul Holden 3fd0b34805 MDL-77187 mod_wiki: validate external method sort parameters. 2023-04-19 12:54:30 +00:00
Paul Holden eeae907302 Merge branch 'MDL-77960-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-04-19 13:41:35 +01:00
Paul Holden 767104a1ff Merge branch 'MDL-77944-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-04-19 13:06:43 +01:00
Simey Lameze 9e0e54e3c0 MDL-77960 behat: make verification steps more specific 2023-04-19 13:33:49 +08:00
Andrew Nicols 8eaed7a7eb weekly release 3.11.13+ 2023-04-18 22:28:21 +08:00
Andrew Nicols a3e3a3f251 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-04-18 22:28:18 +08:00
Andrew Nicols 1b0c425ade Merge branch 'MDL-77829-311' of https://github.com/stevandoMoodle/moodle into MOODLE_311_STABLE 2023-04-18 12:34:17 +08:00
Andrew Nicols 93bfa46f5e 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:04:24 +08:00
AMOS bot f4e40a3eb8 Automatically generated installer lang files 2023-04-18 00:07:31 +00:00
Sara Arjona b379d31219 weekly release 3.11.13+ 2023-04-14 10:50:19 +02:00
Sara Arjona 05ab49e052 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-04-14 10:50:16 +02:00
AMOS bot 81c5a10527 Automatically generated installer lang files 2023-04-14 00:07:37 +00:00
Sara Arjona ddfd85697f Merge branch 'MDL-73610_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-04-12 18:20:03 +02:00
Sara Arjona e2c90dd430 Merge branch 'MDL-77837-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-04-11 12:13:27 +02:00
Stevani Andolo 83aa818f08 MDL-77829 core: Added environment check for mod_assignment
Decided to add an environment check before uninstalling the
mod_assignment plugin to prevent data lost.
2023-04-10 13:55:55 +08:00
AMOS bot 9ece6979c1 Automatically generated installer lang files 2023-04-07 00:07:26 +00:00
Andrew Nicols 5e6ae141ce MDL-77837 core: Improve usage docs for cron_setup_user 2023-04-06 23:21:29 +08:00
Andrew Nicols eaa34a048b MDL-77837 phpunit: Ensure that the cron user setter is used
When running an adhoc task in a unit test we should use the cron variant
of the set user method to mimic the behaviour of a real cron run.
2023-04-06 23:21:29 +08:00
Andrew Nicols 5837ade0ea MDL-77837 cron: Ensure user is set when running tasks
We should be proactive in ensuring that the environment is clean when
running a task. We already ensure that we have a clean renderer and
other parts of the output chain, but we were not setting a clean user.

This change adds a call to setup the cron user before each task is
actually executed.
2023-04-06 23:21:29 +08:00
Eloy Lafuente (stronk7) cddda7483d MDL-73610 nodejs: Small updates to required packages
The main goal of this issue is to avoid scanners (Dependabot
and friends), reporting about security issues with the current
xmldom 0.6.0 package.

Note that this doesn't affect prod at all, because it's a dev
dependency, hardly exploitable. So it's not a security fix, just
a security_benefit, if something.

So here, we are updating from xmldom 0.6.0 to @xmldom/xmldom 0.8.7
(note that the package was renamed in 0.7.0, so it's the very same)

Also, when proceeding with the changes, it was detected that we
are incorrectly declaring @babel/eslint-parser as a normal dependency
instead of a development one, so we are also fixing that little detail.

The commands executed to get the changes above applied have been:

- nvm use
- npm install @xmldom/xmldom@^0.8.7 --save-dev
- npm uninstall xmldom
- npm install @babel/eslint-parser@^7.17.0 --save-dev

(we haven't run a complete re-install because we only want to modify
the minimum possible at this stage).
2023-04-06 15:00:03 +02:00
Sara Arjona ca59050173 weekly release 3.11.13+ 2023-04-06 14:02:34 +02:00
Sara Arjona 3334ab4821 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-04-06 14:02:29 +02:00
AMOS bot b409a71f4f Automatically generated installer lang files 2023-04-06 00:07:31 +00:00
AMOS bot 49d7941d81 Automatically generated installer lang files 2023-04-05 00:07:34 +00:00
Andrew Nicols c211a5854f Merge branch 'MDL-77584-311' of https://github.com/ewallah/moodle into MOODLE_311_STABLE 2023-04-04 12:08:01 +08:00
Simey Lameze 3ffc2ed914 MDL-77733 behat: enable Axe accessibility tests by default 2023-04-04 09:21:48 +08:00
AMOS bot cf7c308bcf Automatically generated installer lang files 2023-04-04 00:07:35 +00:00
Paul Holden abc9f31fa3 Merge branch 'MDL-75906-311' of https://github.com/mickhawkins/moodle into MOODLE_311_STABLE 2023-04-03 14:54:06 +01:00
Michael Hawkins 3178ffa04a MDL-75906 core: Updated security.txt expiry 2023-04-03 17:27:56 +08:00
AMOS bot 513bf77347 Automatically generated installer lang files 2023-04-02 00:07:30 +00:00
AMOS bot 48f24504ca Automatically generated installer lang files 2023-04-01 00:07:38 +00:00
Paul Holden e4918f1e1d weekly release 3.11.13+ 2023-03-31 18:12:01 +01:00
Paul Holden 516d111d94 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-31 18:11:59 +01:00
AMOS bot fa348c3a04 Automatically generated installer lang files 2023-03-31 00:07:34 +00:00
Sara Arjona 11b53571e6 Merge branch 'MDL-77761-311' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2023-03-30 17:53:32 +02:00
Jun Pataleta d1fd4c2660 Merge branch 'MDL-77333_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-03-30 19:03:26 +08:00
AMOS bot 9bd8cdae36 Automatically generated installer lang files 2023-03-30 00:07:37 +00:00
Jun Pataleta 54ed5324ac MDL-77761 core_form: Add label for editor format selector 2023-03-28 23:34:02 +08:00
Eloy Lafuente (stronk7) f1095d111e MDL-77333 mod_resource: fixes generator uploading files + tests
MDL-76499 revealed a few problems with resource generators:

1. We were not covering with unit tests the upload of files from disk
   (and here it's where the problem was).
2. There was a little of confusion between disk paths (only needed
   to upload files) and file_area paths (the generator only creates
   or uploads files to the root directory of the file area.
3. It was possible to request the upload of a file to the generator
   without that file effectively existing.

This commit fixes those points  and covers 99% of the generator code.
2023-03-26 11:44:16 +02:00
AMOS bot 4f62cc1df2 Automatically generated installer lang files 2023-03-26 00:07:33 +00:00
Sara Arjona 170be96134 weekly release 3.11.13+ 2023-03-24 13:59:41 +01:00
Jun Pataleta 8fd2717282 Merge branch 'MDL-77669-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-24 11:51:15 +08:00
Paul Holden 51d69fa94b Merge branch 'MDL-77691-311' of https://github.com/roland04/moodle into MOODLE_311_STABLE 2023-03-23 11:43:44 +00:00
Mikel Martín dcce6d99df MDL-77691 behat: Add step to navigate to profile page directly
Co-authored-by: Simey Lameze <simey@moodle.com>
2023-03-23 08:24:52 +01:00
Ilya Tregubov e978042e2a weekly release 3.11.13+ 2023-03-22 09:37:18 +08:00
Ilya Tregubov 939202d95d Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-22 09:37:16 +08:00
Meirza 23c31f017f MDL-77669 dml: Added extrainfo in the DB options config.
extrainfo is an extra information for the DB driver, e.g. SQL Server,
has additional configuration according to its environment,
which the administrator can specify to alter and override any connection options.

Co-authored-by: LukeCarrier <luke@carrier.im>

This is a backport of MDL-64153.
2023-03-21 08:48:38 +08:00
Sara Arjona 9b3cf25838 Merge branch 'MDL-77574-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-03-20 17:06:18 +01:00
AMOS bot a034c0a53b Automatically generated installer lang files 2023-03-20 00:07:34 +00:00
AMOS bot d3eea84c50 Automatically generated installer lang files 2023-03-19 00:07:29 +00:00
AMOS bot 455ca43140 Automatically generated installer lang files 2023-03-18 00:07:34 +00:00
Sara Arjona 7d8be2a715 weekly release 3.11.13+ 2023-03-17 17:58:44 +01:00
Sara Arjona cf33bc4411 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-17 17:58:37 +01:00
AMOS bot a9d42baf99 Automatically generated installer lang files 2023-03-17 00:07:36 +00:00
info@eWallah.net b073419601 MDL-77584 currencies: Fix outdated ISO 4217 code for Zambian Kwacha
On 2013-01-01 the ZMK code got replaced by the new ZMW code.

AMOS BEGIN
 MOV [ZMK,core_currencies],[ZMW,core_currencies]
AMOS END
2023-03-16 19:53:31 +01:00
Jun Pataleta 3b1ca1610e Merge branch 'MDL-77611_311' of https://github.com/timhunt/moodle into MOODLE_311_STABLE 2023-03-15 10:00:37 +08:00
AMOS bot 2ba187b91b Automatically generated installer lang files 2023-03-15 00:07:32 +00:00
Eloy Lafuente (stronk7) 0249b9f16f weekly release 3.11.13+ 2023-03-14 16:07:49 +01:00
Eloy Lafuente (stronk7) 9a45a3fa3f Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-14 16:07:45 +01:00
Jun Pataleta 223a90679b Merge branch 'MDL-76680/311' of https://github.com/skodak/moodle into MOODLE_311_STABLE 2023-03-14 11:57:01 +08:00
AMOS bot b7d4a3280c Automatically generated installer lang files 2023-03-14 00:07:34 +00:00
Tim Hunt ac15d110ba MDL-77611 tool_uploaduser: fix phpunit assumptions about profile fields 2023-03-13 13:36:42 +00:00
Simey Lameze 9f1de216a4 MDL-77574 myoverview: wait until next button exists before clicking 2023-03-13 14:18:50 +08:00
AMOS bot 0b083a7f6f Automatically generated installer lang files 2023-03-12 00:07:38 +00:00
Petr Skoda aa0d711a6f MDL-76680 core: disable $USER->ignoresesskey on next page 2023-03-11 10:37:45 +01:00
Jun Pataleta cd71612cf6 Moodle release 3.11.13 2023-03-11 13:10:27 +08:00
Jun Pataleta a4874cb9c5 weekly release 3.11.12+ 2023-03-10 22:10:03 +08:00
Jun Pataleta 90818a22ad Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-10 22:10:01 +08:00
Ilya Tregubov 28bb2b50d6 Merge branch 'MDL-77429-311-fix' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-10 14:50:40 +08:00
Andrew Nicols 28d6953d48 MDL-77429 course: Change course date to previous day
When a test runs just after midnight, and the user time zone is not the
same as the server timezone, and the course is created using a generator
(which runs in server time zone) but the UI presented in the user
timezone, the course start time is still in the future.

We need to create the course a day earlier to ensure that the "This
week" indicator is in the correct day.
2023-03-10 14:11:23 +08:00
Jun Pataleta c7b3edf823 Merge branch 'MDL-77458-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-10 12:05:56 +08:00
Andrew Nicols 880e150587 Merge branch 'MDL-77429-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-09 22:12:39 +08:00
Andrew Nicols 760a316679 Merge branch 'MDL-77463-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-09 22:04:24 +08:00
Jun Pataleta 525f816567 Merge branch 'MDL-77559-311-2' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-09 15:46:24 +08:00
Angelia Dela Cruz 40b1954431 MDL-77463 Behat: Coverage for assign submission notification to teacher 2023-03-09 12:56:39 +08:00
Angelia Dela Cruz 9f152581f0 MDL-77429 Behat: Add coverage for changing course format as teacher 2023-03-09 10:01:40 +08:00
Andrew Nicols 1a624afb87 MDL-77559 js: Rebuild all JS with Node 16 2023-03-09 08:22:29 +08:00
Andrew Nicols f80a3bce0a MDL-77559 js: Revert "MDL-75012 core: Bump NodeJS version requirements"
This reverts commit fb8fa74655.
2023-03-09 08:21:22 +08:00
Andrew Nicols 4deb1eea56 MDL-77559 js: Revert "MDL-75012 js: Bump standard dependencies"
This reverts commit 811526b0a6.
2023-03-09 08:21:19 +08:00
Andrew Nicols 77c72b0bd7 MDL-77559 js: Revert "MDL-75012 js: Remove grunt-contrib-uglify"
This reverts commit d01eba812b.
2023-03-09 08:21:15 +08:00
Andrew Nicols a15df02640 MDL-77559 js: Revert "MDL-75012 js: Bump stylelint and components"
This reverts commit 9899fc0a0f.
2023-03-09 08:21:12 +08:00
Andrew Nicols e5dd087852 MDL-77559 js: Revert "MDL-75012 js: Update browserslist"
This reverts commit c920bb6db5.
2023-03-09 08:21:07 +08:00
Andrew Nicols f46643fd61 MDL-77559 js: Revert "MDL-75012 js: Bump node-sass"
This reverts commit 173b61bf69.
2023-03-09 08:21:03 +08:00
Andrew Nicols 426e58d35d MDL-77559 js: Revert "MDL-75012 js: Audit fix"
This reverts commit dfea25b3d7.
2023-03-09 08:20:57 +08:00
Andrew Nicols be86e18ff1 MDL-77559 js: Revert "MDL-75012 js: Use our own jsdoc wrapper"
This reverts commit a22e2aa0d7.
2023-03-09 08:20:53 +08:00
Andrew Nicols d33aa94074 MDL-77559 js: Revert "MDL-75012 js: Bump shifter to new version"
This reverts commit 0ebccd5bb4.
2023-03-09 08:20:49 +08:00
Andrew Nicols 47fcb7c012 MDL-77559 js: Revert "MDL-75012 js: Put shifter on a diet"
This reverts commit 8d6e0dc416.
2023-03-09 08:20:45 +08:00
Andrew Nicols 7fd65d8896 MDL-77559 js: Revert "MDL-75012 js: Remove unused babel-preset-minify dependency"
This reverts commit 35ef8a9e40.
2023-03-09 08:20:42 +08:00
Andrew Nicols 4ad6481a77 MDL-77559 js: Revert "MDL-75012 js: Bump Babel dependencies"
This reverts commit 0a95429dce.
2023-03-09 08:19:26 +08:00
AMOS bot 40d01acce6 Automatically generated installer lang files 2023-03-09 00:07:34 +00:00
Ilya Tregubov f5daf410af Merge branch 'MDL-77414-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-08 17:06:17 +08:00
Angelia Dela Cruz 40510605e4 MDL-77414 Behat: Coverage for "Require all group members submit" setting 2023-03-08 14:52:46 +08:00
Petr Skoda b436508b24 MDL-77524 filter_algebra: fix error message 2023-03-08 11:27:28 +08:00
Paul Holden 98bbce7011 MDL-75517 report_participation: filter report by viewable roles only. 2023-03-08 10:38:29 +08:00
Michael Hawkins 04d74da325 MDL-77204 mod_wiki: Clean filename in Moodle1 backup 2023-03-08 10:34:18 +08:00
Paul Holden 90c5358680 MDL-77046 availability: validate profile field in condition. 2023-03-08 10:24:37 +08:00
Paul Holden 882b9d67f5 MDL-76809 gradereport_history: pre-filter report userids filter.
Ensure current user is able to access each of the provided userids.
2023-03-08 10:01:32 +08:00
Ilya Tregubov 591ffa267d Merge branch 'MDL-77446-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-08 09:20:01 +08:00
AMOS bot 7c10813e02 Automatically generated installer lang files 2023-03-08 00:07:36 +00:00
Petr Skoda a099b1d893 MDL-76645 filter_data: fix link title attribute 2023-03-07 14:49:50 +00:00
Lars Bonczek 39ab1182d9 MDL-75659 core: Don't render component argument twice in mustache pix helper 2023-03-07 14:49:50 +00:00
Angelia Dela Cruz 9e5bf8d4d5 MDL-77446 Behat: Add coverage for changing uploaded file details 2023-03-07 16:14:34 +08:00
AMOS bot fc2ed595d9 Automatically generated installer lang files 2023-03-07 00:07:34 +00:00
Jun Pataleta 86f1bf85c4 Merge branch 'MDL-77428-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-03 16:34:50 +08:00
Jake Dallimore 4e858410ea weekly release 3.11.12+ 2023-03-03 11:08:47 +08:00
Jake Dallimore dd581ff3f5 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-03-03 11:08:45 +08:00
Andrew Nicols 1a70b72b41 MDL-77458 core: Add supported php version info to phpcs config 2023-03-02 20:37:52 +08:00
Angelia Dela Cruz c7b2f34748 MDL-77428 Behat: Add coverage for forum post word count 2023-03-02 13:48:47 +08:00
Jun Pataleta ee828d828a Merge branch 'MDL-75012-311-5' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-02 12:25:04 +08:00
Andrew Nicols 499f651729 MDL-75012 js: Full build of all grunt things 2023-03-02 12:15:25 +08:00
Andrew Nicols 0a95429dce MDL-75012 js: Bump Babel dependencies
Please note that whilst some dependencies have higher versions
available, these are not compatible at this time.
2023-03-02 12:15:25 +08:00
Andrew Nicols 35ef8a9e40 MDL-75012 js: Remove unused babel-preset-minify dependency 2023-03-02 12:15:25 +08:00
Jake Dallimore 51dae0b04e Merge branch 'MDL-77461-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-03-02 11:43:09 +08:00
Andrew Nicols bc41f92872 MDL-77461 behat: Use get_course_id instead of DB fetch 2023-03-02 11:07:39 +08:00
Jun Pataleta 430b3e7043 Merge branch 'MDL-77413-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-03-02 09:45:42 +08:00
AMOS bot f6debec437 Automatically generated installer lang files 2023-03-02 00:07:38 +00:00
Jun Pataleta c4d91b4e42 Merge branch 'MDL-77417_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-03-01 23:53:54 +08:00
Andrew Nicols 98317ff91a Merge branch 'MDL-72727-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-03-01 10:47:27 +08:00
AMOS bot 21c5f2d453 Automatically generated installer lang files 2023-03-01 00:07:32 +00:00
Andrew Nicols 42ec6014c4 Merge branch 'MDL-77097_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-02-28 22:34:30 +08:00
Angelia Dela Cruz 45b81544c5 MDL-77413 Behat: Minor changes to optimise the existing tests 2023-02-28 17:38:14 +08:00
Angelia Dela Cruz f055b84644 MDL-77413 Behat: Add coverage to verify groups can have a picture 2023-02-28 17:25:04 +08:00
Andrew Nicols 8d6e0dc416 MDL-75012 js: Put shifter on a diet
This commit switches to a new custom version of Shifter which sees it
put on a massive diet.

Many of the standard Shifter features are totally unused by Moodle, but
they add dependency spaghetti. Some of those dependencies will start to
cause us issues as they have not been updated for a very long time, are
no longer maintained, and are no longer compatible with anything
resembling a recent version of NodeJS.
2023-02-28 11:10:32 +08:00
Andrew Nicols 0ebccd5bb4 MDL-75012 js: Bump shifter to new version
This resolves an issue identified in 77083 which identified that GitHub
hashes shouldn't be treated as repeatable.

Whilst GitHub have reverted this change, it's still worth making this
change.
2023-02-28 11:10:32 +08:00
Andrew Nicols a22e2aa0d7 MDL-75012 js: Use our own jsdoc wrapper
grunt-jsdoc is abandoned and only works with an older version of jsdoc.

This is a very simple wrapper around jsdoc itself.
2023-02-28 11:10:32 +08:00
Andrew Nicols dfea25b3d7 MDL-75012 js: Audit fix 2023-02-28 11:10:32 +08:00
Andrew Nicols 173b61bf69 MDL-75012 js: Bump node-sass 2023-02-28 11:10:32 +08:00
Andrew Nicols c920bb6db5 MDL-75012 js: Update browserslist 2023-02-28 11:10:31 +08:00
Andrew Nicols 9899fc0a0f MDL-75012 js: Bump stylelint and components 2023-02-28 10:19:24 +08:00
Andrew Nicols d01eba812b MDL-75012 js: Remove grunt-contrib-uglify
We stopped using this when we updated our processes to support ESMs in
MDL-62497. Removal of the dependency was missed at the time.
2023-02-28 10:19:23 +08:00
Andrew Nicols 811526b0a6 MDL-75012 js: Bump standard dependencies
This change bumps dependencies which have no impact upon the build
process
2023-02-28 10:19:23 +08:00
Andrew Nicols fb8fa74655 MDL-75012 core: Bump NodeJS version requirements 2023-02-28 10:19:23 +08:00
Paul Holden 36e2f7d5a3 MDL-72727 mod_forum: prevent default favourite toggle click event.
Allow the repository call to the web service method to complete before
re-directing, otherwise the call may not complete and/or races against
the page reload causing random Behat errors.
2023-02-27 23:30:43 +00:00
Eloy Lafuente (stronk7) 4fa6354d89 MDL-77417 behat: behat_error_handler meets deprecation error types
Right now, any E_DEPRECATED, E_USER_DEPRECATED error type leads
to exception in behat runs, because the behat error handled is
not aware of them. See MDL-38041 for the initial implementation.

We don't want that to happen and they must behave like other "low"
error types (notices, warnings...), that will be reported in logs
or output, but won't trigger any exception, so the test can continue.

This commit just adds those 2 "new" error types to the handler,
providing the very same behaviour for them than the rest.
2023-02-27 09:38:37 +01:00
Eloy Lafuente (stronk7) 7ed2a79297 MDL-77097 store_mongodb: keep compatibility with PHP 7.4
Replaced 4 occurrences of get_debug_type() by gettype() to keep PHP 7.4 compatibility. Note this
has not been applied to 4.2dev and up because, there, it's safe to use get_debug_type().
2023-02-24 12:39:03 +01:00
Jun Pataleta 65731963bc weekly release 3.11.12+ 2023-02-24 15:43:36 +08:00
Jun Pataleta 63c6f278a7 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-02-24 15:43:33 +08:00
Matt Porritt 474ee8524a MDL-77376 Licensing: Update trademark.txt
Update Trademark policy in TRADEMARK.txt to
be in line with advice from the Moodle HQ
legal team
2023-02-24 12:36:43 +08:00
Andrew Nicols 5956302d76 Merge branch 'MDL-76843_311' of https://github.com/timhunt/moodle into MOODLE_311_STABLE 2023-02-23 11:54:21 +08:00
Andrew Nicols 9121d889f5 Merge branch 'MDL-77271-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-02-23 11:49:48 +08:00
Tim Hunt af0aee7d2a MDL-76843 questions behat: enhancements requried to test this issue
* New steps to set up certian sorts of broken test data.
* Fix qtype_essay_question::un_summarise_response().
2023-02-22 15:25:32 +00:00
Simey Lameze 76fc2573ce MDL-77271 behat: verify user licence preference is remembered 2023-02-22 09:31:04 +08:00
AMOS bot d611739b3f Automatically generated installer lang files 2023-02-21 00:07:30 +00:00
Ilya Tregubov f638a5bbae weekly release 3.11.12+ 2023-02-17 09:12:33 +08:00
Ilya Tregubov 2079ba1387 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2023-02-17 09:12:31 +08:00
AMOS bot c12e3b46de Automatically generated installer lang files 2023-02-17 00:07:43 +00:00
Andrew Nicols bdb1aefaad Merge branch 'MDL-76478-password-unmask-MOODLE_311_STABLE' of https://github.com/brendanheywood/moodle into MOODLE_311_STABLE 2023-02-15 23:28:22 +08:00
Ilya Tregubov 6c48aaf4d9 Merge branch 'MDL-75230-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-15 16:13:32 +08:00
AMOS bot a745135867 Automatically generated installer lang files 2023-02-15 00:07:42 +00:00
Ilya Tregubov 2674350a47 Merge branch 'MDL-77189-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-02-13 13:44:38 +08:00
Simey Lameze 16cee3894e MDL-77189 behat: basic coverage for wikimedia repository 2023-02-13 13:24:03 +08:00
Paul Holden 5e943bf6ba weekly release 3.11.12+ 2023-02-10 13:47:41 +00:00
Angelia Dela Cruz 4d29785724 MDL-75230 behat: Lesson Behat tests optimised
Replace steps that manually add Lesson instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2023-02-10 17:44:33 +08:00
Andrew Nicols 733b90eef0 Merge branch 'MDL-76499-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-09 10:08:00 +08:00
Jun Pataleta 00385e7580 Merge branch 'MDL-74905_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-02-08 17:19:11 +08:00
Andrew Nicols 3b757a24eb Merge branch 'MDL-77123-311' of https://github.com/cameron1729/moodle into MOODLE_311_STABLE 2023-02-08 13:01:19 +08:00
Cameron Ball c56edaa116 MDL-77123 message_airnotifier: Don't test configured providers 2023-02-08 09:59:19 +08:00
Paul Holden 6b54bd46f2 Merge branch 'MDL-77078-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-06 13:33:09 +00:00
Angelia Dela Cruz 31f13cd315 MDL-76499 behat: Resource Behat tests optimised
Replace steps that manually add resource instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.

Co-authored-by: David Woloszyn <david.woloszyn@moodle.com>
2023-02-06 14:32:10 +08:00
Angelia Dela Cruz a45ccc464b MDL-77078 Behat: Coverage for assignment submission statement 2023-02-06 12:09:54 +08:00
Andrew Nicols 604d8c291f Merge branch 'MDL-76662-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-02-04 21:52:43 +08:00
Eloy Lafuente (stronk7) c5fdf320cd MDL-74905 ci: travis and gha, some adjustments
Apply for some of the improvements made for 4.2:
- Use our own moodlehq/mysql-action
- Define the tmpfs size and ensure that binlogs are disabled.
2023-02-03 19:48:15 +01:00
Eloy Lafuente (stronk7) 0fd5993afb MDL-74905 environment: Apply agreed changes:
- PHP 8.0 required.
- Moodle 3.11.8 required (first minor supporting PHP 8.0 officially).
- MySQL 8.0 required.
- MariaDB 10.6.7 required.
- PostgreSQL 13 required.
- php-sodium extension required.
- 64-bit PHP required.
2023-02-03 19:48:15 +01:00
Eloy Lafuente (stronk7) ec56eeb9a9 MDL-74905 environment: 4.2 base information
This is a direct copy of the 4.1 information, to
have all the real changes under control in next commit(s).
2023-02-03 19:48:15 +01:00
Jun Pataleta fa6c77adc7 weekly release 3.11.12+ 2023-02-03 15:43:46 +08:00
Andrew Nicols dca46bcab8 Merge branch 'MDL-75830-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-02 11:58:59 +08:00
Andrew Nicols cc045cc27d Merge branch 'MDL-76675_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2023-02-02 11:04:32 +08:00
Andrew Nicols 980a265718 Merge branch 'MDL-75912-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-02 09:45:03 +08:00
Angelia Dela Cruz 6ad9dcae1c MDL-75830 behat: Book behat tests optimised
Replace steps that manually add Book instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
Additionally, performed Behat cleanup and optimisation to affected
files.
2023-02-02 09:01:01 +08:00
Paul Holden 2ebc453c99 Merge branch 'MDL-76658-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-02-01 16:34:45 +00:00
Ilya Tregubov 5cbd545cd3 Merge branch 'MDL-76587-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-02-01 13:26:58 +08:00
Angelia Dela Cruz e988445521 MDL-75912 behat: Wiki Behat tests optimised
Behat cleanup and optimisation
2023-02-01 11:32:00 +08:00
Angelia Dela Cruz b08f86b258 MDL-75912 behat: Wiki Behat tests now use generators
Replace steps that manually add Wiki instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2023-02-01 11:31:20 +08:00
Angelia Dela Cruz 58213db159 MDL-76658 Behat: Coverage for course cohort enrolment groups
Co-authored-by: Simey Lameze <simey@moodle.com>
2023-01-31 19:55:10 +08:00
Simey Lameze c34dc466b6 MDL-76587 behat: make grading page wider to avoid 'out of bounds' fail
This is because on classic theme the navigation block pushes the content
to the right and once behat changes the grades the 'Save changes' button
is no longer visible.
2023-01-31 11:21:20 +08:00
Andrew Nicols 2b7ede20b5 Merge branch 'MDL-77040-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-01-30 12:28:34 +08:00
Eloy Lafuente (stronk7) 4c64f49a88 MDL-76675 date: Only test all TZ names with PHPUNIT_LONGTEST enabled
It happens often that some timezone is renamed, split, added to the
IANAs list of timezones (that, for PHP is kept updated by the
php-timezonedb PECL extension).

When the information coming from the extension changes, all the
PHPUnit jobs in the world start failing (that's when CIs update
their PHP images, when devs update their packages, ...).

So, what we are doing here is to move that test that check for
every single string existing to be run only when PHPUNIT_LONGTEST
is enabled. That way only places running all tests will run that
one. And every other run just will skip it.

This corresponds to point 1 & 2 of the issue, lower impact in general
and, still be able to enable the tests to run.
2023-01-27 08:50:18 +01:00
Paul Holden 0baa1aa391 MDL-77040 core: assert types of returned Geoplugin data, not values.
The results we get from these tests are beyond our control, and are
unreliable for use in testing.

See also previous change 215cd2d8 in similar tests.
2023-01-26 13:24:16 +00:00
Paul Holden a9b87fa989 MDL-76662 tool_log: correct supported reports test assertions. 2023-01-26 13:09:02 +00:00
Sara Arjona cdcfb84d18 weekly release 3.11.12+ 2023-01-26 09:59:22 +01:00
Jun Pataleta 52046c52b1 Merge branch 'MDL-76977-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-01-25 16:09:47 +08:00
Jun Pataleta 9eccbb590e Merge branch 'MDL-77036-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-01-25 16:02:02 +08:00
Simey Lameze 2b7f887245 MDL-77036 core_iplookup: update test_ipv4 test expectations 2023-01-25 15:20:58 +08:00
Jun Pataleta 3dd63e8149 Merge branch 'MDL-76639-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-01-24 18:59:09 +08:00
Jun Pataleta 78e5dd6284 Merge branch 'MDL-76652-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-01-24 18:45:05 +08:00
Jun Pataleta f14dc52adc Merge branch 'MDL-76655-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2023-01-24 18:26:47 +08:00
Angelia Dela Cruz aab571ca2c MDL-76655 behat: Coverage for workshop grading strategies 2023-01-24 10:08:33 +08:00
Paul Holden eadfbd21e9 MDL-76977 phpunit: ensure unique data provider keys in mustache test. 2023-01-20 17:23:34 +00:00
Ilya Tregubov b5eb437fcd weekly release 3.11.12+ 2023-01-20 09:41:50 +08:00
Ilya Tregubov 16e5b999ce Merge branch 'MDL-76870-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-01-19 11:16:27 +08:00
Andrew Nicols 7d596ff339 Merge branch 'MDL-76841-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-01-19 08:55:45 +08:00
Andrew Nicols d02bcbb963 Merge branch 'MDL-70070-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-01-19 08:51:32 +08:00
Paul Holden c01344a0e7 MDL-76841 tool_mobile: improve potential config issues test.
Avoid certificate checking of the default test site (`example.com`),
and update the assertion so we get clearer failures in the future.
2023-01-16 08:30:31 +00:00
Paul Holden e9439d064b MDL-70070 phpunit: correct data provider method names.
They should not be prefixed `test_` because that's how actual
test methods containing assertions are identified by PHPUnit.
2023-01-16 08:28:19 +00:00
Jun Pataleta f21e1443dc Moodle release 3.11.12 2023-01-14 14:16:53 +08:00
Simey Lameze 860bfb6f25 MDL-76870 question: change assertion to assertEqualsCanonicalizing
By using that assertion the arrays will be sorted before comparison
preventing any Oracle sorting related failures.

Credits for the solution go to Tim Hunt!
2023-01-13 18:13:27 +08:00
Angelia Dela Cruz 388c5731fa MDL-76639 behat: Add Behat test coverage for quiz with limited attempts 2023-01-13 16:32:58 +08:00
Jun Pataleta dc93055e28 weekly release 3.11.11+ 2023-01-13 10:52:25 +08:00
Jake Dallimore d57db03d20 MDL-76862 user: Unit test for setting user home page preferences 2023-01-12 11:30:59 +08:00
Paul Holden bd5bcec3f1 MDL-76862 user: ensure user can only update own preferred start page. 2023-01-12 11:17:12 +08:00
Tim Hunt 261fe42c05 MDL-76810 redirect handling: ensure return URLs are properly sanitised 2023-01-11 11:44:12 +08:00
Paul Holden 6f622e2393 Merge branch 'MDL-76811-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-01-10 16:40:08 +00:00
Paul Holden 00b9fe36c1 Merge branch 'MDL-76653-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2023-01-10 15:29:17 +00:00
Paul Holden e4b27dd81b Merge branch 'MDL-76833-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2023-01-10 12:29:19 +00:00
Andrew Nicols 5c9704b210 MDL-76833 core: Bump phpunit/php-code-coverage version
This includes a bug fix for a display issue with code coverage reporting
in phpunit's HTML output report.
2023-01-10 12:09:01 +08:00
Andrew Nicols f6f2dd5022 MDL-76811 mod_data: Remove duplicate tests 2023-01-10 11:39:40 +08:00
Andrew Nicols 9fc5f273e0 MDL-76811 mod_data: strpos check should be strict 2023-01-10 11:39:40 +08:00
Andrew Nicols dd63b85ed4 MDL-76811 mod_data: Generator test cleanup 2023-01-10 11:39:39 +08:00
Simey Lameze f164d03df5 MDL-76653 behat: add coverage for SCORM availability 2023-01-10 10:20:58 +08:00
Simey Lameze e32d27e1ff MDL-76652 behat: use data generator and remove duplicated steps 2023-01-09 10:09:58 +08:00
Simey Lameze 2f826724c8 MDL-76652 behat: add coverage for postwithoutthrottling logic 2023-01-09 10:09:58 +08:00
Paul Holden 00ccb3a314 weekly release 3.11.11+ 2023-01-05 10:53:16 +00:00
Sara Arjona 88d4939f25 Merge branch 'MDL-76375-311' of https://github.com/lucaboesch/moodle into MOODLE_311_STABLE 2023-01-04 16:22:00 +01:00
Luca Bösch e3be2fcfb6 MDL-76375 quiz generator: Allow more than one attempt by Behat tests. 2023-01-04 15:15:51 +01:00
Sara Arjona 3585ab5afa Merge branch 'MDL-76760-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2023-01-02 12:27:54 +01:00
Sara Arjona b7bfc77b52 weekly release 3.11.11+ 2022-12-29 12:57:57 +01:00
Sara Arjona 72d98b0dd5 Merge branch 'MDL-76399-patch-311' of https://github.com/ilyatregubov/moodle into MOODLE_311_STABLE 2022-12-29 09:13:49 +01:00
Ilya Tregubov 15916a6f3b MDL-76399 behat: switch to appropriate Behat step for selects. 2022-12-29 14:39:37 +07:00
Ilya Tregubov 48256e0242 Merge branch 'MDL-76399-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-12-29 09:44:30 +07:00
Paul Holden 18013b2153 MDL-76760 tool_behat: defer library loading until service execution.
Ensures that API documentation can be generated without requiring
the presence of the `vendor/` directory.
2022-12-28 10:48:02 +00:00
Ilya Tregubov 9da4095949 Merge branch 'MDL-76731_311' of https://github.com/PhilippImhof/moodle into MOODLE_311_STABLE 2022-12-28 15:15:09 +07:00
Paul Holden dc399cd841 MDL-76679 admin: correct password config field template.
The template changes were missed as part of 0795b579, update them
to match so that they continue to work with the unmask JS module.
2022-12-27 16:55:57 +01:00
Philipp Imhof e4a8272d9c MDL-76731 behat: add steps to check for version
Co-authored-by: Andrew Nicols <andrew@nicols.co.uk>
2022-12-22 17:11:44 +01:00
Ilya Tregubov 6832ac123d weekly release 3.11.11+ 2022-12-22 19:16:40 +07:00
Ilya Tregubov e892c66058 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-12-22 19:16:38 +07:00
Andrew Nicols 48637c438d MDL-75105 tool_behat: Coding style fixes 2022-12-22 12:32:01 +07:00
Andrew Nicols 0e64a10ecf Merge branch 'MDL-75105_311_STABLE' of https://github.com/marxjohnson/moodle into MOODLE_311_STABLE 2022-12-22 12:32:01 +07:00
AMOS bot 0dd5b86d3f Automatically generated installer lang files 2022-12-22 00:07:36 +00:00
Mark Johnson b0f89e5b92 MDL-75105 tool_behat: List available data generators
This will find all data generators that can be used in behat via the
'the following "something" exist:' step, and display them in a select
list on the step definitions page.

When a generator is selected, it will fetch the required fields for that
generator and display them on the page.
2022-12-21 08:38:38 +00:00
Ilya Tregubov c4c67cd975 Merge branch 'MDL-76727-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-12-21 09:51:19 +07:00
Andrew Nicols 9ae06b8dc7 MDL-76727 core: Allow phpcs configuration to be overridden locally
This change reduces the priority of the shipped phpcs configuration to
allow for local overrides.

This is beneficial in several situations:
- when users wish to apply stricter or additional standards
- when the integration team wishes to trial new rules
2022-12-21 09:07:52 +08:00
Paul Holden e59e39c78f MDL-76399 question: switch to appropriate Behat step for selects. 2022-12-16 13:13:55 +00:00
Paul Holden 99e20baa54 MDL-76399 behat: improvements to "should exist in" thrown exception. 2022-12-16 12:29:13 +00:00
Andrew Nicols 7c04ccfdf9 weekly release 3.11.11+ 2022-12-16 09:06:03 +08:00
Andrew Nicols 2f8a56eaf0 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-12-16 09:06:01 +08:00
Sara Arjona 0a774cefb8 Merge branch 'MDL-76674_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-12-14 18:35:08 +01:00
Eloy Lafuente (stronk7) 6257ac4de7 MDL-76674 core_lang: Add string for new America/Ciudad_Juarez 2022-12-14 15:52:03 +01:00
Paul Holden 5f34ca7b01 Merge branch 'MDL-76666_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-12-14 13:22:09 +00:00
Eloy Lafuente (stronk7) 624d027753 MDL-76666 local_langimport: Better handling of long locales
Under some linux versions, and depending of the configured
locale categories, it's possible to get a current locally
which length > 255 when calling to setlocale(LC_ALL, 0).

Later, if that long locale is tried to be restored, there
is a "setlocale(): Specified locale name is too long" warning
error.

When that happens we need to split the long locale into
individual chunks and set all the (six) locale categories
supported one by one.

Covered with tests, note that, in practice, this only
happens with linux because it supports 12 locale categories
@ OS level. Both BSD (6) and Windows (5) hardly can reach the limit.

No matter of that, the tests have been designed to ensure that
they pass on all OSs, just the new code only will be executed
on linux.
2022-12-14 12:26:27 +01:00
AMOS bot b492fa8255 Automatically generated installer lang files 2022-12-14 00:07:36 +00:00
Andrew Nicols 2d1c45a40e Merge branch 'MDL-76398-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-12-11 20:21:17 +08:00
Sara Arjona 13000ae319 weekly release 3.11.11+ 2022-12-09 08:57:13 +01:00
Sara Arjona 81dee5182b Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-12-09 08:57:09 +01:00
AMOS bot 44ec3591c0 Automatically generated installer lang files 2022-12-08 00:07:35 +00:00
Brendan Heywood 7f638dac59 MDL-76478 formslib: Fix autocomplete bug of existing passwords 2022-12-08 00:45:58 +11:00
Jun Pataleta 3ad36ca4f9 Merge branch 'MDL-73017-M311_add-environment-check-for-versions-not-supporting-php-8-1' of https://github.com/ziegenberg/moodle into MOODLE_311_STABLE 2022-12-07 13:47:27 +08:00
Ilya Tregubov ffc0155eab Merge branch 'MDL-76490-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-12-06 13:10:47 +03:00
Andrew Nicols 42e3f4d696 Merge branch 'MDL-75446-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2022-12-06 15:21:01 +08:00
Paul Holden ff446d05f6 MDL-76490 behat: use defined step for interaction with autocomplete. 2022-12-05 14:22:34 +00:00
Marina Glancy a213654a08 MDL-76490 behat: correct step for opening autocomplete in container. 2022-12-05 14:22:05 +00:00
Ilya Tregubov b7947e03ff Merge branch 'MDL-75788-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2022-12-05 14:32:56 +03:00
Daniel Ziegenberg 2c18225da4 MDL-73017 env: Moodle 3.9.x, 3.11.x and 4.0.x do not support PHP 8.1
This commit adds an additional environment check for the unsupported
PHP 8.1 version to Moodle 3.9.x, 3.11.x and 4.0.x.

It also updates the lang string for unsupported PHP version.

Signed-off-by: Daniel Ziegenberg <daniel@ziegenberg.at>
2022-12-05 11:43:37 +01:00
Angelia Dela Cruz 67edcbd16f MDL-75446 behat: Workshop behat generators use UI
Replace steps that manually add Workshop instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2022-12-05 16:49:04 +08:00
AMOS bot a6154a1cab Automatically generated installer lang files 2022-12-04 00:08:25 +00:00
Dani Palou eb7a2e3070 MDL-75788 behat: Use profile field generators in existing tests 2022-12-02 15:04:36 +08:00
Dani Palou 29a6589b8d MDL-75788 testing: Handle new lines in menu profile field generator 2022-12-02 15:04:33 +08:00
Sara Arjona 219206d83e weekly release 3.11.11+ 2022-12-01 16:08:09 +01:00
Jun Pataleta 7391010aac Merge branch 'MDL-76429_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-11-30 10:52:28 +08:00
Andrew Nicols 713048a0c9 Merge branch 'MDL-75960-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2022-11-29 17:05:39 +08:00
Andrew Nicols 9f018ab557 Merge branch 'MDL-65939-311' of https://github.com/ewallah/moodle into MOODLE_311_STABLE 2022-11-29 15:42:38 +08:00
Andrew Nicols 8e6aeda4ba Merge branch 'MDL-76058-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2022-11-29 15:37:45 +08:00
Angelia Dela Cruz 8af4bb6a40 MDL-75960 behat: Survey behat generators use UI
Replace steps that manually add Survey instances via the UI and use
Behat generators. This improves the speed of the Behat test runs.
2022-11-28 10:21:24 +08:00
Eloy Lafuente (stronk7) 804ae9ad72 MDL-76429 composer: Bump to phpwebdriver 1.2.1 for php81 compat
This fix is really only required for Moodle 4.1 and up, that will
be the one supporting php81, but we always apply composer changes
to all branches (supported and security), so we keep them running
the same stuff.

Note this comes with a bunch of other small updates, all them
pretty minor and should not be problematic. Better we get them
than keeping them apart.
2022-11-25 16:27:31 +01:00
Ilya Tregubov 75a49ff1b2 weekly release 3.11.11+ 2022-11-25 15:38:33 +03:00
Jun Pataleta 3931e6fe5c Merge branch 'MDL-76340-311' of https://github.com/stevandoMoodle/moodle into MOODLE_311_STABLE 2022-11-25 08:21:40 +08:00
Stevani Andolo 8e195adb84 MDL-76340 VideoJS: Fixed the menu item not being displayed as expected 2022-11-24 22:55:52 +08:00
Paul Holden 44ab3ba8f1 MDL-76398 behat: broader action menu partial matching by element.
For action menu elements whose trigger element isn't plain text
(e.g. a pix icon), we should be able to match via the title of
that element.
2022-11-21 16:59:24 +00:00
Paul Holden 91de19a803 weekly release 3.11.11+ 2022-11-18 11:43:16 +00:00
Paul Holden fcbd95d16d Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-11-18 11:43:13 +00:00
AMOS bot ccb7bb2767 Automatically generated installer lang files 2022-11-18 00:07:36 +00:00
info@eWallah.net 09be924480 MDL-65939 phpunit: Maildigest tests can query a wrong adhoc task 2022-11-17 15:52:11 +01:00
Jun Pataleta 9d9a626038 Merge branch 'MDL-76292-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2022-11-17 14:53:10 +08:00
Jun Pataleta 9a3cf47a77 Merge branch 'MDL-76310-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-17 14:39:26 +08:00
Paul Holden 1fb8bedf50 MDL-76310 enrol_lti: fix consumer key upgrade steps for Oracle.
Avoids CLOB comparison exceptions, related to ORA-00932.
2022-11-16 09:28:46 +00:00
Simey Lameze 92b909033e MDL-76292 completion: split criteria duration test into two tests 2022-11-14 16:13:22 +08:00
Jun Pataleta becbdd847d Moodle release 3.11.11 2022-11-12 12:55:28 +08:00
Sara Arjona 6ac3dd457c weekly release 3.11.10+ 2022-11-11 15:02:00 +01:00
Sara Arjona cd97da9c5c NOBUG: Fixed file access permissions 2022-11-11 15:01:59 +01:00
Mathew May 759b2670a0 MDL-71920 libraries: Migrate LTI lib away from pure curl 2022-11-11 12:54:45 +08:00
Mathew May 3f90e29e39 MDL-71920 core: update filelib opt name definition 2022-11-11 12:54:45 +08:00
Jake Dallimore 257a8126ad Merge branch 'MDL-75872-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-11 11:45:57 +08:00
Jun Pataleta d32320beac Merge branch 'MDL-63037-311' of https://github.com/snake/moodle into MOODLE_311_STABLE 2022-11-11 10:42:11 +08:00
Sara Arjona 1352a23354 Merge branch 'MDL-71951-311' of https://github.com/stevandoMoodle/moodle into MOODLE_311_STABLE 2022-11-10 16:37:42 +01:00
Sara Arjona 46a8a3bb75 Merge branch 'MOODLE_311_MDL-75874' of https://github.com/matheusot/moodle into MOODLE_311_STABLE 2022-11-10 16:22:22 +01:00
Sara Arjona 79d1331384 Merge branch 'MDL-74606-311-support-multilang-group-names-in-mod_assign' of https://github.com/krostas1983/moodle into MOODLE_311_STABLE 2022-11-10 16:04:45 +01:00
Matheus Rodrigues cd72578917 MDL-75874 aiken_html: correctly display HTML chars for Aiken questions
Updates the Aiken Format class to process answers correctly, enabling
support for special HTML characteres such as <, >, and &.

Co-authored-by: Leticia Luz <leticia.adrielli.luz@gmail.com>
2022-11-10 10:00:48 -03:00
Sara Arjona 72e9f115ab Merge branch 'MDL-75448-MOODLE_311' of https://github.com/golenkovm/moodle into MOODLE_311_STABLE 2022-11-10 13:19:48 +01:00
Paul Holden 01011e49dd Merge branch 'MDL-68550-311' of https://github.com/rezaies/moodle into MOODLE_311_STABLE 2022-11-10 12:00:22 +00:00
Sara Arjona fcf7d12a4b Merge branch 'MDL-75974-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-10 12:51:43 +01:00
Paul Holden f44d6ba340 Merge branch 'MDL-76011-311' of https://github.com/abgreeve/moodle into MOODLE_311_STABLE 2022-11-10 11:50:07 +00:00
Sara Arjona 15632be78d Merge branch 'MDL-75876-MOODLE_311_STABLE' of https://github.com/praxisdigital/moodle into MOODLE_311_STABLE 2022-11-10 12:47:21 +01:00
Sara Arjona 53a0fbecd2 Merge branch 'MDL-76167-311' of https://github.com/davewoloszyn/moodle into MOODLE_311_STABLE 2022-11-10 12:42:25 +01:00
Paul Holden 832261f49b Merge branch 'MDL-76224-311' of https://github.com/justusdieckmann/moodle into MOODLE_311_STABLE 2022-11-10 08:54:20 +00:00
Paul Holden 2378fc0117 MDL-75862 backup: omit sesskey for continue buttons using get method.
It's automatically added by the rendered single_button instance when
using post method, so no need to add it unconditionally.
2022-11-10 10:17:35 +08:00
Shamim Rezaie cd754d3b44 MDL-68550 tablelib: Use aria-role=button
Use the aria-role=button for:
- show/hide links
- sort links
- reset table preferences link
2022-11-10 06:22:54 +11:00
Shamim Rezaie 8307ce8f18 MDL-68550 output: Improve accessibility of the initials bar
- The current item should be focusable otherwise the focus will be lost
  as soon as a user clicks on an item in the initials bar
- Modified behat tests to not mistakenly click on the 'All' link
- The currently selected item is specified by aria-current
- Useed aria-current=true rather than =page because the links of each
  item in the initials bar is missing the pagination information
2022-11-10 06:21:52 +11:00
Shamim Rezaie 4225940caa MDL-68550 output: Improve accessibility of the paging bar
The use of aria-current is based on the example at
https://design-system.w3.org/components/pagination.html
2022-11-10 06:21:52 +11:00
Shamim Rezaie 2ce1ed7247 MDL-68550 theme: Not showing the gap in the initial bar
The gap issue was a regression from MDL-66670.
2022-11-10 06:21:52 +11:00
Paul Holden f21c892997 MDL-75872 mod_lesson: allow unlimited attempts default value.
Related change in 252e85be added a similar value per activity, we
should also allow it to be chosen as a default for the site.
2022-11-09 18:54:14 +00:00
Sara Arjona 0b8ab4fcef Merge branch 'MDL-50935-311-2' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2022-11-09 16:01:30 +01:00
Justus Dieckmann 8ec49b09e5 MDL-76224 Resource: Set correct page url in /mod/label/view.php 2022-11-09 15:50:48 +01:00
Meirza fd9ab3efbd MDL-76131 core_user: encode social profile fields data. 2022-11-09 15:49:53 +01:00
Jun Pataleta acdca038df Merge branch 'MDL-76185-311' of https://github.com/mihailges/moodle into MOODLE_311_STABLE 2022-11-09 21:52:04 +08:00
Jun Pataleta dd6f0debcc Merge branch 'MDL-76054_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-11-09 20:08:56 +08:00
Sara Arjona 8f93e88387 Merge branch 'MDL-75889-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-09 12:36:55 +01:00
Sara Arjona 17fccfcf64 Merge branch 'MDL-76059-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-09 12:31:46 +01:00
David Woloszyn 0cdb9169cb MDL-76091 lib: Add additional check to local URLs params 2022-11-09 19:24:42 +08:00
Sara Arjona a110b34a5a Merge branch 'MDL-75766-311' of https://github.com/aanabit/moodle into MOODLE_311_STABLE 2022-11-09 11:57:38 +01:00
Sara Arjona 252d0faac1 Merge branch 'MDL-74201-311' of https://github.com/aanabit/moodle into MOODLE_311_STABLE 2022-11-09 11:49:44 +01:00
Jun Pataleta 1802410629 Merge branch 'MDL-76170-311' of https://github.com/snake/moodle into MOODLE_311_STABLE 2022-11-09 15:44:39 +08:00
Jake Dallimore 89cba33e91 MDL-76170 enrol_lti: fix missing secret in enrol_lti_users
If member sync runs before the user launches the tool, a partial record
is created, without consumer secret. Subsequent launches of the tool by
that member don't resolve this and this results in grade sync failing
for any affected users. This patch:
- data fixes the existing affected rows
- fixes the launch code, ensuring secret is recorded on launch,
irrespective of whether the user info record has been created already
or not.
2022-11-09 10:04:39 +08:00
Simey Lameze 2a36ff8dfb MDL-76058 behat: send message using data generator 2022-11-09 09:52:16 +08:00
Frédéric Massart b86162544d MDL-74201 backup: Restore reference to content bank files 2022-11-08 20:20:21 +01:00
Eloy Lafuente (stronk7) 2135ff7c19 MDL-76054 environment: Remove the php-xmlrpc extension check
For Moodle 4.1 and up, the php-xmlrpc is not needed anymore:
- All the MNet stuff has been moved to use php library (MDL-76055).
- The webservice/xmlrpc has been moved from core to contrib (MDL-76052).

So we just remove the check here. Starting with 4.1, it's not
needed for any core functionality.

No lang string changes in this branch, only in master (4.1dev).
2022-11-08 16:46:26 +01:00
Stevani Andolo d0e63f5a60 MDL-75278 VideoJS: Update VideoJS to use validation helper 2022-11-08 13:54:20 +00:00
Víctor Déniz ec65857de0 weekly release 3.11.10+ 2022-11-08 13:44:52 +00:00
Jake Dallimore d34d35d2b6 MDL-63037 mnet: fix hostexists string usage 2022-11-08 17:05:48 +08:00
Jun Pataleta 0742fb7b44 Merge branch 'MDL-76113-311' of https://github.com/snake/moodle into MOODLE_311_STABLE 2022-11-08 12:01:47 +08:00
Jake Dallimore 0e7caf93b5 Merge branch 'MDL-76071-311' of https://github.com/laurentdavid/moodle into MOODLE_311_STABLE 2022-11-08 11:44:34 +08:00
Jake Dallimore e876654d1f Merge branch 'MDL-72882-311-3' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2022-11-08 11:32:25 +08:00
Jun Pataleta a11e590324 Merge branch 'MDL-76207-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-11-08 10:25:22 +08:00
Paul Holden 5ff8f06f64 MDL-75974 tool_customlang: check out language pack in CLI import. 2022-11-07 22:41:07 +00:00
Paul Holden 8a1c8f8bb3 MDL-75889 core: compare domain names in a case-insensitive manner.
As per https://www.rfc-editor.org/rfc/rfc1035#section-3.1
2022-11-07 22:37:00 +00:00
Andrew Nicols 671849b2db Merge branch 'MDL-75880_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-11-07 21:57:32 +08:00
Andrew Nicols 8341244903 Merge branch 'MDL-73624-311' of https://github.com/meirzamoodle/moodle into MOODLE_311_STABLE 2022-11-07 21:52:25 +08:00
Víctor Déniz 02d251294c Merge branch 'm311_MDL-74912_Fix_RegExp_Word_Boundaries_On_MySQL8' of https://github.com/scara/moodle into MOODLE_311_STABLE 2022-11-07 10:22:00 +00:00
Jun Pataleta b490d511d6 MDL-50935 atto_equation: Add upgrade step to fix existing sites 2022-11-07 15:15:40 +08:00
Jun Pataleta 2d08d7d2c0 MDL-50935 atto_equation: Fix display of matrix template
Thanks to Geoffrey Rowland's fix suggestion.
2022-11-07 15:13:07 +08:00
Andrew Nicols 016d123034 MDL-76207 contentbank: Switch to opened window 2022-11-06 21:00:09 +08:00
Matteo Scaramuccia 2e4c5f9c12 MDL-74912 dml: Fix PHP coding style problems 2022-11-05 10:09:04 +01:00
Matteo Scaramuccia e7b463af6d MDL-74912 dml: Fix missing nullable marker 2022-11-05 10:09:04 +01:00
Matteo Scaramuccia 314c9671fc MDL-74912 mod_forum: Fix regexp word boundaries markers in MySQL 8 2022-11-05 10:09:04 +01:00
anisa kusumadewi b8c4c975e0 MDL-75766 core_h5p: Added index for pathnamehash to h5p table 2022-11-04 16:55:54 +01:00
Eloy Lafuente (stronk7) f3952dc29f MDL-75880 phpunit: fix all @coversDefaultClass missing @covers
Because @coversDefaultClass doesn't indicate any coverage (it's
just an alias to avoid having to write the class name in @covers),
this commit fixes all the files that were using that annotation
and missing any @covers.

Basically, replacing one by the other and done.
2022-11-04 16:51:30 +01:00
Sara Arjona 71841556aa weekly release 3.11.10+ 2022-11-04 14:52:07 +01:00
Sara Arjona 575fabe57a Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-11-04 14:52:03 +01:00
Jun Pataleta 5cf3b78855 Merge branch 'MDL-76103-311' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2022-11-04 11:34:28 +08:00
Marina Glancy a84b1f1307 MDL-76103 search: skip solr behat tests if solr is not installed 2022-11-04 11:22:20 +08:00
Jun Pataleta c435b7896f Merge branch 'MDL-76072-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2022-11-04 10:37:34 +08:00
AMOS bot e740fa9c3b Automatically generated installer lang files 2022-11-04 00:07:31 +00:00
David Woloszyn 243eb04a85 MDL-76167 installer: Corrected dockblock param types 2022-11-04 10:48:03 +11:00
Víctor Déniz 88c757cef0 Merge branch 'MDL-70071-311' of https://github.com/Chocolate-lightning/moodle into MOODLE_311_STABLE 2022-11-03 20:38:58 +00:00
Sara Arjona 8f06e62409 Merge branch 'MDL-76169-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-11-03 17:06:22 +01:00
Mihail Geshoski 0eda72ec4f MDL-76185 mod_glossary: Remove separator in continuous display format 2022-11-03 23:54:23 +08:00
Andrew Nicols 68ff5f0ce0 MDL-70071 forum: Convert post threshold warnings to info 2022-11-03 15:04:48 +08:00
Jun Pataleta deb5150786 MDL-72882 tool_langimport: Set default language when deleting lang pack
* When the language pack being deleted is
  - the same as the site default language, we must set the site default
    language to 'en'.
  - fix the user's current language to the default site language.
2022-11-03 14:01:06 +08:00
Jun Pataleta 15521655a3 MDL-72882 core: Use default site lang when user lang no longer available
* Check that the lang attribute for the output HTML exists. If not,
use the default site language.
* Also fix the current language for the user.
2022-11-03 14:01:06 +08:00
Andrew Nicols 3a2703c9f5 Merge branch 'MDL-75904-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-11-03 13:48:11 +08:00
Andrew Nicols f48d31f0d4 MDL-76169 behat: Normalise exception message in should (not) steps
These steps have accepted a NodeElement instance as an argument for some
time, but were trying to cast it to string when formulating exception
messages, making it harder to debug and, in the case of the 'should see'
step, not work at all.

This patch introduces a new function to produce a consistent naming for
them.
2022-11-03 13:28:51 +08:00
Andrew Nicols 38da2c3a61 MDL-76169 behat: Add improved steps for using action menus
This commit adds new steps related to action menus to support:
* Choosing an item in a named action menu
* Choosing an item in a named action menu within a container
* Confirming that an action menu item does or does not exist in a named
  action menu
* Confirming that an action menu item does or does not exist in a named
  action menu within a container

The existing action menu steps were insufficient as they assume that
there is only one action menu within he container, which is not
necessarily the case.

The existing action menu steps are not non-JS friendly and will error if
JS is disabled, without providing any fallback when one is easily
available.

Unfortunately these steps cannot be used to replace the existing steps
without manual intervention.
2022-11-03 13:28:51 +08:00
Simey Lameze 583b655e37 MDL-76072 tool_lp: only init inlineGrader module if user can grade 2022-11-03 11:42:10 +08:00
Jake Dallimore 28f06c0f27 MDL-76113 enrol_lti: Fix secret on lti user for LTI 2.0 consumers
Fixes the enrol_lti_users.consumersecret field for LTI 2.0 users.
This field erroneously contained the tool secret and not the consumer
secret needed for service requests when used with LTI 2.0 consumers,
which resulted in complete grade sync failure for LTI 2.0 consumers.
This patch:
- adds an upgrade step to address existing incorrect secrets for LTI
2.0 launched users. It sets these to the correct consumer secret.
- fixes the way the secret is first set during a launch, ensuring
this->consumer->secret is used, which properly captures either the
tool secret (for 1.1 launches) or the consumer secret (for 2.0
launches).
2022-11-02 17:06:04 +08:00
Sara Arjona 4e1e916ca6 Merge branch 'MDL-61880-311' of https://github.com/snake/moodle into MOODLE_311_STABLE 2022-11-02 08:30:59 +01:00
Jake Dallimore 0c2426d207 MDL-61880 tool_oauth2: don't rely on discovery when editing issuers
Adjusts the testing scenarios so that we don't rely on endpoint
discovery being run during an issuer edit, which is no longer the case.
For scenarios that need a userinfo endpoint, set this manually.
2022-11-02 11:12:40 +08:00
Jake Dallimore 3f17ea00e7 MDL-61880 core: don't clear issuer fields not present in form data
In cases where we have an id, load the persistent and then set new data
before saving. This ensures we don't delete fields which are missing in
the form data.
2022-11-02 11:12:40 +08:00
Yannick Forget 565fe67086 MDL-61880 core: Retain OAuth 2.0 user field mappings after issuer update 2022-11-02 11:12:34 +08:00
Ilya Tregubov 97f67db36d weekly release 3.11.10+ 2022-11-01 15:00:04 +03:00
Andrew Nicols e2b085c81b Merge branch '311-mdl-75010' of https://github.com/danmarsden/moodle into MOODLE_311_STABLE 2022-11-01 11:52:57 +08:00
Jun Pataleta 91bb1805d9 Merge branch 'MDL-76108-311' of https://github.com/aanabit/moodle into MOODLE_311_STABLE 2022-10-31 16:49:07 +08:00
Dan Marsden 4d36e008dd MDL-75010 core: Prevent user last access update on user key login 2022-10-31 14:20:23 +13:00
Víctor Déniz e57d9506af Merge branch 'MDL-68437-311' of https://github.com/mihailges/moodle into MOODLE_311_STABLE 2022-10-28 18:28:48 +01:00
Amaia Anabitarte 779cd5b40c MDL-76108 mod_lesson: improving count call for PHP8.0 2022-10-28 18:18:05 +02:00
Sara Arjona 98fd15d75b weekly release 3.11.10+ 2022-10-28 14:09:22 +02:00
Jake Dallimore 552ec1b547 MDL-68943 assignfeedback_editpdf: fix version numbers 2022-10-28 12:09:10 +08:00
Jake Dallimore 977cbaf239 Merge branch 'MDL-68943-311' of https://github.com/cameron1729/moodle into MOODLE_311_STABLE 2022-10-28 11:50:14 +08:00
Cameron Ball a68be3c7fa MDL-68943 assignfeedback_editpdf: Upgrade step for stale conversions 2022-10-28 11:26:43 +08:00
Cameron Ball a123645de3 MDL-68943 assignfeedback_editpdf: Reconvert updated files 2022-10-28 11:26:43 +08:00
Víctor Déniz 29191eeff2 Merge branch 'MDL-75969-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-27 15:45:27 +01:00
Meirza b9701a8bb8 MDL-73624 lib_spout: encode output file name 2022-10-27 17:09:57 +07:00
Adrian Greeve 1fe901e1ab MDL-76011 lib: Updated the zip writer to retain the modified date. 2022-10-27 15:08:40 +08:00
Jun Pataleta 24bc7e9a19 weekly release 3.11.10+ 2022-10-25 17:17:15 +08:00
Jun Pataleta c352ec94a8 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-10-25 17:17:12 +08:00
Laurent David 91c7b05b05 MDL-76071 mod_choice: fix choice display on graphs
* The setting "Display mode" modifies the choices alignment of radio choice button
from horizontally to vertically. It should also display the list of choices in
the graph in the same directions.
2022-10-25 10:42:49 +02:00
Stevani Andolo a9e12e1d84 MDL-71951 calendar: Accessbility issue fix 2022-10-25 13:07:33 +08:00
Andrew Nicols 33eaae5569 Merge branch 'MDL-76049_311' of https://github.com/timhunt/moodle into MOODLE_311_STABLE 2022-10-25 11:50:10 +08:00
Andrew Nicols aaedf21a31 Merge branch 'MDL-74911-311' of https://github.com/matthewhilton/moodle into MOODLE_311_STABLE 2022-10-24 22:23:14 +08:00
Sara Arjona 658c7e9ef5 Merge branch 'MDL-73030-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-10-24 15:47:31 +02:00
Jun Pataleta 7ef51203c6 Merge branch 'MDL-75936-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-24 15:57:58 +08:00
Andrew Nicols 6591971e8a MDL-75936 core_message: Drawer must be ready before firing drawer events
This commit addresses a race condition when showing the message drawer
and opening the settings page from the Message preferences page.

In that situation, the message/edit.php page calls the
message_drawer_helper.showSettings function, which publishes a request
to show the drawer.

In some conditions (notably faster machines, or after MDL-66107) this
event is fired before the message_drawer.init has listened to it.

The solution here is to delay firing of the event until the drawer
announces itself as ready.

This ensures that the event is subscribed to before it is fired.
2022-10-24 14:30:32 +08:00
Matthew Hilton 58bc68b0bc MDL-74911 assignfeedback_editpdf: unlock session when polling conversion
Polling conversions will run the document conversion immediately if the
conversion has not already been completed.

Releasing the session lock while doing this ensures large conversions
do not unnecessarily hold the users session.
2022-10-24 12:58:31 +10:00
Matthew Hilton 93c53ea726 MDL-74911 assignfeedback_editpdf: per-assignment conversion poll lock
The lock ensures that multiple conversions do not happen for the same
assignment submission.

Otherwise, subsequent conversions will fail when trying to save the
converted file.
2022-10-24 12:58:29 +10:00
AMOS bot 73eec5d12d Automatically generated installer lang files 2022-10-23 00:08:12 +00:00
Paul Holden ee36b4146f MDL-75904 admin: ignore $CFG->allowcategorythemes during installation. 2022-10-21 23:22:37 +01:00
Paul Holden 6180b175d4 MDL-76059 forms: graceful early exit for invalid button elements.
Ensure login form tries to capture guest button only if it exists.
2022-10-21 19:40:33 +01:00
Sara Arjona e083dae38e Merge branch 'MDL-72828-311' of https://github.com/davewoloszyn/moodle into MOODLE_311_STABLE 2022-10-21 16:24:54 +02:00
Ilya Tregubov 42be9c33eb weekly release 3.11.10+ 2022-10-21 15:33:52 +03:00
David Woloszyn 8ba4d8be17 MDL-72828 js: get_strings supports jquery objects 2022-10-21 15:03:10 +11:00
Tim Hunt 78910334ff MDL-76049 quiz generator: update calendar events for new overrides 2022-10-20 23:45:13 +01:00
Víctor Déniz 6af53fa8c0 Merge branch 'MDL-75907-311' of https://github.com/golenkovm/moodle into MOODLE_311_STABLE 2022-10-20 10:47:02 +01:00
Jun Pataleta d0b8656cb5 Merge branch 'MDL-75497-311' of https://github.com/raortegar/moodle into MOODLE_311_STABLE 2022-10-20 17:28:58 +08:00
Jun Pataleta 9c93fbe3a4 Merge branch 'MDL-75599-311' of https://github.com/laurentdavid/moodle into MOODLE_311_STABLE 2022-10-20 17:25:55 +08:00
raortegar a97f8d6720 MDL-75497 mod_data: Review Check existence of field.class.php 2022-10-20 10:03:12 +02:00
Andrew Nicols 7ceb1466e9 Merge branch 'MDL-75834-m311' of https://github.com/sammarshallou/moodle into MOODLE_311_STABLE 2022-10-20 14:38:03 +08:00
Jun Pataleta 5d0b1f0ed3 Merge branch 'MDL-59458-311' of https://github.com/laurentdavid/moodle into MOODLE_311_STABLE 2022-10-20 13:08:44 +08:00
Jun Pataleta 180bf41216 Merge branch 'MDL-75985-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-19 21:28:07 +08:00
Andrew Nicols 509578453a MDL-75985 behat: Return newline character for \n
Somehow part of this commit was lost during the push and/or squash.
2022-10-19 20:27:45 +08:00
Sara Arjona 8be7ac509a Merge branch 'MDL-76010_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-10-19 12:56:32 +02:00
Jun Pataleta fcfd012b6a Merge branch 'MDL-75645_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-10-19 15:37:05 +08:00
Jun Pataleta a778af133e Merge branch 'MDL-75985-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-19 10:55:41 +08:00
Eloy Lafuente (stronk7) 1ff07992ec MDL-75645 mnet: Stop caching OpenSSLAsymmetricKey keys
The mnet_environment->keypair array contains the following
elements (and more, just focussing on these):
- keypair_PEM : textual representation of the private key.
- certificate : textual representation of the public key.
- privatekey  : OpenSSLAsymmetricKey representation of the private key,
                generated from keypair_PEM. See get_private_key().
- publickey   : OpenSSLAsymmetricKey representation if the public key,
                generated from certificate. See get_public_key().

The last 2 elements in the array are only used as "caching", to avoid
having to call to openssl_pkey_get_private() and
openssl_pkey_get_public() to convert from the textual representation
to the OpenSSLAsymmetricKey representation that is the one required
by a number of openssl functions.

Problems arrive when, as part of the MNet protocol, the mnet_environment
is serialised, because, since PHP 8.0 those OpenSSLAsymmetricKey objects
aren't serialisable any more.

So, as far as they are only used for internal caching it's perfectly ok
to remove the caching bits and use the openssl_pkey_get_xxx() methods
to calculate them under demand.

The alternative to this would be to implement into the mnet_environment
some custom serialisation, skipping those OpenSSLAsymmetricKey
instances, using __sleep(), the Serializabla interface or __serialize(),
but that seems unnecessary because, as explained above, the uses are
really limited and easily replaceable.

That's what this patch does.
2022-10-18 14:31:03 +02:00
Eloy Lafuente (stronk7) 8cbcbc094c MDL-76010 behat: New scenario to verify that manual attempts work
This is basically the manual background that was removed in the
previous commit, with 4 attempts here. Note it includes the 2
waits that are REQUIRED to make it pass in too-quick environments.

If they are removed, they begin to fail because it seems that
the attempts need a minimum of separation between them.
2022-10-18 14:28:07 +02:00
Eloy Lafuente (stronk7) a35c9aab6d MDL-76010 behat: Move feature to use attempts generator
This moves away from manual attempts and uses the activity
attempts generator instead. Quicker and not exposed to the
problems with clicks, refreshes and missing attempts.

Note that there is a small change in the attempt generator
so, now, when a new attempt is created, if the activity has
tracking enabled, the final result / grades are recalculated.

That's the real behaviour when the activity settings are
changes in the edition form and it's natural to get them
recalculated without having to visit the form. Specifically,
this allows the 1st scenario to pass, because in that scenario
no changes to the form are being performed.

Also, little detail, amend a dupe scenario name.
2022-10-18 14:28:07 +02:00
Sara Arjona bef4181788 weekly release 3.11.10+ 2022-10-18 13:09:58 +02:00
Laurent David abcbc42139 MDL-75599 mod_data: Fix warning message
* Fix warning message when accessing advanced search page with a date field.
2022-10-18 07:56:14 +02:00
Jun Pataleta f65577ef3a Merge branch 'MDL-75783-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-18 10:06:51 +08:00
Andrew Nicols fdc7349577 MDL-75783 javascript: Add optional jsconfig configuration
This commit adds a new Grunt task which generates a jsconfig.json file.

This file is described at
https://code.visualstudio.com/docs/languages/jsconfig and can be used
to configure vscode and other similar editors to understand our module
loading.

This task is an optional task for Grunt and can be run with:

    npx grunt jsconfig

The file is git-ignored and will not affect normal usage.
2022-10-18 09:33:04 +08:00
Víctor Déniz 0ee24af3cd Merge branch 'MDL-75983_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-10-18 01:09:04 +01:00
Sara Arjona 815419ad12 Merge branch 'MDL-72836-311' of https://github.com/mickhawkins/moodle into MOODLE_311_STABLE 2022-10-17 16:40:00 +02:00
Sara Arjona b92f5e00aa Merge branch 'MDL-74814-311-1' of https://github.com/HuongNV13/moodle into MOODLE_311_STABLE 2022-10-17 15:30:59 +02:00
Huong Nguyen 54263aa1f6 MDL-74814 forms: Fix accessibility issue in edit profile page
- Fixed legend tag issue
 - Modified the passwordunmask Javascript hide/unhide the password field by CSS class
2022-10-17 15:52:20 +07:00
Andrew Nicols 100fad08fe MDL-75969 behat: Allow the editor field to request a save
Some editors do not immediately store their content to the textarea they
represent and only do so when the form is submitted or they are
requested to.

This change adds to the existing API to allow an (optional)
`store_current_value` function to be defined for the editor type so that
it can use the JavaScript API to persist any current content to the
editor.
2022-10-14 23:46:25 +08:00
Andrew Nicols 14f87ce4b5 MDL-75985 behat: Standardise HTML output when comparing editor content
This commit adds a standardise_html function and updates the matches
function to compare normalised content.

This allows for a wider variety of valid editor output to be handled
using the standard value matching steps in Behat, thus supporting
editors other than Atto better.
2022-10-14 23:44:11 +08:00
Eloy Lafuente (stronk7) b4b650f9cd MDL-75983 gha: Update used actions to be node16 compatible
Node12 is being deprecated in github for actions:

https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/

So we need to ensure we are using node16 actions.
2022-10-14 13:28:25 +02:00
Sara Arjona efc6d19ac2 weekly release 3.11.10+ 2022-10-14 12:49:22 +02:00
Sara Arjona a887e577a4 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-10-14 12:49:20 +02:00
AMOS bot 5b9f243378 Automatically generated installer lang files 2022-10-14 00:07:33 +00:00
Jun Pataleta 1900cadd4f Merge branch 'MDL-74887-MOODLE_311_STABLE' of https://github.com/sh-csg/moodle into MOODLE_311_STABLE 2022-10-14 00:30:55 +08:00
Sara Arjona f55fd1b49c Merge branch 'MDL-75959-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-13 16:03:41 +02:00
Ilya Tregubov 575358c0f0 Merge branch 'MDL-75970-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-10-13 14:09:06 +03:00
Stefan Hanauska 83a1703746 MDL-74887 mod_label: Update visibility 2022-10-13 12:47:31 +02:00
Paul Holden 5c74434dfa MDL-75970 tool_customlang: clarify CLI export target/filename. 2022-10-12 10:32:30 +01:00
Jun Pataleta 72e2a0dfb5 Merge branch 'MDL-75887-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-12 09:23:13 +08:00
Simey Lameze 8c30413ba8 MDL-75887 behat: Add ability to set value regardless of the editor
Prior to this commit, the behat_form_editor integration was hard-coded
to use Atto.

This change allows other editors to be used to set editor values, and
breaks that hard bond. Following this change, any editor is able to
define a behat_editor_[name].php file defining a function which meets
the following signature:

  set_editor_value(string $editorid, string $value): void

Each editor is responsible for checking whether its own API is available
and calling any relevant functions to force the editor to set the
content.

Please note: Behat is unable to determine the current editor in use on
the page automatically.
2022-10-12 06:44:30 +08:00
Andrew Nicols ce2a901414 MDL-75959 customfield: Correct inappropriate class import
I suspect this was an incorrect tab completion import by an IDE which
was missed.
2022-10-12 06:40:18 +08:00
Jun Pataleta 811fc31904 weekly release 3.11.10+ 2022-10-11 23:16:41 +08:00
Jun Pataleta 25efc9e7aa Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-10-11 23:16:39 +08:00
AMOS bot c29ba27942 Automatically generated installer lang files 2022-10-11 00:07:30 +00:00
sam marshall 125065e488 MDL-75834 lib: Focus lock JS bug when focus area removed 2022-10-10 16:41:49 +01:00
Sara Arjona 613ba34b07 Merge branch 'MDL-75656-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-10-10 16:16:32 +02:00
Jun Pataleta 975ef5c540 Merge branch 'MDL-75909-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-10 18:08:04 +08:00
Jun Pataleta 1db7e78c8b Merge branch 'MDL-75922-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-10 14:55:17 +08:00
Jun Pataleta 37fa9f51e9 Merge branch 'MDL-75910-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-10 11:06:55 +08:00
Simey Lameze 4eed9bd261 MDL-75922 behat: Apply @editor_atto tag to tests requiring Atto
These steps are currently using Atto-specific UI features and must
therefore make use of the @editor_atto tag to ensure that they continue
to run using Atto.

A new issue will be raised to migrate each of these to be
editor-agnostic.
2022-10-09 20:27:05 +08:00
Andrew Nicols ec6c3cd9a0 Merge branch 'MDL-61395-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-10-09 13:13:39 +08:00
Stefan Hanauska 133b7b700d MDL-74887 course: Hide stealth mode without view page 2022-10-08 08:09:34 +02:00
AMOS bot c269c67830 Automatically generated installer lang files 2022-10-08 00:07:29 +00:00
Michael Hawkins 8d09620c14 MDL-72836 core: Updated security.txt expiry and policy URL 2022-10-07 14:12:14 +08:00
Mikhail Golenkov 94327ba15f MDL-75907 core: Add index on temp table to optimise stats cron 2022-10-07 16:16:44 +11:00
Andrew Nicols 8e1353f39d weekly release 3.11.10+ 2022-10-07 13:04:02 +08:00
Andrew Nicols 342c6367d0 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-10-07 13:04:00 +08:00
AMOS bot fe6c455b51 Automatically generated installer lang files 2022-10-07 00:07:35 +00:00
Simey Lameze 777025b298 MDL-75910 core_form: Allow editor field to set a hidden label
When an editor is used in a form as part of a group, it is missing its
label element.

This happens because there is no inline template for the editor, and
therefore it reverts to using the old `toHtml` function. The legacy
function does not cater to the editor being in a group, and therefore
does not add the hidden label.

In addition, the hiddenLabel attribute was missing from the editor
element. This is a semi-standard element but must be added to each
supporting element.

Both the missing inline template for the editor, and the hidden label
attribute must be present:
- If the hidden label attribute is not present, then the standard inline
  template will add a visible label within the group.
- If the inline editor template is missing, then the label is not shown
  at all.
2022-10-06 22:54:12 +08:00
Andrew Nicols 1545abb21d MDL-75909 mod_data: Make template editor use html editor
When the template editor is configured to use the HTML Editor, it should
indicate this to Behat by setting the `data-fieldtype` to "editor".

This indicates to the behat field manager that the editor is in use,
which ensures that the correct value setting can take place.

This is important in the context of MDL-75887.
2022-10-06 21:49:01 +08:00
Andrew Nicols d70b73345c MDL-71686 core_form: Rebuild amd util module 2022-10-06 16:13:17 +08:00
Andrew Nicols fbc97ebdcd MDL-71686 core_form: Include missing build 2022-10-06 14:44:35 +08:00
Andrew Nicols 95b4682d3c MDL-71686 core_form: Move form serializer to shared function 2022-10-06 10:22:46 +08:00
Andrew Nicols 27f7c54d58 Merge branch 'MDL-71686-311' of https://github.com/marinaglancy/moodle into MOODLE_311_STABLE 2022-10-06 10:21:34 +08:00
Shamim Rezaie 459da610c6 Merge branch 'MDL-75886-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-10-06 12:24:45 +11:00
Thorsten Siegmund Bartel 930a0d2944 MDL-74606 mod_assign: Support multilanguage strings in group names. 2022-10-05 12:56:16 +02:00
Andrew Nicols e881dee5b4 MDL-75886 atto: Always use Atto for @atto tests
This change, which should be easy to mimic for other editors.

This will ensure that the correct editor is used for tests relating to
that editor, or its subplugins.
2022-10-05 09:57:19 +08:00
Jun Pataleta f525194ea2 Merge branch 'MDL-66955-m311' of https://github.com/NeillM/moodle into MOODLE_311_STABLE 2022-10-04 16:36:25 +08:00
AMOS bot d18f60bd3f Automatically generated installer lang files 2022-10-04 00:07:33 +00:00
Frederik Milling Pytlick 01643574c5 MDL-75876 core_calendar: Add raise_memory_limit call to export_execute
Added a call to raise_memory_limit in /calendar/export_execute.php as it can be very memory intensive.
2022-10-03 12:47:57 +02:00
Paul Holden 0268bbd07b MDL-73030 backup: case-insensitive detection of Moodle backups. 2022-10-03 09:32:05 +01:00
Andrew Nicols 4f5d221749 Merge branch 'MDL-75836_311' of https://github.com/jrchamp/moodle into MOODLE_311_STABLE 2022-10-02 21:44:40 +08:00
Andrew Nicols 8ca4a0087d MDL-75614 dml: Unit tests must test something 2022-09-30 16:38:27 +08:00
Andrew Nicols 357ab40ff4 Merge branch 'MDL-75614-debugsqltrace-MOODLE_311_STABLE' of https://github.com/brendanheywood/moodle into MOODLE_311_STABLE 2022-09-30 16:38:24 +08:00
Neill Magill a0518068fb MDL-66955 messages: Improve speed of message search
The OR conditions in the WHERE clause prevented the query from
effectively filtering the messages related to the user quickly, this
change helps gets around this by allowing the database to limit
the rows in the messages table it needs to scan significantly.
2022-09-30 08:31:11 +01:00
Mihail Geshoski 5ef68db33a MDL-68437 forum: Support to show only active course users in grader
The following change adds support to show only active course users
in the forum grader and generally replicates the behaviour from the
assignment grader which relies on certain config settings, user
permissions and capabilities.
2022-09-30 12:18:46 +08:00
Mihail Geshoski 2914d47171 MDL-68437 course: ws support to optionally fetch only active users
Modifies the 'core_course_get_enrolled_users_by_cmid' webservice and
the generic js methods that call this webservice and enables defining
whether the ws should only return the active users or all enrolled
users in the course.
2022-09-30 12:12:28 +08:00
Jake Dallimore e79b14e2a9 weekly release 3.11.10+ 2022-09-30 10:17:39 +08:00
Andrew Nicols b97ed6d75a Merge branch 'MDL-74922_MOODLE_311_STABLE_fix_storage_wrapper_validate_cache' of https://github.com/gthomas2/moodle into MOODLE_311_STABLE 2022-09-29 12:06:45 +08:00
Jun Pataleta f4d830d7e4 Merge branch 'MDL-75782-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-09-29 11:53:57 +08:00
Jun Pataleta 2974880afe Merge branch 'MDL-75559-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-09-29 10:53:59 +08:00
Jun Pataleta 4ed21af7df Merge branch 'MDL-66902_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-28 23:15:26 +08:00
Jun Pataleta e1d80935a3 Merge branch 'MDL-75827-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-09-28 20:35:58 +08:00
Jake Dallimore f40424cd25 Merge branch '31_mdl75668' of https://github.com/danmarsden/moodle into MOODLE_311_STABLE 2022-09-28 16:36:36 +08:00
Jun Pataleta 47f85d5da1 Merge branch 'MDL-72490-m311' of https://github.com/sammarshallou/moodle into MOODLE_311_STABLE 2022-09-28 11:55:08 +08:00
Jun Pataleta ac0444bff4 Merge branch 'MDL-66273-MOODLE-311-v2' of https://github.com/golenkovm/moodle into MOODLE_311_STABLE 2022-09-28 09:45:35 +08:00
Jun Pataleta bb7955546c Merge branch 'MDL-75726_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-28 08:12:14 +08:00
Jun Pataleta 0fd522dd1f Merge branch 'MDL-75776_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-28 08:06:39 +08:00
Jonathan Champ a09f258f70 MDL-75836 activities: preserve moodleform validation errors 2022-09-27 14:24:36 -04:00
Andrew Nicols b193122b29 Merge branch 'MDL-75168-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-09-27 23:42:42 +08:00
Paul Holden 10d39a1feb MDL-75168 tag: cleanup module tag instances upon course deletion. 2022-09-27 14:11:32 +01:00
Jun Pataleta d51a14792b Merge branch 'MDL-75800-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-09-27 20:19:54 +08:00
Andrew Nicols 074307ebba Merge branch 'MDL-27570_311' of https://github.com/timhunt/moodle into MOODLE_311_STABLE 2022-09-27 17:02:24 +08:00
Jun Pataleta aeacebf383 Merge branch 'MDL-71531-311' of https://github.com/andrewnicols/moodle into MOODLE_311_STABLE 2022-09-27 16:29:01 +08:00
Andrew Nicols 51c22d1e3f MDL-75744 qtype_gapselect: Remove unnecessary javascript tag 2022-09-27 12:45:25 +08:00
Andrew Nicols e5bf98ab9d Merge branch 'MDL-75744-311' of https://github.com/NashTechOpenUniversity/moodle into MOODLE_311_STABLE 2022-09-27 12:38:23 +08:00
Paul Holden 1b1758caa2 MDL-75827 theme_boost: append table elements to popover whitelist.
This allows for their use within popover tooltips, such as those
used for showing help icon dialogues.
2022-09-26 16:06:42 +01:00
Eloy Lafuente (stronk7) a71341c693 MDL-66902 tests: Fix all incorrect namespaces
This issue just goes over all the currently incorrect
namespaces in test cases and:

1. Change the namespace to the correct one.
2. Move/rename it to correct location if needed (level 2 and down).
3. Remove not needed MOODLE_INTERNAL check when possible.
4. Remove file phpdoc when the file only has one class.
5. Make small adjustments in case the change of namespace requires it.
2022-09-26 14:34:30 +02:00
Hien Dinh b21541294a MDL-72490 availability: Show error if conflict in date restriction 2022-09-26 11:19:39 +01:00
Paul Holden 806a667b3a MDL-61395 forms: style frozen tag element values. 2022-09-26 11:16:13 +01:00
Paul Holden 7311810970 MDL-75656 tag: decode entities in tags element values. 2022-09-26 10:56:37 +01:00
Eloy Lafuente (stronk7) c8773b698a MDL-75726 ci: Bump GHA to Ubuntu 22.04
Have tried to also bump Travis to 22.04 (jammy) but it
was not working ok, with problems trying to find both
PHP and PostgreSQL versions.

Surely that's because 22.04 support is really new (Sep 9, 2022):

https://blog.travis-ci.com/22-9-9-ubuntujammy

So we'll have to wait a little more before being able to, also,
bump Travis to use 22.04
2022-09-22 17:45:16 +02:00
Eloy Lafuente (stronk7) e446e2b6a9 MDL-75776 composer: minor updates
In stables, just minors updates to components.

Generated using the instructions @ https://docs.moodle.org/dev/Composer
and using PHP 7.3 (always the min version supported) to generate the
lock file.
2022-09-22 17:44:45 +02:00
Eloy Lafuente (stronk7) 6a6344e268 weekly release 3.11.10+ 2022-09-22 17:05:51 +02:00
Tim Hunt bcdee74ae9 MDL-27570 quiz timing: add unit test and simplify top of process_attempt 2022-09-22 11:12:45 +01:00
Philipp Imhof dacd86c23c MDL-27570 quiz: check if time is really up 2022-09-21 11:39:14 +01:00
Paul Holden bb6c03a252 MDL-75800 enrol: correct instance deleted event name. 2022-09-20 14:09:40 +01:00
Jun Pataleta b37a074180 Merge branch 'MDL-75777_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-20 15:11:59 +08:00
Eloy Lafuente (stronk7) 64e570d0ab MDL-75777 phpunit: Move tests to use correct names and ns (take#6)
Applied the following changes to various testcase classes:

- Namespaced with component[\level2-API]
- Moved to level2-API subdirectory when required.
- Fixed incorrect use statements with leading backslash.
- Remove file phpdoc block
- Remove MOODLE_INTERNAL if not needed.
- Changed code to point to global scope when needed.
- Fix some relative paths and comments here and there.
- All them passing individually.
- Complete runs passing too.
2022-09-19 11:03:36 +02:00
Jun Pataleta 0a4af5f771 Merge branch 'MDL-75757_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-19 13:01:50 +08:00
Andrew Nicols d288aea421 MDL-75782 mod_quiz: Make TinyMCE autosave less fragile
This commit amends the quiz autosave feature to not assume the
components of the Tiny API as much, and add support for newer versions
of TinyMCE.
2022-09-19 12:56:55 +08:00
Eloy Lafuente (stronk7) a9edf3962a MDL-75757 phpunit: Add some tolerance to a few failing assertions
Recently, PHPUnit (all versions) did some changes about how the
comparators worked and this has caused some float comparisons
to stop working.

We need to move them to assertEqualsWithDelta(), allowing a small
tolerance to workaround the floats comparison problem.

0.00001 has been decided. And applied to all the similar assertions
within the unittest function, so if more cases are added to them
better be copied with the agreed tolerance.
2022-09-18 15:57:36 +02:00
Sara Arjona 6087c2a835 Merge branch 'MDL-75108-m311' of https://github.com/sammarshallou/moodle into MOODLE_311_STABLE 2022-09-16 11:23:29 +02:00
Sara Arjona 6fd68977ac weekly release 3.11.10+ 2022-09-15 16:11:55 +02:00
Sara Arjona 94f6eefb86 Merge branch 'install_311_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_311_STABLE 2022-09-15 16:11:53 +02:00
hieuvu d03da85cef MDL-75744 gapselect: remove empty choices option. 2022-09-15 15:46:16 +07:00
Andrew Nicols 3e789e5d6d MDL-71531 cachestore_file: Stop locking cache files to read
The cache file is only ever written to in the `write_file` function,
where it does so by writing to a temp file and performing an atomic
rename of that file. When writing, the target file is never locked.

The cache file is only ever read in the `get` function, and there is no
need for an exclusive lock in that situation.

There is therefore no need to obtain any lock, shared or exclusive, to
read the cache file. Doing so only affects performance of the file sytem
as file locks must be needlessly obtained and written to disk for a read
operation which does not benefit from them.
2022-09-15 10:14:51 +08:00
Jun Pataleta b16eb4c432 Merge branch 'MDL-75716_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-15 09:55:38 +08:00
Marina Glancy f533978709 MDL-71686 forms: allow arrays in dynamic forms args 2022-09-14 18:00:05 +02:00
Sara Arjona 53846820df Merge branch 'MDL-74010-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-09-14 11:41:53 +02:00
Eloy Lafuente (stronk7) 65c8839157 MDL-75716 phpunit: Move tests to use correct names and ns (take#5)
Applied the following changes to various testcase classes:

- Namespaced with component[\level2-API]
- Moved to level2-API subdirectory when required.
- Fixed incorrect use statements with leading backslash.
- Remove file phpdoc block
- Remove MOODLE_INTERNAL if not needed.
- Changed code to point to global scope when needed.
- Fix some relative paths and comments here and there.
- All them passing individually.
- Complete runs passing too.

Special mention to:

- In lib/tests/blocklib_test.php 2 helper classes have been
  moved to tests/fixtures, because they needed to be namespace-free.
2022-09-12 23:34:59 +02:00
Sara Arjona 0561f8c5b5 Merge branch 'MDL-75051_311' of https://github.com/mkassaei/moodle into MOODLE_311_STABLE 2022-09-12 12:30:38 +02:00
Mikhail Golenkov 8684cd6a76 MDL-66273 qtype_random: Fix question deletion during course restore 2022-09-12 16:43:37 +10:00
Andrew Nicols fa10357f57 MDL-75559 behat: Sort behat_hooks to top of context list 2022-09-12 12:33:40 +08:00
AMOS bot d463e0d8f6 Automatically generated installer lang files 2022-09-11 00:07:54 +00:00
Eloy Lafuente (stronk7) 54b614ca7e Moodle release 3.11.10 2022-09-10 12:16:05 +02:00
Mahmoud Kassaei 9f7d92de62 MDL-75051 Questions: Selecting idnumber in the question bank,
the copy/pasting, includes extraneous text in Chrome
2022-09-09 10:39:22 +01:00
Jun Pataleta 4125c3c470 weekly release 3.11.9+ 2022-09-09 08:36:51 +08:00
Jun Pataleta 258cdfaa6a Merge branch 'MDL-74866-311-behat' of https://github.com/HuongNV13/moodle into MOODLE_311_STABLE 2022-09-08 11:29:43 +08:00
Huong Nguyen 8c2792cb5d MDL-74866 core_calendar: Fix Behat failures 2022-09-08 09:49:40 +07:00
Michael Hawkins 25d4bc7ffc MDL-68066 output: Apply disable lambda rendering to Mustache renderer 2022-09-07 23:56:51 +08:00
Lars Bonczek d98b39a597 MDL-68066 output: Mustache - Add option to disable lambda rendering
This commit is based on an outstanding pull request to the Mustache repo
2022-09-07 23:56:51 +08:00
Paul Holden 191badf5ad MDL-72012 mod_h5pactivity: respect user access when getting report. 2022-09-07 22:10:56 +08:00
Jun Pataleta c4ba598a0b MDL-75283 core: Fetch proper column mapping for sort
Calling \core_user\fields::get_sql() incerements a static uniqueid
variable. This should be called only once and not make a separate call
for the sort mapping data as it doing so will result to an incorrect
table alias for the sort mapping data.
2022-09-07 17:16:03 +04:00
Sara Arjona f77ea5bffa Merge branch 'MDL-74866-311' of https://github.com/HuongNV13/moodle into MOODLE_311_STABLE 2022-09-07 13:10:24 +02:00
stevando 3d11b25cce MDL-75283 admin: Update admin user fetching to use sort helper 2022-09-07 13:18:43 +08:00
Jun Pataleta 8a55673463 Merge branch 'MDL-75553-311' of https://github.com/junpataleta/moodle into MOODLE_311_STABLE 2022-09-07 12:58:54 +08:00
Jun Pataleta 230f7a2d1b MDL-75553 mod_data: Fix wording of data fields in Behat tests 2022-09-07 12:55:50 +08:00
Huong Nguyen 87344d03e1 MDL-74866 bennu: Fix parameter parsing
Some parameter values are wrapped by DQUOTE character.
We need to go through and get the actual value inside the quoted string.
2022-09-07 11:16:01 +07:00
Dan Marsden e237e83dfb MDL-75668 backup: Save context mapping of duplicate blocks. 2022-09-07 12:40:47 +12:00
David Mudrák aa392ce73a MDL-75553 lang: Fix Behat regressions in scenario files 2022-09-06 21:49:32 +02:00
Paul Holden 6220f712ab MDL-75405 block_html: safer unserialize during old block conversion. 2022-09-06 17:54:17 +02:00
Jun Pataleta 714b88a1b8 Merge branch 'MDL-75231-311' of https://github.com/lameze/moodle into MOODLE_311_STABLE 2022-09-06 23:49:08 +08:00
Sara Arjona bbadf7a02c Merge branch 'MDL-75548_311' of https://github.com/timhunt/moodle into MOODLE_311_STABLE 2022-09-05 13:09:57 +02:00
Ilya Tregubov 57b97b29b7 Merge branch 'MDL-60666-311' of https://github.com/ilyatregubov/moodle into MOODLE_311_STABLE 2022-09-05 14:38:41 +04:00
Peter Sistrom 6fe4eb2a86 MDL-60666 auth_ldap: One transaction per user 2022-09-05 14:35:26 +04:00
Sara Arjona 8a0274423d Merge branch 'MDL-75550-311' of https://github.com/mickhawkins/moodle into MOODLE_311_STABLE 2022-09-05 08:57:37 +02:00
Jun Pataleta ddd80a5d2c Merge branch 'MDL-75641_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-09-05 14:37:09 +08:00
Helen Foster 50bf83fede MDL-75553 lang: Import fixed English strings (en_fix) 2022-09-04 21:07:38 +02:00
Eloy Lafuente (stronk7) cafbfc6076 MDL-75641 core_lang: Add string for new Europe/Kyiv timezone
With IANA TZDB (timezone database) release 2022b, Europe/Kiev
has been renamed to Europe/Kyiv. So we need to add this string
to our list to keep tests passing.

Note that the old Europe/Kiev continues working (is an alias) and,
also, there are places in core where we are using it. Just we cannot
remove/replace those uses in core until we ensure that everybody is
using PHP 8.0.23 (TZDB 2022b) or more recent versions. Hence,
not changing those uses now.
2022-09-04 10:11:20 +02:00
Ilya Tregubov 2b22716dc2 weekly release 3.11.9+ 2022-09-02 08:49:20 +04:00
Brendan Heywood 3498aeaf1e MDL-75614 dml: Fixed debugsqltrace with anon classes bug 2022-09-02 11:42:22 +10:00
Jun Pataleta c59d4f9612 Merge branch 'MDL-75111_311' of https://github.com/stronk7/moodle into MOODLE_311_STABLE 2022-08-31 23:04:15 +08:00
Jun Pataleta e3ce532831 Merge branch 'MDL-75019-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2022-08-31 20:24:56 +08:00
Ilya Tregubov 87e0d39e19 Merge branch 'MDL-74861-311' of https://github.com/andelacruz/moodle into MOODLE_311_STABLE 2022-08-31 11:52:30 +04:00
Michael Hawkins 90aceb5e6c MDL-75550 lib: Update Mustache const to reflect correct version
Mustache version 2.14.1 is already included, but the VERSION const
incorrectly listed 2.14.0 in the tagged Mustache release. A later
upstream commit corrected this in the library, which this now matches.
2022-08-31 15:29:52 +08:00
Sara Arjona 7d1996fb3a Merge branch 'MDL-68717-311' of https://github.com/laurentdavid/moodle into MOODLE_311_STABLE 2022-08-30 16:05:11 +02:00
Víctor Déniz cb9583c21c Merge branch 'MDL-75360-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-08-30 11:43:33 +01:00
Jun Pataleta 633c6d7e80 MDL-70480 mod_assign: Apply proper upgrade savepoint version 2022-08-30 17:18:38 +08:00
Jun Pataleta 76ed3885a9 MDL-70480 mod_assign: Bump version.php properly 2022-08-30 17:04:17 +08:00
Víctor Déniz f4456f6afe Merge branch 'MDL-70480-311' of https://github.com/chanqihui/moodle into MOODLE_311_STABLE 2022-08-30 09:17:00 +01:00
Ilya Tregubov 21384101e1 Merge branch 'MDL-71662-311' of https://github.com/paulholden/moodle into MOODLE_311_STABLE 2022-08-30 08:00:37 +04:00
Eloy Lafuente (stronk7) 61cedbd56e MDL-75111 phpunit: Move tests to use correct names and ns (take#4)
Applied the following changes to various testcase classes:

- Namespaced with component[\level2-API]
- Moved to level2-API subdirectory when required.
- Fixed incorrect use statements with leading backslash.
- Remove file phpdoc block
- Remove MOODLE_INTERNAL if not needed.
- Changed code to point to global scope when needed.
- Fix some relative paths and comments here and there.
- All them passing individually.
- Complete runs passing too.

Special mention to:

- The following task tests have been moved within the level2 directory:
  - \core\adhoc_task_test => \core\task\adhoc_task_test
  - \core\scheduled_task_test => \core\task\scheduled_task_test
  - \core\calendar_cron_task_test => \core\task\calendar_cron_task_test
  - \core\h5p_get_content_types_task_test => \core\task\h5p_get_content_types_task_test
  - \core\task_database_logger_test => \core\task\database_logger_test
  - \core\task_logging_test => \core\task\logging_test

- The following event tests have been moved within level2 directory:
  - \core\event_context_locked_test => \core\event\context_locked_test
  - \core\event_deprecated_test => \core\event\deprecated_test
  - \core\event_grade_deleted_test => \core\event\grade_deleted_test
  - \core\event_profile_field_test => \core\event\profile_field_test
  - \core\event_unknown_logged_test => \core\event\unknown_logged_test
  - \core\event_user_graded_test => \core\event\user_graded_test
  - \core\event_user_password_updated_test => \core\event\user_password_updated_test

- The following output tests have been moved within level2 directory:
  - \core\mustache_template_finder_test => \core\output\mustache_template_finder_test
  - \core\mustache_template_source_loader_test => \core\output\mustache_template_source_loader_test
  - \core\output_mustache_helper_collection_test => \core\output\mustache_helper_collection_test

- The following tests have been moved to their correct tests directories:
  - lib/tests/time_splittings_test.php => analytics/tests/time_splittings_test.php

- All the classes and tests under lib/filebrowser and lib/filestorage
  belong to core, not to core_files. Some day we should move
  them to their correct subsystem.
- All the classes and tests under lib/grade belong to core, not
  to core_grades. Some day we should move them to their correct
  subsystem.
- The core_grades_external class and its \core\grades_external_test
  unit test should belong to the grades subsystem or, alternatively,
  to \core\external, they both should be moved together.
- The core_grading_external class and its \core\grading_external_test
  unit test should belong to the grading subsystem or, alternatively,
  to \core\external, they both should be moved together.
- The \core\message\message and \core\message\inbound (may be others)
  classes, and their associated tests should go to the core_message
  subsystem.
- The core_user class, and its associated tests should go to the
  core_user subsystem.
- The \core\update namespace is plain wrong (update is not valid API)
  and needs action 1) create it or 2) move elsewhere.
2022-08-26 16:34:28 +02:00
Shamim Rezaie 376e57d267 weekly release 3.11.9+ 2022-08-26 21:07:42 +10:00
Tim Hunt 9de11ea641 MDL-75548 misc: final Required parameter follows optional notices 2022-08-22 15:19:55 +01:00
Simey Lameze d793ac8e5e MDL-75231 files: make bucket calculations more precise
This commit changes changes the unit test calculations to
keep track of the time the bucket starts/finishes bursting
and use milliseconds instead of seconds to have a precise
time to sleep.
2022-08-22 14:11:39 +08:00
Mikhail Golenkov e5e8bc4b22 MDL-75448 assignfeedback_editpdf: Fix conversion for rotated images 2022-08-19 15:35:34 +10:00
Mikhail Golenkov 911fafd9a9 MDL-75448 stored_file: Cover rotate_image() method with unit tests 2022-08-19 15:35:34 +10:00
Laurent David 739b551fa8 MDL-59458 mod_data: Fix sorting data query
* When activating sorting on a different field than the original field
the list of records is empty
2022-08-15 17:14:33 +02:00
Laurent David a9ce394b63 MDL-68717 core_calendar: Hide completed event
* "expectcompletionon" type of event should be hidden if the related
activity is completed
2022-08-08 07:18:26 +02:00
Angelia Dela Cruz a8c9e82653 MDL-74861 behat: H5P behat generators use UI
Replace steps that manually add H5Pactivity instances via the UI
and use Behat generators. This improves the speed of the Behat test
runs.

Co-authored-by: Simey Lameze <simey@moodle.com>
2022-08-08 12:18:28 +08:00
Paul Holden f8351de05e MDL-74010 core: check defined MDL_PERF* values in conditionals. 2022-08-05 11:03:09 +01:00
Angelia Dela Cruz 34f352ded2 MDL-75019 behat: Folder behat generators use UI
Replace steps that manually add Folder instances via the UI and
use Behat generators. This improves the speed of the Behat test
runs.
2022-08-05 15:41:57 +08:00
Qihui Chan a287546036 MDL-70480 mod_assign: fix user and group submission and update database 2022-08-04 18:03:42 +10:00
Paul Holden 2eb859a839 MDL-71662 mod_h5pactivity: add group filter to attempts report. 2022-08-03 15:30:36 +01:00
Paul Holden 0448a7b267 MDL-75360 user: relax initial parameter types of external method.
Defer cleaning of supplied text to inside the method, so we don't
throw confusing exceptions if a user enters "unsafe" characters in
the form input.
2022-08-02 21:04:40 +01:00
sam marshall 2571dcf012 MDL-75108 block_html: Search tries to index directory entries
Search attach_files function should only attach indexable files,
not directory entries which are 0 bytes and cannot be indexed.
2022-07-01 14:08:51 +01:00
gthomas2 23f0472514 MDL-74922 javascript: storragewrapper validateCache fix 2022-06-08 09:33:46 +01:00
1229 changed files with 22559 additions and 13748 deletions
+17 -9
View File
@@ -7,20 +7,26 @@ on:
- MOODLE_[0-9]+_STABLE
tags-ignore:
- v[0-9]+.[0-9]+.[0-9]+*
workflow_dispatch:
inputs:
phpunit_extra_options:
description: Additional options to apply to PHPUnit
required: false
default: ''
env:
php: 8.0
jobs:
Grunt:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checking out code
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Configuring node & npm
uses: actions/setup-node@v2
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
@@ -54,11 +60,11 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
php: 7.3
extensions:
db: mysqli
- os: ubuntu-20.04
- os: ubuntu-22.04
php: 8.0
db: pgsql
extensions: xmlrpc-beta
@@ -66,7 +72,7 @@ jobs:
steps:
- name: Setting up DB mysql
if: ${{ matrix.db == 'mysqli' }}
uses: johanmeiring/mysql-action@tmpfs-patch
uses: moodlehq/mysql-action@v1
with:
collation server: utf8mb4_bin
mysql version: 5.7
@@ -74,6 +80,8 @@ jobs:
mysql user: test
mysql password: test
use tmpfs: true
tmpfs size: '1024M'
extra conf: --skip-log-bin
- name: Setting up DB pgsql
if: ${{ matrix.db == 'pgsql' }}
@@ -85,7 +93,7 @@ jobs:
postgresql password: test
- name: Configuring git vars
uses: rlespinasse/github-slug-action@v3.x
uses: rlespinasse/github-slug-action@v4
- name: Setting up PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2
@@ -96,7 +104,7 @@ jobs:
coverage: none
- name: Checking out code from ${{ env.GITHUB_REF_SLUG }}
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setting up PHPUnit
env:
@@ -112,4 +120,4 @@ jobs:
env:
dbtype: ${{ matrix.db }}
phpunit_options: ${{ secrets.phpunit_options }}
run: vendor/bin/phpunit $phpunit_options
run: vendor/bin/phpunit $phpunit_options ${{ inputs.phpunit_extra_options }}
+2 -1
View File
@@ -51,4 +51,5 @@ moodle-plugin-ci.phar
.eslintignore
.stylelintignore
/jsdoc
.phpcs.xml
phpcs.xml
jsconfig.json
+2 -1
View File
@@ -156,7 +156,7 @@ const getThirdPartyLibsList = relativeTo => {
* @returns {array}
*/
const getThirdPartyPaths = () => {
const DOMParser = require('xmldom').DOMParser;
const DOMParser = require('@xmldom/xmldom').DOMParser;
const fs = require('fs');
const path = require('path');
const xpath = require('xpath');
@@ -233,6 +233,7 @@ const getOwningComponentDirectory = checkPath => {
};
module.exports = {
fetchComponentData,
getAmdSrcGlobList,
getComponentFromPath,
getComponentPaths,
+2 -2
View File
@@ -39,7 +39,7 @@ module.exports = grunt => {
{
rule: {
_attrs: {
ref: './.phpcs.xml.dist',
ref: './phpcs.xml.dist',
},
},
},
@@ -52,7 +52,7 @@ module.exports = grunt => {
});
});
grunt.file.write('.phpcs.xml', toXML(config, {
grunt.file.write('phpcs.xml', toXML(config, {
header: true,
indent: ' ',
}) + "\n");
+5 -3
View File
@@ -30,10 +30,9 @@
* @param {String} srcPath the matched src path
* @return {String} The rewritten destination path.
*/
const babelRename = function(destPath, srcPath) {
destPath = srcPath.replace('src', 'build');
destPath = destPath.replace('.js', '.min.js');
destPath = srcPath.replace(`amd/src`, `amd/build`);
destPath = destPath.replace(/\.js$/, '.min.js');
return destPath;
};
@@ -47,6 +46,9 @@ module.exports = grunt => {
// Load ESLint.
require('./eslint')(grunt);
// Load jsconfig.
require('./jsconfig')(grunt);
// Load JSDoc.
require('./jsdoc')(grunt);
+53
View File
@@ -0,0 +1,53 @@
// 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/>.
/* jshint node: true, browser: false */
/* eslint-env node */
/**
* @copyright 2022 Andrew Lyons <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
const configuration = {
compilerOptions: {
baseUrl: ".",
paths: {
},
target: "es2015",
allowSyntheticDefaultImports: false,
},
exclude: [
"node_modules",
],
include: [],
};
module.exports = (grunt) => {
const handler = () => {
const jsconfigData = Object.assign({}, configuration);
const path = require('path');
const {fetchComponentData} = require(path.join(process.cwd(), '.grunt', 'components.js'));
const componentData = fetchComponentData().components;
for (const [thisPath, component] of Object.entries(componentData)) {
jsconfigData.compilerOptions.paths[`${component}/*`] = [`${thisPath}/amd/src/*`];
jsconfigData.include.push(`${thisPath}/amd/src/**/*`);
}
grunt.file.write('jsconfig.json', JSON.stringify(jsconfigData, null, " ") + "\n");
};
grunt.registerTask('jsconfig', 'Generate a jsconfig configuration compatible with the LSP', handler);
};
+3 -1
View File
@@ -81,7 +81,8 @@ install:
sudo service mysql stop
sudo mv /var/lib/mysql /mnt/ramdisk
sudo ln -s /mnt/ramdisk/mysql /var/lib/mysql
sudo service mysql restart
echo -e "[mysqld]\nskip-log-bin" | sudo tee -a /etc/mysql/my.cnf
sudo service mysql start
fi
- >
if [ "$DB" = 'pgsql' ];
@@ -92,6 +93,7 @@ install:
sudo mv /var/lib/postgresql /mnt/ramdisk
sudo ln -s /mnt/ramdisk/postgresql /var/lib/postgresql
sudo service postgresql start 9.6
sh -c 'until pg_isready -p 5432; do echo "Waiting for the DB to be up..."; sleep 2; done'
fi
- >
if [ "$TASK" = 'PHPUNIT' ];
+53 -35
View File
@@ -1,48 +1,66 @@
MOODLE TRADEMARKS POLICY
========================
The word "Moodle" is trademarked in many countries around the world. The word
was originally coined as an acronym: Modular Object-Oriented Dynamic Learning
Environment. The trademark is owned by Martin Dougiamas, Founder and Director
of Moodle.
The Moodle Trademark
--------------------
The law obligates trademark owners to police their marks and prevent the use of
confusingly similar names by third parties. Through this policy wed like to
make it clear how Moodle-related projects, organisations, and people can use
the Moodle trademark. Wed also like to be clear about how use of the word is
restricted when used to promote commercial Moodle services. We do this to
protect the very business model that allows us to continue developing Moodle
for you.
The brand and word "Moodle" has trade mark protection in many countries around
the world. Various Moodle™ trade marks are owned by either Moodle Pty Ltd or
one of its associated entities. The law obligates trade mark owners to police
their trade marks and prevent the use of confusingly similar names by
third parties.
Allowed uses
------------
We have created a more concise and thorough set of Trademark Guidelines
(https://moodle.com/wp-content/uploads/2023/02/Moodle-Trademark-Guidelines-2023-4.pdf)
to help you understand how to comply with Moodle's trade mark requirements.
The Trademark Guidelines will also assist our Moodle Certified Partners and the
community to understand some of the principles that inform Moodle's stance
whenever potential infringement has been detected by us or our community.
The following uses dont require any permission at all:
We need to be clear about use of the word "Moodle" and how we restrict its use
when promoting commercial Moodle™ branded services. The proper use of
trade marks reliably assures consumers about the quality of the associated
products or services and where they have been derived from. Because the
Moodle LMS is made available under the open source GNU General Public License'
that permits you to modify the copyrighted software, the distribution of such
modified software in combination with Moodle trade marks can potentially
mislead others in the community. To be clear, the GNU GPL does not include an
implied right or licence to use Moodle's trade marks.
* Referring to the software or the Moodle project.
* Describing your own Moodle implementation (including within corporate
settings).
We do all this to protect the very business model that allows us to continue
developing various Moodle software solutions for you.
Allowed uses of "Moodle"
------------------------
The following uses don't require any permission at all:
* Referring to the software or the Moodle project as the "Moodle™ software"
or the "Moodle™ project"
* Describing your own implementation of the Moodle™ software platform
(including within corporate settings).
* Describing a Moodle-based community hub.
* Describing some software youve made that integrates with Moodle
(eg a Moodle integration feature on another system).
* Describing certain software you've made that integrates with Moodle
branded software (e.g. a Moodle integration feature on another system).
Restricted uses
---------------
Restricted uses of "Moodle"
---------------------------
The following uses are generally prohibited without explicit and direct
permission being granted to you by Moodle Pty Ltd. We do this to protect the
Moodle project from software and sites which could confuse people. Please
contact us to ask for permission in writing.
Moodle project from software and sites which could confuse people. If in
doubt, reach out for clarification at <trademarks@moodle.com>
* You cant use "Moodle" in the name of your software (including Mobile apps)
* You cant use "Moodle" in your company name
* You cant use "Moodle" in your domain name
* You cant use "Moodle" in advertising-related keywords (such as Adsense)
* You cant use "Moodle" to describe services around Moodle (such as hosting,
training, support, consulting, course creation services, theme development,
customisation, installation, integration and certification). This applies
even if you do not charge for the services. Note that usually only Moodle
Partners have this permission.
For information about the Moodle Partner Certification Mark as well as for how
to contact us, please see <https://moodle.com/trademarks/>.
* You can't use the word "Moodle" or any Moodle logos for commercial purposes
without prior written permission from Moodle HQ.
* You can't use "Moodle" in the name of your software (including Mobile apps).
* You can't use "Moodle" in your company name.
* You can't use "Moodle" in your domain name.
* You can't use "Moodle" in advertising-related keywords (such as Adsense).
* You can't use "Moodle" to describe services around Moodle
(such as hosting, training, support, consulting, course creation services,
theme development, customisation, installation, integration, analytics
and certification) that cause consumers to be confused that you are
associated with Moodle HQ if you are not.
This applies even if you do not charge for the services.
Note that usually only Moodle Partners have this permission.
+574 -5
View File
@@ -3371,6 +3371,7 @@
<VENDOR name="oracle" version="11.2" />
</DATABASE>
<PHP version="7.3.0" level="required">
<RESTRICT function="restrict_php_version_81" message="unsupportedphpversion81" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -3557,6 +3558,7 @@
<VENDOR name="oracle" version="11.2" />
</DATABASE>
<PHP version="7.3.0" level="required">
<RESTRICT function="restrict_php_version_81" message="unsupportedphpversion81" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -3749,6 +3751,7 @@
<VENDOR name="oracle" version="19" />
</DATABASE>
<PHP version="7.4.0" level="required">
<RESTRICT function="restrict_php_version_82" message="unsupportedphpversion82" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -3781,11 +3784,6 @@
<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" />
@@ -3927,4 +3925,575 @@
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="4.2" requires="3.11.8">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="10.6.7" />
<VENDOR name="mysql" version="8.0" />
<VENDOR name="postgres" version="13" />
<VENDOR name="mssql" version="14.0" />
<VENDOR name="oracle" version="19" />
</DATABASE>
<PHP version="8.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="required">
<FEEDBACK>
<ON_ERROR message="mbstringrequired" />
</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="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_EXTENSION name="sodium" level="required"/>
<PHP_EXTENSION name="exif" level="optional"/>
</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_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
<FEEDBACK>
<ON_ERROR message="sixtyfourbitsrequired" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
<FEEDBACK>
<ON_CHECK message="iscustomadminwarnings" />
</FEEDBACK>
</CUSTOM_CHECK>
<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">
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="4.3" requires="3.11.8">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="10.6.7" />
<VENDOR name="mysql" version="8.0" />
<VENDOR name="postgres" version="13" />
<VENDOR name="mssql" version="14.0" />
<VENDOR name="oracle" version="19" />
</DATABASE>
<PHP version="8.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="required">
<FEEDBACK>
<ON_ERROR message="mbstringrequired" />
</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="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_EXTENSION name="sodium" level="required"/>
<PHP_EXTENSION name="exif" level="optional"/>
</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_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
<FEEDBACK>
<ON_ERROR message="sixtyfourbitsrequired" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
<FEEDBACK>
<ON_CHECK message="iscustomadminwarnings" />
</FEEDBACK>
</CUSTOM_CHECK>
<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">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_db_prefix_length" level="required">
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="4.4" requires="4.1.2">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="10.6.7" />
<VENDOR name="mysql" version="8.0" />
<VENDOR name="postgres" version="13" />
<VENDOR name="mssql" version="14.0" />
<VENDOR name="oracle" version="19" />
</DATABASE>
<PHP version="8.1.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="required">
<FEEDBACK>
<ON_ERROR message="mbstringrequired" />
</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="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_EXTENSION name="sodium" level="required"/>
<PHP_EXTENSION name="exif" level="optional"/>
</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_CHECK file="lib/upgradelib.php" function="check_sixtyfour_bits" level="required">
<FEEDBACK>
<ON_ERROR message="sixtyfourbitsrequired" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
<FEEDBACK>
<ON_CHECK message="iscustomadminwarnings" />
</FEEDBACK>
</CUSTOM_CHECK>
<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">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_db_prefix_length" level="required">
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>
+10 -2
View File
@@ -6,7 +6,7 @@ require_once(__DIR__ . '/../../config.php');
require_once($CFG->libdir.'/adminlib.php');
include_once($CFG->dirroot.'/mnet/lib.php');
$sort = optional_param('sort', 'username', PARAM_ALPHA);
$sort = optional_param('sort', 'username', PARAM_ALPHAEXT);
$dir = optional_param('dir', 'ASC', PARAM_ALPHA);
$page = optional_param('page', 0, PARAM_INT);
$perpage = optional_param('perpage', 30, PARAM_INT);
@@ -153,7 +153,15 @@ foreach ($columns as $column) {
$headings[$column] = "<a href=\"?sort=$column&amp;dir=$columndir&amp;\">".$string[$column]."</a>$columnicon";
}
$headings['delete'] = '';
$acl = $DB->get_records('mnet_sso_access_control', null, "$sort $dir", '*'); //, $page * $perpage, $perpage);
$sortorder = get_safe_orderby([
'username' => 'username',
'mnet_host_id' => 'mnet_host_id',
'access' => 'accessctrl',
'default' => 'username',
], $sort, $dir, false);
$acl = $DB->get_records('mnet_sso_access_control', null, $sortorder);
$aclcount = $DB->count_records('mnet_sso_access_control');
if (!$acl) {
+2 -3
View File
@@ -59,9 +59,8 @@ class mnet_simple_host_form extends moodleform {
$wwwroot = 'http://'.$wwwroot;
}
if ($host = $DB->get_record('mnet_host', array('wwwroot' => $wwwroot))) {
global $CFG;
return array('wwwroot' => get_string('hostexists', 'mnet',
new moodle_url('/admin/mnet/peers.php', array('hostid' => $host->id))));
$str = get_string('hostexists', 'mnet', (new moodle_url('/admin/mnet/peers.php', ['hostid' => $host->id]))->out());
return array('wwwroot' => $str);
}
return array();
}
@@ -51,12 +51,12 @@
<div class="form-password">
<span data-passwordunmask="wrapper" data-passwordunmaskid="{{ id }}">
<span data-passwordunmask="editor">
<input type="hidden"
<input type="password"
name="{{ name }}"
id="{{ id }}"
value="{{ value }}"
data-size="{{ size }}"
class="form-control d-inline-block"
class="form-control d-none"
>
</span>
<a href="#" data-passwordunmask="edit" title="{{ edithint }}">
@@ -32,8 +32,11 @@ Feature: Manage availability conditions
Given the following "courses" exist:
| fullname | shortname | format |
| Course 1 | C1 | topics |
And the following "activity" exists:
| activity | page |
| course | C1 |
| name | P1 |
And I log in as "admin"
And I am on site homepage
When I navigate to "Plugins > Availability restrictions > Manage restrictions" in site administration
# Check the icon is there (it should be a Hide icon, meaning is currently visible).
@@ -49,8 +52,7 @@ Feature: Manage availability conditions
# OK, toggling works. Set the grade one to Hide and we'll go see if it actually worked.
And I click on "Hide" "icon" in the "Restriction by grade" "table_row"
And I am on "Course 1" course homepage with editing mode on
And I add a "Page" to section "1"
And I am on the "P1" "page activity editing" page
And I expand all fieldsets
And I click on "Add restriction..." "button"
And "Add restriction..." "dialogue" should be visible
+12
View File
@@ -0,0 +1,12 @@
define("tool_behat/steps",["exports","core/ajax","core/templates","core/pending"],(function(_exports,_ajax,_templates,_pending){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){return void reject(error)}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_ajax=_interopRequireDefault(_ajax),_templates=_interopRequireDefault(_templates),_pending=_interopRequireDefault(_pending);
/**
* Enhancements for the step definitions page.
*
* @module tool_behat/steps
* @copyright 2022 Catalyst IT EU
* @author Mark Johnson <mark.johnson@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
var getRequiredFieldsContent=function(entityData){var _entityData$required;return null!==(_entityData$required=entityData.required)&&void 0!==_entityData$required&&_entityData$required.length?_templates.default.renderForPromise("tool_behat/steprequiredfields",{fields:entityData.required}):Promise.resolve({html:"",js:""})};_exports.init=function(){var fn,_ref;document.addEventListener("change",(fn=regeneratorRuntime.mark((function _callee(e){var entityElement,stepElement,pendingPromise,entityData,_yield$getRequiredFie,html,js,stepRequiredFields;return regeneratorRuntime.wrap((function(_context){for(;;)switch(_context.prev=_context.next){case 0:if(entityElement=e.target.closest(".entities"),stepElement=e.target.closest(".stepcontent"),entityElement&&stepElement){_context.next=4;break}return _context.abrupt("return");case 4:return pendingPromise=new _pending.default("tool_behat/steps:change"),_context.next=7,entityType=e.target.value,_ajax.default.call([{methodname:"tool_behat_get_entity_generator",args:{entitytype:entityType}}])[0];case 7:return entityData=_context.sent,_context.next=10,getRequiredFieldsContent(entityData);case 10:if(_yield$getRequiredFie=_context.sent,html=_yield$getRequiredFie.html,js=_yield$getRequiredFie.js,!(stepRequiredFields=stepElement.querySelector(".steprequiredfields"))){_context.next=19;break}return _context.next=17,_templates.default.replaceNode(stepRequiredFields,html,js);case 17:_context.next=21;break;case 19:return _context.next=21,_templates.default.appendNodeContents(stepElement,html,js);case 21:pendingPromise.resolve();case 22:case"end":return _context.stop()}var entityType}),_callee)})),_ref=function(){var self=this,args=arguments;return new Promise((function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(void 0)}))},function(_x){return _ref.apply(this,arguments)}))}}));
//# sourceMappingURL=steps.min.js.map
@@ -0,0 +1 @@
{"version":3,"file":"steps.min.js","sources":["../src/steps.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\nimport Ajax from 'core/ajax';\nimport Templates from 'core/templates';\nimport PendingJS from 'core/pending';\n\n/**\n * Enhancements for the step definitions page.\n *\n * @module tool_behat/steps\n * @copyright 2022 Catalyst IT EU\n * @author Mark Johnson <mark.johnson@catalyst-eu.net>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * Call the get_entity_generator web service function\n *\n * Takes the name of an entity generator and returns an object containing a list of the required fields.\n *\n * @param {String} entityType\n * @returns {Promise}\n */\nconst getGeneratorEntities = (entityType) => Ajax.call([{\n methodname: 'tool_behat_get_entity_generator',\n args: {entitytype: entityType}\n}])[0];\n\n/**\n * Render HTML for required fields\n *\n * Takes the entity data returned from getGeneratorEntities and renders the HTML to display the required fields.\n *\n * @param {String} entityData\n * @return {Promise}\n */\nconst getRequiredFieldsContent = (entityData) => {\n if (!entityData.required?.length) {\n return Promise.resolve({\n html: '',\n js: ''\n });\n }\n return Templates.renderForPromise('tool_behat/steprequiredfields', {fields: entityData.required});\n};\n\nexport const init = () => {\n // When an entity is selected in the \"the following exist\" step, fetch and display the required fields.\n document.addEventListener('change', async(e) => {\n const entityElement = e.target.closest('.entities');\n const stepElement = e.target.closest('.stepcontent');\n if (!entityElement || !stepElement) {\n return;\n }\n\n const pendingPromise = new PendingJS('tool_behat/steps:change');\n\n const entityData = await getGeneratorEntities(e.target.value);\n const {html, js} = await getRequiredFieldsContent(entityData);\n\n const stepRequiredFields = stepElement.querySelector('.steprequiredfields');\n if (stepRequiredFields) {\n await Templates.replaceNode(stepRequiredFields, html, js);\n } else {\n await Templates.appendNodeContents(stepElement, html, js);\n }\n pendingPromise.resolve();\n });\n};\n"],"names":["getRequiredFieldsContent","entityData","required","_entityData$required","length","Templates","renderForPromise","fields","Promise","resolve","html","js","document","addEventListener","e","entityElement","target","closest","stepElement","pendingPromise","PendingJS","entityType","value","Ajax","call","methodname","args","entitytype","stepRequiredFields","querySelector","replaceNode","appendNodeContents"],"mappings":";;;;;;;;;IAiDMA,yBAA2B,SAACC,yEACzBA,WAAWC,0CAAXC,qBAAqBC,OAMnBC,mBAAUC,iBAAiB,gCAAiC,CAACC,OAAQN,WAAWC,WAL5EM,QAAQC,QAAQ,CACnBC,KAAM,GACNC,GAAI,oBAMI,uBAEhBC,SAASC,iBAAiB,sCAAU,iBAAMC,oNAChCC,cAAgBD,EAAEE,OAAOC,QAAQ,aACjCC,YAAcJ,EAAEE,OAAOC,QAAQ,gBAChCF,eAAkBG,kFAIjBC,eAAiB,IAAIC,iBAAU,2CAhCfC,WAkCwBP,EAAEE,OAAOM,MAlClBC,cAAKC,KAAK,CAAC,CACpDC,WAAY,kCACZC,KAAM,CAACC,WAAYN,eACnB,iBA+BUpB,0CACmBD,yBAAyBC,2DAA3CS,2BAAAA,KAAMC,yBAAAA,KAEPiB,mBAAqBV,YAAYW,cAAc,wEAE3CxB,mBAAUyB,YAAYF,mBAAoBlB,KAAMC,mEAEhDN,mBAAU0B,mBAAmBb,YAAaR,KAAMC,YAE1DQ,eAAeV,mDA3CM,IAACY"}
+82
View File
@@ -0,0 +1,82 @@
// 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/>.
import Ajax from 'core/ajax';
import Templates from 'core/templates';
import PendingJS from 'core/pending';
/**
* Enhancements for the step definitions page.
*
* @module tool_behat/steps
* @copyright 2022 Catalyst IT EU
* @author Mark Johnson <mark.johnson@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Call the get_entity_generator web service function
*
* Takes the name of an entity generator and returns an object containing a list of the required fields.
*
* @param {String} entityType
* @returns {Promise}
*/
const getGeneratorEntities = (entityType) => Ajax.call([{
methodname: 'tool_behat_get_entity_generator',
args: {entitytype: entityType}
}])[0];
/**
* Render HTML for required fields
*
* Takes the entity data returned from getGeneratorEntities and renders the HTML to display the required fields.
*
* @param {String} entityData
* @return {Promise}
*/
const getRequiredFieldsContent = (entityData) => {
if (!entityData.required?.length) {
return Promise.resolve({
html: '',
js: ''
});
}
return Templates.renderForPromise('tool_behat/steprequiredfields', {fields: entityData.required});
};
export const init = () => {
// When an entity is selected in the "the following exist" step, fetch and display the required fields.
document.addEventListener('change', async(e) => {
const entityElement = e.target.closest('.entities');
const stepElement = e.target.closest('.stepcontent');
if (!entityElement || !stepElement) {
return;
}
const pendingPromise = new PendingJS('tool_behat/steps:change');
const entityData = await getGeneratorEntities(e.target.value);
const {html, js} = await getRequiredFieldsContent(entityData);
const stepRequiredFields = stepElement.querySelector('.steprequiredfields');
if (stepRequiredFields) {
await Templates.replaceNode(stepRequiredFields, html, js);
} else {
await Templates.appendNodeContents(stepElement, html, js);
}
pendingPromise.resolve();
});
};
@@ -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/>.
/**
* Return data about an entity generator.
*
* @package tool_behat
* @copyright 2022 onwards Catalyst IT EU {@link https://catalyst-eu.net}
* @author Mark Johnson <mark.johnson@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_behat\external;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/externallib.php');
/**
* External function for getting properties of entity generators.
*/
class get_entity_generator extends \external_api {
/**
* Define parameters for external function.
*
* The parameter is either in the format 'entity' or 'component_name > entity'. There is no appropriate param type for a
* string like this containing angle brackets, so we will do PARAM_RAW. The value will be parsed by
* behat_data_generators::parse_entity_type, which validates the format of the parameter and throws an exception if it is not
* correct.
*
* @return \external_function_parameters
*/
public static function execute_parameters(): \external_function_parameters {
return new \external_function_parameters([
'entitytype' => new \external_value(PARAM_RAW, 'Entity type that can be created by a generator.'),
]);
}
/**
* Return a list of the required fields for a given entity type.
*
* @param string $entitytype
* @return array
*/
public static function execute(string $entitytype): array {
global $CFG;
// Ensure we can load Behat and Facebook namespaces in behat libraries.
require_once("{$CFG->dirroot}/vendor/autoload.php");
require_once("{$CFG->libdir}/tests/behat/behat_data_generators.php");
$params = self::validate_parameters(self::execute_parameters(), ['entitytype' => $entitytype]);
$context = \context_system::instance();
self::validate_context($context);
require_capability('moodle/site:config', $context);
$generators = new \behat_data_generators();
$entity = $generators->get_entity($params['entitytype']);
return ['required' => $entity['required']];
}
/**
* Define return values.
*
* Return required fields
*
* @return \external_single_structure
*/
public static function execute_returns(): \external_single_structure {
return new \external_single_structure([
'required' => new \external_multiple_structure(
new \external_value(PARAM_TEXT, 'Required field'),
'Required fields',
VALUE_OPTIONAL
),
]);
}
}
+11 -9
View File
@@ -49,7 +49,7 @@ list($options, $unrecognized) = cli_get_params(
'torun' => 0,
'optimize-runs' => '',
'add-core-features-to-theme' => false,
'axe' => false,
'axe' => null,
'disable-composer' => false,
'composer-upgrade' => true,
'composer-self-update' => true,
@@ -69,7 +69,7 @@ Behat utilities to initialise behat tests
Usage:
php init.php [--parallel=value [--maxruns=value] [--fromrun=value --torun=value]]
[--axe] [-o | --optimize-runs] [-a | --add-core-features-to-theme]
[--no-axe] [-o | --optimize-runs] [-a | --add-core-features-to-theme]
[--no-composer-self-update] [--no-composer-upgrade]
[--disable-composer]
[--help]
@@ -79,7 +79,7 @@ Options:
-m, --maxruns Max parallel processes to be executed at one time
--fromrun Execute run starting from (Used for parallel runs on different vms)
--torun Execute run till (Used for parallel runs on different vms)
--axe Include axe accessibility tests
--no-axe Disable axe accessibility tests.
-o, --optimize-runs
Split features with specified tags in all parallel runs.
@@ -110,6 +110,12 @@ if (!empty($options['help'])) {
exit(0);
}
if ($options['axe']) {
echo "Axe accessibility tests are enabled by default, to disable them, use the --no-axe option.\n";
} else if ($options['axe'] === false) {
echo "Axe accessibility tests have been disabled.\n";
}
// Check which util file to call.
$utilfile = 'util_single_run.php';
$commandoptions = "";
@@ -118,9 +124,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
$utilfile = 'util.php';
// Sanitize all input options, so they can be passed to util.
foreach ($options as $option => $value) {
if ($value) {
$commandoptions .= " --$option=\"$value\"";
}
$commandoptions .= behat_get_command_flags($option, $value);
}
} else {
// Only sanitize options for single run.
@@ -130,9 +134,7 @@ if ($options['parallel'] && $options['parallel'] > 1) {
];
foreach ($cmdoptionsforsinglerun as $option) {
if (!empty($options[$option])) {
$commandoptions .= " --$option='$options[$option]'";
}
$commandoptions .= behat_get_command_flags($option, $options[$option]);
}
}
+4 -9
View File
@@ -54,7 +54,7 @@ list($options, $unrecognized) = cli_get_params(
'torun' => 0,
'optimize-runs' => '',
'add-core-features-to-theme' => false,
'axe' => false,
'axe' => true,
),
array(
'h' => 'help',
@@ -70,7 +70,7 @@ $help = "
Behat utilities to manage the test environment
Usage:
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--axe|--help] [--parallel=value [--maxruns=value]]
php util.php [--install|--drop|--enable|--disable|--diag|--updatesteps|--no-axe|--help] [--parallel=value [--maxruns=value]]
Options:
--install Installs the test environment for acceptance tests
@@ -79,7 +79,7 @@ Options:
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--axe Include axe accessibility tests
--no-axe Disable axe accessibility tests.
-j, --parallel Number of parallel behat run operation
-m, --maxruns Max parallel processes to be executed at one time.
@@ -317,12 +317,7 @@ function commands_to_execute($options) {
}
foreach ($extraoptions as $option => $value) {
if ($options[$option]) {
$extra .= " --$option";
if ($value) {
$extra .= "=\"$value\"";
}
}
$extra .= behat_get_command_flags($option, $value);
}
if (empty($options['parallel'])) {
+3 -3
View File
@@ -49,7 +49,7 @@ list($options, $unrecognized) = cli_get_params(
'updatesteps' => false,
'optimize-runs' => '',
'add-core-features-to-theme' => false,
'axe' => false,
'axe' => true,
),
array(
'h' => 'help',
@@ -76,7 +76,7 @@ Options:
--disable Disables test environment
--diag Get behat test environment status code
--updatesteps Update feature step file.
--axe Include axe accessibility tests
--no-axe Disable axe accessibility tests.
-o, --optimize-runs Split features with specified tags in all parallel runs.
-a, --add-core-features-to-theme Add all core features to specified theme's
@@ -183,7 +183,7 @@ if ($options['install']) {
behat_config_manager::set_behat_run_config_value('behatsiteenabled', 1);
}
// Define whether to run Behat with axe tests.
// Configure axe according to option.
behat_config_manager::set_behat_run_config_value('axe', $options['axe']);
// Enable test mode.
+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/>.
/**
* Define web service functions for tool_behat
*
* @package tool_behat
* @copyright 2022 onwards Catalyst IT EU {@link https://catalyst-eu.net}
* @author Mark Johnson <mark.johnson@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$functions = [
'tool_behat_get_entity_generator' => [
'classname' => 'tool_behat\\external\\get_entity_generator',
'methodname' => 'execute',
'description' => 'Get the generator details for an entity',
'type' => 'read',
'ajax' => true,
'capabilities' => 'moodle/site:config'
]
];
+1
View File
@@ -56,6 +56,7 @@ if ($components) {
$form = new steps_definitions_form(null, array('components' => $componentswithsteps));
// Output contents.
$PAGE->requires->js_call_amd('tool_behat/steps', 'init');
$renderer = $PAGE->get_renderer('tool_behat');
echo $renderer->render_stepsdefinitions($steps, $form);
+28
View File
@@ -24,6 +24,8 @@
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/behat/classes/behat_generator_base.php');
/**
* Renderer for behat tool web features
*
@@ -106,6 +108,32 @@ class tool_behat_renderer extends plugin_renderer_base {
},
$stepsdefinitions
);
$elementstrings = [];
$count = 1;
$stepsdefinitions = preg_replace_callback('/(the following ")ELEMENT\d?_STRING(" exist:)/',
function($matches) use (&$elementstrings, &$count) {
// Replace element type arguments with a user-friendly select.
if (empty($elementstrings)) {
$behatgenerators = new behat_data_generators();
$componententities = $behatgenerators->get_all_entities();
ksort($componententities);
$elementstrings = [];
foreach ($componententities as $component => $entities) {
asort($entities);
foreach ($entities as $entity) {
$string = ($component === 'core') ? $entity : $component . ' > ' . $entity;
$elementstrings[$string] = $string;
}
}
}
$select = html_writer::select($elementstrings, 'entities' . $count, '', ['' => 'choosedots'],
['class' => 'entities']);
$count++;
return $matches[1] . $select . $matches[2];
},
$stepsdefinitions
);
}
// Steps definitions.
+6
View File
@@ -29,3 +29,9 @@
#page-admin-tool-behat-index .steps-definitions .stepregex {
color: #060;
}
#page-admin-tool-behat-index .steprequiredfields {
font-weight: bold;
font-size: 1em;
margin-top: 1em;
}
@@ -0,0 +1,33 @@
{{!
This file is part of Moodle - https://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_behat/steprequiredfields
Display a Gherkin-style table row showing required columns for a step.
Example context (json):
{
"fields": [
"user",
"role",
"context"
]
}
}}
<pre class="steprequiredfields">
|{{#fields}} {{{.}}} |{{/fields}}
</pre>
@@ -105,8 +105,7 @@ Feature: Set up contextual data for tests
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
When I log in as "student1"
And I am on "Course 1" course homepage
When I am on the "Course 1" course page logged in as student1
Then I should see "Topic 1"
Scenario: Add role assigns
@@ -140,17 +139,11 @@ Feature: Set up contextual data for tests
When I log in as "user1"
And I am on site homepage
Then "Edit settings" "link" should exist in current page administration
And I log out
And I log in as "user2"
And I am on "Course 1" course homepage
And I am on the "Course 1" course page logged in as user2
And "Turn editing on" "button" should exist
And I log out
And I log in as "user3"
And I am on "Course 1" course homepage
And I am on the "Course 1" course page logged in as user3
And "Turn editing on" "button" should exist
And I log out
And I log in as "user4"
And I am on "Course 1" course homepage
And I am on the "Course 1" course page logged in as user4
And "Turn editing on" "button" should exist
And I log out
And I log in as "user5"
@@ -192,8 +185,7 @@ Feature: Set up contextual data for tests
And the following "activities" exist:
| activity | name | intro | course | idnumber | grade |
| assign | Test assignment name with scale | Test assignment description | C1 | assign1 | Test Scale 1 |
When I log in as "admin"
And I am on "Course 1" course homepage
When I am on the "Course 1" course page logged in as admin
Then I should see "Test assignment name"
# Assignment 2.2 module type is disabled by default
# And I should see "Test assignment22 name"
@@ -311,9 +303,7 @@ Feature: Set up contextual data for tests
And the following "grade categories" exist:
| fullname | course | gradecategory |
| Grade sub category 2 | C1 | Grade category 1 |
When I log in as "admin"
And I am on "Course 1" course homepage
And I navigate to "View > Grader report" in the course gradebook
When I am on the "Course 1" "grades > Grader report > View" page logged in as "admin"
Then I should see "Grade category 1"
And I should see "Grade sub category 2"
@@ -334,9 +324,7 @@ Feature: Set up contextual data for tests
| itemname | course | gradecategory |
| Test Grade Item 2 | C1 | Grade category 1 |
| Test Grade Item 3 | C1 | Grade sub category 2 |
When I log in as "admin"
And I am on "Course 1" course homepage
And I navigate to "Setup > Gradebook setup" in the course gradebook
When I am on the "Course 1" "grades > gradebook setup" page logged in as "admin"
Then I should see "Test Grade Item 1"
And I follow "Edit Test Grade Item 1"
And I expand all fieldsets
@@ -362,9 +350,7 @@ Feature: Set up contextual data for tests
And the following "scales" exist:
| name | scale |
| Test Scale 1 | Disappointing, Good, Very good, Excellent |
When I log in as "admin"
And I am on "Course 1" course homepage
And I navigate to "Scales" in the course gradebook
When I am on the "Course 1" "grades > scales" page logged in as admin
Then I should see "Test Scale 1"
And I should see "Disappointing, Good, Very good, Excellent"
@@ -383,9 +369,7 @@ Feature: Set up contextual data for tests
| Grade outcome 2 | OT2 | C1 | Test Scale 1 |
And the following config values are set as admin:
| enableoutcomes | 1 |
When I log in as "admin"
And I am on "Course 1" course homepage
And I follow "Outcomes"
When I am on the "Course 1" "grades > outcomes" page logged in as admin
Then I should see "Grade outcome 1" in the "#addoutcomes" "css_element"
And I should see "Grade outcome 2" in the "#removeoutcomes" "css_element"
And I follow "Edit outcomes"
@@ -21,12 +21,15 @@ Feature: Edit capabilities
Scenario: Default system capabilities modification
Given I log in as "admin"
And I set the following system permissions of "Teacher" role:
And I navigate to "Users > Permissions > Define roles" in site administration
And I click on "Edit Teacher role" "link"
And I fill the capabilities form with the following permissions:
| capability | permission |
| block/mnet_hosts:myaddinstance | Allow |
| moodle/site:messageanyuser | Inherit |
| moodle/grade:managesharedforms | Prevent |
| moodle/course:request | Prohibit |
And I press "Save changes"
When I follow "Edit Teacher role"
Then "block/mnet_hosts:myaddinstance" capability has "Allow" permission
And "moodle/site:messageanyuser" capability has "Not set" permission
@@ -48,16 +51,12 @@ Feature: Edit capabilities
And "mod/forum:addquestion" capability has "Allow" permission
Scenario: Module capabilities overrides
Given I log in as "teacher1"
And the following "activity" exists:
Given the following "activity" exists:
| activity | forum |
| course | C1 |
| idnumber | 00001 |
| name | I'm the name |
| intro | I'm the introduction |
| section | 1 |
And I am on "Course 1" course homepage with editing mode on
And I follow "I'm the name"
And I am on the "I'm the name" "forum activity" page logged in as teacher1
And I navigate to "Permissions" in current page administration
And I override the system permissions of "Student" role with:
| mod/forum:deleteanypost | Prohibit |
@@ -30,10 +30,9 @@ Feature: Verify that all form fields values can be get and set
| student2 | G2 |
| student3 | G2 |
And the following "activities" exist:
| activity | course | idnumber | name | intro | firstpagetitle | wikimode | visible |
| wiki | C1 | wiki1 | Test this one | Test this one | Test this one | collaborative | 0 |
And I log in as "admin"
And I am on "Course 1" course homepage
| activity | course | idnumber | name | firstpagetitle | wikimode | visible |
| wiki | C1 | wiki1 | Test this one | Test this one | collaborative | 0 |
And I am on the "Course 1" course page logged in as admin
And I navigate to "Reset" in current page administration
# Select (multi-select) - Checking "the select box should contain".
And I expand all fieldsets
@@ -61,16 +60,14 @@ Feature: Verify that all form fields values can be get and set
# Checkbox - Checking "I set the field" and "The field matches value" ticked.
And I set the field "Force format" to "1"
And I press "Save and return to course"
And I am on the "Test this one" "wiki activity" page
And I navigate to "Edit settings" in current page administration
And I am on the "Test this one" "wiki activity editing" page
And I expand all fieldsets
And the field "Force format" matches value "1"
And the field "Force format" does not match value ""
# Checkbox - Checking "I set the field" and "The field matches value" unticked.
And I set the field "Force format" to ""
And I press "Save and return to course"
And I am on the "Test this one" "wiki activity" page
And I navigate to "Edit settings" in current page administration
And I am on the "Test this one" "wiki activity editing" page
And I expand all fieldsets
And the field "Force format" matches value ""
And the field "Force format" does not match value "1"
@@ -78,8 +75,7 @@ Feature: Verify that all form fields values can be get and set
And I set the following fields to these values:
| Force format | 1 |
And I press "Save and return to course"
And I am on the "Test this one" "wiki activity" page
And I navigate to "Edit settings" in current page administration
And I am on the "Test this one" "wiki activity editing" page
And I expand all fieldsets
And the following fields match these values:
| Force format | 1 |
@@ -89,8 +85,7 @@ Feature: Verify that all form fields values can be get and set
And I set the following fields to these values:
| Force format | |
And I press "Save and return to course"
And I am on the "Test this one" "wiki activity" page
And I navigate to "Edit settings" in current page administration
And I am on the "Test this one" "wiki activity editing" page
And I expand all fieldsets
And the following fields match these values:
| Force format | |
@@ -143,10 +138,11 @@ Feature: Verify that all form fields values can be get and set
And I navigate to "Edit settings" in current page administration
And the field "Course ID number" matches value "Course id number"
Scenario: with JS disabled all form fields getters and setters works as expected
@javascript
Scenario: with JS enabled all form fields getters and setters works as expected
Given the following "activities" exist:
| activity | course | name |
| lesson | C1 | Test lesson |
Then I am on "Course 1" course homepage
And I navigate to "Users > Groups" in current page administration
# Select (multi-select & AJAX) - Checking "I set the field" and "select box should contain".
@@ -159,11 +155,8 @@ Feature: Verify that all form fields values can be get and set
And the "members" select box should contain "Student 2 (s2@example.com)"
And the "members" select box should not contain "Student 3 (s3@example.com)"
# Checkbox (AJAX) - Checking "I set the field" and "I set the following fields to these values".
And I am on "Course 1" course homepage
And I add a "Lesson" to section "1"
And I am on the "Test lesson" "lesson activity editing" page
And I set the following fields to these values:
| Name | Test lesson |
| Description | Test lesson description |
| available[enabled] | 1 |
And I set the field "deadline[enabled]" to "1"
# Checkbox (AJAX) - Checking "the field matches value" before saving.
@@ -13,6 +13,10 @@ Feature: List the system steps definitions
Scenario: Accessing the list
Then I should see "Step definitions"
And I should not see "There aren't steps definitions matching this filter"
And I should not see "the following \"ELEMENT_STRING\" exist:"
And "entities1" "select" should exist
And the "entities1" select box should contain "users"
And the "entities1" select box should contain "mod_assign > submissions"
@javascript
Scenario: Filtering by type
@@ -34,3 +38,11 @@ Feature: List the system steps definitions
Then I should not see "There aren't steps definitions matching this filter"
And I should see "Checks the provided element and selector type exists in the current page."
And I should see "Checks that an element and selector type exists in another element and selector type on the current page."
@javascript
Scenario: Get required fields
Given I set the field "entities1" to "users"
And I should see "| username |"
When I set the field "entities1" to "mod_quiz > user overrides"
Then I should not see "| username |"
And I should see "| quiz | user |"
@@ -0,0 +1,104 @@
<?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/>.
/**
* Unit tests for get_entity_generator web service
*
* @package tool_behat
* @copyright 2022 onwards Catalyst IT EU {@link https://catalyst-eu.net}
* @author Mark Johnson <mark.johnson@catalyst-eu.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_behat\external;
/**
* Tests for get_entity_generator web service
*
* @covers \tool_behat\external\get_entity_generator
*/
class get_entity_generator_test extends \advanced_testcase {
/**
* Log in as admin
*
* @return void
*/
public function setUp(): void {
$this->resetAfterTest();
$this->setAdminUser();
}
/**
* Get the generator for a core entity.
*
* @return void
*/
public function test_execute_core_entity(): void {
$generator = get_entity_generator::execute('users');
$this->assertEquals(['required' => ['username']], $generator);
}
/**
* Get the generator for the plugin entity.
*
* @return void
*/
public function test_execute_plugin_entity(): void {
$generator = get_entity_generator::execute('mod_book > chapters');
$this->assertEquals(['required' => ['book', 'title', 'content']], $generator);
}
/**
* Get the generator for an entity with no required fields.
*
* @return void
*/
public function test_execute_no_requried(): void {
$generator = get_entity_generator::execute('mod_forum > posts');
$this->assertEquals(['required' => []], $generator);
}
/**
* Attempt to get the generator for a core entity that does not exist.
*
* @return void
*/
public function test_execute_invalid_entity(): void {
$this->expectException('coding_exception');
get_entity_generator::execute('foo');
}
/**
* Attempt to get a generator form a plugin that does not exist.
*
* @return void
*/
public function test_execute_invalid_plugin(): void {
$this->expectException('coding_exception');
get_entity_generator::execute('foo > bar');
}
/**
* Attempt to get a generator for an entity that does not exist, from a plugin that does.
*
* @return void
*/
public function test_execute_invalid_plugin_entity(): void {
$this->expectException('coding_exception');
get_entity_generator::execute('mod_book > bar');
}
}
+2
View File
@@ -1,5 +1,7 @@
This files describes API changes in the tool_behat code.
=== 3.11.15 ===
* Behat is initialised with Axe accessibility tests enabled by default, if you want to disable them please use the --no-axe option.
=== 3.7 ===
* Behat will now look for behat step definitions in the current
theme and any parents the theme may have.
+1 -1
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2021051700; // The current plugin version (Date: YYYYMMDDXX).
$plugin->version = 2021051701; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2021051100; // Requires this Moodle version.
$plugin->component = 'tool_behat'; // Full name of the plugin (used for diagnostics)
@@ -323,7 +323,7 @@ class accessibility {
/**
* This function runs one specified check on the html item
*
* @param string $html The html string to be analysed; might be NULL.
* @param string|null $html The html string to be analysed; might be NULL.
* @param int $contentid The content area ID
* @param int $errid The error ID
* @param string $check The check name to run
@@ -333,7 +333,7 @@ class accessibility {
* @throws \dml_exception
*/
public static function run_one_check(
string $html = null,
?string $html,
int $contentid,
int $errid,
string $check,
+6 -5
View File
@@ -36,7 +36,7 @@ Useful for uploading custom langstrings to AMOS or importing or syncing them to
Options:
-l, --lang Comma seperated language ids to export, default: all
-c, --components Comma seperated components to export, default: all
-t, --target Target to copy the zip files to, default: $CFG->tempdir/customlang
-t, --target Target directory to copy the zip files to, default: $CFG->tempdir/customlang
-o, --overwrite Overwrite existing files in the target folder.
Note: If the target is not set, the files are always overwritten!
-h, --help Print out this help
@@ -73,9 +73,10 @@ if ($options['help']) {
echo $usage;
die;
}
if (!file_exists($options['target'])) {
mkdir($options['target'], 0777, true);
}
// Ensure target directory exists.
$options['target'] = rtrim($options['target'], '/') . '/';
check_dir_exists($options['target']);
cli_writeln(get_string('cliexportheading', 'tool_customlang'));
$langs = [];
@@ -90,7 +91,7 @@ foreach ($langs as $lang) {
$filename = $options['target'] . get_string('exportzipfilename', 'tool_customlang', ['lang' => $lang]);
// If the file exists and we are not using the temp folder it requires an ovewrite.
if ($options['target'] != $dafaulttarget && file_exists($filename) && !$options['overwrite']) {
cli_problem(get_string('cliexportfileexists', 'tool_customlang', $lang));
cli_problem(get_string('cliexportfileexists', 'tool_customlang', ['lang' => $lang]));
continue;
}
cli_heading(get_string('cliexportstartexport', 'tool_customlang', $lang));
+10
View File
@@ -160,6 +160,16 @@ foreach ($langfiles as $lng => $files) {
cli_heading(get_string('clifiles', 'tool_customlang', $lng));
// If we intend to check in any changes, we must first check them out.
if ($checkin) {
cli_writeln(get_string('checkout', 'tool_customlang'));
$progressbar = new progress_bar();
$progressbar->create();
tool_customlang_utils::checkout($lng, $progressbar);
}
foreach ($files as $file) {
// Generate a valid stored_file from this file.
$record = (object)[
@@ -50,6 +50,7 @@ $string['customlang:export'] = 'Export local translation';
$string['customlang:view'] = 'View local translation';
$string['export'] = 'Export custom strings';
$string['exportfilter'] = 'Select component(s) to export';
$string['exportzipfilename'] = 'customlang-export-{$a->lang}.zip';
$string['filter'] = 'Filter strings';
$string['filtercomponent'] = 'Show strings of these components';
$string['filtercustomized'] = 'Customised only';
+3 -1
View File
@@ -89,7 +89,9 @@ class tool_customlang_utils {
* @param progress_bar $progressbar optionally, the given progress bar can be updated
*/
public static function checkout($lang, progress_bar $progressbar = null) {
global $DB;
global $DB, $CFG;
require_once("{$CFG->libdir}/adminlib.php");
// For behat executions we are going to load only a few components in the
// language customisation structures. Using the whole "en" langpack is
@@ -30,6 +30,12 @@ Feature: Protected data should not be deleted
| Site purpose | PT1H | 0 |
| prot | P1D | 1 |
| unprot | P1D | 0 |
And the following "mod_forum > discussions" exist:
| user | forum | name | message |
| u1 | forump1 | Discussion subject | Test post in forump1 |
| u1 | forumu1 | Discussion subject | Test post in forumu1 |
| u1 | forump2 | Discussion subject | Test post in forump2 |
| u1 | forumu2 | Discussion subject | Test post in forumu2 |
And I set the category and purpose for the "forump1" "forum" in course "C1" to "CAT" and "prot"
And I set the category and purpose for the "forump2" "forum" in course "C2" to "CAT" and "prot"
And I set the category and purpose for the "forumu1" "forum" in course "C1" to "CAT" and "unprot"
@@ -38,47 +44,25 @@ Feature: Protected data should not be deleted
@javascripta
Scenario: Unexpired and protected data is not removed
Given I log in as "u1"
And I am on "C1" course homepage
And I add a new discussion to "forump1" forum with:
| Subject | Discussion subject |
| Message | Test post in forump1 |
And I am on "C1" course homepage
And I add a new discussion to "forumu1" forum with:
| Subject | Discussion subject |
| Message | Test post in forumu1 |
And I am on "C2" course homepage
And I add a new discussion to "forump2" forum with:
| Subject | Discussion subject |
| Message | Test post in forump2 |
And I am on "C2" course homepage
And I add a new discussion to "forumu2" forum with:
| Subject | Discussion subject |
| Message | Test post in forumu2 |
And I log out
And I log in as "admin"
Given I log in as "admin"
And I create a dataprivacy "delete" request for "u1"
And I approve a dataprivacy "delete" request for "u1"
And I run all adhoc tasks
And I navigate to "Users > Privacy and policies > Data requests" in site administration
And I should see "Deleted" in the "u1" "table_row"
And I am on "C1" course homepage
And I follow "forump1"
And I am on the "forump1" "forum activity" page
And I follow "Discussion subject"
Then I should not see "Test post in forump1"
When I am on "C1" course homepage
And I follow "forumu1"
When I am on the "forumu1" "forum activity" page
And I follow "Discussion subject"
Then I should not see "Test post in forumu1"
And I am on "C2" course homepage
And I follow "forump2"
And I am on the "forump2" "forum activity" page
And I follow "Discussion subject"
Then I should see "Test post in forump2"
When I am on "C2" course homepage
And I follow "forumu2"
When I am on the "forumu2" "forum activity" page
And I follow "Discussion subject"
Then I should not see "Test post in forumu2"
@@ -22,8 +22,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_httpsreplace\tests;
namespace tool_httpsreplace;
defined('MOODLE_INTERNAL') || die();
@@ -124,6 +124,12 @@ class controller {
}
if ($rm1 or $rm2) {
// Set the default site language to en if the deleted language pack is the default site language.
if ($CFG->lang === $lang) {
set_config('lang', 'en');
// Fix the user's current language to the default site language.
fix_current_language($CFG->lang);
}
$this->info[] = get_string('langpackremoved', 'tool_langimport', $lang);
event\langpack_removed::event_with_langcode($lang)->trigger();
return true;
+14 -1
View File
@@ -79,6 +79,19 @@ class locale {
* @return string|false Returns the new current locale, or FALSE on error.
*/
protected function set_locale(int $category = LC_ALL, string $locale = '0') {
return setlocale($category, $locale);
if (strlen($locale) <= 255 || PHP_OS_FAMILY === 'BSD' || PHP_OS_FAMILY === 'Darwin') {
// We can set the whole locale all together.
return setlocale($category, $locale);
}
// Too long locale with linux or windows, let's split it into known and supported categories.
$split = explode(';', $locale);
foreach ($split as $element) {
[$category, $value] = explode('=', $element);
if (defined($category)) { // Only if the category exists, there are OS differences.
setlocale(constant($category), $value);
}
}
return setlocale(LC_ALL, 0); // Finally, return the complete configured locale.
}
}
+101 -11
View File
@@ -14,14 +14,6 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Tests for \tool_langimport\locale class.
*
* @package tool_langimport
* @copyright 2018 Université Rennes 2 {@link https://www.univ-rennes2.fr}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_langimport;
/**
@@ -29,6 +21,7 @@ namespace tool_langimport;
*
* @package tool_langimport
* @category test
* @coversDefaultClass \tool_langimport\locale
* @copyright 2018 Université Rennes 2 {@link https://www.univ-rennes2.fr}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
@@ -36,6 +29,7 @@ class locale_test extends \advanced_testcase {
/**
* Test that \tool_langimport\locale::check_locale_availability() works as expected.
*
* @covers ::check_locale_availability
* @return void
*/
public function test_check_locale_availability() {
@@ -43,7 +37,7 @@ class locale_test extends \advanced_testcase {
// - first setlocale() call which backup current locale
// - second setlocale() call which try to set new 'es' locale
// - third setlocale() call which restore locale.
$mock = $this->getMockBuilder(\tool_langimport\locale::class)
$mock = $this->getMockBuilder(locale::class)
->onlyMethods(['set_locale'])
->getMock();
$mock->method('set_locale')->will($this->onConsecutiveCalls('en', 'es', 'en'));
@@ -56,7 +50,7 @@ class locale_test extends \advanced_testcase {
// - first setlocale() call which backup current locale
// - second setlocale() call which fail to set new locale
// - third setlocale() call which restore locale.
$mock = $this->getMockBuilder(\tool_langimport\locale::class)
$mock = $this->getMockBuilder(locale::class)
->onlyMethods(['set_locale'])
->getMock();
$mock->method('set_locale')->will($this->onConsecutiveCalls('en', false, 'en'));
@@ -66,8 +60,104 @@ class locale_test extends \advanced_testcase {
$this->assertFalse($result);
// Test an invalid parameter.
$locale = new \tool_langimport\locale();
$locale = new locale();
$this->expectException(\coding_exception::class);
$locale->check_locale_availability('');
}
/**
* Test \tool_langimport\locale::set_locale() own logic.
*
* We have to explicitly test set_locale() own logic and results,
* that effectively sets the current locale, so we need to restore
* the original locale after every test (ugly, from a purist unit test
* point of view, but needed).
*
* @dataProvider set_locale_provider
* @covers ::set_locale
*
* @param string $set locale string to be set.
* @param string $ret expected results returned after setting the locale.
*/
public function test_set_locale(string $set, string $ret) {
// Make set_locale() public.
$loc = new locale();
$rc = new \ReflectionClass(locale::class);
$rm = $rc->getMethod('set_locale');
$rm->setAccessible(true);
// Capture current locale for later restore (funnily, using the set_locale() method itself.
$originallocale = $rm->invokeArgs($loc, [LC_ALL, 0]);
// Assert we get the locale defined as expected.
$this->assertEquals($ret, $rm->invokeArgs($loc, [LC_ALL, $set]));
// We have finished, restore the original locale, so this doesn't affect other tests at distance.
// (again, funnily, using the very same set_locale() method).
$rm->invokeArgs($loc, [LC_ALL, $originallocale]);
}
/**
* Data provider for test_set_locale().
*
* Provides a locale to be set (as 'set') and a expected return value (as 'ret'). Note that
* some of the locales are OS dependent, so only the ones matching the OS will be provided.
*
* We make extensive use of the en_AU.UTF-8/English_Australia.1252 locale that is mandatory to
* be installed in any system running PHPUnit tests.
*/
public function set_locale_provider(): array {
// Let's list the allowed categories by OS.
$bsdallowed = ['LC_COLLATE', 'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME'];
$winallowed = ['LC_COLLATE', 'LC_CTYPE', 'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME'];
$linuxallowed = [
'LC_COLLATE', 'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME',
'LC_PAPER', 'LC_NAME', 'LC_ADDRESS', 'LC_TELEPHONE', 'LC_MEASUREMENT', 'LC_IDENTIFICATION'
];
// The base locale name is also OS dependent.
$baselocale = get_string('locale', 'langconfig');
if (PHP_OS_FAMILY === 'Windows') {
$baselocale = get_string('localewin', 'langconfig');
}
// Here we'll go accumulating cases to be provided.
$cases = [];
// First, the simplest case, just pass a locale name, without categories.
$cases['rawlocale'] = [
'set' => $baselocale,
'ret' => $baselocale,
];
// Now, let's fill ALL LC categories, we should get back the locale name if all them are set with same value.
// Note that this case is the one that, under Linux only, covers the changes performed to the set_locale() method.
// Pick the correct categories depending on the OS.
$oscategories = $bsdallowed; // Default to BSD/Dawrwin ones because they are the standard 6 supported by PHP.
if (PHP_OS_FAMILY === 'Windows') {
$oscategories = $winallowed;
} else if (PHP_OS_FAMILY === 'Linux') {
$oscategories = $linuxallowed;
}
$localestr = '';
foreach ($oscategories as $category) {
// Format is different by OS too, so let build the string conditionally.
if (PHP_OS_FAMILY === 'BSD' || PHP_OS_FAMILY === 'Darwin') {
// BSD uses slashes (/) separated list of the 6 values in exact order.
$localestr .= '/' . $baselocale;
} else {
// Linux/Windows use semicolon (;) separated list of category=value pairs.
$localestr .= ';' . $category . '=' . $baselocale;
}
}
$cases['allcategories'] = [
'set' => trim($localestr, ';/'),
'ret' => $baselocale,
];
// Return all the built cases.
return $cases;
}
}
@@ -33,3 +33,27 @@ Feature: Licence manager
And "This is the site default licence" "icon" should exist in the "cc" "table_row"
And "Enable licence" "icon" should not exist in the "cc" "table_row"
And "This is the site default licence" "icon" should not exist in the "public" "table_row"
@javascript @_file_upload
Scenario Outline: User licence preference is remembered depending of setting value
Given the following config values are set as admin:
| sitedefaultlicense | cc |
| rememberuserlicensepref | <rememberuserlicensepref> |
And I log in as "admin"
And I follow "Manage private files..."
And I follow "Add..."
And I follow "Upload a file"
And the field with xpath "//select[@name='license']" matches value "Creative Commons"
And I click on "Close" "button" in the "File picker" "dialogue"
When I upload "lib/tests/fixtures/empty.txt" file to "Files" filemanager as:
| Save as | empty_copy.txt |
| license | Public domain |
And I press "Save changes"
And I follow "Manage private files..."
And I follow "Add..."
Then the field with xpath "//select[@name='license']" matches value "<expectedlicence>"
Examples:
| rememberuserlicensepref | expectedlicence |
| 0 | Creative Commons |
| 1 | Public domain |
+1 -1
View File
@@ -75,7 +75,7 @@ trait reader {
*/
public static function decode_other(?string $other) {
if ($other === 'N;' || preg_match('~^.:~', $other)) {
return unserialize($other);
return unserialize($other, ['allowed_classes' => [stdClass::class]]);
} else {
return json_decode($other, true);
}
@@ -33,8 +33,7 @@ class store_test extends \advanced_testcase {
* Tests log writing.
*
* @param bool $jsonformat True to test with JSON format
* @dataProvider test_log_writing_provider
* @throws moodle_exception
* @dataProvider log_writing_provider
*/
public function test_log_writing(bool $jsonformat) {
global $DB, $CFG;
@@ -252,9 +251,9 @@ class store_test extends \advanced_testcase {
* Returns different JSON format settings so the test can be run with JSON format either on or
* off.
*
* @return [bool] Array of true/false
* @return bool[] Array of true/false
*/
public static function test_log_writing_provider(): array {
public static function log_writing_provider(): array {
return [
[false],
[true]
@@ -311,17 +310,16 @@ class store_test extends \advanced_testcase {
$logmanager = get_log_manager();
$allreports = \core_component::get_plugin_list('report');
$supportedreports = array(
'report_log' => '/report/log',
'report_loglive' => '/report/loglive'
);
// Make sure all supported reports are installed.
$expectedreports = array_keys(array_intersect_key($allreports, $supportedreports));
$reports = $logmanager->get_supported_reports('logstore_database');
$reports = array_keys($reports);
$expectedreports = array_intersect_key([
'log' => 'report_log',
'loglive' => 'report_loglive',
], $allreports);
$supportedreports = $logmanager->get_supported_reports('logstore_database');
foreach ($expectedreports as $expectedreport) {
$this->assertContains($expectedreport, $reports);
$this->assertArrayHasKey($expectedreport, $supportedreports);
}
}
}
@@ -217,20 +217,19 @@ class store_test extends \advanced_testcase {
$logmanager = get_log_manager();
$allreports = \core_component::get_plugin_list('report');
$supportedreports = array(
'report_log' => '/report/log',
'report_loglive' => '/report/loglive',
'report_outline' => '/report/outline',
'report_participation' => '/report/participation',
'report_stats' => '/report/stats'
);
// Make sure all supported reports are installed.
$expectedreports = array_keys(array_intersect_key($allreports, $supportedreports));
$reports = $logmanager->get_supported_reports('logstore_legacy');
$reports = array_keys($reports);
$expectedreports = array_intersect_key([
'log' => 'report_log',
'loglive' => 'report_loglive',
'outline' => 'report_outline',
'participation' => 'report_participation',
'stats' => 'report_stats'
], $allreports);
$supportedreports = $logmanager->get_supported_reports('logstore_legacy');
foreach ($expectedreports as $expectedreport) {
$this->assertContains($expectedreport, $reports);
$this->assertArrayHasKey($expectedreport, $supportedreports);
}
}
@@ -38,8 +38,7 @@ class store_test extends \advanced_testcase {
* Tests log writing.
*
* @param bool $jsonformat True to test with JSON format
* @dataProvider test_log_writing_provider
* @throws moodle_exception
* @dataProvider log_writing_provider
*/
public function test_log_writing(bool $jsonformat) {
global $DB;
@@ -223,9 +222,9 @@ class store_test extends \advanced_testcase {
* Returns different JSON format settings so the test can be run with JSON format either on or
* off.
*
* @return [bool] Array of true/false
* @return bool[] Array of true/false
*/
public static function test_log_writing_provider(): array {
public static function log_writing_provider(): array {
return [
[false],
[true]
@@ -239,20 +238,19 @@ class store_test extends \advanced_testcase {
$logmanager = get_log_manager();
$allreports = \core_component::get_plugin_list('report');
$supportedreports = array(
'report_log' => '/report/log',
'report_loglive' => '/report/loglive',
'report_outline' => '/report/outline',
'report_participation' => '/report/participation',
'report_stats' => '/report/stats'
);
// Make sure all supported reports are installed.
$expectedreports = array_keys(array_intersect_key($allreports, $supportedreports));
$reports = $logmanager->get_supported_reports('logstore_standard');
$reports = array_keys($reports);
$expectedreports = array_intersect_key([
'log' => 'report_log',
'loglive' => 'report_loglive',
'outline' => 'report_outline',
'participation' => 'report_participation',
'stats' => 'report_stats'
], $allreports);
$supportedreports = $logmanager->get_supported_reports('logstore_standard');
foreach ($expectedreports as $expectedreport) {
$this->assertContains($expectedreport, $reports);
$this->assertArrayHasKey($expectedreport, $supportedreports);
}
}
@@ -368,7 +366,7 @@ class store_test extends \advanced_testcase {
* Tests the decode_other function can cope with both JSON and PHP serialized format.
*
* @param mixed $value Value to encode and decode
* @dataProvider test_decode_other_provider
* @dataProvider decode_other_provider
*/
public function test_decode_other($value) {
$this->assertEquals($value, \logstore_standard\log\store::decode_other(serialize($value)));
@@ -387,7 +385,7 @@ class store_test extends \advanced_testcase {
*
* @return array Array of parameters
*/
public function test_decode_other_provider(): array {
public function decode_other_provider(): array {
return [
[['info' => 'd2819896', 'logurl' => 'discuss.php?d=2819896']],
[null],
@@ -400,8 +398,7 @@ class store_test extends \advanced_testcase {
* Checks that backup and restore of log data works correctly.
*
* @param bool $jsonformat True to test with JSON format
* @dataProvider test_log_writing_provider
* @throws moodle_exception
* @dataProvider log_writing_provider
*/
public function test_backup_restore(bool $jsonformat) {
global $DB;
@@ -77,9 +77,10 @@
ucw.registerEvents('[data-region="user-competency-status"]');
ucw.on('status-changed', infoReloader.reload.bind(infoReloader));
ucw.on('error-occured', infoReloader.reload.bind(infoReloader));
var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}');
inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader));
{{#cangrade}}
var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '{{plan.id}}', '', '{{#str}}chooserating, tool_lp{{/str}}');
inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader));
{{/cangrade}}
});
{{/js}}
{{/usercompetency}}
@@ -95,13 +95,14 @@
{{#js}}
require(['jquery', 'tool_lp/grade_user_competency_inline', 'tool_lp/user_competency_info'], function($, mod, info) {
var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '', '{{course.id}}', '{{#str}}chooserating, tool_lp{{/str}}');
var competencyElement = $('[data-region-id="{{uniqid}}"]');
var displayuser = ('{{displayuser}}' == 'true') ? true : false;
var infoReloader = new info(competencyElement, '{{competency.competency.id}}', '{{user.id}}', '', '{{course.id}}', displayuser);
inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader));
{{#cangrade}}
var inlineGrader = new mod('#rate_{{uniqid}}', '{{competency.scaleid}}', '{{competency.competency.id}}', '{{user.id}}', '', '{{course.id}}', '{{#str}}chooserating, tool_lp{{/str}}');
inlineGrader.on('competencyupdated', infoReloader.reload.bind(infoReloader));
{{/cangrade}}
});
{{/js}}
@@ -128,3 +128,18 @@ Feature: Manage competency frameworks
Then I should see "Competency framework updated"
And I should see "Science Year-6 Edited"
And I should see "sc-y-6"
Scenario: Duplicate a competency framework
Given the following lp "frameworks" exist:
| shortname | idnumber |
| CF1 | CF1 |
And the following lp "competencies" exist:
| shortname | framework |
| C1 | CF1 |
And I navigate to "Competencies > Competency frameworks" in site administration
# Duplicate the selected competency framework
When I click on "Duplicate" of edit menu in the "CF1" row
# Confirm that the selected framework was duplicated by clicking on the link
And I click on "CF1 (copy) (CF1_1)" "link"
# Confirm that the corresponding competency also exists in the duplicated framework
Then I should see "C1"
+17 -26
View File
@@ -15,6 +15,17 @@ Feature: Manage plan workflow
| usermanageowndraftplan | User manage own draft plan role | user |
| usermanageownplan | User manage own plan role | user |
| manageplan | Manager all plans role | manager |
And the following "role capabilities" exist:
| role | moodle/competency:planmanageowndraft | moodle/competency:planmanageown |
| usermanageowndraftplan | allow | |
| usermanageownplan | allow | allow |
| manageplan | allow | allow |
And the following "role capability" exists:
| role | manageplan |
| moodle/competency:planmanage | allow |
| moodle/competency:planview | allow |
| moodle/competency:planreview | allow |
| moodle/competency:planrequestreview | allow |
And the following "role assigns" exist:
| user | role | contextlevel | reference |
| user1 | usermanageowndraftplan | System | |
@@ -37,23 +48,9 @@ Feature: Manage plan workflow
| Test-Plan1 | Test-Comp2 |
| Test-Plan2 | Test-Comp1 |
| Test-Plan2 | Test-Comp2 |
And I log in as "admin"
And I set the following system permissions of "User manage own draft plan role" role:
| capability | permission |
| moodle/competency:planmanageowndraft | Allow |
And I set the following system permissions of "User manage own plan role" role:
| capability | permission |
| moodle/competency:planmanageowndraft | Allow |
| moodle/competency:planmanageown | Allow |
And I set the following system permissions of "Manager all plans role" role:
| capability | permission |
| moodle/competency:planmanage | Allow |
| moodle/competency:planmanagedraft | Allow |
| moodle/competency:planmanageowndraft | Allow |
| moodle/competency:planview | Allow |
| moodle/competency:planreview | Allow |
| moodle/competency:planrequestreview | Allow |
And I log out
And the following "blocks" exist:
| blockname | contextlevel | reference | pagetypepattern | defaultregion |
| lp | System | 1 | my-index | content |
Scenario: User can manages his own plan draft
Given I log in as "user1"
@@ -144,9 +141,7 @@ Feature: Manage plan workflow
| name | user | description | status | reviewer |
| Test-Plan3 | user1 | Description of plan 3 for user 1 | active | manager1 |
| Test-Plan4 | user1 | Description of plan 4 for user 1 | active | manager1 |
And I log in as "manager1"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "User 1"
And I am on the "user1" "user > profile" page logged in as "manager1"
And I follow "Learning plans"
And I should see "List of learning plans"
And I follow "Learning plans"
@@ -163,9 +158,7 @@ Feature: Manage plan workflow
| name | user | description | status | reviewer |
| Test-Plan3 | user1 | Description of plan 3 for user 1 | active | manager1 |
| Test-Plan4 | user1 | Description of plan 4 for user 1 | active | manager1 |
And I log in as "manager1"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "User 1"
And I am on the "user1" "user > profile" page logged in as "manager1"
And I follow "Learning plans"
And I should see "List of learning plans"
And I follow "Learning plans"
@@ -185,9 +178,7 @@ Feature: Manage plan workflow
| name | user | description | status | reviewer |
| Test-Plan3 | user1 | Description of plan 3 for user 1 | complete | manager1 |
| Test-Plan4 | user1 | Description of plan 4 for user 1 | complete | manager1 |
And I log in as "manager1"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "User 1"
And I am on the "user1" "user > profile" page logged in as "manager1"
And I follow "Learning plans"
And I should see "List of learning plans"
And I follow "Learning plans"
+2
View File
@@ -25,6 +25,8 @@
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->libdir.'/adminlib.php');
admin_externalpage_setup('toollpexportcsv');
$pagetitle = get_string('exportnavlink', 'tool_lpimportcsv');
$context = context_system::instance();
+2
View File
@@ -25,6 +25,8 @@ define('NO_OUTPUT_BUFFERING', true);
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->libdir.'/adminlib.php');
admin_externalpage_setup('toollpimportcsv');
$pagetitle = get_string('pluginname', 'tool_lpimportcsv');
$context = context_system::instance();
+11 -7
View File
@@ -59,22 +59,26 @@ class api_test extends \externallib_advanced_testcase {
*/
public function test_get_potential_config_issues() {
global $CFG;
require_once($CFG->dirroot . '/message/lib.php');
$this->resetAfterTest(true);
$this->setAdminUser();
$CFG->userquota = '73289234723498234723423489273423497234234';
// Set non-SSL wwwroot, to avoid spurious certificate checking.
$CFG->wwwroot = 'http://www.example.com';
$CFG->debugdisplay = 1;
set_config('debugauthdb', 1, 'auth_db');
set_config('debugdb', 1, 'enrol_database');
$expectedissues = array('adodbdebugwarning', 'displayerrorswarning');
// Get potential issues, obtain their keys for comparison.
$issues = api::get_potential_config_issues();
$this->assertCount(count($expectedissues), $issues);
foreach ($issues as $issue) {
$this->assertTrue(in_array($issue[0], $expectedissues));
}
$issuekeys = array_column($issues, 0);
$this->assertEqualsCanonicalizing([
'nohttpsformobilewarning',
'adodbdebugwarning',
'displayerrorswarning',
], $issuekeys);
}
/**
@@ -168,10 +168,9 @@ Feature: tool_monitor_subscriptions
And I should not see "You can manage rules the from the Event monitoring rules page."
Scenario: No manage rules link when user does not have permission
Given I log in as "admin"
And I set the following system permissions of "Non-editing teacher" role:
| tool/monitor:managerules | Prohibit |
And I log out
Given the following "role capability" exists:
| role | teacher |
| tool/monitor:managerules | prohibit |
And I log in as "teacher1"
And I follow "Preferences" in the user menu
And I follow "Event monitoring"
@@ -14,24 +14,19 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the import_handler_info class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
namespace tool_moodlenet\local;
use tool_moodlenet\local\import_handler_info;
use tool_moodlenet\local\import_strategy;
use tool_moodlenet\local\import_strategy_file;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_import_handler_info_testcase, providing test cases for the import_handler_info class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class import_handler_info_test extends \advanced_testcase {
@@ -14,15 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the import_handler_registry class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
namespace tool_moodlenet\local;
use tool_moodlenet\local\import_handler_registry;
use tool_moodlenet\local\import_handler_info;
@@ -31,10 +23,13 @@ use tool_moodlenet\local\import_strategy_link;
use tool_moodlenet\local\remote_resource;
use tool_moodlenet\local\url;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_import_handler_registry_testcase, providing test cases for the import_handler_registry class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class import_handler_registry_test extends \advanced_testcase {
@@ -14,24 +14,19 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the import_info class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
namespace tool_moodlenet\local;
use tool_moodlenet\local\import_info;
use tool_moodlenet\local\remote_resource;
use tool_moodlenet\local\url;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_import_info_testcase, providing test cases for the import_info class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class import_info_test extends \advanced_testcase {
@@ -14,15 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the import_processor class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
namespace tool_moodlenet\local;
use tool_moodlenet\local\import_handler_registry;
use tool_moodlenet\local\import_processor;
@@ -31,10 +23,13 @@ use tool_moodlenet\local\import_strategy_link;
use tool_moodlenet\local\remote_resource;
use tool_moodlenet\local\url;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_import_processor_testcase, providing test cases for the import_processor class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class import_processor_test extends \advanced_testcase {
@@ -14,24 +14,19 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace tool_moodlenet\local;
use tool_moodlenet\local\remote_resource;
use tool_moodlenet\local\url;
/**
* Unit tests for the remote_resource class.
* Class tool_moodlenet_remote_resource_testcase, providing test cases for the remote_resource class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
use tool_moodlenet\local\remote_resource;
use tool_moodlenet\local\url;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_remote_resource_testcase, providing test cases for the remote_resource class.
*/
class remote_resource_test extends \advanced_testcase {
/**
@@ -14,23 +14,18 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace tool_moodlenet\local;
use tool_moodlenet\local\url;
/**
* Unit tests for the url class.
* Class tool_moodlenet_url_testcase, providing test cases for the url class.
*
* @package tool_moodlenet
* @category test
* @copyright 2020 Jake Dallimore <jrhdallimore@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace tool_moodlenet\local\tests;
use tool_moodlenet\local\url;
defined('MOODLE_INTERNAL') || die();
/**
* Class tool_moodlenet_url_testcase, providing test cases for the url class.
*/
class url_test extends \advanced_testcase {
/**
@@ -134,7 +134,6 @@ Feature: Basic OAuth2 functionality
And I set the following fields to these values:
| Name | Testing service modified |
And I press "Save changes"
And I should see "Could not discover service endpoints"
And I should see "Testing service modified"
And I click on "Delete" "link" in the "Testing service modified" "table_row"
And I should see "Are you sure you want to delete the identity issuer \"Testing service modified\"?"
@@ -239,13 +238,12 @@ Feature: Basic OAuth2 functionality
And I press "Save changes"
And "Do not allow login" "icon" should exist in the "Valid custom" "table_row"
And "Allow services" "icon" should exist in the "Valid custom" "table_row"
And "Service discovery successful" "icon" should exist in the "Valid custom" "table_row"
And I should see "-" in the "Valid custom" "table_row"
And I click on "Edit" "link" in the "Valid custom service" "table_row"
And I set the following fields to these values:
| Name | Invalid custom service |
| Service base URL | https://dc.imsglobal.org/ |
And I press "Save changes"
Then I should see "Could not discover end points for identity issuer: Invalid custom service"
And I should see "-" in the "Invalid custom service" "table_row"
And I click on "Delete" "link" in the "Invalid custom service" "table_row"
And I should see "Are you sure you want to delete the identity issuer \"Invalid custom service\"?"
@@ -281,13 +279,12 @@ Feature: Basic OAuth2 functionality
And I press "Save changes"
And "Do not allow login" "icon" should exist in the "Valid custom" "table_row"
And "Allow services" "icon" should exist in the "Valid custom" "table_row"
And "Service discovery successful" "icon" should exist in the "Valid custom" "table_row"
And I should see "-" in the "Valid custom" "table_row"
And I click on "Edit" "link" in the "Valid custom service" "table_row"
And I set the following fields to these values:
| Name | Invalid custom service |
| Service base URL | https://dc.imsglobal.org/ |
And I press "Save changes"
Then I should see "Could not discover end points for identity issuer: Invalid custom service"
And I should see "-" in the "Invalid custom service" "table_row"
And I click on "Edit" "link" in the "Invalid custom service" "table_row"
And I set the following fields to these values:
@@ -351,9 +348,12 @@ Feature: Basic OAuth2 functionality
And I should see "Custom display name" in the "Empty custom service" "table_row"
And "Not configured" "icon" should exist in the "Empty custom service" "table_row"
And "Do not allow services" "icon" should exist in the "Empty custom service" "table_row"
And I click on "Edit" "link" in the "Empty custom service" "table_row"
And I click on "Configure endpoints" "link" in the "Empty custom service" "table_row"
And I press "Create new endpoint for issuer \"Empty custom service\""
And I set the following fields to these values:
| Service base URL | https://accounts.google.com |
| Name | userinfo_endpoint |
| URL | https://example.com/userinfo |
And I press "Save changes"
And I navigate to "Server > OAuth 2 services" in site administration
And "Allow login" "icon" should exist in the "Empty custom service" "table_row"
And "Do not allow services" "icon" should exist in the "Empty custom service" "table_row"
@@ -48,15 +48,18 @@ use tool_policy\policy_version;
*/
class page_viewalldoc implements renderable, templatable {
/** @var string Return url */
private $returnurl;
/** @var ?moodle_url Return url */
private $returnurl = null;
/**
* Prepare the page for rendering.
*
*/
public function __construct($returnurl) {
$this->returnurl = $returnurl;
if (!empty($returnurl)) {
$this->returnurl = new moodle_url($returnurl);
}
$this->prepare_global_page_access();
$this->prepare_policies();
}
@@ -48,11 +48,9 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
And "Pending" "text" should exist in the "User Two" "table_row"
Scenario: Agree on behalf of another user as a manager, single policy, javascript off
Given I log in as "admin"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
When I log in as "manager"
And I press "Next"
And I set the field "I agree to the This site policy" to "1"
@@ -73,11 +71,9 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
@javascript
Scenario: Agree on behalf of another user as a manager, single policy, javascript on
Given I log in as "admin"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
When I log in as "manager"
And I press "Next"
And I set the field "I agree to the This site policy" to "1"
@@ -135,13 +131,13 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
And "Pending" "text" should exist in the "This privacy policy" "table_row"
Scenario: Agree on behalf of another user as a manager, multiple policies, javascript off
Given I log in as "admin"
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
And I log in as "admin"
And I navigate to "Users > Privacy and policies > Manage policies" in site administration
And I click on "Set status to \"Active\"" "link" in the "This privacy policy" "table_row"
And I press "Continue"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
When I log in as "manager"
And I press "Next"
@@ -167,14 +163,14 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
@javascript
Scenario: Agree on behalf of another user as a manager, multiple policies, javascript on
Given I log in as "admin"
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
And I log in as "admin"
And I navigate to "Users > Privacy and policies > Manage policies" in site administration
And I click on "Actions" "link_or_button" in the "This privacy policy" "table_row"
And I click on "Set status to \"Active\"" "link" in the "This privacy policy" "table_row"
And I press "Activate"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
When I log in as "manager"
And I press "Next"
@@ -215,11 +211,9 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
And I should not see "Policies and agreements"
Scenario: Policies and agreements profile link visible also for users who can access on behalf of others
Given I log in as "admin"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
And I log in as "manager"
And I press "Next"
And I set the field "I agree to the This site policy" to "1"
@@ -231,19 +225,15 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
Then I should see "Policies and agreements"
Scenario: Agree on behalf of another user as an admin who is logged in as a manager
Given I log in as "admin"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
When I log in as "manager"
And I press "Next"
And I set the field "I agree to the This site policy" to "1"
And I press "Next"
And I log out
And I log in as "admin"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "Manager"
And I am on the "manager" "user > profile" page logged in as "admin"
And I follow "Log in as"
And I press "Continue"
And I navigate to "Users > Privacy and policies > Manage policies" in site administration
@@ -263,14 +253,14 @@ Feature: Viewing acceptances reports and accepting on behalf of other users
@javascript
Scenario: Bulk agree on behalf of another users as a manager, multiple policies, javascript on
Given I log in as "admin"
Given the following "role capability" exists:
| role | manager |
| tool/policy:acceptbehalf | allow |
And I log in as "admin"
And I navigate to "Users > Privacy and policies > Manage policies" in site administration
And I click on "Actions" "link_or_button" in the "This privacy policy" "table_row"
And I click on "Set status to \"Active\"" "link" in the "This privacy policy" "table_row"
And I press "Activate"
And I set the following system permissions of "Manager" role:
| capability | permission |
| tool/policy:acceptbehalf | Allow |
And I log out
When I log in as "manager"
And I press "Next"
@@ -562,9 +562,7 @@ Feature: User must accept policy managed by this plugin when logging in and sign
And the following "users" exist:
| username | firstname | lastname | email |
| user1 | User | 1 | user1@example.com |
When I log in as "admin"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "User 1"
When I am on the "user1" "user > profile" page logged in as "admin"
And I follow "Log in as"
Then I should see "You are logged in as User 1"
And I press "Continue"
@@ -603,8 +601,7 @@ Feature: User must accept policy managed by this plugin when logging in and sign
And I set the field "I agree to the This site policy" to "1"
And I set the field "I agree to the This privacy policy" to "1"
And I press "Next"
And I navigate to "Users > Accounts > Browse list of users" in site administration
And I follow "User 1"
And I am on the "user1" "user > profile" page
And I follow "Log in as"
Then I should see "You are logged in as User 1"
And I press "Continue"
@@ -59,9 +59,6 @@ Feature: Backup user data
And I navigate to "Recycle bin" in current page administration
And I should see "Quiz 1"
And I click on "Restore" "link" in the "region-main" "region"
And I log out
And I log in as "student1"
And I am on "Course 1" course homepage
When I navigate to "User report" in the course gradebook
When I am on the "Course 1" "grades > User report > View" page logged in as "student1"
Then "Quiz 1" row "Grade" column of "user-grade" table should contain "5"
And "Quiz 1" row "Percentage" column of "user-grade" table should contain "50"
+10
View File
@@ -37,3 +37,13 @@ function tool_task_status_checks() : array {
];
}
/**
* Function used to handle mtrace by outputting the text to normal browser window.
*
* @param string $message Message to output
* @param string $eol End of line character
*/
function tool_task_mtrace_wrapper(string $message, string $eol): void {
$message = s($message);
echo $message . $eol;
}
+1 -10
View File
@@ -30,16 +30,6 @@ require('../../../config.php');
require_once($CFG->libdir.'/cronlib.php');
/**
* Function used to handle mtrace by outputting the text to normal browser window.
*
* @param string $message Message to output
* @param string $eol End of line character
*/
function tool_task_mtrace_wrapper($message, $eol) {
echo s($message . $eol);
}
// Allow execution of single task. This requires login and has different rules.
$taskname = required_param('task', PARAM_RAW_TRIMMED);
@@ -101,6 +91,7 @@ require_sesskey();
// Prepare to handle output via mtrace.
echo html_writer::start_tag('pre');
require('lib.php');
$CFG->mtrace_wrapper = 'tool_task_mtrace_wrapper';
// Run the specified task (this will output an error if it doesn't exist).
+6 -3
View File
@@ -173,13 +173,16 @@ class tool_uploadcourse_tracker {
} else {
$outcome = $OUTPUT->pix_icon('i/invalid', '');
}
echo html_writer::start_tag('tr', array('class' => 'r' . $this->rownb % 2));
echo html_writer::tag('td', $line, array('class' => 'c' . $ci++));
echo html_writer::tag('td', $outcome, array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['id']) ? $data['id'] : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['shortname']) ? $data['shortname'] : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['fullname']) ? $data['fullname'] : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['idnumber']) ? $data['idnumber'] : '', array('class' => 'c' . $ci++));
// Ensure our data is suitable for HTML output.
echo html_writer::tag('td', isset($data['shortname']) ? s($data['shortname']) : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['fullname']) ? s($data['fullname']) : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', isset($data['idnumber']) ? s($data['idnumber']) : '', array('class' => 'c' . $ci++));
echo html_writer::tag('td', $status, array('class' => 'c' . $ci++));
echo html_writer::end_tag('tr');
}
@@ -67,14 +67,10 @@ Feature: Upload users
@javascript
Scenario: Upload users with custom profile fields
# Create user profile field.
Given I log in as "admin"
And I navigate to "Users > Accounts > User profile fields" in site administration
And I click on "Create a new profile field" "link"
And I click on "Text area" "link"
And I set the following fields to these values:
| Short name | superfield |
| Name | Super field |
And I click on "Save changes" "button"
Given the following "custom profile fields" exist:
| datatype | shortname | name |
| text | superfield | Super field |
And I log in as "admin"
# Upload users.
When I navigate to "Users > Accounts > Upload users" in site administration
And I upload "lib/tests/fixtures/upload_users_profile.csv" file to "File" filemanager
+2 -1
View File
@@ -143,7 +143,8 @@ class cli_test extends \advanced_testcase {
// Created users have data in the profile fields.
$user1 = \core_user::get_user_by_username('reznort');
$profilefields1 = profile_user_record($user1->id);
$this->assertEquals((object)['superfield' => 'Loves cats'], $profilefields1);
$this->assertObjectHasAttribute('superfield', $profilefields1);
$this->assertEquals('Loves cats', $profilefields1->superfield);
}
/**
@@ -152,18 +152,11 @@ Feature: Apply tour filters to a tour
| fullname | shortname | format | enablecompletion |
| Course 1 | C1 | topics | 1 |
| Course 2 | C2 | topics | 1 |
And the following "activities" exist:
| activity | course | name | firstpagetitle | wikimode | idnumber | intro | type |
| wiki | C1 | Test wiki name | First page | collaborative | | | |
| forum | C2 | Test forum name | | | 001 | Test forum description | general |
And I log in as "admin"
And I am on "Course 1" course homepage with editing mode on
And I add a "Wiki" to section "1" and I fill the form with:
| Wiki name | Test wiki name |
| Description | Test wiki description |
| First page name | First page |
| Wiki mode | Collaborative wiki |
And I am on "Course 2" course homepage
And I add a "Forum" to section "1" and I fill the form with:
| Forum name | Test forum name |
| Forum type | Standard forum for general use |
| Description | Test forum description |
And I add a new user tour with:
| Name | Wiki tour |
| Description | A tour with both matches |
+5 -14
View File
@@ -14,17 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the analysis class.
*
* @package core_analytics
* @copyright 2019 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/fixtures/test_timesplitting_upcoming_seconds.php');
namespace core_analytics;
/**
* Unit tests for the analysis class.
@@ -33,18 +23,19 @@ require_once(__DIR__ . '/fixtures/test_timesplitting_upcoming_seconds.php');
* @copyright 2019 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_analysis_testcase extends advanced_testcase {
class analysis_test extends \advanced_testcase {
/**
* Test fill_firstanalyses_cache.
* @return null
*/
public function test_fill_firstanalyses_cache() {
require_once(__DIR__ . '/fixtures/test_timesplitting_upcoming_seconds.php');
$this->resetAfterTest();
$modelid = 1;
$params = ['startdate' => (new DateTimeImmutable('-5 seconds'))->getTimestamp()];
$params = ['startdate' => (new \DateTimeImmutable('-5 seconds'))->getTimestamp()];
$course1 = $this->getDataGenerator()->create_course($params);
$course2 = $this->getDataGenerator()->create_course($params);
$analysable1 = new \core_analytics\course($course1);
@@ -72,7 +63,7 @@ class analytics_analysis_testcase extends advanced_testcase {
$this->assertEquals($earliest, $firstanalyses[$modelid . '_' . $course1->id]);
// Upcoming periodic time-splitting methods can read and process the cached data.
$seconds = new test_timesplitting_upcoming_seconds();
$seconds = new \test_timesplitting_upcoming_seconds();
$seconds->set_modelid($modelid);
$seconds->set_analysable($analysable1);
+6 -15
View File
@@ -14,18 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the calculation info cache.
*
* @package core_analytics
* @copyright 2019 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/fixtures/test_indicator_max.php');
require_once(__DIR__ . '/fixtures/test_indicator_min.php');
namespace core_analytics;
/**
* Unit tests for the calculation info cache.
@@ -34,7 +23,7 @@ require_once(__DIR__ . '/fixtures/test_indicator_min.php');
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_calculation_info_testcase extends advanced_testcase {
class calculation_info_test extends \advanced_testcase {
/**
* test_calculation_info description
@@ -47,12 +36,14 @@ class analytics_calculation_info_testcase extends advanced_testcase {
* @return null
*/
public function test_calculation_info_add_pull($info1, $info2, $info3, $info4) {
require_once(__DIR__ . '/fixtures/test_indicator_max.php');
require_once(__DIR__ . '/fixtures/test_indicator_min.php');
$this->resetAfterTest();
$atimesplitting = new \core\analytics\time_splitting\quarters();
$indicator1 = new test_indicator_min();
$indicator2 = new test_indicator_max();
$indicator1 = new \test_indicator_min();
$indicator2 = new \test_indicator_max();
$calculationinfo = new \core_analytics\calculation_info();
$calculationinfo->add_shared(111, [111 => $info1]);
+2 -10
View File
@@ -14,15 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the dataset manager.
*
* @package core_analytics
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
namespace core_analytics;
/**
* Unit tests for the dataset manager.
@@ -31,7 +23,7 @@ defined('MOODLE_INTERNAL') || die();
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class dataset_manager_testcase extends advanced_testcase {
class dataset_manager_test extends \advanced_testcase {
/**
* setUp
+3 -9
View File
@@ -14,13 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for the indicator API.
*
* @package core_analytics
* @copyright 2019 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
defined('MOODLE_INTERNAL') || die();
@@ -35,7 +29,7 @@ require_once(__DIR__ . '/fixtures/test_indicator_min.php');
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_indicator_testcase extends advanced_testcase {
class indicator_test extends \advanced_testcase {
/**
* test_validate_calculated_value
@@ -79,7 +73,7 @@ class analytics_indicator_testcase extends advanced_testcase {
->onlyMethods(['calculate_sample'])
->getMock();
$indicatormock->method('calculate_sample')->willReturn($willreturn);
$this->expectException(coding_exception::class);
$this->expectException(\coding_exception::class);
list($values, $unused) = $indicatormock->calculate([1], 'notrelevanthere');
}
+10 -8
View File
@@ -22,6 +22,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/fixtures/test_indicator_max.php');
@@ -39,7 +41,7 @@ require_once(__DIR__ . '/fixtures/test_analysis.php');
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_model_testcase extends advanced_testcase {
class model_test extends \advanced_testcase {
public function setUp(): void {
@@ -183,7 +185,7 @@ class analytics_model_testcase extends advanced_testcase {
global $DB;
$this->resetAfterTest();
$statictarget = new test_static_target_shortname();
$statictarget = new \test_static_target_shortname();
$indicators['test_indicator_max'] = \core_analytics\manager::get_indicator('test_indicator_max');
$model = \core_analytics\model::create($statictarget, $indicators, '\core\analytics\time_splitting\quarters');
$modelobj = $model->get_model_obj();
@@ -301,11 +303,11 @@ class analytics_model_testcase extends advanced_testcase {
$courses[$analysable->get_id()] = $course;
}
$target = new test_target_course_level_shortname();
$target = new \test_target_course_level_shortname();
$analyser = new \core\analytics\analyser\courses(1, $target, [], [], []);
$result = new \core_analytics\local\analysis\result_array(1, false, []);
$analysis = new test_analysis($analyser, false, $result);
$analysis = new \test_analysis($analyser, false, $result);
// Each analysable element takes 0.5 secs minimum (test_analysis), so the max (and likely) number of analysable
// elements that will be processed is 2.
@@ -342,7 +344,7 @@ class analytics_model_testcase extends advanced_testcase {
// Training and prediction data do not get mixed.
$result = new \core_analytics\local\analysis\result_array(1, false, []);
$analysis = new test_analysis($analyser, false, $result);
$analysis = new \test_analysis($analyser, false, $result);
$analysis->run();
$params = array('modelid' => 1, 'action' => 'training');
$this->assertLessThanOrEqual(2, $DB->count_records('analytics_used_analysables', $params));
@@ -402,7 +404,7 @@ class analytics_model_testcase extends advanced_testcase {
$this->model->update(true, [], false);
$this->assertFalse($this->model->can_export_configuration());
$statictarget = new test_static_target_shortname();
$statictarget = new \test_static_target_shortname();
$indicators['test_indicator_max'] = \core_analytics\manager::get_indicator('test_indicator_max');
$model = \core_analytics\model::create($statictarget, $indicators, '\\core\\analytics\\time_splitting\\quarters');
$this->assertFalse($model->can_export_configuration());
@@ -418,7 +420,7 @@ class analytics_model_testcase extends advanced_testcase {
$modelconfig = new \core_analytics\model_config($this->model);
$method = new ReflectionMethod('\\core_analytics\\model_config', 'export_model_data');
$method = new \ReflectionMethod('\\core_analytics\\model_config', 'export_model_data');
$method->setAccessible(true);
$modeldata = $method->invoke($modelconfig);
@@ -566,7 +568,7 @@ class analytics_model_testcase extends advanced_testcase {
private function add_fake_log() {
global $DB, $USER;
$log = new stdClass();
$log = new \stdClass();
$log->modelid = $this->modelobj->id;
$log->version = $this->modelobj->version;
$log->target = $this->modelobj->target;
+2 -8
View File
@@ -14,13 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for prediction actions.
*
* @package core_analytics
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
defined('MOODLE_INTERNAL') || die();
@@ -34,7 +28,7 @@ require_once(__DIR__ . '/fixtures/test_target_shortname.php');
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_prediction_actions_testcase extends advanced_testcase {
class prediction_actions_test extends \advanced_testcase {
/**
* Common startup tasks
+12 -18
View File
@@ -14,21 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for evaluation, training and prediction.
*
* NOTE: in order to execute this test using a separate server for the
* python ML backend you need to define these variables in your config.php file:
*
* define('TEST_MLBACKEND_PYTHON_HOST', '127.0.0.1');
* define('TEST_MLBACKEND_PYTHON_PORT', 5000);
* define('TEST_MLBACKEND_PYTHON_USERNAME', 'default');
* define('TEST_MLBACKEND_PYTHON_PASSWORD', 'sshhhh');
*
* @package core_analytics
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
defined('MOODLE_INTERNAL') || die();
@@ -48,11 +34,19 @@ require_once(__DIR__ . '/../../course/lib.php');
/**
* Unit tests for evaluation, training and prediction.
*
* NOTE: in order to execute this test using a separate server for the
* python ML backend you need to define these variables in your config.php file:
*
* define('TEST_MLBACKEND_PYTHON_HOST', '127.0.0.1');
* define('TEST_MLBACKEND_PYTHON_PORT', 5000);
* define('TEST_MLBACKEND_PYTHON_USERNAME', 'default');
* define('TEST_MLBACKEND_PYTHON_PASSWORD', 'sshhhh');
*
* @package core_analytics
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_analytics_prediction_testcase extends advanced_testcase {
class prediction_test extends \advanced_testcase {
/**
* Purge all the mlbackend outputs.
@@ -746,7 +740,7 @@ class core_analytics_prediction_testcase extends advanced_testcase {
$samples,
$ranges
);
$dataset = phpunit_util::call_internal_method($analysis, 'calculate_indicators', $params,
$dataset = \phpunit_util::call_internal_method($analysis, 'calculate_indicators', $params,
'\core_analytics\analysis');
$this->assertArrayHasKey('123-0', $dataset);
$this->assertArrayHasKey('123-1', $dataset);
@@ -770,7 +764,7 @@ class core_analytics_prediction_testcase extends advanced_testcase {
$samples,
$ranges
);
$dataset = phpunit_util::call_internal_method($analysis, 'calculate_indicators', $params,
$dataset = \phpunit_util::call_internal_method($analysis, 'calculate_indicators', $params,
'\core_analytics\analysis');
$this->assertArrayNotHasKey('123-0', $dataset);
$this->assertArrayNotHasKey('123-1', $dataset);
+4 -9
View File
@@ -14,14 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Provides the {@link analytics_stats_testcase} class.
*
* @package core_analytics
* @category test
* @copyright 2019 David Mudrák <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
defined('MOODLE_INTERNAL') || die();
@@ -31,10 +24,12 @@ require_once(__DIR__ . '/fixtures/test_target_shortname.php');
/**
* Unit tests for the analytics stats.
*
* @package core_analytics
* @category test
* @copyright 2019 David Mudrák <david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class analytics_stats_testcase extends advanced_testcase {
class stats_test extends \advanced_testcase {
/**
* Set up the test environment.
@@ -14,30 +14,26 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Unit tests for core time splitting methods.
*
* @package core
* @category analytics
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace core_analytics;
use test_timesplitting_seconds;
use test_timesplitting_upcoming_seconds;
defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . '/../../analytics/tests/fixtures/test_timesplitting_seconds.php');
require_once(__DIR__ . '/../../analytics/tests/fixtures/test_timesplitting_upcoming_seconds.php');
require_once(__DIR__ . '/fixtures/test_timesplitting_seconds.php');
require_once(__DIR__ . '/fixtures/test_timesplitting_upcoming_seconds.php');
require_once(__DIR__ . '/../../lib/enrollib.php');
/**
* Unit tests for core time splitting methods.
*
* @package core
* @category analytics
* @category test
* @copyright 2017 David Monllaó {@link http://www.davidmonllao.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_analytics_time_splittings_testcase extends advanced_testcase {
class time_splittings_test extends \advanced_testcase {
/**
* setUp
@@ -214,7 +210,7 @@ class core_analytics_time_splittings_testcase extends advanced_testcase {
// We now use an ongoing course not yet ready to generate predictions.
$threedaysago = new DateTime('-3 days');
$threedaysago = new \DateTime('-3 days');
$params = array(
'startdate' => $threedaysago->getTimestamp(),
);
@@ -229,7 +225,7 @@ class core_analytics_time_splittings_testcase extends advanced_testcase {
// We now use a ready-to-predict ongoing course.
$onemonthago = new DateTime('-30 days');
$onemonthago = new \DateTime('-30 days');
$params = array(
'startdate' => $onemonthago->getTimestamp(),
);
@@ -284,10 +280,10 @@ class core_analytics_time_splittings_testcase extends advanced_testcase {
// We now check how new ranges get added as time passes.
$fewsecsago = new DateTime('-5 seconds');
$fewsecsago = new \DateTime('-5 seconds');
$params = array(
'startdate' => $fewsecsago->getTimestamp(),
'enddate' => (new DateTimeImmutable('+1 year'))->getTimestamp(),
'enddate' => (new \DateTimeImmutable('+1 year'))->getTimestamp(),
);
$course = $this->getDataGenerator()->create_course($params);
$analysable = new \core_analytics\course($course);
-3
View File
@@ -1,3 +0,0 @@
Description of phpCAS 1.3.8 library import
* downloaded source code from https://github.com/apereo/phpCAS/releases
+26
View File
@@ -0,0 +1,26 @@
Description of phpCAS import into Moodle
Last release can be found at https://github.com/apereo/phpCAS/releases
NOTICE:
* Before running composer command, make sure you have the composer version updated.
* Composer version 2.2.4 2022-01-08 12:30:42
STEPS:
* Make sure you're using the lowest supported PHP version for the given release (e.g. PHP 7.4 for Moodle 4.1)
* Create a temporary folder outside your Moodle installation
* Execute 'composer require apereo/phpcas:VERSION'
* Check any new libraries that have been added and make sure they do not exist in Moodle already.
* Remove the old 'vendor' directory in auth/cas/CAS/
* Copy contents of 'vendor' directory
* Create a commit with only the library changes.
- Note: Make sure to check the list of unversioned files and add any new files to the staging area.
* Update auth/cas/thirdpartylibs.xml
* Apply the modifications described in the CHANGES section
* Create another commit with the previous two steps of changes
CHANGES:
* Remove all the hidden folders and files in vendor/apereo/phpcas/ (find . -name ".*"):
- .codecov.yml
- .gitattributes
- .github
+32
View File
@@ -0,0 +1,32 @@
<?php
/**
* Licensed to Jasig under one or more contributor license
* agreements. See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*
* Jasig licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP Version 7
*
* @file CAS.php
* @category Authentication
* @package PhpCAS
* @author Adam Franco <afranco@middlebury.edu>
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
* @link https://wiki.jasig.org/display/CASC/phpCAS
*/
require_once __DIR__.'/source/CAS.php';
trigger_error('Including CAS.php is deprecated. Install phpCAS using composer instead.', E_USER_DEPRECATED);
@@ -6,22 +6,21 @@ users via a Central Authentication Service (CAS) server.
Please see the wiki website for more information:
https://wiki.jasig.org/display/CASC/phpCAS
https://apereo.github.io/phpCAS/
Api documentation can be found here:
https://apereo.github.io/phpCAS/
https://apereo.github.io/phpCAS/api/
[![Build Status](https://travis-ci.org/apereo/phpCAS.png)](https://travis-ci.org/apereo/phpCAS)
[![Test](https://github.com/apereo/phpCAS/actions/workflows/test.yml/badge.svg)](https://github.com/apereo/phpCAS/actions/workflows/test.yml)
LICENSE
-------
Copyright 2007-2015, JA-SIG, Inc.
This project includes software developed by Jasig.
http://www.jasig.org/
Copyright 2007-2020, Apereo Foundation.
This project includes software developed by Apereo Foundation.
http://www.apereo.org/
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this software except in compliance with the License.
+55
View File
@@ -0,0 +1,55 @@
{
"name" : "apereo/phpcas",
"description" : "Provides a simple API for authenticating users against a CAS server",
"keywords" : [
"cas",
"jasig",
"apereo"
],
"homepage" : "https://wiki.jasig.org/display/CASC/phpCAS",
"type" : "library",
"license" : "Apache-2.0",
"authors" : [{
"name" : "Joachim Fritschi",
"homepage" : "https://github.com/jfritschi",
"email" : "jfritschi@freenet.de"
}, {
"name" : "Adam Franco",
"homepage" : "https://github.com/adamfranco"
}, {
"name" : "Henry Pan",
"homepage" : "https://github.com/phy25"
}
],
"require" : {
"php" : ">=7.1.0",
"ext-curl" : "*",
"ext-dom" : "*",
"psr/log" : "^1.0 || ^2.0 || ^3.0"
},
"require-dev" : {
"monolog/monolog" : "^1.0.0 || ^2.0.0",
"phpunit/phpunit" : ">=7.5",
"phpstan/phpstan" : "^1.5"
},
"autoload" : {
"classmap" : [
"source/"
]
},
"autoload-dev" : {
"files": ["source/CAS.php"],
"psr-4" : {
"PhpCas\\" : "test/CAS/"
}
},
"scripts" : {
"test" : "phpunit",
"phpstan" : "phpstan"
},
"extra" : {
"branch-alias" : {
"dev-master" : "1.3.x-dev"
}
}
}
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="source/CAS.php" convertNoticesToExceptions="false" colors="true" stderr="true" backupGlobals="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
<coverage includeUncoveredFiles="false">
<include>
<directory>source/</directory>
</include>
</coverage>
<testsuites>
<testsuite name="phpCAS Tests">
<directory>test/CAS/Tests/</directory>
</testsuite>
</testsuites>
</phpunit>
@@ -20,7 +20,7 @@
*
*
* Interface class of the phpCAS library
* PHP Version 5
* PHP Version 7
*
* @file CAS/CAS.php
* @category Authentication
@@ -35,6 +35,7 @@
* @ingroup public
*/
use Psr\Log\LoggerInterface;
//
// hack by Vangelis Haniotakis to handle the absence of $_SERVER['REQUEST_URI']
@@ -44,11 +45,6 @@ if (!isset($_SERVER['REQUEST_URI']) && isset($_SERVER['SCRIPT_NAME']) && isset($
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
}
// Add a E_USER_DEPRECATED for php versions <= 5.2
if (!defined('E_USER_DEPRECATED')) {
define('E_USER_DEPRECATED', E_USER_NOTICE);
}
// ########################################################################
// CONSTANTS
@@ -61,7 +57,7 @@ if (!defined('E_USER_DEPRECATED')) {
/**
* phpCAS version. accessible for the user by phpCAS::getVersion().
*/
define('PHPCAS_VERSION', '1.3.8');
define('PHPCAS_VERSION', '1.6.0');
/**
* @addtogroup public
@@ -140,11 +136,6 @@ define("SAML_SOAP_ENV_CLOSE", '</SOAP-ENV:Envelope>');
*/
define("SAML_ATTRIBUTES", 'SAMLATTRIBS');
/**
* SAML Attributes
*/
define("DEFAULT_ERROR", 'Internal script failure');
/** @} */
/**
* @addtogroup publicPGTStorage
@@ -224,6 +215,8 @@ define("PHPCAS_LANG_JAPANESE", 'CAS_Languages_Japanese');
define("PHPCAS_LANG_SPANISH", 'CAS_Languages_Spanish');
define("PHPCAS_LANG_CATALAN", 'CAS_Languages_Catalan');
define("PHPCAS_LANG_CHINESE_SIMPLIFIED", 'CAS_Languages_ChineseSimplified');
define("PHPCAS_LANG_GALEGO", 'CAS_Languages_Galego');
define("PHPCAS_LANG_PORTUGUESE", 'CAS_Languages_Portuguese');
/** @} */
@@ -261,7 +254,7 @@ define('DEFAULT_DEBUG_DIR', gettmpdir()."/");
/** @} */
// include the class autoloader
require_once dirname(__FILE__) . '/CAS/Autoload.php';
require_once __DIR__ . '/CAS/Autoload.php';
/**
* The phpCAS class is a simple container for the phpCAS library. It provides CAS
@@ -330,12 +323,22 @@ class phpCAS
/**
* phpCAS client initializer.
*
* @param string $server_version the version of the CAS server
* @param string $server_hostname the hostname of the CAS server
* @param int $server_port the port the CAS server is running on
* @param string $server_uri the URI the CAS server is responding on
* @param bool $changeSessionID Allow phpCAS to change the session_id (Single
* Sign Out/handleLogoutRequests is based on that change)
* @param string $server_version the version of the CAS server
* @param string $server_hostname the hostname of the CAS server
* @param int $server_port the port the CAS server is running on
* @param string $server_uri the URI the CAS server is responding on
* @param string|string[]|CAS_ServiceBaseUrl_Interface
* $service_base_url the base URL (protocol, host and the
* optional port) of the CAS client; pass
* in an array to use auto discovery with
* an allowlist; pass in
* CAS_ServiceBaseUrl_Interface for custom
* behavior. Added in 1.6.0. Similar to
* serverName config in other CAS clients.
* @param bool $changeSessionID Allow phpCAS to change the session_id
* (Single Sign Out/handleLogoutRequests
* is based on that change)
* @param \SessionHandlerInterface $sessionHandler the session handler
*
* @return void a newly created CAS_Client object
* @note Only one of the phpCAS::client() and phpCAS::proxy functions should be
@@ -343,7 +346,8 @@ class phpCAS
* and phpCAS::setDebug()).
*/
public static function client($server_version, $server_hostname,
$server_port, $server_uri, $changeSessionID = true
$server_port, $server_uri, $service_base_url,
$changeSessionID = true, \SessionHandlerInterface $sessionHandler = null
) {
phpCAS :: traceBegin();
if (is_object(self::$_PHPCAS_CLIENT)) {
@@ -362,8 +366,8 @@ class phpCAS
// initialize the object $_PHPCAS_CLIENT
try {
self::$_PHPCAS_CLIENT = new CAS_Client(
$server_version, false, $server_hostname, $server_port, $server_uri,
$changeSessionID
$server_version, false, $server_hostname, $server_port, $server_uri, $service_base_url,
$changeSessionID, $sessionHandler
);
} catch (Exception $e) {
phpCAS :: error(get_class($e) . ': ' . $e->getMessage());
@@ -374,12 +378,22 @@ class phpCAS
/**
* phpCAS proxy initializer.
*
* @param string $server_version the version of the CAS server
* @param string $server_hostname the hostname of the CAS server
* @param int $server_port the port the CAS server is running on
* @param string $server_uri the URI the CAS server is responding on
* @param bool $changeSessionID Allow phpCAS to change the session_id (Single
* Sign Out/handleLogoutRequests is based on that change)
* @param string $server_version the version of the CAS server
* @param string $server_hostname the hostname of the CAS server
* @param string $server_port the port the CAS server is running on
* @param string $server_uri the URI the CAS server is responding on
* @param string|string[]|CAS_ServiceBaseUrl_Interface
* $service_base_url the base URL (protocol, host and the
* optional port) of the CAS client; pass
* in an array to use auto discovery with
* an allowlist; pass in
* CAS_ServiceBaseUrl_Interface for custom
* behavior. Added in 1.6.0. Similar to
* serverName config in other CAS clients.
* @param bool $changeSessionID Allow phpCAS to change the session_id
* (Single Sign Out/handleLogoutRequests
* is based on that change)
* @param \SessionHandlerInterface $sessionHandler the session handler
*
* @return void a newly created CAS_Client object
* @note Only one of the phpCAS::client() and phpCAS::proxy functions should be
@@ -387,7 +401,8 @@ class phpCAS
* and phpCAS::setDebug()).
*/
public static function proxy($server_version, $server_hostname,
$server_port, $server_uri, $changeSessionID = true
$server_port, $server_uri, $service_base_url,
$changeSessionID = true, \SessionHandlerInterface $sessionHandler = null
) {
phpCAS :: traceBegin();
if (is_object(self::$_PHPCAS_CLIENT)) {
@@ -406,8 +421,8 @@ class phpCAS
// initialize the object $_PHPCAS_CLIENT
try {
self::$_PHPCAS_CLIENT = new CAS_Client(
$server_version, true, $server_hostname, $server_port, $server_uri,
$changeSessionID
$server_version, true, $server_hostname, $server_port, $server_uri, $service_base_url,
$changeSessionID, $sessionHandler
);
} catch (Exception $e) {
phpCAS :: error(get_class($e) . ': ' . $e->getMessage());
@@ -435,6 +450,24 @@ class phpCAS
* @{
*/
/**
* Set/unset PSR-3 logger
*
* @param LoggerInterface $logger the PSR-3 logger used for logging, or
* null to stop logging.
*
* @return void
*/
public static function setLogger($logger = null)
{
if (empty(self::$_PHPCAS_DEBUG['unique_id'])) {
self::$_PHPCAS_DEBUG['unique_id'] = substr(strtoupper(md5(uniqid(''))), 0, 4);
}
self::$_PHPCAS_DEBUG['logger'] = $logger;
self::$_PHPCAS_DEBUG['indent'] = 0;
phpCAS :: trace('START ('.date("Y-m-d H:i:s").') phpCAS-' . PHPCAS_VERSION . ' ******************');
}
/**
* Set/unset debug mode
*
@@ -442,9 +475,13 @@ class phpCAS
* to stop debugging.
*
* @return void
*
* @deprecated
*/
public static function setDebug($filename = '')
{
trigger_error('phpCAS::setDebug() is deprecated in favor of phpCAS::setLogger().', E_USER_DEPRECATED);
if ($filename != false && gettype($filename) != 'string') {
phpCAS :: error('type mismatched for parameter $dbg (should be false or the name of the log file)');
}
@@ -518,14 +555,7 @@ class phpCAS
$indent_str = ".";
if (!empty(self::$_PHPCAS_DEBUG['filename'])) {
// Check if file exists and modifiy file permissions to be only
// readable by the webserver
if (!file_exists(self::$_PHPCAS_DEBUG['filename'])) {
touch(self::$_PHPCAS_DEBUG['filename']);
// Chmod will fail on windows
@chmod(self::$_PHPCAS_DEBUG['filename'], 0600);
}
if (isset(self::$_PHPCAS_DEBUG['logger']) || !empty(self::$_PHPCAS_DEBUG['filename'])) {
for ($i = 0; $i < self::$_PHPCAS_DEBUG['indent']; $i++) {
$indent_str .= '| ';
@@ -533,7 +563,20 @@ class phpCAS
// allow for multiline output with proper identing. Usefull for
// dumping cas answers etc.
$str2 = str_replace("\n", "\n" . self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str, $str);
error_log(self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str . $str2 . "\n", 3, self::$_PHPCAS_DEBUG['filename']);
$str3 = self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str . $str2;
if (isset(self::$_PHPCAS_DEBUG['logger'])) {
self::$_PHPCAS_DEBUG['logger']->info($str3);
}
if (!empty(self::$_PHPCAS_DEBUG['filename'])) {
// Check if file exists and modifiy file permissions to be only
// readable by the webserver
if (!file_exists(self::$_PHPCAS_DEBUG['filename'])) {
touch(self::$_PHPCAS_DEBUG['filename']);
// Chmod will fail on windows
@chmod(self::$_PHPCAS_DEBUG['filename'], 0600);
}
error_log($str3 . "\n", 3, self::$_PHPCAS_DEBUG['filename']);
}
}
}
@@ -567,8 +610,6 @@ class phpCAS
}
if (self::$_PHPCAS_VERBOSE) {
echo "<br />\n<b>phpCAS error</b>: <font color=\"FF0000\"><b>" . __CLASS__ . "::" . $function . '(): ' . htmlentities($msg) . "</b></font> in <b>" . $file . "</b> on line <b>" . $line . "</b><br />\n";
} else {
echo "<br />\n<b>Error</b>: <font color=\"FF0000\"><b>". DEFAULT_ERROR ."</b><br />\n";
}
phpCAS :: trace($msg . ' in ' . $file . 'on line ' . $line );
phpCAS :: traceEnd();
@@ -1869,6 +1910,14 @@ class phpCAS
}
}
/**
* @return CAS_Client
*/
public static function getCasClient()
{
return self::$_PHPCAS_CLIENT;
}
/**
* For testing purposes, use this method to set the client to a test double
*
@@ -17,7 +17,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP Version 5
* PHP Version 7
*
* @file CAS/AuthenticationException.php
* @category Authentication
@@ -72,11 +72,15 @@ implements CAS_Exception
phpCAS::traceBegin();
$lang = $client->getLangObj();
$client->printHTMLHeader($lang->getAuthenticationFailed());
printf(
$lang->getYouWereNotAuthenticated(),
htmlentities($client->getURL()),
isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN']:''
);
if (phpCAS::getVerbose()) {
printf(
$lang->getYouWereNotAuthenticated(),
htmlentities($client->getURL()),
$_SERVER['SERVER_ADMIN'] ?? ''
);
}
phpCAS::trace($messages[] = 'CAS URL: '.$cas_url);
phpCAS::trace($messages[] = 'Authentication failure: '.$failure);
if ( $no_response ) {
@@ -3,7 +3,7 @@
/**
* Autoloader Class
*
* PHP Version 5
* PHP Version 7
*
* @file CAS/Autoload.php
* @category Authentication
@@ -26,18 +26,24 @@ function CAS_autoload($class)
// Static to hold the Include Path to CAS
static $include_path;
// Check only for CAS classes
if (substr($class, 0, 4) !== 'CAS_') {
if (substr($class, 0, 4) !== 'CAS_' && substr($class, 0, 7) !== 'PhpCas\\') {
return false;
}
// Setup the include path if it's not already set from a previous call
if (empty($include_path)) {
$include_path = array(dirname(dirname(__FILE__)), dirname(dirname(__FILE__)) . '/../test/' );
$include_path = array(dirname(__DIR__));
}
// Declare local variable to store the expected full path to the file
foreach ($include_path as $path) {
$file_path = $path . '/' . str_replace('_', '/', $class) . '.php';
$class_path = str_replace('_', DIRECTORY_SEPARATOR, $class);
// PhpCas namespace mapping
if (substr($class_path, 0, 7) === 'PhpCas\\') {
$class_path = 'CAS' . DIRECTORY_SEPARATOR . substr($class_path, 7);
}
$file_path = $path . DIRECTORY_SEPARATOR . $class_path . '.php';
$fp = @fopen($file_path, 'r', true);
if ($fp) {
fclose($fp);
@@ -54,6 +60,7 @@ function CAS_autoload($class)
return true;
}
}
$e = new Exception(
'Class ' . $class . ' could not be loaded from ' .
$file_path . ', file does not exist (Path="'
@@ -61,22 +68,22 @@ function CAS_autoload($class)
);
$trace = $e->getTrace();
if (isset($trace[2]) && isset($trace[2]['function'])
&& in_array($trace[2]['function'], array('class_exists', 'interface_exists'))
&& in_array($trace[2]['function'], array('class_exists', 'interface_exists', 'trait_exists'))
) {
return false;
}
if (isset($trace[1]) && isset($trace[1]['function'])
&& in_array($trace[1]['function'], array('class_exists', 'interface_exists'))
&& in_array($trace[1]['function'], array('class_exists', 'interface_exists', 'trait_exists'))
) {
return false;
}
die ((string) $e);
}
// set up __autoload
if (!(spl_autoload_functions())
|| !in_array('CAS_autoload', spl_autoload_functions())
) {
// Set up autoload if not already configured by composer.
if (!class_exists('CAS_Client'))
{
trigger_error('phpCAS autoloader is deprecated. Install phpCAS using composer instead.', E_USER_DEPRECATED);
spl_autoload_register('CAS_autoload');
if (function_exists('__autoload')
&& !in_array('__autoload', spl_autoload_functions())
@@ -86,5 +93,3 @@ if (!(spl_autoload_functions())
spl_autoload_register('__autoload');
}
}
?>
File diff suppressed because it is too large Load Diff
@@ -17,7 +17,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP Version 5
* PHP Version 7
*
* @file CAS/CookieJar.php
* @category Authentication
@@ -231,6 +231,7 @@ class CAS_CookieJar
case 'commenturl':
case 'discard':
case 'httponly':
case 'samesite':
$cookie[$attributeNameLC] = $attributeValue;
break;
default:
@@ -17,7 +17,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP Version 5
* PHP Version 7
*
* @file CAS/Exception.php
* @category Authentication
@@ -56,4 +56,4 @@ interface CAS_Exception
{
}
?>
?>
@@ -17,7 +17,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP Version 5
* PHP Version 7
*
* @file CAS/GracefullTerminationException.php
* @category Authentication
@@ -83,4 +83,4 @@ implements CAS_Exception
}
}
?>
?>

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