6 years agoMDL-51832 tests: Fix failing code manager unit tests on Windows
David Mudrák [Mon, 19 Oct 2015 15:43:12 +0000 (17:43 +0200)]
MDL-51832 tests: Fix failing code manager unit tests on Windows

6 years agoMDL-49329 admin: Fix reported coding style warnings
David Mudrák [Fri, 9 Oct 2015 22:01:39 +0000 (00:01 +0200)]
MDL-49329 admin: Fix reported coding style warnings

6 years agoMDL-49329 admin: Start using API 1.3 for fetching available updates
David Mudrák [Fri, 9 Oct 2015 22:28:05 +0000 (00:28 +0200)]
MDL-49329 admin: Start using API 1.3 for fetching available updates

This is not really necessary as there is no actual change in the
behaviour of the updates API between 1.2 and 1.3. However, as we plan to
use the new \core\update\api client for this in the future, it makes
only sense to have these two synced already now. In other words, Moodle
3.0 site will use the same version 1.3 for all
end points.

6 years agoMDL-49329 admin: Fix checking for available updates
David Mudrák [Fri, 9 Oct 2015 22:24:59 +0000 (00:24 +0200)]
MDL-49329 admin: Fix checking for available updates

This was a regression of my recent improvement of rendering the "Check
for updates" button. There is now unified parameter ?fetchupdates=1 that
can be used on either admin/index.php or admin/plugins.php, so that we
can use a common UI widget for both locations (without the need to pass
the URL explicitly).

6 years agoMDL-49329 admin: Clean up disabling of plugins code management features
David Mudrák [Fri, 9 Oct 2015 20:23:52 +0000 (22:23 +0200)]
MDL-49329 admin: Clean up disabling of plugins code management features

The admin setting updateautodeploy no longer exists. The two existing
config.php flags $CFG->disableupdateautodeploy and
$CFG->disableonclickaddoninstall merged into a single one.

6 years agoMDL-49329 admin: Do not force admin to reconfirm the core upgrade
David Mudrák [Fri, 9 Oct 2015 16:46:01 +0000 (18:46 +0200)]
MDL-49329 admin: Do not force admin to reconfirm the core upgrade

6 years agoMDL-49329 admin: Add ability to cancel upgrade of the plugin
David Mudrák [Fri, 9 Oct 2015 16:07:28 +0000 (18:07 +0200)]
MDL-49329 admin: Add ability to cancel upgrade of the plugin

If there is an available archived zip with the version of the plugin
currently installed, we can use it to cancel/abort the upgrade of the
plugin. This is internally handled as the installation of the archived
zip and goes through all the validation and confirmation.

Additionally, some other parts were improved. Most notably, renderer no
longer decides itself if some installation can be cancelled but it
always asks the controller (plugin manager).

The button for installation was moved to the left so there should be
first buttons to add things, and then buttons to cancel things (which is
common in normal forms).

6 years agoMDL-49329 admin: Clean up code manager methods
David Mudrák [Fri, 9 Oct 2015 12:43:33 +0000 (14:43 +0200)]
MDL-49329 admin: Clean up code manager methods

The method move_plugin_directory() was a relict from previous 2.9
implementation within tool_installadon_installer and was originally
supposed to be used to move whole plugin folders. The archiving feature
has been finally implemented via using zip files (so that we do not have
actual PHP code present in the dataroot) and we do not need this method.

6 years agoMDL-49329 admin: Archive plugin code before removing it from dirroot
David Mudrák [Fri, 9 Oct 2015 11:44:57 +0000 (13:44 +0200)]
MDL-49329 admin: Archive plugin code before removing it from dirroot

This should allow the admin to revert the upgrade of existing plugins,
such when the dependency chain leads to a dead-end. Additionally, we
archive (as a last-chance copy) the to-be-installed plugins when
cancelling their installation. This is mainly for developers who could
otherwise loose their code. For the same reason, plugins are being
archived upon uninstallation, too.

6 years agoMDL-49329 admin: Require confirmation before cancelling plugin install
David Mudrák [Thu, 8 Oct 2015 21:28:43 +0000 (23:28 +0200)]
MDL-49329 admin: Require confirmation before cancelling plugin install

6 years agoMDL-49329 admin: Convert install plugins tool to use new APIs
David Mudrák [Thu, 8 Oct 2015 10:51:27 +0000 (12:51 +0200)]
MDL-49329 admin: Convert install plugins tool to use new APIs

Most of the functionality provided by this tool (typically the
validation and actual deployment of the plugin package) has been moved
to the core level. So this is becoming just a thin wrapper and user
interface for installing new plugins via the administration UI.

Also fixes MDL-49600 as we no longer keep the unzipped contents of the
packages in the persistent temp directories.

