Commit Graph

1621 Commits

Author SHA1 Message Date
David Mudrák
2f29cf6e63 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.
2015-10-08 23:32:03 +02:00
David Mudrák
f2d8ed45e3 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.

AMOS BEGIN
 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]
AMOS END
2015-10-08 23:32:03 +02:00
David Mudrák
0e442ee776 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.
2015-10-08 23:32:03 +02:00
David Mudrák
5a92cd0b8d 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
upgrade.
2015-10-08 23:32:03 +02:00
David Mudrák
48900324b3 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 https://download.moodle.org/api/ (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.
2015-10-08 23:32:03 +02:00
David Mudrák
7eb87eff65 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.
2015-10-08 23:32:02 +02:00
David Mudrák
c44bbe35bf 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().
2015-10-08 23:32:02 +02:00
David Mudrák
2d488c8f01 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.
2015-10-08 23:32:02 +02:00
David Mudrák
361feecdcf 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.
2015-10-08 23:32:02 +02:00
David Mudrák
30d8bc5f66 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.
2015-10-08 23:32:02 +02:00
David Mudrák
e9d3c21228 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.
2015-10-08 23:32:02 +02:00
Michael Aherne
1dc462baa5 MDL-51707 cron: Prevent finished tasks being returned 2015-10-08 14:43:56 +01:00
David Monllao
02c85f9934 Merge branch 'MDL-51623_parent_event' of git://github.com/moodlerooms/moodle 2015-10-08 15:53:00 +08:00
Eloy Lafuente (stronk7)
b8e0dcbb7e Merge branch 'MDL-48438' of https://github.com/andrewhancox/moodle 2015-10-07 01:12:17 +02:00
David Mudrák
3562c426b5 MDL-51676 mod_lti: Mark LTI Memberships service as a standard plugin 2015-10-06 14:13:39 +02:00
Mark Nielsen
2df73956b8 MDL-51623 core_event: Allow observation of parent events 2015-10-02 08:45:31 -07:00
Andrew Hancox
81295fc40e MDL-48438 core: Add fullname where known to failed login notifications. 2015-10-01 12:44:11 +01:00
Eloy Lafuente (stronk7)
c75b891ba7 Merge branch 'MDL-49821-master-master' of git://github.com/jleyva/moodle 2015-10-01 01:26:58 +02:00
Dan Poltawski
b33662e4d7 Merge branch 'wip-MDL-44640-master' of https://github.com/marinaglancy/moodle 2015-09-29 10:13:19 +01:00
Marina Glancy
080c7d471d MDL-44640 enrol: trigger events on instances actions 2015-09-27 17:52:20 +08:00
Juan Leyva
3961ebfbc0 MDL-49821 core_user: New function for checking if a user is active 2015-09-25 11:33:13 +02:00
Mark Nelson
b5e617e245 MDL-51312 core: added message_deleted event 2015-09-24 15:13:42 -07:00
Eloy Lafuente (stronk7)
201a26bbaa Merge branch 'MDL-47494' of git://github.com/timhunt/moodle
Note: Fixed some minor grunt and EOF whitespace issues while merging.
2015-09-22 18:38:27 +02:00
Cameron Ball
691a2e1a68 MDL-50790 inbound: Stop incorrect amount of lines getting removed.
Too many lines were being removed for GMail senders. The function was
also removed because it is no longer used, and guessing the client
and cutting accordingly is a poor approach and will probably lead
to issues similar to this one.
2015-09-21 14:25:21 +08:00
Tim Hunt
6e28e15092 MDL-47494 questions: update plugin_manager with the new qtypes 2015-09-18 07:51:42 +01:00
Eloy Lafuente (stronk7)
4deecee44f Merge branch 'MDL-50892-master' of git://github.com/marinaglancy/moodle 2015-09-15 23:12:22 +02:00
David Monllao
3bc0824e46 Merge branch 'MDL-51213-master' of git://github.com/damyon/moodle 2015-09-15 17:28:34 +08:00
Damyon Wiese
ba224fb42c MDL-50783 Ajax: Configure how to call a webservice through db/service.php
Now the db/service.php array can contain these extra keys to provide information
on how a webservice may be called:

    'ajax' => true (Default is false)

