Commit Graph

1447 Commits

Author SHA1 Message Date
Andrew Nicols 62c560dff2 MDL-81456 core: Correct namespace imports 2024-04-09 16:13:42 +08:00
Andrew Nicols 2b49ad42f5 MDL-81456 core: Use DI for all hook access
Using DI for all hook access means that it becomes significantly easier
to mock hooks and callbacks for unit testing without fundamentally
altering the structure of the code purely for the purposes of unit
testing.
2024-04-08 09:35:41 +08:00
Ilya Tregubov 24347e3309 Merge branch 'MDL-80828-main' of https://github.com/roland04/moodle 2024-03-27 11:14:02 +08:00
Huong Nguyen b283ca354e Merge branch 'MDL-78551-main' of https://github.com/safatshahin/moodle 2024-03-26 10:08:06 +07:00
Safat 99b7dc147f MDL-78551 core_course: Add hooks api for course updates 2024-03-26 13:53:39 +11:00
Mikel Martín cd8a089d7a MDL-80828 core_courseformat: Modify availability subpanel visibility
In the activity action menu, show only the subpanel when the options are different
than show or hide. In those cases the show/hide option will be directly displayed
in the menu instead of a subpanel.

Co-authored-by: ferran@moodle.com
2024-03-25 13:54:42 +01:00
Ferran Recio c74a5439f6 MDL-80715 core_courseformat: new cm rename action 2024-03-20 16:51:12 +01:00
Ferran Recio 9d3bbe6c02 MDL-80715 core_courseformat: new section update action 2024-03-20 16:51:12 +01:00
Jun Pataleta 3278ce7aba Merge branch 'MDL-65292' of https://github.com/stronk7/moodle 2024-03-08 08:00:41 +08:00
Ilya Tregubov dcc9324b68 Merge branch 'MDL-78850-main' of https://github.com/meirzamoodle/moodle 2024-03-05 11:23:17 +08:00
meirzamoodle 99941c0d13 MDL-78850 course: allow to show/hide the course index drawer
This new API makes it easy for the developer to hide or show the course index drawer.
2024-02-29 12:48:48 +07:00
Eloy Lafuente (stronk7) ba1f804ffa MDL-65292 style: Fix all function declarations white space
This has been generated running the following Sniffs, all
them part of the Moodle's CodeSniffer standard:
- PSR12.Functions.ReturnTypeDeclaration
- PSR12.Functions.NullableTypeDeclaration
- moodle.Methods.MethodDeclarationSpacing
- Squiz.Whitespace.ScopeKeywordSpacing

All them are, exclusively, about correct spacing, so the changes
are, all them, only white space changes.

Only exceptions to the above are 3 changes what were setting the
return type in a new line, and, when that happens, the closing
parenthesis (bracket) has to go to the same line than the colon.
2024-02-28 23:33:26 +01:00
Dmitrii Metelkin 95eea308cd MDL-73483 course: add callbacks to extend course form 2024-02-23 09:27:32 +11:00
Jun Pataleta bd54499fe0 Merge branch 'master_check_cached_empty_modnames' of https://github.com/opitz/moodle 2024-02-07 11:18:00 +08:00
Jun Pataleta 3c196b3039 Merge branch 'MDL-78427-master' of https://github.com/davewoloszyn/moodle 2024-02-05 13:42:17 +08:00
David Woloszyn 40d397ab5f MDL-78427 core_theme: Add theme usage report and icon
In addition to adding in theme usage reports, there is also the
addition of an icon on the theme cards which takes you to the report.
This icon only appears for that theme if it has been used in any
overriding context.
2024-02-02 11:16:46 +11:00
Amaia Anabitarte 522a7ec010 MDL-80250 course_format: Create new section_viewed event 2024-01-31 12:54:06 +01:00
Ilya Tregubov 14b809a017 Merge branch 'MDL-80320-main' of https://github.com/laurentdavid/moodle 2024-01-24 08:56:07 +08:00
Laurent David 31d4af83c6 MDL-80320 core_courseformat: Disable group selection
* When forced groupmode is enabled for the course:
  - the group selection in the activity card be disabled
  - the activity action menu groupmode will not be visible.
  - only the icon will be visible
