MDL-65197 editor: handle empty user preference in privacy export.
authorPaul Holden <pholden@greenhead.ac.uk>
Wed, 27 Mar 2019 12:01:42 +0000 (12:01 +0000)
committerPaul Holden <pholden@greenhead.ac.uk>
Wed, 1 May 2019 08:48:06 +0000 (09:48 +0100)
lib/editor/classes/privacy/provider.php
lib/editor/tests/privacy_provider_test.php

index 40c0786..9d807a6 100644 (file)
@@ -62,7 +62,7 @@ class provider implements
      */
     public static function export_user_preferences(int $userid) {
         $preference = get_user_preferences('htmleditor');
-        if (null !== $preference) {
+        if (!empty($preference)) {
             $desc = get_string('privacy:preference:htmleditor', 'core_editor',
                     get_string('pluginname', "editor_{$preference}"));
             writer::export_user_preference('core_editor', 'htmleditor', $preference, $desc);
index d33e007..6d1dcf9 100644 (file)
@@ -36,6 +36,7 @@ defined('MOODLE_INTERNAL') || die();
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class core_editor_privacy_provider_testcase extends \core_privacy\tests\provider_testcase {
+
     /**
      * When no preference exists, there should be no export.
      */
@@ -48,6 +49,21 @@ class core_editor_privacy_provider_testcase extends \core_privacy\tests\provider
         $this->assertFalse(writer::with_context(\context_system::instance())->has_any_data());
     }
 
+    /**
+     * When preference exists but is empty, there should be no export.
+     */
+    public function test_empty_preference() {
+        global $USER;
+
+        $this->resetAfterTest();
+        $this->setAdminUser();
+
+        set_user_preference('htmleditor', '');
+
+        provider::export_user_preferences($USER->id);
+        $this->assertFalse(writer::with_context(\context_system::instance())->has_any_data());
+    }
+
     /**
      * When an editor is set, the name of that editor will be reported.
      */