Replaces the xx_is_allowed_from_ajax callback.

    'loginrequired' => false (Default is true)

Means that this webservice can be called through lib/ajax/service-nosession.php
which sets NO_MOODLE_COOKIES to true (faster). This is only safe for webservices returning
static public data (e.g. get_string).
2015-09-14 15:10:21 +08:00
Marina Glancy
278b8d18a2 MDL-50892 mod: allow activity to have name '0' 2015-09-11 10:51:52 +08:00
Damyon Wiese
3676873566 MDL-51213 webservice: Fix wrong use of external_format_text
Was passing cm->id instead of context->id.
2015-09-10 12:13:02 +08:00
Andrew Nicols
ebdfde7664 Merge branch 'MDL-50287-master' of git://github.com/danpoltawski/moodle 2015-09-08 08:18:03 +08:00
David Monllao
25d9ae9a93 Merge branch 'MDL-50891-master' of git://github.com/andrewnicols/moodle
Conflicts:
	lib/deprecatedlib.php
2015-09-02 08:54:55 +08:00
Eloy Lafuente (stronk7)
17d2a336d1 MDL-43896 admin: Avoid empty(expression), not working under PHP 5.4 2015-09-02 01:20:09 +02:00
David Mudrák
98ea697349 MDL-48494 admin: Require plugins declare their component in version.php 2015-08-31 10:01:34 +02:00
David Mudrák
01889f019d MDL-43896 admin: Drop support for the $module syntax in version.php 2015-08-31 09:57:50 +02:00
Andrew Nicols
34c6ec1869 MDL-50891 useragent: Move web crawler checks to useragent class 2015-08-28 14:31:51 +08:00
Dan Poltawski
160ccd3d09 MDL-50287 completion: Rename tasks to remove the word 'cron' 2015-08-27 14:58:04 +01:00
Dan Poltawski
0628925bf1 MDL-50287 completion: avoid introducing uncessary functions
Also fix copyright
2015-08-27 14:57:56 +01:00
Josh Willcock
51e488eaf3 MDL-50287 completion: Separated slow task out from cron
The mark started function for the completions scheduled task can be very
slow and causes performance issues when running. By splitting this into
it's own task it can be managed independantly from the other parts which
update regularly.
2015-08-27 14:40:04 +01:00
Andrew Nicols
ac41247254 Merge branch 'MDL-50532-master' of git://github.com/FMCorz/moodle 2015-08-04 12:09:30 +08:00
Frederic Massart
b2f6f88dc2 MDL-50532 tasks: Delete obsolete tasks during upgrade 2015-07-29 11:25:16 +08:00
Simey Lameze
dcee0b9447 MDL-49360 core_lib: add new method get_local_referer()
This commit also replace all usages of $_SERVER['HTTP_REFERER'] and get_referer().
2015-07-27 11:11:24 +08:00
Juan Leyva
2291883052 MDL-50561 messages: Add missing __isset magic method 2015-06-19 09:44:50 +02:00
Tony Levi
303936aa57 MDL-50453 core: Replace reserved word usage in progress\null (PHP7) 2015-06-15 12:21:27 +09:30
Eloy Lafuente (stronk7)
28ddf1e94d Merge branch 'MDL-47480-master' of git://github.com/ankitagarwal/moodle 2015-06-10 00:32:10 +02:00
Ankit Agarwal
c44b4213e6 MDL-47480 tasks: Define order for getting tasks 2015-06-02 08:08:04 +05:30
David Monllao
fb00b083ce Merge branch 'MDL-46550-master' of git://github.com/ankitagarwal/moodle 2015-05-26 12:28:59 +08:00
Damyon Wiese
4c7dfac372 MDL-50254 Mustache: Missing alias for namespaced class in mustache
Thanks to Francesco Bigiarini for the report and suggested fix.
2015-05-18 15:11:12 +08:00
Ankit Agarwal
fa31be3b7f MDL-46550 logs: Fix incorrect url
Thanks to Nadav Kavalerchik for the suggestion on patch
2015-05-18 11:49:55 +05:30
Andrew Nicols
cba92dc805 MDL-50153 core: Use directory_separator when autoloading psr0 classes 2015-05-08 12:14:48 +08:00