Serious problem with updating the Column content

papi Jo's picture

It seems that the naming scheme of the H5P libraries is currently being changed, as mentioned in this discussion between me and Oliver.

For example, H5P contents created using the H5P Column library 1.16.5 were saved with: [H5P.Column-1.16] inside the packed/zipped H5P content file. But now, starting with H5P Column version 1.16.7, such contents are saved with [H5P.Column-1.16.7] inside the packed/zipped H5P content file. That is to say that now any content created with the most updated Column library are saved with the full 3 library numbers added to the column library name, i.e. majorVersion, minorVersion and patchVersion.

The unfortunate result of this naming scheme change, which seems to have been implemented for the Column library only is that

  1. it is currently impossible to install or update the Column library on Moodle, Wordpress or Drupal platforms;
  2. It is impossible in Moodle to use the integrated H5P activity to  download or update the H5P libraries.

For case #1, when trying to install or update Column, one gets this error message:

Validating h5p package failed.
Library directory name must match machineName or machineName-majorVersion.minorVersion (from library.json). (Directory: H5P.Column-1.16.7 , machineName: H5P.Column, majorVersion: 1, minorVersion: 16)Get help

For case #2, the situation is even worse because, on a new Moodle site, one can only download the first 4 libraries in the list:

Accordion 1.0.33
Arithmetic Quiz 1.1.22
Chart 1.2.22
Collage 0.3.17

before failing to download Column stops all downloading with an error message:

Scheduled task failed: Download available H5P content types from h5p.org (core\task\h5p_get_content_types_task),array_key_exists(): Argument #2 ($array) must be of type array, null given
Backtrace:
* line 277 of \h5p\classes\core.php: call to array_key_exists()

Hoping this is only a "hiccup" in the too early release (?) of Column with the new naming scheme, and things will be fixed ASAP as it's a real blocker for many H5P users.

I am using the WP plugin and I can replicate these issues. Some of our users are also blocked by this. I hope this can be fixed soon.

 
otacke's picture

This is an issue on h5p.org. The patch version number is not supposed to be part of the directory name. Might be that H5P Group is planning to release Column 1.17 shortly anyway, as the minor version was bumped today.

papi Jo's picture

Glad to report that things are back to normal.

BV52's picture

Hi papi Jo,

Thank you for confirming the resolution and thank you for reporting this.

-BV

Problem is inside the library.json > H5PEditor.CoursePresentation-1.25

Missing the line:

{

      "machineName": "H5P.CoursePresentation",

      "majorVersion": 1,

      "minorVersion": 25

    },

And it is not solved yet. We repaired it now on our server and all works well.

regards Bernd

otacke's picture

Sorry, I don't think this is true. I can install Course Presentation 1.25 just fine without it's editor creating a cyclic dependency (which was removed with the update from 1.24 to 1.25), and everything works just fine. Are you sure it's not your database that is in an inconsistent state after manually trying to address the issue that was triggered by the rogue version of Column (1.16.6)?

When we found the problem, we got an error: content used CP 1.25 but it should be 1.24. also for Interactive Video, used 1.26, should be 1.24. Based on this information i checked the H5PEditor.CoursePresentation-1.24 and H5PEditor.CoursePresentation-1.25 and found, that the preload of CoursePresentation was missing in the library.json. First try to solve the problem: i saved H5PEditor.CoursePresentation-1.25, and than i changed the H5PEditor.CoursePresentation-1.25 against a second H5PEditor.CoursePresentation-1.24 (both 1.24 same content), but named H5PEditor.CoursePresentation-1.25. After this, the problem was solved. So for my understanding, the origin of our problem was maybe the H5PEditor.CoursePresentation-1.25. I checked (1.24/1.25) both and found the missing preload. So, I added the missing lines for the preload, put it into the original H5PEditor.CoursePresentation-1.25 and put this into the system. Now, after fixing the cache, all problems are solved. We don't know, from where we got the original problem, but normally no foreign content would be uploaded to our systems. We do not use foreign REUSE-content, and only a few admins have the right, to update the library. Of course, it is not 100% sure, that someone from our admins used foreign content. Due to saved exports-content, we can look back until 19.01.2024, where we found this problem in our external saved REUSE-Data. I'm not sure, if my way to solve the problem was 100% right, but the result is important for us, we have up to 100.000 user/day, and not working content is no way :) Its now also difficult, to define the role of the Column. During the fail we got an update-option, but the update didnt work (next error). Now, at the moment, is no update missing, except two not working updates: crossword/arthmetic quiz/Speak the words(all update didn't work).

As we found, content are not visible if we used Column with CP or/and Interactive Videos.

The Problem is not the Column, it is the library.jason from H5PCoursePresentation - 1.25

This preload-line is missing there, and therefor no CP is loaded:

{

      "machineName": "H5P.CoursePresentation",

      "majorVersion": 1,

      "minorVersion": 25

    },

Maybe happens during copy and paste from some admin from an update.

We fixed it inside our system and everything is worling now as normal.

Best regards Bernd 

MedienLB.com

 

otacke's picture

Please find https://www.olivertacke.de/labs/2024/05/02/a-short-voluntary-h5p-fire-department-story-line/ for a breakdown what happened.

You're "case 1", already having an infected platform. I fear you did not fix the issue. You decided to work around it and rather satisfy the wrong dependencies by providing CP1.24 instead of CP1.25. That is why in your case it seems that the entry is missing in library.json, but it is not. You may run into trouble again in the future.

Best,

Oliver