@@ -599,12 +599,17 @@ public function delete_instance() {
599599 public function is_empty (stdClass $ submission ) {
600600 $ onlinetextsubmission = $ this ->get_onlinetext_submission ($ submission ->id );
601601 $ wordcount = 0 ;
602+ $ hasinsertedresources = false ;
602603
603604 if (isset ($ onlinetextsubmission ->onlinetext )) {
604605 $ wordcount = count_words (trim ($ onlinetextsubmission ->onlinetext ));
606+ // Check if the online text submission contains video, audio or image elements
607+ // that can be ignored and stripped by count_words().
608+ $ hasinsertedresources = preg_match ('/<\s*((video|audio)[^>]*>(.*?)<\s*\/\s*(video|audio)>)|(img[^>]*>(.*?))/ ' ,
609+ trim ($ onlinetextsubmission ->onlinetext ));
605610 }
606611
607- return $ wordcount == 0 ;
612+ return $ wordcount == 0 && ! $ hasinsertedresources ;
608613 }
609614
610615 /**
@@ -621,12 +626,17 @@ public function submission_is_empty(stdClass $data) {
621626 return true ;
622627 }
623628 $ wordcount = 0 ;
629+ $ hasinsertedresources = false ;
624630
625631 if (isset ($ data ->onlinetext_editor ['text ' ])) {
626632 $ wordcount = count_words (trim ((string )$ data ->onlinetext_editor ['text ' ]));
633+ // Check if the online text submission contains video, audio or image elements
634+ // that can be ignored and stripped by count_words().
635+ $ hasinsertedresources = preg_match ('/<\s*((video|audio)[^>]*>(.*?)<\s*\/\s*(video|audio)>)|(img[^>]*>(.*?))/ ' ,
636+ trim ((string )$ data ->onlinetext_editor ['text ' ]));
627637 }
628638
629- return $ wordcount == 0 ;
639+ return $ wordcount == 0 && ! $ hasinsertedresources ;
630640 }
631641
632642 /**
0 commit comments