6 years agoMDL-49329 admin: Make plugin manager able to install from local zips too
David Mudrák [Thu, 8 Oct 2015 19:21:15 +0000 (21:21 +0200)]
MDL-49329 admin: Make plugin manager able to install from local zips too

The plugin manager's method install_remote_plugins() has been changed to
install_plugins() and it is now able to install plugins from the
provided list of locally available ZIP files, too. This is used by the
Install plugins admin tool.

6 years agoMDL-49329 admin: Call opcache_reset() after installing new plugin code
David Mudrák [Wed, 7 Oct 2015 19:33:43 +0000 (21:33 +0200)]
MDL-49329 admin: Call opcache_reset() after installing new plugin code

During the testing, I was experiencing weird behaviour - after a single
plugin updated was installed, I ended up on admin/index.php?cache=1. I
believe it was caused by the missing opcache_reset().

6 years agoMDL-49329 admin: Use the new plugins management on Plugins overview page
David Mudrák [Wed, 7 Oct 2015 19:25:44 +0000 (21:25 +0200)]
MDL-49329 admin: Use the new plugins management on Plugins overview page

The plugins overview page now uses the new plugins management features,
most notably the ability to install all available updates at once.

6 years agoMDL-49329 admin: Support plugins installation during upgrade
David Mudrák [Wed, 7 Oct 2015 17:30:03 +0000 (19:30 +0200)]
MDL-49329 admin: Support plugins installation during upgrade

The plugins check screen (displayed during core upgrade and/or plugins
upgrade) now supports installation of remote plugins. This includes
installation of missing dependencies (both single and bulk mode) and
installation of available updates (both single and bulk mode).

All the HTTP query parameters supported by admin/index.php are now
explicitly enlisted. Previously, the \core\update\deployer used
its own additional parameters (and was source of some serious problems
in the past).

The implementation uses the plugin manager as the controller and
provides an unified interface for installing any remote plugin or
plugins (be it available update or missing dependency).

As a side effect, we now validate available updates which was not
happening before.

6 years agoMDL-49329 admin: Add plugin manager method for installing remote packs
David Mudrák [Wed, 7 Oct 2015 12:40:43 +0000 (14:40 +0200)]
MDL-49329 admin: Add plugin manager method for installing remote packs

The new method core_plugin_manager::install_remote_plugins() will serve
as a backend for all the ways of installing ZIP packages from the moodle
plugins directory, such as installing new plugins (by clicking the
Install button in the plugins directory), installing available updates
(single and bulk mode) and installing missing dependencies (single and
bulk mode).

The method should be used both for validation pre-check screen and,
after the confirmation, for actual installation. Note that we
intentionally repeat the whole procedure after confirmation. Unzipping
plugins is cheap and fast and the ZIPs themselves are already available
in the \core\update\code_manager's cache.

We will need to add support for archiving existing code to prevent
accidental data-loss.

This basically provides what mdeploy.php was doing, but better. We now
have consistent way of installing all remote ZIP packages, always
validate them and we can perform bulk operations, too.

6 years agoMDL-49329 admin: Improve the plugin package validator
David Mudrák [Wed, 7 Oct 2015 09:50:49 +0000 (11:50 +0200)]
MDL-49329 admin: Improve the plugin package validator

Previously, the validator was used for installation of the new plugins
only. We now validate every incoming plugin package. As a result, we
must no longer insists on the target location is empty. Instead, warning
is raised.

6 years agoMDL-49329 admin: Validate the contents of the cached plugin ZIP package
David Mudrák [Wed, 7 Oct 2015 08:16:11 +0000 (10:16 +0200)]
MDL-49329 admin: Validate the contents of the cached plugin ZIP package

6 years agoMDL-49329 admin: Introduce new \core\update\remote_info class
David Mudrák [Tue, 6 Oct 2015 20:17:40 +0000 (22:17 +0200)]
MDL-49329 admin: Introduce new \core\update\remote_info class

This is just a thin wrapper for normal objects, allowing us to have
explicit type hinting / declarations in method signatures.

6 years agoMDL-49329 admin: Improve plugins overview page rendering
David Mudrák [Tue, 6 Oct 2015 16:59:09 +0000 (18:59 +0200)]
MDL-49329 admin: Improve plugins overview page rendering

Provides a bit more compact layout. Finally cleans up the relevant LESS
files and makes available updates info boxes consistent across all
screens where they are displayed.

6 years agoMDL-49329 admin: Add core_plugin_manager::available_updates() method
David Mudrák [Tue, 6 Oct 2015 11:46:00 +0000 (13:46 +0200)]
MDL-49329 admin: Add core_plugin_manager::available_updates() method

The new method is going to be used to support the "Update all plugins"

