/**
  * parse pages that contain files, mobs and/or internal links
  */
 function processPagesToParse()
 {
     /*
     		$pg_mapping = array();
     		foreach($this->pg_mapping as $key => $value)
     		{
     			$pg_mapping[$key] = "il__pg_".$value;
     		}*/
     //echo "<br><b>processIntLinks</b>"; flush();
     // outgoin internal links
     foreach ($this->pages_to_parse as $page_id) {
         $page_arr = explode(":", $page_id);
         //echo "<br>resolve:".$this->content_object->getType().":".$page_id; flush();
         switch ($page_arr[0]) {
             case "lm":
                 switch ($this->content_object->getType()) {
                     case "lm":
                         include_once "./Modules/LearningModule/classes/class.ilLMPage.php";
                         $page_obj = new ilLMPage($page_arr[1]);
                         break;
                     default:
                         die("Unknown content type " . $this->content_object->getType());
                 }
                 break;
             case "gdf":
                 include_once "./Modules/Glossary/classes/class.ilGlossaryDefPage.php";
                 $page_obj = new ilGlossaryDefPage($page_arr[1]);
                 break;
             case "qpl":
                 $page_obj = new ilAssQuestionPage($page_arr[1]);
                 break;
         }
         $page_obj->buildDom();
         $page_obj->resolveIntLinks();
         $page_obj->resolveIIMMediaAliases($this->mob_mapping);
         if (in_array($this->coType, array("lm", "dbk"))) {
             $page_obj->resolveQuestionReferences($this->qst_mapping);
         }
         $page_obj->update(false);
         if ($page_arr[0] == "gdf") {
             $def = new ilGlossaryDefinition($page_arr[1]);
             $def->updateShortText();
         }
         unset($page_obj);
     }
     //echo "<br><b>map area internal links</b>"; flush();
     // outgoins map area (mob) internal links
     foreach ($this->mobs_with_int_links as $mob_id) {
         ilMediaItem::_resolveMapAreaLinks($mob_id);
     }
     //echo "<br><b>incoming interna links</b>"; flush();
     // incoming internal links
     $done = array();
     foreach ($this->link_targets as $link_target) {
         //echo "doin link target:".$link_target.":<br>";
         $link_arr = explode("_", $link_target);
         $target_inst = $link_arr[1];
         $target_type = $link_arr[2];
         $target_id = $link_arr[3];
         //echo "<br>-".$target_type."-".$target_id."-".$target_inst."-";
         $sources = ilInternalLink::_getSourcesOfTarget($target_type, $target_id, $target_inst);
         foreach ($sources as $key => $source) {
             //echo "got source:".$key.":<br>";
             if (in_array($key, $done)) {
                 continue;
             }
             $type_arr = explode(":", $source["type"]);
             // content object pages
             if ($type_arr[1] == "pg") {
                 if (ilPageObject::_exists($type_arr[0], $source["id"])) {
                     include_once "./Services/COPage/classes/class.ilPageObjectFactory.php";
                     $page_object = ilPageObjectFactory::getInstance($type_arr[0], $source["id"]);
                     $page_object->buildDom();
                     $page_object->resolveIntLinks();
                     $page_object->update();
                     unset($page_object);
                 }
             }
             // eventually correct links in questions to learning modules
             if ($type_arr[0] == "qst") {
                 require_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
                 assQuestion::_resolveIntLinks($source["id"]);
             }
             // eventually correct links in survey questions to learning modules
             if ($type_arr[0] == "sqst") {
                 require_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
                 SurveyQuestion::_resolveIntLinks($source["id"]);
             }
             $done[$key] = $key;
         }
     }
 }
 /**
  * Fill table row
  */
 protected function fillRow($term)
 {
     global $lng, $ilCtrl;
     $defs = ilGlossaryDefinition::getDefinitionList($term["id"]);
     $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
     if ($this->glossary->getPresentationMode() == "full_def") {
         $this->tpl->setCurrentBlock("fd_td");
         $this->tpl->setVariable("FULL_DEF", $this->parent_obj->listDefinitions($_GET["ref_id"], $term["id"], true));
         $this->tpl->parseCurrentBlock();
     } else {
         for ($j = 0; $j < count($defs); $j++) {
             $def = $defs[$j];
             if (count($defs) > 1) {
                 $this->tpl->setCurrentBlock("definition");
                 $this->tpl->setVariable("DEF_TEXT", $lng->txt("cont_definition") . " " . ($j + 1));
                 $this->tpl->parseCurrentBlock();
             }
             // check dirty short texts
             $this->tpl->setCurrentBlock("definition");
             if ($def["short_text_dirty"]) {
                 $def = new ilGlossaryDefinition($def["id"]);
                 $def->updateShortText();
                 $short_str = $def->getShortText();
             } else {
                 $short_str = $def["short_text"];
             }
             // replace tex
             // if a tex end tag is missing a tex end tag
             $ltexs = strrpos($short_str, "[tex]");
             $ltexe = strrpos($short_str, "[/tex]");
             if ($ltexs > $ltexe) {
                 $page = new ilGlossaryDefPage($def["id"]);
                 $page->buildDom();
                 $short_str = $page->getFirstParagraphText();
                 $short_str = strip_tags($short_str, "<br>");
                 $ltexe = strpos($short_str, "[/tex]", $ltexs);
                 $short_str = ilUtil::shortenText($short_str, $ltexe + 6, true);
             }
             if (!$this->offline) {
                 $short_str = ilUtil::insertLatexImages($short_str);
             } else {
                 $short_str = ilUtil::buildLatexImages($short_str, $this->parent_obj->getOfflineDirectory());
             }
             $short_str = ilPCParagraph::xml2output($short_str);
             $this->tpl->setVariable("DEF_SHORT", $short_str);
             $this->tpl->parseCurrentBlock();
             $this->tpl->setCurrentBlock("definition_row");
             $this->tpl->parseCurrentBlock();
         }
         //			$this->tpl->touchBlock("def_td");
         // display additional column 'glossary' for meta glossaries
         if ($this->glossary->isVirtual()) {
             $this->tpl->setCurrentBlock("glossary_row");
             $glo_title = ilObject::_lookupTitle($term["glo_id"]);
             $this->tpl->setVariable("GLO_TITLE", $glo_title);
             $this->tpl->parseCurrentBlock();
         }
     }
     $ilCtrl->clearParameters($this->parent_obj);
     // advanced metadata
     foreach ($this->adv_cols_order as $c) {
         if ($c["id"] == 0) {
             $this->tpl->setCurrentBlock("link_start");
             if (!$this->offline) {
                 if (!empty($filter)) {
                     $ilCtrl->setParameter($this->parent_obj, "term", $filter);
                     $ilCtrl->setParameter($this->parent_obj, "oldoffset", $_GET["oldoffset"]);
                 }
                 $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
                 $ilCtrl->setParameter($this->parent_obj, "offset", $_GET["offset"]);
                 $this->tpl->setVariable("LINK_VIEW_TERM", $ilCtrl->getLinkTarget($this->parent_obj, "listDefinitions"));
                 $ilCtrl->clearParameters($this->parent_obj);
             } else {
                 $this->tpl->setVariable("LINK_VIEW_TERM", "term_" . $term["id"] . ".html");
             }
             $this->tpl->parseCurrentBlock();
             $this->tpl->setCurrentBlock("link_end");
             $this->tpl->setVariable("ANCHOR_TERM", "term_" . $term["id"]);
             $this->tpl->parseCurrentBlock();
             $this->tpl->setCurrentBlock("td");
             $this->tpl->setVariable("TEXT", $term["term"]);
             $this->tpl->parseCurrentBlock();
         } else {
             $id = $c["id"];
             $f = $this->adv_fields[$c["id"]];
             $this->tpl->setCurrentBlock("td");
             switch ($f["type"]) {
                 case ilAdvancedMDFieldDefinition::TYPE_DATETIME:
                     $val = $term["md_" . $id] > 0 ? ilDatePresentation::formatDate(new ilDateTime($term["md_" . $id], IL_CAL_UNIX)) : " ";
                     break;
                 case ilAdvancedMDFieldDefinition::TYPE_DATE:
                     $val = $term["md_" . $id] > 0 ? ilDatePresentation::formatDate(new ilDate($term["md_" . $id], IL_CAL_UNIX)) : " ";
                     break;
                 default:
                     $val = $term["md_" . $id] != "" ? $term["md_" . $id] : " ";
                     break;
             }
             $this->tpl->setVariable("TEXT", $val);
             $this->tpl->parseCurrentBlock();
         }
     }
 }
 /**
  * Fill table row
  */
 protected function fillRow($term)
 {
     global $lng, $ilCtrl;
     $defs = ilGlossaryDefinition::getDefinitionList($term["id"]);
     $ilCtrl->setParameter($this->parent_obj, "term_id", $term["id"]);
     if ($this->glossary->getPresentationMode() == "full_def") {
         $this->tpl->setVariable("FULL_DEF", $this->parent_obj->listDefinitions($_GET["ref_id"], $term["id"], true));
     } else {
         for ($j = 0; $j < count($defs); $j++) {
             $def = $defs[$j];
             if (count($defs) > 1) {
                 $this->tpl->setCurrentBlock("definition");
                 $this->tpl->setVariable("DEF_TEXT", $lng->txt("cont_definition") . " " . ($j + 1));
                 $this->tpl->parseCurrentBlock();
             }
             // check dirty short texts
             $this->tpl->setCurrentBlock("definition");
             if ($def["short_text_dirty"]) {
                 $def = new ilGlossaryDefinition($def["id"]);
                 $def->updateShortText();
                 $short_str = $def->getShortText();
             } else {
                 $short_str = $def["short_text"];
             }
             // replace tex
             // if a tex end tag is missing a tex end tag
             $ltexs = strrpos($short_str, "[tex]");
             $ltexe = strrpos($short_str, "[/tex]");
             if ($ltexs > $ltexe) {
                 $page =& new ilPageObject("gdf", $def["id"]);
                 $page->buildDom();
                 $short_str = $page->getFirstParagraphText();
                 $short_str = strip_tags($short_str, "<br>");
                 $ltexe = strpos($short_str, "[/tex]", $ltexs);
                 $short_str = ilUtil::shortenText($short_str, $ltexe + 6, true);
             }
             if (!$this->offline) {
                 $short_str = ilUtil::insertLatexImages($short_str);
             } else {
                 $short_str = ilUtil::buildLatexImages($short_str, $this->parent_obj->getOfflineDirectory());
             }
             $short_str = ilPCParagraph::xml2output($short_str);
             $this->tpl->setVariable("DEF_SHORT", $short_str);
             $this->tpl->parseCurrentBlock();
             $this->tpl->setCurrentBlock("definition_row");
             $this->tpl->parseCurrentBlock();
         }
         //			$this->tpl->touchBlock("def_td");
         // display additional column 'glossary' for meta glossaries
         if ($this->glossary->isVirtual()) {
             $this->tpl->setCurrentBlock("glossary_row");
             $glo_title = ilObject::_lookupTitle($term["glo_id"]);
             $this->tpl->setVariable("GLO_TITLE", $glo_title);
             $this->tpl->parseCurrentBlock();
         }
         $this->tpl->setCurrentBlock("view_term");
         $this->tpl->setVariable("TEXT_TERM", $term["term"]);
         if (!$this->offline) {
             if (!empty($filter)) {
                 $ilCtrl->setParameter($this, "term", $filter);
                 $ilCtrl->setParameter($this, "oldoffset", $_GET["oldoffset"]);
             }
             $ilCtrl->setParameter($this, "term_id", $term["id"]);
             $ilCtrl->setParameter($this, "offset", $_GET["offset"]);
             $this->tpl->setVariable("LINK_VIEW_TERM", $ilCtrl->getLinkTarget($this->parent_obj, "listDefinitions"));
             $ilCtrl->clearParameters($this);
         } else {
             $this->tpl->setVariable("LINK_VIEW_TERM", "term_" . $term["id"] . ".html");
         }
         $this->tpl->setVariable("ANCHOR_TERM", "term_" . $term["id"]);
         $this->tpl->parseCurrentBlock();
     }
     $ilCtrl->clearParameters($this->parent_obj);
 }