diff --git a/admin/tool/policy/classes/api.php b/admin/tool/policy/classes/api.php
index 4d0d917982d..6c257b8f009 100644
--- a/admin/tool/policy/classes/api.php
+++ b/admin/tool/policy/classes/api.php
@@ -14,15 +14,6 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-/**
- * Provides {@link tool_policy\output\renderer} class.
- *
- * @package tool_policy
- * @category output
- * @copyright 2018 David Mudrák
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
namespace tool_policy;
use coding_exception;
@@ -33,13 +24,12 @@ use core\session\manager;
use stdClass;
use tool_policy\event\acceptance_created;
use tool_policy\event\acceptance_updated;
-use user_picture;
-
-defined('MOODLE_INTERNAL') || die();
/**
* Provides the API of the policies plugin.
*
+ * @package tool_policy
+ * @category output
* @copyright 2018 David Mudrak
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
@@ -1038,9 +1028,12 @@ class api {
// MDL-80973: At this point, the policyagreed value in DB could be 0 but $user->policyagreed could be 1 (as it was copied from $USER).
// So we need to ensure that the value in DB is set true if all policies were responded.
- if ($user->policyagreed != $allresponded || $allresponded) {
+ $userpolicyagreed = (bool) ($user->policyagreed ?? false);
+ if ($userpolicyagreed !== $allresponded || $allresponded) {
$user->policyagreed = $allresponded;
- $DB->set_field('user', 'policyagreed', $allresponded, ['id' => $user->id]);
+ if (!isguestuser($user)) {
+ $DB->set_field('user', 'policyagreed', $user->policyagreed, ['id' => $user->id]);
+ }
}
}