6 years agoMDL-49329 admin: Get rid of mdeploy and \core\update\deployer class
David Mudrák [Tue, 6 Oct 2015 08:17:41 +0000 (10:17 +0200)]
MDL-49329 admin: Get rid of mdeploy and \core\update\deployer class

The mdeploy.php standalone script (used to download and unzip plugins
into the dirroot) and the \core\update\deployer class (as a
communication bridge between the core and the mdeploy.php) was
originally designed and implemented with the assumption that it would be
eventually used for updating the Moodle core itself, too. Therefore it
was written as standalone utility without dependency on the Moodle core

However, it never happened and there is no real demand for that. So now
there is no need to have and maintain a completely parallel solution for
common things like fetching and unzipping plugin ZIPs.

Additional reasoning for mdeploy.php was that the core is not very
reliable during the core upgrade and we could run into various troubles.
This does not seem to be that bad. We rely on a lot of core
functionality (such as output rendering, DB access etc) and plugins
deployment seems to work well (and better) with common core libraries.

So long mdeploy, and thanks for all the hard work you did for us.

6 years agoMDL-49329 admin: Fix plugins check page if no plugins require attention
David Mudrák [Tue, 6 Oct 2015 08:09:59 +0000 (10:09 +0200)]
MDL-49329 admin: Fix plugins check page if no plugins require attention

A legacy undefined variable was used here and there was no way to get to
the full list mode view.

6 years agoMDL-49329 admin: Clean up core_plugin unit tests
David Mudrák [Mon, 5 Oct 2015 13:19:09 +0000 (15:19 +0200)]
MDL-49329 admin: Clean up core_plugin unit tests

As a first step for removing the \core\update\deployer and mdeploy.php,
this patch fixes existing tests.

6 years agoMDL-49329 admin: If unable to install a plugin, display the reason
David Mudrák [Mon, 5 Oct 2015 12:08:00 +0000 (14:08 +0200)]
MDL-49329 admin: If unable to install a plugin, display the reason

6 years agoMDL-49329 admin: Highlight missing/downgrading plugins
David Mudrák [Mon, 5 Oct 2015 09:34:06 +0000 (11:34 +0200)]
MDL-49329 admin: Highlight missing/downgrading plugins

6 years agoMDL-49329 admin: Fix report on required core version in missing plugins
David Mudrák [Mon, 5 Oct 2015 09:23:06 +0000 (11:23 +0200)]
MDL-49329 admin: Fix report on required core version in missing plugins

If the plugin was missing from disk, the required core version was
displayed as "Moodle {$a}" because the core dependency resolver always
returns an object.

6 years agoMDL-49329 admin: Fix the API for getting remote plugin info
David Mudrák [Mon, 5 Oct 2015 00:08:37 +0000 (02:08 +0200)]
MDL-49329 admin: Fix the API for getting remote plugin info

The previous version of the plugin manager's method
get_remote_plugin_info() was suitable for installing missing
dependencies only. To make use of for installing new plugins and/or
available updates, it must be clear that we are requesting information
for the particular plugin version only, not "given or higher" version.

6 years agoMDL-49329 admin: Validate pluginfo service response
David Mudrák [Sun, 4 Oct 2015 17:55:12 +0000 (19:55 +0200)]
MDL-49329 admin: Validate pluginfo service response

The new client's method makes sure that the returned data structure has
expected format so that the plugin manager can safely rely on it.

6 years agoMDL-49329 admin: Improve Plugins check page
David Mudrák [Sat, 3 Oct 2015 23:04:43 +0000 (01:04 +0200)]
MDL-49329 admin: Improve Plugins check page

Better inform about the number of plugins requiring attention vs total
plugins. Clean up the renderer.

6 years agoMDL-49329 admin: Improve the UI for installing dependencies
David Mudrák [Sat, 3 Oct 2015 21:58:35 +0000 (23:58 +0200)]
MDL-49329 admin: Improve the UI for installing dependencies

6 years agoMDL-49329 admin: Add ability to cancel installation of a new plugin
David Mudrák [Sat, 3 Oct 2015 18:00:05 +0000 (20:00 +0200)]
MDL-49329 admin: Add ability to cancel installation of a new plugin

The plugins check screen now provides buttons to cancel installation of
a plugin. Available only for new installations (not upgrades) and for
additional plugins (not standard), given that the web server process has
write access to the plugin folder.

This has also been reported as MDL-48535.

As a part of the patch, there is improved processing of page URLs during
the upgrade. All this dancing around $reload URL is not needed once the
$PAGE->url is properly set to guide the admin on the correct page during
the upgrade process.

6 years agoMDL-49329 admin: Introduce new \core\update\validator class
David Mudrák [Sat, 3 Oct 2015 12:54:08 +0000 (14:54 +0200)]
MDL-49329 admin: Introduce new \core\update\validator class

