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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body