* Add new test to check for visibility
2024-01-23 11:31:22 +01:00
Matthias Opitz 76f5232c94 MDL-79988 course: checking for cached empty modnames
Check if empty modnames have been cached and if so retrieve them again.
2024-01-19 09:38:47 +00:00
Sara Arjona 0c71612294 MDL-80461 courseformat: Deprecate unused strings for topics and weeks 2024-01-19 08:53:17 +01:00
Ferran Recio 557099a81e MDL-80187 core_courseformat: create and delete section methods 2024-01-17 10:39:13 +01:00
Ferran Recio 837dc7e852 MDL-80186 course: adding new fields to delegate sections logic 2023-12-20 12:02:51 +01:00
Santosh Nagargoje 1c5445c6e6 MDL-77572 Course: Added fix for section,activity visibility capabilities 2023-12-12 22:01:46 +05:30
Andrew Nicols 75587e23c6 MDL-79890 core: Update uses of array_keys with multiple params
These now call the newly minted `moodle_array_keys_filter` method.
2023-11-15 09:14:40 +08:00
Mark Johnson f3fc03e90c MDL-79615 course: Improve efficency of cache rebuilds
When bulk-updating course module visibility, set_coursemodule_visibily
was triggering a partial cache purge and rebuild for each course module.
This potentially led to 2 cache sets each requiring a lock to be
acquired and released per course module, plus any other cache updates
for other changes to the course in the same request.

This adds a new $rebuildcache paramter to the
set_coursemodule_visibilty, which is true by default to retain the
existing behaviour. If set false, it will skip doing the partial purge
and rebuild for that course module, and it is up to the calling code to
ensure the cache is updated as requried.

To assist with this, there is a new
course_modinfo::purge_course_module_cache_multiple() method, which
allows multiple course modules to be purged from the cache in a single
cache set.
2023-10-27 10:50:40 +01:00
Michael Hawkins 329a9e97d2 MDL-79573 communication: Support new records for each provider type
Previously, we replaced information in the same communication record
in the database, now there will be a unique record per provider.
This ensures when switching between different providers, the correct
actions such as room member management can be actioned for the correct
provider.

This also includes the required updates for the instances to no
longer assume a provider must be enabled to be relevant. Specifying a
provider is optional to fetch a specific provider instance, the default
will use the currently enabled provider.
2023-10-06 09:54:32 +08:00
Andrew Nicols 99c1543aa8 MDL-79581 communication: Context is a mandatory field
The API was incorrectly assuming that all uses of the API were for a
course, and that the instanceid of the communication instance was a
course id. These assumptions are both entirely wrong.

The API is intended to support a range of uses including use at the
site, user, and activity levels.

Furthermore, if a group were to be used, then the instanceid should be
of that group's id, and therefore the contextid would need to be fetched
or that group's course instead.

The only solution here is to add a new contextid field to the table, and
implement it all parts of the API.
2023-10-04 20:37:57 +08:00
Mikel Martín d9a61945b6 MDL-78972 core_courseformat: Change delete actions link colours to red 2023-09-04 11:36:51 +02:00
Jun Pataleta 928ea71887 Merge branch 'MDL-78397' of https://github.com/paulholden/moodle 2023-08-25 11:52:57 +08:00
Jun Pataleta 932306b447 Merge branch 'MDL-77917-master' of https://github.com/andrewnicols/moodle 2023-08-24 23:39:10 +08:00
Andrew Nicols 914686bc5e MDL-77917 communication_matrix: Support server API versions
This commit brings in support for multiple versions of the Matrix
specification.

A Matrix server is compromised of a number of individually versioned API
endpoints, for example:

    /_matrix/client/v3/createRoom
    /_matrix/client/v3/rooms/:roomid/joined_members
    /_matrix/media/v1/create

The combination of a large number of these individually versioned
endpoints forms a Matrix Specification version.

For example:

* the /_matrix/media/v1/create endpoint was created for version 1.7 of the
  specification, and does not exist in earlier versions.
* in the future a new behaviour or parameter may be created for the
  `createRoom` endpoint and a new endpoint created at:

    /_matrix/client/v4/createRoom

A single server can support multiple versions of the Matrix
specification. The server declares the versions of the specification
that it supports using a non-versioned endpoint at
`/_matrix/client/versions`.

As a Matrix client, Moodle should:
* query the server version endpoint
* determine the combination of mutually supported Matrix specification
  versions
* create a client instance of the highest-supported version of the
  specification.

For example, if Moodle (Matrix client) and a remote server have the
following support:

```
Moodle:      1.1  1.2  1.3  1.4  1.5  1.6  1.7
Server:  r0  1.1  1.2  1.3  1.4  1.5  1.6
```

The versions in common are 1.1 through 1.6, and version 1.6 would be
chosen.

To avoid duplication and allow for support of future features more
easily, the Moodle client is written as:
* a set of classes named `v1p1` through `v1p7` (currently) which extend
  the `matrix_client` abstract class; and