This is not really new class. Originally, the validator was implemented
in the scope of the tool_installaddon plugin. But we need its features
in other parts at the core level (e.g. during the upgrade to validate
available missing dependencies or available updates). Looking back, it
was a mistake to have it implemented at the plugin level rather than the
core level.

So this patch moves the tool_installaddon_validator class to
\core\update\validator class, together with associated unit tests,
fixture files and strings. There were changes made in the
tool_installaddon to make use of this new class instead of the old one.

This is a great step towards the bright future, hopefully there won't be
many regressions.

 MOV [validationmsg_componentmatch,tool_installaddon],[validationmsg_componentmatch,core_plugin]
 MOV [validationmsg_componentmismatchname,tool_installaddon],[validationmsg_componentmismatchname,core_plugin]
 MOV [validationmsg_componentmismatchname_help,tool_installaddon],[validationmsg_componentmismatchname_help,core_plugin]
 MOV [validationmsg_componentmismatchname_info,tool_installaddon],[validationmsg_componentmismatchname_info,core_plugin]
 MOV [validationmsg_componentmismatchtype,tool_installaddon],[validationmsg_componentmismatchtype,core_plugin]
 MOV [validationmsg_componentmismatchtype_info,tool_installaddon],[validationmsg_componentmismatchtype_info,core_plugin]
 MOV [validationmsg_filenotexists,tool_installaddon],[validationmsg_filenotexists,core_plugin]
 MOV [validationmsg_filesnumber,tool_installaddon],[validationmsg_filesnumber,core_plugin]
 MOV [validationmsg_filestatus,tool_installaddon],[validationmsg_filestatus,core_plugin]
 MOV [validationmsg_filestatus_info,tool_installaddon],[validationmsg_filestatus_info,core_plugin]
 MOV [validationmsg_foundlangfile,tool_installaddon],[validationmsg_foundlangfile,core_plugin]
 MOV [validationmsg_maturity,tool_installaddon],[validationmsg_maturity,core_plugin]
 MOV [validationmsg_maturity_help,tool_installaddon],[validationmsg_maturity_help,core_plugin]
 MOV [validationmsg_missingcomponent,tool_installaddon],[validationmsg_missingcomponent,core_plugin]
 MOV [validationmsg_missingcomponent_help,tool_installaddon],[validationmsg_missingcomponent_help,core_plugin]
 MOV [validationmsg_missingcomponent_link,tool_installaddon],[validationmsg_missingcomponent_link,core_plugin]
 MOV [validationmsg_missingexpectedlangenfile,tool_installaddon],[validationmsg_missingexpectedlangenfile,core_plugin]
 MOV [validationmsg_missingexpectedlangenfile_info,tool_installaddon],[validationmsg_missingexpectedlangenfile_info,core_plugin]
 MOV [validationmsg_missinglangenfile,tool_installaddon],[validationmsg_missinglangenfile,core_plugin]
 MOV [validationmsg_missinglangenfolder,tool_installaddon],[validationmsg_missinglangenfolder,core_plugin]
 MOV [validationmsg_missingversion,tool_installaddon],[validationmsg_missingversion,core_plugin]
 MOV [validationmsg_missingversionphp,tool_installaddon],[validationmsg_missingversionphp,core_plugin]
 MOV [validationmsg_multiplelangenfiles,tool_installaddon],[validationmsg_multiplelangenfiles,core_plugin]
 MOV [validationmsg_onedir,tool_installaddon],[validationmsg_onedir,core_plugin]
 MOV [validationmsg_onedir_help,tool_installaddon],[validationmsg_onedir_help,core_plugin]
 MOV [validationmsg_pathwritable,tool_installaddon],[validationmsg_pathwritable,core_plugin]
 MOV [validationmsg_pluginversion,tool_installaddon],[validationmsg_pluginversion,core_plugin]
 MOV [validationmsg_release,tool_installaddon],[validationmsg_release,core_plugin]
 MOV [validationmsg_requiresmoodle,tool_installaddon],[validationmsg_requiresmoodle,core_plugin]
 MOV [validationmsg_rootdir,tool_installaddon],[validationmsg_rootdir,core_plugin]
 MOV [validationmsg_rootdir_help,tool_installaddon],[validationmsg_rootdir_help,core_plugin]
 MOV [validationmsg_rootdirinvalid,tool_installaddon],[validationmsg_rootdirinvalid,core_plugin]
 MOV [validationmsg_rootdirinvalid_help,tool_installaddon],[validationmsg_rootdirinvalid_help,core_plugin]
 MOV [validationmsg_targetexists,tool_installaddon],[validationmsg_targetexists,core_plugin]
 MOV [validationmsg_targetexists_help,tool_installaddon],[validationmsg_targetexists_help,core_plugin]
 MOV [validationmsg_unknowntype,tool_installaddon],[validationmsg_unknowntype,core_plugin]
 MOV [validationmsg_versionphpsyntax,tool_installaddon],[validationmsg_versionphpsyntax,core_plugin]
 MOV [validationmsglevel_debug,tool_installaddon],[validationmsglevel_debug,core_plugin]
 MOV [validationmsglevel_error,tool_installaddon],[validationmsglevel_error,core_plugin]
 MOV [validationmsglevel_info,tool_installaddon],[validationmsglevel_info,core_plugin]
 MOV [validationmsglevel_warning,tool_installaddon],[validationmsglevel_warning,core_plugin]

