Index: openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl,v
diff -u -r1.12 -r1.13
--- openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl	3 Dec 2008 12:36:42 -0000	1.12
+++ openacs-4/packages/lors/tcl/lors-imsmd-procs.tcl	2 Nov 2010 11:05:33 -0000	1.13
@@ -116,8 +116,9 @@
         {dir}
     } {
         Gets the Node where LOM is and its prefix (if any)
-        returns a list with two elements:
-        \{LOM_Node\} \{prefix\}
+        returns a list with three elements:
+        { type LOM prefix }
+        where type can be "NODE" or "XML" to describe the type of content for the "LOM" element
         or if didn't find any, returns 0
 
         @param tree The Node.
@@ -126,6 +127,7 @@
 
     } {
         if { ![$tree hasChildNodes] == 0 } {
+            set type "NODE"
             if { ![empty_string_p [$tree child all lom]] } {
                 set var_lom "lom"
                 set prefix ""
@@ -149,16 +151,19 @@
                 set lom [$tree child all $var_lom]
 
             } elseif { ![empty_string_p [$tree child all adlcp:location]] } {
-                set doc [dom parse [::tDOM::xmlReadFile $dir/[ns_urldecode \
-                    [[$tree child all adlcp:location] text]]]]
-                set lom [$doc documentElement]
-                set prefix [$lom prefix]
+                set type "XML"
+                set filename [ns_urldecode \
+                                  [[$tree child all adlcp:location] text]]
+                set lom [::tDOM::xmlReadFile $dir/$filename]
+                set doc [dom parse $lom]
+                set prefix [[$doc documentElement] prefix]
+                $doc delete
 
             } else {
                 set lom 0
                 set prefix 0
             }
-            return [list $lom $prefix]
+            return [list $type $lom $prefix]
         } else {
             return 0
         }
@@ -938,7 +943,7 @@
 
     ad_proc -public mdRelation {
         {-node:required}
-        {-prefix {}}
+        {-prefix ""}
     } {
         Relation Metadata extractor
         returns a list with the attributes and elements
@@ -971,11 +976,9 @@
                 #printx "Resource ([llength $resource]) " $resource
                 foreach res $resource {
                     # gets resource description
-                    set aa "$aa {[lors::imsmd::xmlExtractor description
-                            $res $prefix 1]}"
+                    set aa "$aa {[lors::imsmd::xmlExtractor description $res $prefix 1]}"
                     # gets resource catalogentry
-                    set aa "$aa {[lors::imsmd::xmlExtractor catalogentry
-                            $res $prefix 3]}"
+                    set aa "$aa {[lors::imsmd::xmlExtractor catalogentry $res $prefix 3]}"
                 }
                 lappend retlist $aa
             }
@@ -1195,7 +1198,7 @@
 
     ad_proc -public addLOM {
         {-lom:required}
-        {-prefix}
+        {-prefix ""}
         {-acs_object:required}
         {-dir {}}
     } {
@@ -1839,29 +1842,40 @@
         set p_ims_md_id $acs_object
         set mdnode $node
         set path_to_file $dir
-        #[lors::imsmd::getMDNode $manifest]
+        # [lors::imsmd::getMDNode $manifest]
 
-        set p_schema [lindex [lindex [lors::imsmd::getMDSchema $mdnode] 0] 0]
-        set p_schemaversion [lindex [lors::imsmd::getMDSchema $mdnode] 1]
+        set schema_results [lors::imsmd::getMDSchema $mdnode]
+        set p_schema [lindex [lindex $schema_results 0] 0]
+        set p_schemaversion [lindex $schema_results 1]
 
-        set lom [lindex [lors::imsmd::getLOM $mdnode $path_to_file] 0]
-        set prefix [lindex [lors::imsmd::getLOM $mdnode $path_to_file] 1]
+        set lom_results [lors::imsmd::getLOM $mdnode $path_to_file]
 
-
         # inserts into db
         # Checks if there's a LOM record
-        if {$lom != 0} {
+        if { $lom_results ne 0 } {
+            
+            set type [lindex $lom_results 0]
+            set prefix [lindex $lom_results 2]
+            if { $type eq "XML" } {
+                set lom_doc [dom parse [lindex $lom_results 1]]
+                set lom [$lom_doc documentElement]
+            } else {
+                set lom [lindex $lom_results 1]
+            }
+
             # Adds new MD record to ims_md
             lors::imsmd::addMDSchemaVersion \
                 -acs_object $p_ims_md_id \
                 -schema $p_schema \
                 -schemaversion $p_schemaversion
 
-            lors::imsmd::addLOM \
-                -lom $lom \
-                -prefix $prefix \
-                -acs_object $p_ims_md_id \
-                -dir $path_to_file
+            if { $lom ne "0" } {
+                lors::imsmd::addLOM \
+                    -lom $lom \
+                    -prefix $prefix \
+                    -acs_object $p_ims_md_id \
+                    -dir $path_to_file
+            }
         }
         return 1
     }