From d6c09ba2f3df45d32b1b0cf84233a0615aefb7a2 Mon Sep 17 00:00:00 2001 From: Mihail Geshoski Date: Mon, 15 Jul 2019 10:50:34 +0800 Subject: [PATCH 1/2] MDL-66136 assignfeedback_comments: Extend testcase --- mod/assign/submission/onlinetext/tests/locallib_test.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mod/assign/submission/onlinetext/tests/locallib_test.php b/mod/assign/submission/onlinetext/tests/locallib_test.php index 2448c39318a..19af03217a8 100644 --- a/mod/assign/submission/onlinetext/tests/locallib_test.php +++ b/mod/assign/submission/onlinetext/tests/locallib_test.php @@ -103,7 +103,10 @@ class assignsubmission_onlinetext_locallib_testcase extends advanced_testcase { 'Empty submission null' => [null, true], 'Value 0' => [0, false], 'String 0' => ['0', false], - 'Text' => ['Ai! laurië lantar lassi súrinen, yéni únótimë ve rámar aldaron!', false] + 'Text' => ['Ai! laurië lantar lassi súrinen, yéni únótimë ve rámar aldaron!', false], + 'Image' => ['', false], + 'Video' => ['', false], + 'Audio' => ['', false], ]; } } From d59b0eefacce5e51e610324019ae2c3e1e3a8e6c Mon Sep 17 00:00:00 2001 From: Mihail Geshoski Date: Mon, 15 Jul 2019 11:51:00 +0800 Subject: [PATCH 2/2] MDL-66136 assign: Verify presence of resources in online text submission --- mod/assign/submission/onlinetext/locallib.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mod/assign/submission/onlinetext/locallib.php b/mod/assign/submission/onlinetext/locallib.php index dc381ef537b..7cd160504b0 100644 --- a/mod/assign/submission/onlinetext/locallib.php +++ b/mod/assign/submission/onlinetext/locallib.php @@ -580,12 +580,17 @@ class assign_submission_onlinetext extends assign_submission_plugin { public function is_empty(stdClass $submission) { $onlinetextsubmission = $this->get_onlinetext_submission($submission->id); $wordcount = 0; + $hasinsertedresources = false; if (isset($onlinetextsubmission->onlinetext)) { $wordcount = count_words(trim($onlinetextsubmission->onlinetext)); + // Check if the online text submission contains video, audio or image elements + // that can be ignored and stripped by count_words(). + $hasinsertedresources = preg_match('/<\s*((video|audio)[^>]*>(.*?)<\s*\/\s*(video|audio)>)|(img[^>]*>(.*?))/', + trim($onlinetextsubmission->onlinetext)); } - return $wordcount == 0; + return $wordcount == 0 && !$hasinsertedresources; } /** @@ -602,12 +607,17 @@ class assign_submission_onlinetext extends assign_submission_plugin { return true; } $wordcount = 0; + $hasinsertedresources = false; if (isset($data->onlinetext_editor['text'])) { $wordcount = count_words(trim((string)$data->onlinetext_editor['text'])); + // Check if the online text submission contains video, audio or image elements + // that can be ignored and stripped by count_words(). + $hasinsertedresources = preg_match('/<\s*((video|audio)[^>]*>(.*?)<\s*\/\s*(video|audio)>)|(img[^>]*>(.*?))/', + trim((string)$data->onlinetext_editor['text'])); } - return $wordcount == 0; + return $wordcount == 0 && !$hasinsertedresources; } /**