6 years agoMDL-49329 admin: Introduce new \core\update\core_manager tool
David Mudrák [Sat, 3 Oct 2015 09:14:35 +0000 (11:14 +0200)]
MDL-49329 admin: Introduce new \core\update\core_manager tool

The plan is to have a single tool looking after all operations with
plugin ZIP packages (downloading, unzipping, moving to the dirroot and
back). For legacy reasons, we have that logic currently duplicated in
mdeploy and tool_installaddon. I would like to unify and simplify the
whole machinery to use the same code for available updates, manual
installation and plugin dependencies.

6 years agoMDL-49329 admin: Display missing dependencies on plugins check screen
David Mudrák [Thu, 1 Oct 2015 13:56:26 +0000 (15:56 +0200)]
MDL-49329 admin: Display missing dependencies on plugins check screen

The patch improves the dependencies resolution in the plugin manager so
that the information about availability of the missing dependency is
included and can be displayed at the Plugins check screen during the

6 years agoMDL-49329 admin: Introduce new \core\update\api client class
David Mudrák [Tue, 29 Sep 2015 23:59:52 +0000 (01:59 +0200)]
MDL-49329 admin: Introduce new \core\update\api client class

The purpose of this class is to provide a general client for all APIs
available at (e.g. available updates,
plugin info, plugins list etc). Currently, fetching data from this API
is done separately at several places. This leads to code duplication and
harder maintenance (I know it well).

Additionally, the existing client was implemented as
tool_installaddon_pluginfo_client in the admin/tool/installaddon/ scope.
I will soon need to use the same functionality in the
core_plugin_manager and it would hurt my karma if the core was depending
on a class provided by a admin tool plugin (even if it is standard one).

So, there is new \core\update\api client implementing the version 1.3 of
the pluginfo API. There is a TODO note left for remaining services.

6 years agoMDL-49329 admin: Move requirements resolving to the plugin manager
David Mudrák [Sat, 26 Sep 2015 07:21:04 +0000 (09:21 +0200)]
MDL-49329 admin: Move requirements resolving to the plugin manager

The patch moves the resolving logic from the renderer (where it should
not really be) to the plugin manager (controller). This is needed
because we will need the very same logic to be used at other places.

6 years agoMDL-49329 admin: Improve loading of available updates info
David Mudrák [Thu, 24 Sep 2015 22:54:53 +0000 (00:54 +0200)]
MDL-49329 admin: Improve loading of available updates info

The actual loading of available updates info objects is moved back to
the plugin manager class. As we can now mockup the manager in unit
tests, this allows us to bypass the real \core\update\checker and have
unit tests for \core\plugininfo\base::available_updates().

6 years agoMDL-49329 admin: Keep reference to plugin manager in plugininfo objects
David Mudrák [Thu, 24 Sep 2015 20:34:31 +0000 (22:34 +0200)]
MDL-49329 admin: Keep reference to plugin manager in plugininfo objects

Plugin info objects are owned by the plugin manager (composition
pattern). Even if the plugin manager is a singleton, we need to keep
explicit reference to the plugin manager that owns the plugin info so
that we can mock up things in unit tests.

Therefore this patch introduces a new property of plugin info objects
that holds the reference to the instance of the plugin manager that made
(and hence owns) the given info instance.

The only trouble here is with static methods of plugin info classes such
as \core\plugininfo\base::get_enabled_plugins(). In these cases, the
code keeps using the core_plugin_manager singleton. The solution would
be to pass the plugin manager instance as a parameter but that is not
worth of change for now, IMHO.

6 years agoMDL-49329 admin: Make core_plugin_manager better suited for unit testing
David Mudrák [Thu, 24 Sep 2015 18:53:04 +0000 (20:53 +0200)]
MDL-49329 admin: Make core_plugin_manager better suited for unit testing

We can now override the plugin manager's methods in the testable
subclass while still keeping the singleton behaviour of it. The change
makes use of late static binding.

6 years agoMDL-49329 admin: Do not always load info about available updates
David Mudrák [Thu, 24 Sep 2015 10:10:15 +0000 (12:10 +0200)]
MDL-49329 admin: Do not always load info about available updates

