MDL-72358 contenttype_h5p: Improve error handling
authorSara Arjona <sara@moodle.com>
Tue, 17 Aug 2021 16:00:11 +0000 (18:00 +0200)
committerSara Arjona <sara@moodle.com>
Fri, 27 Aug 2021 08:39:39 +0000 (10:39 +0200)
In MoodleCloud it was raised that, in some cases, loading the content
bank, from a course page, gives an "Invalid H5P content URL", not
offering any way to delete the offending content or create new one.
An extra-check has been added to the "is_view_allowed" method to
guarantee the H5P API is called only if the H5P content has a file.

contentbank/contenttype/h5p/classes/content.php

index ea41ffb..e573a70 100644 (file)
@@ -42,6 +42,12 @@ class content extends \core_contentbank\content {
     public function is_view_allowed(): bool {
         // Force H5P content to be deployed.
         $fileurl = $this->get_file_url();
+        if (empty($fileurl)) {
+            // This should never happen because H5P contents should have always a file. However, this extra-checked has been added
+            // to avoid the contentbank stop working if, for any unkonwn/weird reason, the file doesn't exist.
+            return false;
+        }
+
         // Skip capability check when creating the H5P content (because it has been created by trusted users).
         $h5pplayer = new \core_h5p\player($fileurl, new \stdClass(), true, '', true);
         // Flush error messages.