MDL-68992 Privacy: Update default minimal digital age of consent
authorNicolas Martignoni <nicolas@martignoni.net>
Fri, 12 Jun 2020 15:20:18 +0000 (17:20 +0200)
committerNicolas Martignoni <nicolas@martignoni.net>
Fri, 19 Jun 2020 16:00:33 +0000 (18:00 +0200)
Updating default minimal digital age of consent according to current legislation,
that was updated for several countries since 2018.

admin/settings/users.php
lib/db/upgrade.php
version.php

index 0b7c4a4..c54a169 100644 (file)
@@ -261,10 +261,28 @@ if ($hassiteconfig) {
     $temp->add($setting);
 
     // See {@link https://gdpr-info.eu/art-8-gdpr/}.
+    // See {@link https://www.betterinternetforkids.eu/web/portal/practice/awareness/detail?articleId=3017751}.
     $ageofdigitalconsentmap = implode(PHP_EOL, [
         '*, 16',
         'AT, 14',
+        'BE, 13',
+        'BG, 14',
+        'CY, 14',
+        'CZ, 15',
+        'DK, 13',
+        'EE, 13',
         'ES, 14',
+        'FI, 13',
+        'FR, 15',
+        'GB, 13',
+        'GR, 15',
+        'IT, 14',
+        'LT, 14',
+        'LV, 13',
+        'MT, 13',
+        'NO, 13',
+        'PT, 13',
+        'SE, 13',
         'US, 13'
     ]);
     $setting = new admin_setting_agedigitalconsentmap('agedigitalconsentmap',
index 53fa76a..dcc2f48 100644 (file)
@@ -2443,6 +2443,48 @@ function xmldb_main_upgrade($oldversion) {
 
     // Automatically generated Moodle v3.9.0 release upgrade line.
     // Put any upgrade step following this.
+    if ($oldversion < 2020061500.02) {
+        // Update default digital age consent map according to the current legislation on each country.
+
+        // The default age of digital consent map for 38 and below.
+        $oldageofdigitalconsentmap = implode(PHP_EOL, [
+            '*, 16',
+            'AT, 14',
+            'ES, 14',
+            'US, 13'
+        ]);
+
+        // Check if the current age of digital consent map matches the old one.
+        if (get_config('moodle', 'agedigitalconsentmap') === $oldageofdigitalconsentmap) {
+            // If the site is still using the old defaults, upgrade to the new default.
+            $ageofdigitalconsentmap = implode(PHP_EOL, [
+                '*, 16',
+                'AT, 14',
+                'BE, 13',
+                'BG, 14',
+                'CY, 14',
+                'CZ, 15',
+                'DK, 13',
+                'EE, 13',
+                'ES, 14',
+                'FI, 13',
+                'FR, 15',
+                'GB, 13',
+                'GR, 15',
+                'IT, 14',
+                'LT, 14',
+                'LV, 13',
+                'MT, 13',
+                'NO, 13',
+                'PT, 13',
+                'SE, 13',
+                'US, 13'
+            ]);
+            set_config('agedigitalconsentmap', $ageofdigitalconsentmap);
+        }
+
+        upgrade_main_savepoint(true, 2020061500.02);
+    }
 
     return true;
 }
index 54a463e..d0e7604 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2020061500.01;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2020061500.02;              // YYYYMMDD      = weekly release date of this DEV branch.
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.
 $release  = '4.0dev (Build: 20200618)'; // Human-friendly version name