diff --git a/mod/assign/submission/onlinetext/locallib.php b/mod/assign/submission/onlinetext/locallib.php index 07432756117..cbd200e499d 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; } /**