Before this patch, whenever core_plugin_manager::get_plugins() was
called, it always attached info about available updates. But this is
needed only in quite rare cases, such as when the admin is looking at
the Plugins overview and Plugins check screens. There is no need to load
this on other places and for non-admin users.

The patch removes the loading from the method
core_plugin_manager::get_plugins_of_type() and implements lazy loading
directly in the plugininfo classes so that it is loaded only when
\core\plugininfo\base::available_updates() is actually called.

6 years agoMDL-49329 admin: Fix \core\update\checker::enabled() logic
David Mudrák [Thu, 24 Sep 2015 09:34:04 +0000 (11:34 +0200)]
MDL-49329 admin: Fix \core\update\checker::enabled() logic

The method should check against $CFG->disableupdatenotifications and not
$CFG->disableupdateautodeploy. This had to be a copy&paste mistake from
the \core\update\deployer::enabled().

While looking at it, I also fixed couple of places where this method
should and could be used.

6 years agoMDL-49329 admin: Improve the styling of the Plugins check screen
David Mudrák [Thu, 17 Sep 2015 11:15:29 +0000 (13:15 +0200)]
MDL-49329 admin: Improve the styling of the Plugins check screen

The intention here is to make the table a little bit more compact (using
less columns) and to make use of the bootstrap based label elements if

6 years agoweekly release 3.0dev
Dan Poltawski [Thu, 8 Oct 2015 10:36:35 +0000 (11:36 +0100)]
weekly release 3.0dev

6 years agoNOBUG: Fixed file access permissions
Dan Poltawski [Thu, 8 Oct 2015 10:36:35 +0000 (11:36 +0100)]
NOBUG: Fixed file access permissions

6 years agoMerge branch 'install_master' of
Dan Poltawski [Thu, 8 Oct 2015 10:36:33 +0000 (11:36 +0100)]
Merge branch 'install_master' of

6 years agoMerge branch 'MDL-51523_master' of git://
Dan Poltawski [Thu, 8 Oct 2015 10:30:54 +0000 (11:30 +0100)]
Merge branch 'MDL-51523_master' of git://

6 years agoMDL-51623 core_event: Updating error messages
David Monllao [Thu, 8 Oct 2015 07:57:46 +0000 (15:57 +0800)]
MDL-51623 core_event: Updating error messages

6 years agoMerge branch 'MDL-51623_parent_event' of git://
David Monllao [Thu, 8 Oct 2015 07:53:00 +0000 (15:53 +0800)]
Merge branch 'MDL-51623_parent_event' of git://

6 years agoMDL-51285 mod_forum: Posts all need to have different stamps
Adam Olley [Thu, 8 Oct 2015 03:41:15 +0000 (14:11 +1030)]
MDL-51285 mod_forum: Posts all need to have different stamps

6 years agoMerge branch 'MDL-51341_enrolled_users_filter' of git://
Andrew Nicols [Thu, 8 Oct 2015 01:17:29 +0000 (09:17 +0800)]
Merge branch 'MDL-51341_enrolled_users_filter' of git://

6 years agoMerge branch 'wip-mdl-51660' of
Andrew Nicols [Thu, 8 Oct 2015 01:12:12 +0000 (09:12 +0800)]
Merge branch 'wip-mdl-51660' of

6 years agoMerge branch 'MDL-51624-master' of git://
Eloy Lafuente (stronk7) [Wed, 7 Oct 2015 23:06:17 +0000 (01:06 +0200)]
Merge branch 'MDL-51624-master' of git://

6 years agoMerge branch 'MDL-51566-master' of git://
Eloy Lafuente (stronk7) [Wed, 7 Oct 2015 22:12:36 +0000 (00:12 +0200)]
Merge branch 'MDL-51566-master' of git://

6 years agoMDL-51341 enrolment: fix 'No group' enrolled user filter
Davo Smith [Wed, 23 Sep 2015 16:14:46 +0000 (17:14 +0100)]
MDL-51341 enrolment: fix 'No group' enrolled user filter

6 years agoMerge branch 'MDL-51531-master' of git://
Dan Poltawski [Wed, 7 Oct 2015 15:39:13 +0000 (16:39 +0100)]
Merge branch 'MDL-51531-master' of git://

6 years agoMDL-51624 mod_lti: New Web Service mod_lti_view_lti
Juan Leyva [Wed, 30 Sep 2015 19:55:06 +0000 (21:55 +0200)]
MDL-51624 mod_lti: New Web Service mod_lti_view_lti

6 years agoMDL-51624 mod_lti: Rename function lti_view to lti_launch_tool
Juan Leyva [Wed, 30 Sep 2015 19:33:09 +0000 (21:33 +0200)]
MDL-51624 mod_lti: Rename function lti_view  to lti_launch_tool

