MDL-61477 admin: Allow plugins to act as alternate policy handlers
commit0bdc57856784b5dc46da6d295d15d69008fd703e
authorDavid Mudrák <david@moodle.com>
Wed, 24 Jan 2018 22:19:51 +0000 (24 23:19 +0100)
committerMarina Glancy <marina@moodle.com>
Thu, 15 Mar 2018 01:31:41 +0000 (15 09:31 +0800)
treeee1beec4a659ea5d2729b0f0d38e301f36d91bd7
parenta2fc9a47725225969198820efa259426456791f1
MDL-61477 admin: Allow plugins to act as alternate policy handlers

The patch introduces a new site setting 'sitepolicyhandler' that can be
either empty or contain a plugin component name. If it is empty, the
site policy feature keeps working as before and the core keeps the
control over it.

If a plugin is specified, it is expected to implement the callback
'site_policy_handler' in its lib.php file. The callback should return a
URL to a script where the user can accept the site policies. The plugin
itself is responsible for setting the 'policyagreed' flag in the users
table. The callback may return an empty value, in which case the user
can continue using the site without being redirected.

The patch adds support for a new pre-config flag NO_SITEPOLICY_CHECK.
This constant should be defined and set to true if we should not check
the user's policyagreed status during the require_login().

This is for pages where the user actually accepts the site policies and
helps to avoid the redirect loop.
admin/settings/security.php
lang/en/admin.php
lib/moodlelib.php
lib/upgrade.txt
user/policy.php