diff --git a/admin/tool/dataprivacy/classes/task/delete_expired_requests.php b/admin/tool/dataprivacy/classes/task/delete_expired_requests.php new file mode 100644 index 0000000000000..1ed3ac8d172d2 --- /dev/null +++ b/admin/tool/dataprivacy/classes/task/delete_expired_requests.php @@ -0,0 +1,67 @@ +. + +/** + * Scheduled task to delete files and update statuses of expired data requests. + * + * @package tool_dataprivacy + * @copyright 2018 Michael Hawkins + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace tool_dataprivacy\task; + +use coding_exception; +use core\task\scheduled_task; +use tool_dataprivacy\api; + +defined('MOODLE_INTERNAL') || die(); + +require_once($CFG->dirroot . '/' . $CFG->admin . '/tool/dataprivacy/lib.php'); + +/** + * Scheduled task to delete files and update request statuses once they expire. + * + * @package tool_dataprivacy + * @copyright 2018 Michael Hawkins + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class delete_expired_requests extends scheduled_task { + + /** + * Returns the task name. + * + * @return string + */ + public function get_name() { + return get_string('deleteexpireddatarequeststask', 'tool_dataprivacy'); + } + + /** + * Run the task to delete expired data request files and update request statuses. + * + */ + public function execute() { + $expiredrequests = \tool_dataprivacy\data_request::get_expired_requests(); + $deletecount = count($expiredrequests); + + if ($deletecount > 0) { + \tool_dataprivacy\data_request::expire($expiredrequests); + + mtrace($deletecount . ' expired completed data requests have been deleted'); + } + } +} diff --git a/admin/tool/dataprivacy/classes/task/process_data_request_task.php b/admin/tool/dataprivacy/classes/task/process_data_request_task.php index be0c0608edd80..c44b661d97f45 100644 --- a/admin/tool/dataprivacy/classes/task/process_data_request_task.php +++ b/admin/tool/dataprivacy/classes/task/process_data_request_task.php @@ -106,7 +106,7 @@ public function execute() { $filerecord->author = fullname($foruser); // Save somewhere. $thing = $fs->create_file_from_pathname($filerecord, $exportedcontent); - + $completestatus = api::DATAREQUEST_STATUS_DOWNLOAD_READY; } else if ($request->type == api::DATAREQUEST_TYPE_DELETE) { // Get the collection of approved_contextlist objects needed for core_privacy data deletion. $approvedclcollection = api::get_approved_contextlist_collection_for_request($requestpersistent); diff --git a/admin/tool/dataprivacy/db/tasks.php b/admin/tool/dataprivacy/db/tasks.php index 3a4915b54199e..5ee3a19aa17db 100644 --- a/admin/tool/dataprivacy/db/tasks.php +++ b/admin/tool/dataprivacy/db/tasks.php @@ -42,5 +42,13 @@ 'day' => '*', 'dayofweek' => '*', 'month' => '*' + ), array( + 'classname' => 'tool_dataprivacy\task\delete_expired_requests', + 'blocking' => 0, + 'minute' => 'R', + 'hour' => 'R', + 'day' => '*', + 'dayofweek' => '*', + 'month' => '*' ), ); diff --git a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php index e5810c488ed7d..a50a2710d4173 100644 --- a/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php +++ b/admin/tool/dataprivacy/lang/en/tool_dataprivacy.php @@ -80,6 +80,7 @@ $string['deletecategory'] = 'Delete "{$a}" category'; $string['deletecategorytext'] = 'Are you sure you want to delete "{$a}" category?'; $string['deleteexpiredcontextstask'] = 'Delete expired contexts'; +$string['deleteexpireddatarequeststask'] = 'Delete files from completed data requests that have expired'; $string['deletepurpose'] = 'Delete "{$a}" purpose'; $string['deletepurposetext'] = 'Are you sure you want to delete "{$a}" purpose?'; $string['defaultssaved'] = 'Defaults saved';