6 years agoMDL-51566 mod_choice: New WS mod_choice_delete_choice_responses
Juan Leyva [Mon, 28 Sep 2015 09:46:53 +0000 (11:46 +0200)]
MDL-51566 mod_choice: New WS mod_choice_delete_choice_responses

6 years agoMerge branch 'MDL-50142_master' of
Dan Poltawski [Wed, 7 Oct 2015 11:19:13 +0000 (12:19 +0100)]
Merge branch 'MDL-50142_master' of

6 years agoMerge branch 'MDL-50945-master' of git://
Dan Poltawski [Wed, 7 Oct 2015 11:14:47 +0000 (12:14 +0100)]
Merge branch 'MDL-50945-master' of git://

6 years agoMerge branch 'MDL-50543-master' of git://
Dan Poltawski [Wed, 7 Oct 2015 10:36:21 +0000 (11:36 +0100)]
Merge branch 'MDL-50543-master' of git://

6 years agoMerge branch 'MDL-51567-master' of git://
David Monllao [Wed, 7 Oct 2015 07:34:23 +0000 (15:34 +0800)]
Merge branch 'MDL-51567-master' of git://

6 years agoMerge branch 'MDL-51632_echo_url' of git://
David Monllao [Wed, 7 Oct 2015 07:24:36 +0000 (15:24 +0800)]
Merge branch 'MDL-51632_echo_url' of git://

6 years agoMerge branch 'wip-mdl-50524' of
Dan Poltawski [Wed, 7 Oct 2015 06:59:31 +0000 (07:59 +0100)]
Merge branch 'wip-mdl-50524' of

6 years agoMDL-50524 behat: Fixed multiple when then and use of generator
rajesh Taneja [Wed, 7 Oct 2015 06:47:01 +0000 (14:47 +0800)]
MDL-50524 behat: Fixed multiple when then and use of generator

6 years agoMerge branch 'MDL-51537-master' of git://
David Monllao [Wed, 7 Oct 2015 06:14:21 +0000 (14:14 +0800)]
Merge branch 'MDL-51537-master' of git://


6 years agoMerge branch 'MDL-51526-master' of git://
David Monllao [Wed, 7 Oct 2015 05:46:40 +0000 (13:46 +0800)]
Merge branch 'MDL-51526-master' of git://

6 years agoMDL-51526 mail: Import PHPMailer 5.2.13
Cameron Ball [Wed, 7 Oct 2015 05:42:40 +0000 (13:42 +0800)]
MDL-51526 mail: Import PHPMailer 5.2.13

6 years agoMDL-51579 course: Bump version to update mobile service
David Monllao [Wed, 7 Oct 2015 04:56:03 +0000 (12:56 +0800)]
MDL-51579 course: Bump version to update mobile service

6 years agoMerge branch 'MDL-51579-master' of git://
David Monllao [Wed, 7 Oct 2015 04:48:03 +0000 (12:48 +0800)]
Merge branch 'MDL-51579-master' of git://


6 years agoMerge branch 'wip-mdl-51285' of git://
David Monllao [Wed, 7 Oct 2015 03:22:56 +0000 (11:22 +0800)]
Merge branch 'wip-mdl-51285' of git://

6 years agoMerge branch 'MDL-51250-master-3' of git://
David Monllao [Wed, 7 Oct 2015 03:15:26 +0000 (11:15 +0800)]
Merge branch 'MDL-51250-master-3' of git://

6 years agoMDL-50945 course: Add form-submit class to course edit buttons.
Jakub Kania [Tue, 6 Oct 2015 20:13:12 +0000 (21:13 +0100)]
MDL-50945 course: Add form-submit class to course edit buttons.

With contributions from Mary Evans.

6 years agoMDL-51250 course: Add validation for section name
Jun Pataleta [Wed, 7 Oct 2015 02:39:54 +0000 (21:39 -0500)]
MDL-51250 course: Add validation for section name

6 years agoMerge branch 'wip-MDL-41042-master' of git://
Andrew Nicols [Wed, 7 Oct 2015 02:25:56 +0000 (10:25 +0800)]
Merge branch 'wip-MDL-41042-master' of git://

6 years agoMDL-41042 coursecat: reset course contacts cache more often
Marina Glancy [Fri, 14 Aug 2015 04:28:09 +0000 (12:28 +0800)]
MDL-41042 coursecat: reset course contacts cache more often

6 years agoMDL-41042 coursecat: better handle changes in coursecontact
Marina Glancy [Fri, 14 Aug 2015 04:27:26 +0000 (12:27 +0800)]
MDL-41042 coursecat: better handle changes in coursecontact

