Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * Scheduled task to create delete data request for pre-existing deleted users.
  19   *
  20   * @package    tool_dataprivacy
  21   * @copyright  2018 Mihail Geshoski
  22   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  namespace tool_dataprivacy\task;
  26  
  27  use core\task\scheduled_task;
  28  use tool_dataprivacy\api;
  29  use tool_dataprivacy\data_request;
  30  
  31  defined('MOODLE_INTERNAL') || die();
  32  
  33  require_once($CFG->dirroot . '/' . $CFG->admin . '/tool/dataprivacy/lib.php');
  34  
  35  /**
  36   * Scheduled task to create delete data request for pre-existing deleted users.
  37   *
  38   * @package    tool_dataprivacy
  39   * @copyright  2018 Mihail Geshoski
  40   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  41   */
  42  class delete_existing_deleted_users extends scheduled_task {
  43  
  44      /**
  45       * Returns the task name.
  46       *
  47       * @return string
  48       */
  49      public function get_name() {
  50          return get_string('deleteexistingdeleteduserstask', 'tool_dataprivacy');
  51      }
  52  
  53      /**
  54       * Run the task to delete expired data request files and update request statuses.
  55       *
  56       */
  57      public function execute() {
  58          global $DB;
  59  
  60          // Automatic creation of deletion requests must be enabled.
  61          if (get_config('tool_dataprivacy', 'automaticdeletionrequests')) {
  62              // Select all deleted users that do not have any delete data requests created for them.
  63              $sql = "SELECT DISTINCT(u.id)
  64                    FROM {user} u
  65               LEFT JOIN {tool_dataprivacy_request} r
  66                         ON u.id = r.userid
  67                   WHERE u.deleted = ?
  68                         AND (r.id IS NULL
  69                             OR r.type != ?)";
  70  
  71              $params = [
  72                  1,
  73                  api::DATAREQUEST_TYPE_DELETE
  74              ];
  75  
  76              $deletedusers = $DB->get_records_sql($sql, $params);
  77              $createdrequests = 0;
  78  
  79              foreach ($deletedusers as $user) {
  80                  api::create_data_request($user->id, api::DATAREQUEST_TYPE_DELETE,
  81                      get_string('datarequestcreatedfromscheduledtask', 'tool_dataprivacy'),
  82                      data_request::DATAREQUEST_CREATION_AUTO);
  83                  $createdrequests++;
  84              }
  85  
  86              if ($createdrequests > 0) {
  87                  mtrace($createdrequests . ' delete data request(s) created for existing deleted users');
  88              }
  89          }
  90      }
  91  }