From b6500c619aba96bfc830f4ef7416481d7aa6bfd3 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Mon, 27 Feb 2017 10:45:52 +0530 Subject: [PATCH] MDL-55859 assign_editpdf: cleanup htmlfile in case of errors --- .../editpdf/classes/document_services.php | 8 +++++++- mod/assign/feedback/editpdf/db/upgrade.php | 16 ++++++++++++++++ mod/assign/feedback/editpdf/version.php | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/mod/assign/feedback/editpdf/classes/document_services.php b/mod/assign/feedback/editpdf/classes/document_services.php index 02f0ec5261c..2883f730749 100644 --- a/mod/assign/feedback/editpdf/classes/document_services.php +++ b/mod/assign/feedback/editpdf/classes/document_services.php @@ -200,7 +200,13 @@ EOD; $record->filename = $plugin->get_type() . '-' . $filename; $htmlfile = $fs->create_file_from_string($record, $file); - $convertedfile = $fs->get_converted_document($htmlfile, 'pdf'); + try { + $convertedfile = $fs->get_converted_document($htmlfile, 'pdf'); + } catch (\Exception $e) { + // Let us delete the file and re-throw the exception. + $htmlfile->delete(); + throw $e; + } $htmlfile->delete(); if ($convertedfile) { $files[$filename] = $convertedfile; diff --git a/mod/assign/feedback/editpdf/db/upgrade.php b/mod/assign/feedback/editpdf/db/upgrade.php index c8bbaee9ec7..3e0143511db 100644 --- a/mod/assign/feedback/editpdf/db/upgrade.php +++ b/mod/assign/feedback/editpdf/db/upgrade.php @@ -68,5 +68,21 @@ function xmldb_assignfeedback_editpdf_upgrade($oldversion) { // Moodle v3.1.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2016052301) { + + // Get orphaned, duplicate files and delete them. + $fs = get_file_storage(); + $sqllike = $DB->sql_like("filename", "?"); + $where = "component='assignfeedback_editpdf' AND filearea = 'importhtml' AND " . $sqllike; + $filerecords = $DB->get_records_select("files", $where, ["onlinetext-%"]); + foreach ($filerecords as $filerecord) { + $file = $fs->get_file_instance($filerecord); + $file->delete(); + } + + // Editpdf savepoint reached. + upgrade_plugin_savepoint(true, 2016052301, 'assignfeedback', 'editpdf'); + } + return true; } diff --git a/mod/assign/feedback/editpdf/version.php b/mod/assign/feedback/editpdf/version.php index 8dfa31c8e8a..0e6ce09dc17 100644 --- a/mod/assign/feedback/editpdf/version.php +++ b/mod/assign/feedback/editpdf/version.php @@ -24,7 +24,7 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2016052300; +$plugin->version = 2016052301; $plugin->requires = 2016051900; $plugin->component = 'assignfeedback_editpdf';