6 years agoMDL-49028 mod_wiki: Fix for reseting pages and tags
Adrian Greeve [Wed, 7 Oct 2015 00:43:38 +0000 (08:43 +0800)]
MDL-49028 mod_wiki: Fix for reseting pages and tags

This will ensure that both pages and tags will be
removed when all the reset options for the wiki are

6 years agoMerge branch 'MDL-51521-master' of git://
David Monllao [Wed, 7 Oct 2015 01:32:13 +0000 (09:32 +0800)]
Merge branch 'MDL-51521-master' of git://

6 years agoMerge branch 'MDL-51525-master' of git://
David Monllao [Wed, 7 Oct 2015 01:22:31 +0000 (09:22 +0800)]
Merge branch 'MDL-51525-master' of git://

6 years agoMerge branch 'wip-MDL-51315-master' of git://
David Monllao [Wed, 7 Oct 2015 01:20:13 +0000 (09:20 +0800)]
Merge branch 'wip-MDL-51315-master' of git://

6 years agoMerge branch 'MDL-45981-master' of git://
Andrew Nicols [Wed, 7 Oct 2015 00:18:10 +0000 (08:18 +0800)]
Merge branch 'MDL-45981-master' of git://

6 years agoMerge branch 'MDL-48438' of
Eloy Lafuente (stronk7) [Tue, 6 Oct 2015 23:12:17 +0000 (01:12 +0200)]
Merge branch 'MDL-48438' of

6 years agoMerge branch 'MDL-49823-master' of git://
Eloy Lafuente (stronk7) [Tue, 6 Oct 2015 23:08:52 +0000 (01:08 +0200)]
Merge branch 'MDL-49823-master' of git://

6 years agoAutomatically generated installer lang files
AMOS bot [Tue, 6 Oct 2015 16:04:00 +0000 (00:04 +0800)]
Automatically generated installer lang files

6 years agoMDL-50526 mod_assign: Highlight error message when user has no group
Andrew Hancox [Wed, 1 Jul 2015 15:32:12 +0000 (16:32 +0100)]
MDL-50526 mod_assign: Highlight error message when user has no group

If I set the "Require group to make submission" setting in an assignment
activity to yes, students who are not in any group are prevented from submitting
their assignment and are presented a warning instead that they should contact
their teacher. This message is now presented in an alert box.

6 years agoMDL-50524 assign: improve method visibility and upgrade.txt
Dan Poltawski [Tue, 6 Oct 2015 15:14:43 +0000 (16:14 +0100)]
MDL-50524 assign: improve method visibility and upgrade.txt

6 years agoMerge branch 'MDL-50524' of
Dan Poltawski [Tue, 6 Oct 2015 15:06:41 +0000 (16:06 +0100)]
Merge branch 'MDL-50524' of

6 years agoMerge branch 'MDL-51564-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 13:36:51 +0000 (14:36 +0100)]
Merge branch 'MDL-51564-master' of git://

6 years agoMerge branch 'MDL-51529-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 13:30:18 +0000 (14:30 +0100)]
Merge branch 'MDL-51529-master' of git://

6 years agoMerge branch 'MDL-51250_master-empty-return-fix' of git://
Dan Poltawski [Tue, 6 Oct 2015 13:14:27 +0000 (14:14 +0100)]
Merge branch 'MDL-51250_master-empty-return-fix' of git://

6 years agoMDL-51250 course: No function returns in empty()
David Monllao [Tue, 6 Oct 2015 03:39:39 +0000 (11:39 +0800)]
MDL-51250 course: No function returns in empty()

6 years agoMerge branch 'MDL-51530-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 13:02:45 +0000 (14:02 +0100)]
Merge branch 'MDL-51530-master' of git://

6 years agoMerge branch 'MDL-51532-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 12:42:13 +0000 (13:42 +0100)]
Merge branch 'MDL-51532-master' of git://

6 years agoMerge branch 'MDL-51676-master-ltiservice_memberships' of git://
Dan Poltawski [Tue, 6 Oct 2015 12:39:26 +0000 (13:39 +0100)]
Merge branch 'MDL-51676-master-ltiservice_memberships' of git://

6 years agoMerge branch 'MDL-51533-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 12:38:27 +0000 (13:38 +0100)]
Merge branch 'MDL-51533-master' of git://

6 years agoMerge branch 'MDL-51534-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 11:22:57 +0000 (12:22 +0100)]
Merge branch 'MDL-51534-master' of git://

6 years agoMerge branch 'MDL-51535-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 11:14:02 +0000 (12:14 +0100)]
Merge branch 'MDL-51535-master' of git://

6 years agoMerge branch 'MDL-51538-master' of git://
Dan Poltawski [Tue, 6 Oct 2015 10:53:00 +0000 (11:53 +0100)]
Merge branch 'MDL-51538-master' of git://