4 require_once(
"./Modules/LearningModule/classes/class.ilLMPageObject.php");
5 require_once(
"./Services/COPage/classes/class.ilPageObject.php");
6 require_once(
"./Modules/LearningModule/classes/class.ilStructureObject.php");
7 require_once(
"./Modules/LearningModule/classes/class.ilObjLearningModule.php");
8 require_once(
"Services/MetaData/classes/class.ilMDLanguageItem.php");
9 require_once(
"./Services/COPage/classes/class.ilPCParagraph.php");
10 require_once(
"./Services/COPage/classes/class.ilPCTable.php");
11 require_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
12 require_once(
"./Services/MediaObjects/classes/class.ilMediaItem.php");
13 require_once(
"./Services/MediaObjects/classes/class.ilMapArea.php");
14 require_once(
"./Modules/LearningModule/classes/class.ilBibItem.php");
15 require_once(
"./Modules/Glossary/classes/class.ilObjGlossary.php");
16 require_once(
"./Modules/Glossary/classes/class.ilGlossaryTerm.php");
17 require_once(
"./Modules/Glossary/classes/class.ilGlossaryDefinition.php");
18 require_once(
"./Services/Link/classes/class.ilInternalLink.php");
19 require_once(
"./Modules/File/classes/class.ilObjFile.php");
21 include_once(
"Services/MetaData/classes/class.ilMDSaxParser.php");
22 include_once(
"Services/MetaData/classes/class.ilMD.php");
90 function ilContObjParser(&$a_content_object, $a_xml_file, $a_subdir, $a_import_dir =
"")
96 $this->import_dir = ($a_import_dir !=
"")
98 : $a_content_object->getImportDirectory();
100 parent::ilMDSaxParser($a_xml_file);
101 $this->cnt = array();
102 $this->current_element = array();
103 $this->structure_objects = array();
104 $this->content_object = $a_content_object;
106 $this->st_into_tree = array();
107 $this->pg_into_tree = array();
108 $this->pages_to_parse = array();
109 $this->mobs_with_int_links = array();
110 $this->mob_mapping = array();
111 $this->file_item_mapping = array();
112 $this->pg_mapping = array();
113 $this->link_targets = array();
114 $this->subdir = $a_subdir;
117 $this->inside_code =
false;
118 $this->qst_mapping = array();
119 $this->coType = $this->content_object->getType();
120 $this->metadata_parsing_disabled =
false;
122 if (($this->coType !=
"tst") and ($this->coType !=
"qpl"))
124 $this->lm_tree =
new ilTree($this->content_object->getId());
126 $this->lm_tree->setTableNames(
'lm_tree',
'lm_data');
140 xml_set_object($a_xml_parser,$this);
141 xml_set_element_handler($a_xml_parser,
'handlerBeginTag',
'handlerEndTag');
142 xml_set_character_data_handler($a_xml_parser,
'handlerCharacterData');
151 $this->mapping = $mapping;
160 $this->log->debug(
"start");
163 parent::startParsing();
184 foreach($this->st_into_tree as $st)
187 $this->lm_tree->insertNode($st[
"id"], $st[
"parent"]);
191 if (is_array($this->pg_into_tree[$st[
"id"]]))
193 foreach($this->pg_into_tree[$st[
"id"]] as $pg)
198 if ($this->pg_mapping[$pg[
"id"]] ==
"")
200 $ilLog->write(
"LM Import: No PageObject for PageAlias ".
201 $pg[
"id"].
" found! (Please update export installation to ILIAS 3.3.0)");
206 $pg_id = $this->pg_mapping[$pg[
"id"]];
213 if (!$this->lm_tree->isInTree($pg_id))
215 $this->lm_tree->insertNode($pg_id, $st[
"id"]);
239 foreach($this->pages_to_parse as $page_id)
241 $page_arr = explode(
":", $page_id);
246 switch ($this->content_object->getType())
249 include_once(
"./Modules/LearningModule/classes/class.ilLMPage.php");
250 $page_obj =
new ilLMPage($page_arr[1]);
254 die(
"Unknown content type ".$this->content_object->getType());
260 include_once(
"./Modules/Glossary/classes/class.ilGlossaryDefPage.php");
268 $page_obj->buildDom();
269 $page_obj->resolveIntLinks();
270 $page_obj->resolveIIMMediaAliases($this->mob_mapping);
271 if (in_array($this->coType, array(
"lm",
"dbk")))
273 $page_obj->resolveQuestionReferences($this->qst_mapping);
275 $page_obj->update(
false);
277 if ($page_arr[0] ==
"gdf")
280 $def->updateShortText();
288 foreach($this->mobs_with_int_links as $mob_id)
296 foreach ($this->link_targets as $link_target)
299 $link_arr = explode(
"_", $link_target);
300 $target_inst = $link_arr[1];
305 foreach($sources as $key => $source)
308 if(in_array($key, $done))
312 $type_arr = explode(
":", $source[
"type"]);
315 if ($type_arr[1] ==
"pg")
319 include_once(
"./Services/COPage/classes/class.ilPageObjectFactory.php");
321 $page_object->buildDom();
322 $page_object->resolveIntLinks();
323 $page_object->update();
329 if ($type_arr[0] ==
"qst")
331 require_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
335 if ($type_arr[0] ==
"sqst")
337 require_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
351 $imp_dir = $this->import_dir;
352 foreach ($this->mob_mapping as $origin_id => $mob_id)
354 if(empty($origin_id))
370 $obj_dir = $origin_id;
371 $source_dir = $imp_dir.
"/".$this->subdir.
"/objects/".$obj_dir;
374 if (@is_dir($source_dir))
381 if (@is_dir($target_dir))
394 $imp_dir = $this->import_dir;
395 foreach ($this->file_item_mapping as $origin_id => $file_id)
397 if(empty($origin_id))
401 $obj_dir = $origin_id;
402 $source_dir = $imp_dir.
"/".$this->subdir.
"/objects/".$obj_dir;
404 include_once(
"./Modules/File/classes/class.ilObjFile.php");
405 $file_obj =
new ilObjFile($file_id,
false);
407 $target_dir = $file_obj->getDirectory();
408 if (@is_dir($source_dir))
415 if (@is_dir($target_dir))
420 $test = $file_obj->determineFilesize();
430 $this->qst_mapping = $a_map;
439 if(!isset($this->status[
"$a_name"]))
441 $this->cnt[$a_name] = 1;
445 $this->cnt[$a_name]++;
447 $this->current_element[count($this->current_element)] = $a_name;
457 $this->cnt[$a_name]--;
458 unset ($this->current_element[count($this->current_element) - 1]);
466 return ($this->current_element[count($this->current_element) - 1]);
476 if (isset($this->cnt[$a_name]))
478 return $this->cnt[$a_name];
505 while (list($k,$v) = each($attr))
506 $tag.=
" ".$k.
"=\"$v\"";
526 case "ContentObject":
529 if ($a_attribs[
"Type"] ==
"Glossary")
535 case "StructureObject":
537 $this->structure_objects[count($this->structure_objects)]
539 $this->current_object = $this->structure_objects[count($this->structure_objects) - 1];
540 $this->current_object->setLMId($this->content_object->getId());
544 $this->current_object->create(
true);
548 $this->in_page_object =
true;
550 if (($this->coType !=
"tst") and ($this->coType !=
"qpl"))
552 $this->lm_page_object =
new ilLMPageObject($this->content_object);
553 include_once(
"./Modules/LearningModule/classes/class.ilLMPage.php");
554 $this->page_object =
new ilLMPage();
555 $this->lm_page_object->setLMId($this->content_object->getId());
556 $this->lm_page_object->assignPageObject($this->page_object);
561 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
567 if (($this->coType !=
"tst") and ($this->coType !=
"qpl"))
569 $this->lm_page_object->setAlias(
true);
570 $this->lm_page_object->setOriginID($a_attribs[
"OriginId"]);
575 $this->in_media_object =
true;
576 case "InteractiveImage":
578 $this->media_meta_start =
true;
579 $this->media_meta_cache = array();
585 $this->media_object->setAlias(
true);
586 $this->media_object->setImportId($a_attribs[
"OriginId"]);
587 if (is_object($this->page_object))
589 $this->page_object->needsImportParsing(
true);
594 case "MediaAliasItem":
595 $this->in_media_item =
true;
597 $this->media_item->setPurpose($a_attribs[
"Purpose"]);
606 if (is_object($this->media_object) && $this->in_media_object)
608 $this->media_item->setWidth($a_attribs[
"Width"]);
609 $this->media_item->setHeight($a_attribs[
"Height"]);
610 $this->media_item->setHAlign($a_attribs[
"HorizontalAlign"]);
615 if (is_object($this->media_object) && $this->in_media_object)
617 $this->media_item->setParameter($a_attribs[
"Name"], $a_attribs[
"Value"]);
622 $this->in_map_area =
true;
624 $this->map_area->setShape($a_attribs[
"Shape"]);
625 $this->map_area->setCoords($a_attribs[
"Coords"]);
626 $this->map_area->setHighlightMode($a_attribs[
"HighlightMode"]);
627 $this->map_area->setHighlightClass($a_attribs[
"HighlightClass"]);
631 $this->in_glossary =
true;
632 if ($this->content_object->getType() !=
"glo")
635 $this->glossary_object->setTitle(
"");
636 $this->glossary_object->setDescription(
"");
637 $this->glossary_object->create(
true);
638 $this->glossary_object->createReference();
639 $parent = $this->tree->getParentNodeData($this->content_object->getRefId());
640 $this->glossary_object->putInTree($parent[
"child"]);
641 $this->glossary_object->setPermissions($parent[
"child"]);
642 $this->glossary_object->notify(
"new",
$_GET[
"ref_id"],
$_GET[
"parent_non_rbac_id"],
$_GET[
"ref_id"],$this->glossary_object->getRefId());
649 $this->glossary_term->setGlossaryId($this->glossary_object->getId());
650 $this->glossary_term->setLanguage($a_attribs[
"Language"]);
651 $this->glossary_term->setImportId($a_attribs[
"Id"]);
652 $this->link_targets[$a_attribs[
"Id"]] = $a_attribs[
"Id"];
656 $this->in_glossary_definition =
true;
658 include_once(
"./Modules/Glossary/classes/class.ilGlossaryDefPage.php");
660 $this->page_object->setParentId($this->glossary_term->getGlossaryId());
661 $this->glossary_definition->setTermId($this->glossary_term->getId());
662 $this->glossary_definition->assignPageObject($this->page_object);
663 $this->current_object = $this->glossary_definition;
664 $this->glossary_definition->create(
true);
667 $this->page_object->setXMLContent(
"");
671 $this->in_file_item =
true;
673 $this->file_item->setTitle(
"dummy");
674 $this->file_item->setMode(
"filelist");
675 if (is_object($this->page_object))
677 $this->page_object->needsImportParsing(
true);
682 if ($a_attribs[
"Characteristic"] ==
"Code")
684 $this->inside_code =
true;
689 $this->in_properties =
true;
693 if ($this->content_object->getType() ==
"lm" 694 || $this->content_object->getType() ==
"dbk")
696 switch($a_attribs[
"Name"])
699 $this->content_object->setLayout($a_attribs[
"Value"]);
703 $this->content_object->setPageHeader($a_attribs[
"Value"]);
707 $this->content_object->setTOCMode($a_attribs[
"Value"]);
711 $this->content_object->setActiveLMMenu(
715 case "ActiveNumbering":
716 $this->content_object->setActiveNumbering(
721 $this->content_object->setActiveTOC(
725 case "ActivePrintView":
726 $this->content_object->setActivePrintView(
731 $this->content_object->setCleanFrames(
736 $this->content_object->setPublicNotes(
740 case "HistoryUserComments":
741 $this->content_object->setHistoryUserComments(
746 $this->content_object->setRating(
751 $this->content_object->setRatingPages(
756 if ($a_attribs[
"Value"] !=
"")
758 if ($this->pg_mapping[$a_attribs[
"Value"]] > 0)
760 $this->content_object->setHeaderPage(
761 $this->pg_mapping[$a_attribs[
"Value"]]);
767 if ($a_attribs[
"Value"] !=
"")
769 if ($this->pg_mapping[$a_attribs[
"Value"]] > 0)
771 $this->content_object->setFooterPage(
772 $this->pg_mapping[$a_attribs[
"Value"]]);
777 case "LayoutPerPage":
778 $this->content_object->setLayoutPerPage($a_attribs[
"Value"]);
781 case "ProgressIcons":
782 $this->content_object->setProgressIcons($a_attribs[
"Value"]);
786 $this->content_object->setStoreTries($a_attribs[
"Value"]);
789 case "RestrictForwardNavigation":
790 $this->content_object->setRestrictForwardNavigation($a_attribs[
"Value"]);
793 case "DisableDefaultFeedback":
794 $this->content_object->setDisableDefaultFeedback($a_attribs[
"Value"]);
806 $this->in_meta_data =
true;
811 if(!$this->in_media_object)
813 if (($this->coType !=
"tst") and ($this->coType !=
"qpl"))
816 if ($this->current_object->getType() ==
"st" ||
817 $this->current_object->getType() ==
"pg")
820 if ($this->current_object->getType() ==
"pg")
822 $this->lm_page_object->create(
true);
824 $this->md =
new ilMD($this->content_object->getId() ,
825 $this->current_object->getId(),
826 $this->current_object->getType());
829 else if ($this->current_object->getType() ==
"gdf")
831 $this->md =
new ilMD($this->glossary_object->getId() ,
832 $this->current_object->getId(),
833 $this->current_object->getType());
840 $this->md =
new ilMD($this->current_object->getId() ,
842 $this->current_object->getType());
849 $this->md =
new ilMD($this->content_object->getId() ,
851 $this->current_object->getType()
853 if ($this->md->getGeneral() !=
false)
855 $this->metadata_parsing_disabled =
true;
871 if($import_id_parsed[
'type'] ==
'st')
873 $this->mapping->addMapping(
874 'Modules/LearningModule',
876 $import_id_parsed[
'id'],
877 $this->current_object->getId()
885 if (!$this->in_meta_meta_data)
887 if ($this->in_meta_data && !$this->in_glossary_definition)
889 if (!$this->in_media_object)
891 $this->current_object->setImportId($a_attribs[
"Entry"]);
893 $this->link_targets[$a_attribs[
"Entry"]] = $a_attribs[
"Entry"];
895 if ($this->in_file_item)
897 if ($this->file_item_mapping[$a_attribs[
"Entry"]] ==
"")
899 $this->file_item->create();
900 $this->file_item->setImportId($a_attribs[
"Entry"]);
901 $this->file_item_mapping[$a_attribs[
"Entry"]] = $this->file_item->getId();
904 if ($this->in_meta_data && $this->in_media_object)
908 $mob_id = $this->mob_mapping[$a_attribs[
"Entry"]];
920 $this->media_object->create(
true,
false);
921 $this->mob_mapping[$a_attribs[
"Entry"]]
922 = $this->media_object->getId();
924 $this->media_object->setImportId($a_attribs[
"Entry"]);
925 $this->md =
new ilMD(0 ,
926 $this->media_object->getId(),
933 case "Meta-Metadata":
934 $this->in_meta_meta_data =
true;
939 if (is_object($this->page_object))
941 $this->page_object->setContainsIntLink(
true);
943 if ($this->in_map_area)
947 $this->map_area->setTarget($a_attribs[
"Target"]);
948 $this->map_area->setType($a_attribs[
"Type"]);
949 $this->map_area->setTargetFrame($a_attribs[
"TargetFrame"]);
950 if (is_object($this->media_object))
953 $this->media_object->setContainsIntLink(
true);
960 if ($this->in_map_area)
963 $this->map_area->setHref($a_attribs[
"Href"]);
964 $this->map_area->setExtTitle($a_attribs[
"Title"]);
970 $this->cur_qid = $a_attribs[
"QRef"];
971 $this->page_object->setContainsQuestion(
true);
975 $this->loc_type = $a_attribs[
"Type"];
979 $this->in_bib_item =
true;
988 if(($this->in_page_object || $this->in_glossary_definition)
989 && !$this->in_meta_data && !$this->in_media_object)
991 if ($a_name ==
"Definition")
993 $app_name =
"PageObject";
994 $app_attribs = array();
999 $app_attribs = $a_attribs;
1003 if ($this->in_file_item && $app_name ==
"Identifier")
1005 $app_attribs[
"Entry"] =
"il__file_".$this->file_item_mapping[$a_attribs[
"Entry"]];
1009 $this->page_object->appendXMLContent($this->
buildTag(
"start", $app_name, $app_attribs));
1014 if ($this->in_bib_item)
1016 $this->bib_item->appendXMLContent(
"\n".$this->
buildTag(
"start", $a_name, $a_attribs));
1026 if ($this->in_media_object && $this->media_meta_start)
1028 $this->media_meta_cache[] =
1029 array(
"type" =>
"handlerBeginTag",
"par1" => $a_name,
"par2" => $a_attribs);
1033 if ($a_name ==
"Identifier")
1035 if (!$this->in_media_object)
1037 $a_attribs[
"Entry"] =
"il__".$this->current_object->getType().
1038 "_".$this->current_object->getId();
1042 $a_attribs[
"Entry"] =
"il__mob".
1043 "_".$this->media_object->getId();
1045 $a_attribs[
"Catalog"] =
"ILIAS";
1048 parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
1060 if ($this->content_object->getType() ==
"glo" &&
1061 $this->in_glossary && !$this->in_media_object
1062 && !$this->in_glossary_definition)
1085 if ($this->in_media_object && $this->media_meta_start)
1087 $this->media_meta_cache[] =
1088 array(
"type" =>
"handlerEndTag",
"par1" => $a_name);
1092 parent::handlerEndTag($a_xml_parser,$a_name);
1098 if (($this->in_page_object || $this->in_glossary_definition)
1099 && !$this->in_meta_data && !$this->in_media_object)
1101 $app_name = ($a_name ==
"Definition")
1104 $this->page_object->appendXMLContent($this->
buildTag(
"end", $app_name));
1108 if ($this->in_bib_item)
1110 if($a_name ==
"BibItem")
1112 $this->bib_item->appendXMLContent(
"\n".$this->
buildTag(
"end", $a_name));
1116 $this->bib_item->appendXMLContent($this->
buildTag(
"end", $a_name));
1123 case "StructureObject":
1125 unset($this->structure_objects[count($this->structure_objects) - 1]);
1130 $this->in_page_object =
false;
1131 if (($this->coType !=
"tst") and ($this->coType !=
"qpl"))
1133 if (!$this->lm_page_object->isAlias())
1136 $this->page_object->updateFromXML();
1137 $this->pg_mapping[$this->lm_page_object->getImportId()]
1138 = $this->lm_page_object->getId();
1143 if($import_id_parsed[
'type'] ==
'pg')
1145 $this->mapping->addMapping(
1146 'Modules/LearningModule',
1148 $import_id_parsed[
'id'],
1149 $this->lm_page_object->getId()
1156 if ($this->page_object->containsIntLink())
1158 $this->pages_to_parse[
"lm:".$this->page_object->getId()] =
"lm:".$this->page_object->getId();
1162 if ($this->page_object->needsImportParsing())
1164 $this->pages_to_parse[
"lm:".$this->page_object->getId()] =
"lm:".$this->page_object->getId();
1168 if ($this->page_object->getContainsQuestion())
1170 $this->pages_to_parse[
"lm:".$this->page_object->getId()] =
"lm:".$this->page_object->getId();
1177 $xml = $this->page_object->getXMLContent();
1178 if ($this->cur_qid !=
"")
1180 $ids = $this->qst_mapping[$this->cur_qid];
1181 if ($ids[
"pool"] > 0)
1184 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
1186 $xmlcontent = str_replace($this->cur_qid,
1187 "il__qst_".$ids[
"pool"], $xml);
1188 $page->setXMLContent($xmlcontent);
1189 $page->updateFromXML();
1190 if( $this->page_object->needsImportParsing() )
1192 $this->pages_to_parse[
"qpl:".$page->getId()] =
"qpl:".$page->getId();
1196 if ($ids[
"test"] > 0)
1199 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
1201 $xmlcontent = str_replace($this->cur_qid,
1202 "il__qst_".$ids[
"test"], $xml);
1203 $page->setXMLContent($xmlcontent);
1204 $page->updateFromXML();
1205 if( $this->page_object->needsImportParsing() )
1207 $this->pages_to_parse[
"qpl:".$page->getId()] =
"qpl:".$page->getId();
1215 $cnt = count($this->structure_objects);
1221 $parent_id = $this->structure_objects[$cnt - 1]->getId();
1222 if ($this->lm_page_object->isAlias())
1225 $this->pg_into_tree[$parent_id][] = array(
"type" =>
"pg_alias",
"id" => $this->lm_page_object->getOriginId());
1231 $this->pg_into_tree[$parent_id][] = array(
"type" =>
"pg",
"id" => $this->lm_page_object->getId());
1235 unset($this->page_object);
1236 unset($this->lm_page_object);
1237 unset ($this->container[count($this->container) - 1]);
1241 $this->in_media_object =
false;
1242 case "InteractiveImage":
1248 if(empty($this->mob_mapping[$this->media_object->getImportId()]))
1255 $this->media_object->create(
true,
false);
1260 if ($this->media_object->containsIntLink())
1263 $this->mobs_with_int_links[] = $this->media_object->getId();
1266 $this->mob_mapping[$this->media_object->getImportId()]
1267 = $this->media_object->getId();
1274 $this->media_object->setId($this->mob_mapping[$this->media_object->getImportId()]);
1281 if (!$this->media_object->isAlias())
1284 $this->media_object->update();
1289 if ($this->media_object->containsIntLink())
1292 $this->mobs_with_int_links[] = $this->media_object->getId();
1298 if ($this->in_page_object || $this->in_glossary_definition)
1300 if ($a_name !=
"InteractiveImage")
1302 $this->page_object->appendXMLContent($this->media_object->getXML(
IL_MODE_ALIAS));
1310 case "MediaAliasItem":
1311 $this->in_media_item =
false;
1312 $this->media_object->addMediaItem($this->media_item);
1317 $this->in_map_area =
false;
1318 $this->media_item->addMapArea($this->map_area);
1322 $this->in_properties =
false;
1323 if ($this->content_object->getType() ==
"lm" 1324 || $this->content_object->getType() ==
"dbk")
1326 $this->content_object->update();
1331 $this->in_meta_data =
false;
1332 if(strtolower(get_class($this->current_object)) ==
"illmpageobject" && !$this->in_media_object)
1335 if (is_object($this->lm_page_object))
1338 $this->current_object->MDUpdateListener(
'General');
1340 $this->current_object->getImportId());
1343 else if((strtolower(get_class($this->current_object)) ==
"ilobjquestionpool" ||
1344 strtolower(get_class($this->current_object)) ==
"ilobjtest") &&
1350 if ($this->metadata_parsing_disabled)
1356 if ($this->in_page_object)
1358 $this->page_object->MDUpdateListener(
'General');
1360 $this->page_object->getImportId());
1364 $this->current_object->MDUpdateListener(
'General');
1366 $this->current_object->getImportId());
1370 else if(strtolower(get_class($this->current_object)) ==
"ilstructureobject")
1373 $cnt = count($this->structure_objects);
1376 $parent_id = $this->structure_objects[$cnt - 2]->getId();
1380 $parent_id = $this->lm_tree->getRootId();
1385 $this->st_into_tree[] = array (
"id" => $this->current_object->getId(),
1386 "parent" => $parent_id);
1389 $this->current_object->MDUpdateListener(
'General');
1391 $this->current_object->getImportId());
1393 else if(strtolower(get_class($this->current_object)) ==
"ilobjdlbook" || strtolower(get_class($this->current_object)) ==
"ilobjlearningmodule" ||
1394 strtolower(get_class($this->current_object)) ==
"ilobjcontentobject" ||
1395 (strtolower(get_class($this->current_object)) ==
"ilobjglossary" &&
$this->in_glossary))
1400 else if(strtolower(get_class($this->current_object)) ==
"ilglossarydefinition" && !$this->in_media_object)
1405 $this->page_object->setId($this->glossary_definition->getId());
1406 $this->page_object->updateFromXML();
1413 if(strtolower(get_class($this->current_object)) ==
"ilobjlearningmodule" ||
1414 strtolower(get_class($this->current_object)) ==
"ilobjdlbook" ||
1415 strtolower(get_class($this->current_object)) ==
"ilobjglossary")
1417 if (strtolower(get_class($this->current_object)) ==
"ilobjglossary" &&
1418 $this->content_object->getType() !=
"glo")
1421 $this->current_object->setTitle($this->content_object->getTitle().
" - ".
1422 $this->lng->txt(
"glossary"));
1425 $this->current_object->MDUpdateListener(
'General');
1434 if ($this->in_media_object)
1437 $this->media_object->MDUpdateListener(
'General');
1440 if ($this->in_glossary_definition)
1442 $this->glossary_definition->MDUpdateListener(
'General');
1447 case "Meta-Metadata":
1448 $this->in_meta_meta_data =
false;
1452 $this->in_file_item =
false;
1454 if ($this->file_item->getImportId($a_attribs[
"Entry"] !=
""))
1456 $this->file_item->update();
1460 case "Bibliography":
1462 $this->in_bib_item =
false;
1465 $nested->import($this->bib_item->getXMLContent(),$this->content_object->getId(),
"bib");
1469 unset ($this->container[count($this->container) - 1]);
1473 $this->in_glossary =
false;
1476 case "GlossaryTerm":
1477 $term = trim($this->chr_data);
1478 $term = str_replace(
"<",
"<", $term);
1479 $term = str_replace(
">",
">", $term);
1480 $this->glossary_term->setTerm($term);
1481 $this->glossary_term->create();
1482 $iia = explode(
"_", $this->glossary_term->getImportId());
1483 $this->glossary_term_map[(int) $iia[count($iia) - 1]] = $this->glossary_term->getId();
1487 $this->inside_code =
false;
1491 $this->in_glossary_definition =
false;
1492 $this->page_object->updateFromXML();
1495 $this->page_object->buildDom();
1496 $this->glossary_definition->setShortText($this->page_object->getFirstParagraphText());
1497 $this->glossary_definition->update();
1500 if ($this->page_object->containsIntLink())
1503 $this->pages_to_parse[
"gdf:".$this->page_object->getId()] =
"gdf:".$this->page_object->getId();
1505 if ($this->page_object->needsImportParsing())
1507 $this->pages_to_parse[
"gdf:".$this->page_object->getId()] =
"gdf:".$this->page_object->getId();
1512 if ($this->in_media_item)
1514 $this->media_item->setFormat(trim($this->chr_data));
1516 if ($this->in_file_item)
1518 $this->file_item->setFileType(trim($this->chr_data));
1523 if (!$this->in_media_object)
1525 $this->current_object->setTitle(trim($this->chr_data));
1530 $this->media_object->setTitle(trim($this->chr_data));
1542 if (is_object($this->bib_item))
1544 $this->bib_item->setLanguage(trim($this->chr_data));
1553 if ($this->in_media_object)
1555 $this->media_item->setCaption(trim($this->chr_data));
1559 case "TextRepresentation":
1560 if ($this->in_media_object)
1562 $this->media_item->setTextRepresentation(trim($this->chr_data));
1569 if ($this->in_media_item)
1571 $this->media_item->setLocationType($this->loc_type);
1572 if ($this->loc_type ==
"Reference")
1574 $this->media_item->setLocation(str_replace(
"&",
"&", trim($this->chr_data)));
1578 $this->media_item->setLocation(trim($this->chr_data));
1582 if ($this->in_file_item)
1585 $this->file_item->setFileName(trim($this->chr_data));
1589 if ($this->file_item->getType() ==
"file" &&
1590 is_int(strpos($this->chr_data,
"&")) &&
1591 is_int(strpos($this->chr_data,
";")))
1593 $imp_dir = $this->import_dir;
1594 $source_dir = $imp_dir.
"/".$this->subdir.
"/objects/".
1595 $this->file_item->getImportId();
1598 if ($dir = opendir($source_dir))
1600 while (
false !== (
$file = readdir($dir)))
1604 $this->file_item->setFileName(
$file);
1612 $this->file_item->setTitle(trim($this->chr_data));
1618 $this->chr_data =
"";
1635 if ($this->in_media_object && $this->media_meta_start)
1637 $this->media_meta_cache[] =
1638 array(
"type" =>
"handlerCharacterData",
"par1" => $a_data);
1642 parent::handlerCharacterData($a_xml_parser,$a_data);
1650 $a_data = str_replace(
"<",
"<",$a_data);
1651 $a_data = str_replace(
">",
">",$a_data);
1655 $a_data = preg_replace(
"/\n/",
"",$a_data);
1656 if (!$this->inside_code)
1658 $a_data = preg_replace(
"/\t+/",
"",$a_data);
1661 $this->chr_data .= $a_data;
1663 if(!empty($a_data) || $a_data ===
"0")
1667 if (($this->in_page_object || $this->in_glossary_definition)
1668 && !$this->in_meta_data && !$this->in_media_object)
1670 $this->page_object->appendXMLContent($a_data);
1673 if ($this->in_meta_data)
1679 if ($this->in_bib_item )
1681 $this->bib_item->appendXMLContent($a_data);
1689 if($this->in_map_area)
1691 $this->map_area->appendTitle($a_data);
1707 foreach ($this->media_meta_cache as $cache_entry)
1709 switch($cache_entry[
"type"])
1711 case "handlerBeginTag":
1712 parent::handlerBeginTag($a_xml_parser,
1713 $cache_entry[
"par1"], $cache_entry[
"par2"]);
1716 case "handlerEndTag":
1717 parent::handlerEndTag($a_xml_parser,
1718 $cache_entry[
"par1"]);
1721 case "handlerCharacterData":
1722 parent::handlerCharacterData($a_xml_parser,
1723 $cache_entry[
"par1"]);
1728 $this->media_meta_start =
false;
1729 $this->media_meta_cache[] = array();
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
Class NestedSetXML functions for storing XML-Data into nested-set-database-strcture.
startParsing()
start parser
$metadata_parsing_disabled
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
enableMDParsing($a_status)
processPagesToParse()
parse pages that contain files, mobs and/or internal links
emptyMediaMetaCache(&$a_xml_parser)
send all cached tags to the meta data parser and clear the cache
static parseImportId($a_import_id)
Parse an ilias import id Typically of type il_[IL_INST_ID]_[OBJ_TYPE]_[OBJ_ID] returns array( 'orig' ...
_getSourcesOfTarget($a_target_type, $a_target_id, $a_target_inst)
get all sources of a link target
setImportMapping(ilImportMapping $mapping=null)
Set import mapping.
_resolveIntLinks($question_id)
copyFileItems()
copy files of file items
setQuestionMapping($a_map)
set question import ident to pool/test question id mapping
storeTree()
insert StructureObjects and PageObjects into tree
Glossary definition page object.
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
setTreeTablePK($a_column_name)
set column containing primary key in tree table public
ilContObjParser(&$a_content_object, $a_xml_file, $a_subdir, $a_import_dir="")
Constructor.
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
Class ilGlossaryDefinition.
_resolveIntLinks($question_id)
static getInstance($a_parent_type, $a_id=0, $a_old_nr=0, $a_lang="-")
Get page object instance.
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
copyMobFiles()
copy multimedia object files from import zip file to mob directory
_writeImportId($a_id, $a_import_id)
write import id to db (static)
static getLogger($a_component_id)
Get component logger.
processMeta()
check whether meta data should be processed
static yn2tf($a_yn)
convert "y"/"n" to true/false
buildTag($type, $name, $attr="")
generate a tag with given name and attributes
static getWebspaceDir($mode="filesystem")
get webspace directory
Extension of ilPageObject for learning modules.
getGlossaryTermMap()
Get glossary term map (imported ids to new ids)
setHandlers($a_xml_parser)
set event handlers