* a set if PHP traits which provide the implementation for individual
  versioned endpoints.

Each client version then imports any relevant traits which are present
in that version of the Matrix Specification. For example versions 1.1 to
1.6 do _not_ have the `/_matrix/media/v1/create` endpoint so they do not
import this trait. This trait was introduced in version 1.7, so the
trait is included from that version onwards.

In the future, if an endpoint is created which conflicts with an
existing endpoint, then it would be easy to create a new client version
which uses the existing common traits, and adds the new trait.

Each endpoint is written using a `command` class which extends the
Guzzle implementation of the PSR-7 Request interface. This command
class adds support for easy creation of:
* path parameters within the URI
* query parameters
* body parameters

This is done to avoid complex patterns of Request creation which are
repeated for every client endpoint.
2023-08-24 11:59:25 +08:00
Paul Holden 8ca8c92f3c MDL-78397 course: update module name using API after duplicating.
This ensures that various ancillary tasks are also performed (such
as ensuring the gradebook item name matches).
2023-08-23 09:14:04 +01:00
Ferran Recio ee2e084e89 MDL-78291 core_courseformat: availability in activity action menu 2023-08-22 09:39:13 +02:00
Ferran Recio cb541081bd MDL-78203 core_courseformat: groupmode action menu item 2023-08-11 17:24:18 +02:00
Huong Nguyen aeeb1653c0 Merge branch 'MDL-78553-master' of https://github.com/davewoloszyn/moodle 2023-08-03 09:44:24 +07:00
David Woloszyn 317251a978 MDL-78553 core_communication: Move settings to their own page 2023-08-03 12:36:04 +10:00
Andrew Nicols 8b97071c94 MDL-78738 core_communication: Set avatar from a stored_file
We should always use a stored_file instance to set the avatar, and never
a data uri. Especially where the datauri is from Moodle itself.

This change requires a number of changes in associated locations.

I am not adding this change to any upgrade notes as this is a
master-only feature.

Note: I have removed some tests and will not consider fixing them
because I will be entirely removing that test file in a subsequent issue
(MDL-77917).
2023-08-01 19:50:14 +08:00
Andrew Nicols 0a5c1ea5f9 MDL-78738 core_course: Add helper to get the course image 2023-08-01 19:50:14 +08:00
Ferran Recio 01e0e56665 MDL-78282 core_courseformat: interactive visibility badges 2023-07-26 15:44:28 +02:00
Paul Holden 58963baba4 MDL-77645 course: ensure active enrolments are considered for drawer.
Otherwise the enrolment index page tries to load the course index
drawer, which doesn't exist at this point and triggers exceptions in
the editor module.

Co-authored-by: Tim Volckmann <tim.volckmann@mastersolution.com>
2023-07-12 14:26:17 +01:00
Paul Holden e3583a2302 MDL-78385 course: fix non-AJAX activity indentation URL parameter. 2023-06-14 12:58:13 +01:00
Safat 982938fa04 MDL-77357 core_course: Api call for dynamic form fields 2023-06-01 00:39:03 +10:00
Safat ad5c10016a MDL-77576 core_course: Implement communication api
This commit implements the core communication api in the
core course to create or update matrix roomand its members
according to course settings. This commit will add the
communicaiton room in the course so that users can access
communication room from course.

Originally implemented as MDL-76702, MDL-76705 and MDL-76703.

Co-Authored-By: David Woloszyn <david.woloszyn@moodle.com>
Co-Authored-By: Safat Shahin <safat.shahin@moodle.com>
2023-05-11 13:35:16 +10:00
Jun Pataleta 860f85e8b8 Merge branch 'MDL-77670-master' of https://github.com/juancs/moodle 2023-03-28 07:04:23 +08:00
Juan Segarra Montesinos adb63ac50e MDL-77670 course: Preserve course summary format 2023-03-17 20:56:26 +01:00
Ferran Recio 856b295569 MDL-76851 core_courseformat: plugin custom editor strings
Most section related actions require the frontend to use alternative
strings depending on the format plugin lang file. This patch adds
overridden strings to the current setViewFormat course editor setup
object.
2023-03-17 11:07:13 +01:00
Mathew May e5ca7766e7 MDL-52805 core: Remove legacy log calls 2023-03-07 13:08:46 +08:00
Andrew Nicols 0c8b3749f2 Merge branch 'MDL-40600-master-duplicate_section' of https://github.com/alexmorrisnz/moodle 2023-03-02 09:23:05 +08:00
Amaia Anabitarte b37fe9a088 MDL-76990 core_course: Recover move right/left functionality 2023-02-27 18:27:57 +01:00