Forum .LRN Q&A: Re: SCORM dev update

18: Re: SCORM dev update (response to 1)
Posted by Dario Roig on
Hi Ernie!

In " / I can upload a course IMS with "/ random/course-add"
where I can get the package "random?"
Thank you

Dario (U.V. Spain)

20: Re: SCORM dev update (response to 18)
Posted by Ernie Ghiglione on
Hi Dario,

<blockquote> where I can get the package "random?"

Random package is just a random package I temporarily made to have a UI to the LORS (Learning Object Repository Service) libraries. It is not a formal package at all, but only used as an example on how to use the LORS libraries. The course-add pages do the following:

1.- Gives you a form where you upload a file.
2.- Once the course file (which needs to be a IMS CP or SCORM compliant package), it unzips it
3.- Checks for IMS CP validation (imsmanifest.xml file not corrupted or duplicated)
4.- Opens the imsmanifest file and displays basic info.
5.- If the user accepts, then it adds all folders and files to the CR (as learning objects).
6.- Once the files have their respective cr_item_ids then it adds the course the course structure and metadata (given by the imsmanifest.xml) to the database.
7.- Redirects you to file-storage so you can browse thru the files you just uploaded.

As I mentioned before, take into account that this is by now means finalized or in a usable stage. However, LORS libraries (IMS CP & MD) are good to go, so you can use them to open IMS CP packages, deal with course structure and learning object metadata and add it to the CR as learning objects -as it is the case in this random package- or as file-storage objects.... your choice.

In addition, and thanks to Matthias Melcher's encoragement there's an incipient metadata browser (and future online MD editor) -so you can see the metadata for the objects you added. Example:

As a matter of fact, I'm using the LORS libraries to import Blackboard/WebCT courses exported into IMS CP and import them into .LRN.

You can download the random package here if you want.


21: Re: SCORM dev update (response to 20)
Posted by Jose Agustin Lopez Bueno on
Hello, Ernie!

First of all, thanks for your time!

Testing your Random package, it works well
but when I try to view the files (extracted of
your example of course) I get the next error.

Any pointer?

Best regards,

Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")

ERROR:  -20000: Invalid item ID: <NULL>
CONTEXT:  PL/pgSQL function "content_template__get_path" line 7 at return


          content_item__get_live_revision(content_item__get_template('3282525', 'public')) as template_id,
          content_template__get_path(content_item__get_template('3282525', 'public'),'-200') as template_url

    while executing
"ns_pg_bind 0or1row nsdb0 {

          content_item__get_live_revision(content_item__get_template(:item_id, :context)) as template_id,

22: Re: SCORM dev update (response to 21)
Posted by Ernie Ghiglione on

The reason that's happening is because the uploaded files aren't file-storage objects but learning objects (acs_object subtypes). I was using file-storage UI  to browsing the content repository items I just added.

In a more design note, learning objects are stored in the file-system instead of the database. Since learning objects could easily be a 80MB video file, if it is stored on the database and many students on a class want to access it simultaneously, pulling such file out of the DB would be rather intense and hit performance pretty hard. Therefore, LORS doesn't provide the option to store them in the DB.

What you can do is to change the code so instead of adding the files as learning object type, to be file-storage types. Have a look at lors::cr::add_folder and lors::cr::add_files (modify/change lors__new_lo / lors__new_lo_version for the file-storage equivalent).

Maybe it would be a good idea to have the option to create folders and files within the file-storage or any other object subtypes... Hmmm...