5 include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Page.php");
6 include_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
33 $this->cont_obj =& $a_cont_obj;
38 $this->inst_id = IL_INST_ID;
47 require_once(
"./Services/Xml/classes/class.ilXmlWriter.php");
48 require_once(
"./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Item.php");
50 $this->version = $ver;
58 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$this->cont_obj->getType().
"_m_".$this->cont_obj->getId();
59 switch ($this->version)
62 $attrs[
"xmlns:imsss"]=
"http://www.imsglobal.org/xsd/imsss";
63 $attrs[
"xmlns:adlseq"]=
"http://www.adlnet.org/xsd/adlseq_v1p3";
64 $attrs[
"xmlns:adlnav"]=
"http://www.adlnet.org/xsd/adlnav_v1p3";
65 $attrs[
"xmlns:xsi"]=
"http://www.w3.org/2001/XMLSchema-instance";
66 $attrs[
"xmlns:adlcp"]=
"http://www.adlnet.org/xsd/adlcp_v1p3";
67 $attrs[
"xmlns"]=
"http://www.imsglobal.org/xsd/imscp_v1p1";
68 $attrs[
"xsi:schemaLocation"]=
"http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd";
69 $attrs[
"version"]=
"2004 ".$revision.
" Edition";
72 $attrs[
"xmlns"]=
"http://www.imsproject.org/xsd/imscp_rootv1p1p2";
73 $attrs[
"xmlns:adlcp"]=
"http://www.adlnet.org/xsd/adlcp_rootv1p2";
74 $attrs[
"xmlns:xsi"]=
"http://www.w3.org/2001/XMLSchema-instance";
75 $attrs[
"xsi:schemaLocation"]=
"http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd";
76 $attrs[
"version"]=
"1.1";
79 $this->writer->xmlStartTag(
"manifest", $attrs);
81 if($this->version==
"2004")
83 $this->writer->xmlStartTag(
"metadata");
84 $this->writer->xmlElement(
"schema",null,
"ADL SCORM");
85 $this->writer->xmlElement(
"schemaversion",null,
"2004 ".$revision.
" Edition");
86 $this->writer->xmlElement(
"adlcp:location",null,
"indexMD.xml");
87 $this->writer->xmlEndTag(
"metadata");
91 if($this->version==
"2004")
92 $attrs[
"xmlns:imscp"] =
"http://www.imsglobal.org/xsd/imscp_v1p1";
93 $attrs[
"default"] =
"il_".IL_INST_ID.
"_".$this->cont_obj->getType().
"_".$this->cont_obj->getId();
94 $this->writer->xmlStartTag(
"organizations", $attrs);
98 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$this->cont_obj->getType().
"_".$this->cont_obj->getId();
99 $attrs[
"structure"] =
"hierarchical";
100 $this->writer->xmlStartTag(
"organization", $attrs);
104 $this->writer->xmlElement(
"title", $attrs, $this->cont_obj->getTitle());
116 include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
126 if($this->version==
"2004") {
128 $this->writer->xmlData($this->writer->xmlFormatData($seq_item->exportAsXML()),
false,
false);
132 $this->writer->xmlEndTag(
"organization");
135 $this->writer->xmlEndTag(
"organizations");
139 $this->writer->xmlStartTag(
"resources", $attrs);
145 $this->writer->xmlEndTag(
"resources");
148 $this->writer->xmlEndTag(
"manifest");
155 $this->writer->_XmlWriter;
163 $this->writer->xmlDumpFile($a_target_dir.
"/imsmanifest.xml",
false);
173 include_once(
"Services/MetaData/classes/class.ilMD2XML.php");
174 require_once(
"./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Item.php");
176 include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
183 foreach($tree->getFilteredSubTree($tree->getRootId(),Array(
'page')) as $obj)
185 if($obj[
'type']==
'')
continue;
187 if($obj[
'type']!=
'sco'&&$last_type==
"sco")
188 $this->writer->xmlEndTag(
"item");
189 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'];
190 if($obj[
'type']==
'sco')
191 $attrs[
"identifierref"] = $attrs[
"identifier"].
"_ref";
192 $this->writer->xmlStartTag(
"item", $attrs);
195 $this->writer->xmlElement(
"title", $attrs, $obj[
'title']);
197 if($this->version==
"2004")
201 $this->writer->xmlData($this->writer->xmlFormatData($seq_item->exportAsXML()),
false,
false);
204 if($obj[
'type']==
'sco') {
205 $this->writer->xmlEndTag(
"item");
207 $last_type=$obj[
'type'];
209 $this->writer->xmlEndTag(
"item");
218 foreach ($tree->getFilteredChilds(Array(
'page'),$a_parent_node) as $obj)
220 if($obj[
'type']==
'')
continue;
222 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'];
223 if($obj[
'type']==
'sco' || $obj[
'type']==
'ass')
225 $attrs[
"identifierref"] = $attrs[
"identifier"].
"_ref";
227 $this->writer->xmlStartTag(
"item", $attrs);
229 $this->writer->xmlElement(
"title", $attrs, $obj[
'title']);
231 if ($tree->getFilteredChilds(Array(
'page'),$obj[
'obj_id']))
236 if($this->version==
"2004")
238 if($obj[
'type']==
'sco' || $obj[
'type']==
'ass')
240 $this->writer->xmlStartTag(
"metadata");
241 $this->writer->xmlElement(
"adlcp:location",null,$obj[
'obj_id'].
"/indexMD.xml");
242 $this->writer->xmlEndTag(
"metadata");
244 require_once(
"./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Item.php");
246 $this->writer->xmlData($this->writer->xmlFormatData($seq_item->exportAsXML()),
false,
false);
248 $this->writer->xmlEndTag(
"item");
258 include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
264 foreach($tree->getSubTree($tree->getNodeData($tree->root_id),
true,array(
'sco',
'ass')) as $obj)
267 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
"_ref";
268 $attrs[
"type"] =
"webcontent";
269 if ($obj[
'type'] ==
"sco")
271 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"sco";
275 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
277 $attrs[
"href"] =
"./".$obj[
'obj_id'].
"/index.html";
278 $this->writer->xmlStartTag(
"resource", $attrs,
"");
279 $this->writer->xmlElement(
"dependency", array(
"identifierref"=>
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'ITSELF'),
"");
280 $this->writer->xmlElement(
"dependency", array(
"identifierref"=>
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'OBJECTS'),
"");
281 $this->writer->xmlElement(
"dependency", array(
"identifierref"=>
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'RESOURCES'),
"");
282 $this->writer->xmlElement(
"dependency", array(
"identifierref"=>
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'FLAVOUR'),
"");
283 $this->writer->xmlEndTag(
"resource");
286 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'ITSELF';
287 $attrs[
"type"] =
"webcontent";
288 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
289 $this->writer->xmlStartTag(
"resource", $attrs,
"");
290 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/index.xml"),
"");
291 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/ilias_co_3_7.dtd"),
"");
292 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/index.html"),
"");
293 $this->writer->xmlEndTag(
"resource");
296 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'RESOURCES';
297 $attrs[
"type"] =
"webcontent";
298 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
299 $this->writer->xmlStartTag(
"resource", $attrs,
"");
300 $this->writer->xmlEndTag(
"resource");
303 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'FLAVOUR';
304 $attrs[
"type"] =
"webcontent";
305 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
306 $this->writer->xmlStartTag(
"resource", $attrs,
"");
307 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/index.xml"),
"");
308 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/sco.xsl"),
"");
309 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/css/system.css"),
"");
310 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/css/style.css"),
"");
311 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/js/scorm.js"),
"");
312 $this->writer->xmlEndTag(
"resource");
315 $attrs[
"identifier"] =
"il_".IL_INST_ID.
"_".$obj[
'type'].
"_".$obj[
'obj_id'].
'OBJECTS';
316 $attrs[
"type"] =
"webcontent";
317 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
318 $this->writer->xmlStartTag(
"resource", $attrs,
"");
320 include_once(
"./Services/Style/classes/class.ilObjStyleSheet.php");
323 $active_css = split(@
'\?',$active_css,2);
324 $css = fread(fopen($active_css[0],
'r'),filesize($active_css[0]));
325 preg_match_all(
"/url\(([^\)]*)\)/",$css,$css_files);
326 $css_files = array_unique($css_files[1]);
328 chdir(dirname($active_css[0]));
329 foreach ($css_files as $fileref)
331 if(file_exists($fileref))
333 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/images/".basename($fileref)),
"");
338 include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
344 foreach($pagetree->getSubTree($pagetree->getNodeData($obj[
'obj_id']),
false,
'page') as $page)
347 $page_obj->buildDom();
348 $mob_ids = $page_obj->collectMediaObjects(
false);
349 foreach($mob_ids as $mob_id)
354 $media_obj = $media_obj->getMediaItem(
"Standard");
355 if($media_obj!=null && $media_obj->getLocationType() ==
"LocalFile")
356 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/objects/il_".IL_INST_ID.
"_mob_".$mob_id.
"/".rawurlencode($media_obj->getLocation())),
"");
360 include_once(
"./Services/COPage/classes/class.ilPCFileList.php");
362 foreach($file_ids as $file_id)
366 $file_obj =
new ilObjFile($file_id,
false);
367 $this->writer->xmlElement(
"file", array(
"href"=>
"./".$obj[
'obj_id'].
"/objects/il_".IL_INST_ID.
"_file_".$file_id.
"/".rawurlencode($file_obj->filename)),
"");
373 $this->writer->xmlEndTag(
"resource");
375 if($this->version==
"2004")
378 $attrs[
"identifier"] =
"PKG";
379 $attrs[
"type"] =
"webcontent";
380 $attrs[($this->version==
"2004"?
"adlcp:scormType":
"adlcp:scormtype")] =
"asset";
381 $this->writer->xmlStartTag(
"resource", $attrs,
"");
383 $xsd_files = array(
'adlcp_v1p3.xsd',
'adlseq_v1p3.xsd',
'imsss_v1p0.xsd',
'adlnav_v1p3.xsd',
'adlnav_v1p3.xsd',
384 'imscp_v1p1.xsd',
'imsmanifest.xml',
'imsss_v1p0auxresource.xsd',
'imsss_v1p0control.xsd',
'imsss_v1p0delivery.xsd',
385 'imsss_v1p0limit.xsd',
'imsss_v1p0objective.xsd',
'imsss_v1p0random.xsd',
'imsss_v1p0rollup.xsd',
'imsss_v1p0seqrule.xsd',
386 'imsss_v1p0util.xsd',
'xml.xsd',
'index.html');
387 foreach($xsd_files as $xsd_file)
390 $attrs[
"href"] = $xsd_file;
391 $this->writer->xmlElement(
"file", $attrs,
"");
393 $this->writer->xmlEndTag(
"resource");
Class ilSCORM2004Condition.
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
writeItemHierarchyRec($tree, $a_parent_node)
write item hierarchy (Recursive Style)
buildManifest($ver, $revision=null)
build manifest structure
ilContObjectManifestBuilder(&$a_cont_obj)
Constructor public.
static collectFileItems($a_page, $a_domdoc)
Get all file items that are used within the page.
writeResources()
write resources
redirection script todo: (a better solution should control the processing via a xml file) ...
xmlHeader()
Writes xml header public.
dump($a_target_dir)
dump manifest file into directory
static _lookupType($a_id, $a_reference=false)
lookup object type
writeItemHierarchy()
write item hierarchy
getContentStylePath($a_style_id)
get content style path
Content Object (ILIAS native learning module / digilib book) Manifest export class.