4require_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Node.php");
 
   42        $this->tpl = 
$DIC[
"tpl"];
 
   43        $this->lng = 
$DIC->language();
 
   44        $this->ctrl = 
$DIC->ctrl();
 
   52    public function delete($a_delete_meta_data = 
true)
 
   54        $node_data = $this->tree->getNodeData($this->
getId());
 
   56        $this->tree->deleteTree($node_data);
 
   57        parent::deleteSeqInfo();
 
   63    public function create($a_upload = 
false, $a_template = 
false)
 
   65        include_once(
"./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Item.php");
 
   66        include_once(
"./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Objective.php");
 
   67        parent::create($a_upload);
 
   91        $childs = $this->tree->getChilds($this->
getId());
 
   92        foreach ($childs as $child) {
 
   94            if (is_object($obj)) {
 
   95                if ($obj->getType() == 
"page") {
 
   96                    $obj->delete($a_delete_meta_data);
 
  101        parent::delete($a_delete_meta_data);
 
  107    public function copy($a_target_slm)
 
  111        if ($this->
getSLMId() != $a_target_slm->getId()) {
 
  112            $ass->setImportId(
"il__ass_" . $this->
getId());
 
  114        $ass->setSLMId($a_target_slm->getId());
 
  115        $ass->setType($this->
getType());
 
  118        $a_copied_nodes[$this->
getId()] = $ass->getId();
 
  121        include_once(
"Services/MetaData/classes/class.ilMD.php");
 
  123        $new_md = $md->cloneMD($a_target_slm->getId(), $ass->getId(), $this->getType());
 
  130    public function exportScorm($a_inst, $a_target_dir, $ver, &$expLog)
 
  132        copy(
'./xml/ilias_co_3_7.dtd', $a_target_dir . 
'/ilias_co_3_7.dtd');
 
  133        copy(
'./Modules/Scorm2004/templates/xsl/sco.xsl', $a_target_dir . 
'/sco.xsl');
 
  139        $metadata_xml = $a_xml_writer->xmlDumpMem(
false);
 
  140        $a_xml_writer->_XmlWriter;
 
  141        $xsl = file_get_contents(
"./Modules/Scorm2004/templates/xsl/metadata.xsl");
 
  142        $args = array( 
'/_xml' => $metadata_xml , 
'/_xsl' => $xsl );
 
  144        $output = xslt_process($xh, 
"arg:/_xml", 
"arg:/_xsl", 
null, $args, 
null);
 
  146        file_put_contents($a_target_dir . 
'/indexMD.xml', $output);
 
  150        $a_xml_writer->
xmlSetDtdDef(
"<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
 
  153        $a_xml_writer->xmlSetGenCmt(
"Export of ILIAS Content Module " . $this->
getId() . 
" of installation " . $a_inst . 
".");
 
  156        $a_xml_writer->xmlHeader();
 
  158        $a_xml_writer->xmlStartTag(
"ContentObject", array(
"Type" => 
"SCORM2004SCO"));
 
  166        $this->
exportHTML($a_inst, $a_target_dir, $expLog);
 
  170            copy(
'./Modules/Scorm2004/scripts/scorm_12.js', $a_target_dir . 
'/js/scorm.js');
 
  173        $a_xml_writer->xmlEndTag(
"ContentObject");
 
  175        $a_xml_writer->xmlDumpFile($a_target_dir . 
'/index.xml', 
false);
 
  177        $a_xml_writer->_XmlWriter;
 
  180        if ($this->
getType() == 
"sco") {
 
  181            $objectives_text = 
"";
 
  185            foreach ($tr_data as 
$data) {
 
  186                $objectives_text .= 
$data->getObjectiveID();
 
  188            $a_xml_writer->xmlStartTag(
"sco");
 
  189            $a_xml_writer->xmlElement(
"objective", 
null, $objectives_text);
 
  190            $a_xml_writer->xmlEndTag(
"sco");
 
  191            $a_xml_writer->xmlDumpFile($a_target_dir . 
'/sco.xml', 
false);
 
  192            $a_xml_writer->_XmlWriter;
 
  201        $a_asset_type = 
"sco",
 
  204        $this->slm_object->prepareHTMLExporter($a_target_dir);
 
  224    public function exportPDF($a_inst, $a_target_dir, &$expLog)
 
  230        $a_xml_writer->
xmlStartTag(
"ContentObject", array(
"Type" => 
"SCORM2004SCO"));
 
  232        $a_xml_writer->xmlEndTag(
"ContentObject");
 
  233        include_once 
'Services/Transformation/classes/class.ilXML2FO.php';
 
  235        $xml2FO->setXSLTLocation(
'./Modules/Scorm2004/templates/xsl/contentobject2fo.xsl');
 
  236        $xml2FO->setXMLString($a_xml_writer->xmlDumpMem());
 
  237        $xml2FO->setXSLTParams(array(
'target_dir' => $a_target_dir));
 
  238        $xml2FO->transform();
 
  239        $fo_string = $xml2FO->getFOString();
 
  240        $fo_xml = simplexml_load_string($fo_string);
 
  241        $fo_ext = $fo_xml->xpath(
"//fo:declarations");
 
  242        $fo_ext = $fo_ext[0];
 
  244        include_once 
"./Services/Utilities/classes/class.ilFileUtils.php";
 
  247            foreach (
$results[
"file"] as $key => $value) {
 
  248                $e = $fo_ext->addChild(
"fox:embedded-file", 
"", 
"http://xml.apache.org/fop/extensions");
 
  249                $e->addAttribute(
"src", 
$results[path][$key] . $value);
 
  250                $e->addAttribute(
"name", $value);
 
  251                $e->addAttribute(
"desc", 
"");
 
  254        $fo_string = $fo_xml->asXML();
 
  255        $a_xml_writer->_XmlWriter;
 
  269        include_once 
"./Modules/Scorm2004/classes/class.ilSCORM2004PageNode.php";
 
  270        include_once 
"./Modules/Scorm2004/classes/class.ilSCORM2004Page.php";
 
  272        $tree = 
new ilTree($this->slm_id);
 
  273        $tree->setTableNames(
'sahs_sc13_tree', 
'sahs_sc13_tree_node');
 
  274        $tree->setTreeTablePK(
"slm_id");
 
  275        foreach ($tree->getSubTree($tree->getNodeData($this->getId()), 
true, 
'page') as $page) {
 
  278            include_once(
"./Services/COPage/classes/class.ilPCQuestion.php");
 
  280            if (count($q_ids) > 0) {
 
  281                include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
 
  282                foreach ($q_ids as $q_id) {
 
  284                    $qti_file = fopen($a_target_dir . 
"/qti_" . $q_id . 
".xml", 
"w");
 
  285                    fwrite($qti_file, $q_obj->toXML());
 
  287                    $x = file_get_contents($a_target_dir . 
"/qti_" . $q_id . 
".xml");
 
  288                    $x = str_replace(
'<?xml version="1.0" encoding="utf-8"?>', 
'', $x);
 
  289                    $a_xml_writer->appendXML($x);
 
  304        $a_asset_type = 
"sco",
 
  308        include_once 
"./Modules/Scorm2004/classes/class.ilSCORM2004PageGUI.php";
 
  309        include_once 
"./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModuleGUI.php";
 
  310        include_once 
"./Services/MetaData/classes/class.ilMD.php";
 
  312        $tree = 
new ilTree($this->slm_id);
 
  313        $tree->setTableNames(
'sahs_sc13_tree', 
'sahs_sc13_tree_node');
 
  314        $tree->setTreeTablePK(
"slm_id");
 
  329        $sco_tpl = 
new ilGlobalTemplate(
"tpl.sco.html", 
true, 
true, 
"Modules/Scorm2004");
 
  336        if ($mode != 
'pdf' && $a_one_file == 
"") {
 
  337            include_once(
"./Services/COPage/classes/class.ilCOPageHTMLExport.php");
 
  339            $pg_exp->getPreparedMainTemplate($sco_tpl);
 
  343            $sco_tpl->setCurrentBlock(
"init");
 
  344            include_once(
"./Services/COPage/classes/class.ilPCQuestion.php");
 
  345            $sco_tpl->setVariable(
 
  349            $sco_tpl->parseCurrentBlock();
 
  352            foreach ($sco_tpl->getCSSFiles() as $css) {
 
  353                $sco_tpl->setCurrentBlock(
"css_file");
 
  354                $sco_tpl->setVariable(
"CSS_FILE", $css[
"file"]);
 
  355                $sco_tpl->parseCurrentBlock();
 
  357            $styles = array(
"./css/yahoo/container.css",
 
  358                "./css/question_handling.css");
 
  359            foreach ($styles as $style) {
 
  360                $sco_tpl->setCurrentBlock(
"css_file");
 
  361                $sco_tpl->setVariable(
"CSS_FILE", $style);
 
  362                $sco_tpl->parseCurrentBlock();
 
  366            $js_files = $sco_tpl->getJSFiles();
 
  367            $js_files[
"./js/scorm.js"] = 3;
 
  368            $js_files[
"./js/pager.js"] = 3;
 
  369            $js_files[
"./js/pure.js"] = 3;
 
  370            $js_files[
"./js/questions_" . $this->
getId() . 
".js"] = 3;
 
  375            for (
$i = 0; 
$i <= 3; 
$i++) {
 
  376                foreach ($js_files as $script => $batch) {
 
  378                        $sco_tpl->setCurrentBlock(
"js_file");
 
  379                        $sco_tpl->setVariable(
"JS_FILE", $script);
 
  380                        $sco_tpl->parseCurrentBlock();
 
  386            if ($a_asset_type != 
"entry_asset" && $a_asset_type != 
"final_asset") {
 
  390            $sco_tpl->touchBlock(
"finish");
 
  393        $sco_tpl->setCurrentBlock(
"head");
 
  394        $sco_tpl->setVariable(
"SCO_TITLE", $this->
getTitle());
 
  395        $sco_tpl->parseCurrentBlock();
 
  396        $sco_tpl->touchBlock(
"tail");
 
  400        if ($a_one_file != 
"") {
 
  401            fputs($a_one_file, 
"<a name='sco" . $this->
getId() . 
"'></a>");
 
  402            fputs($a_one_file, $sco_tpl->get(
"meta_page"));
 
  406        require_once 
'./Modules/Scorm2004/classes/class.ilQuestionExporter.php';
 
  413        include_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004ScoGUI.php");
 
  414        $pages = $tree->getSubTree($tree->getNodeData($this->getId()), 
true, 
'page');
 
  415        $sco_q_ids = array();
 
  416        foreach ($pages as $page) {
 
  422                $this->slm_object->getId()
 
  424            $page_obj->setPresentationTitle($page[
"title"]);
 
  426            $page_obj->setStyleId($this->slm_object->getStyleSheetId());
 
  427            if (count($terms) > 1) {
 
  428                $page_obj->setGlossaryOverviewInfo(
 
  434            $page_output = $page_obj->showPage(
"export");
 
  437            $mob_ids = $page_obj->getSCORM2004Page()->collectMediaObjects(
false);
 
  438            foreach ($mob_ids as $mob_id) {
 
  439                $this->mob_ids[$mob_id] = $mob_id;
 
  441                if ($media_obj->hasFullscreenItem()) {
 
  442                    $media_obj->exportMediaFullscreen($a_target_dir, $page_obj->getPageObject());
 
  447            $int_links = $page_obj->getPageObject()->getInternalLinks(
true);
 
  448            if (is_array($int_links)) {
 
  449                foreach ($int_links as $k => 
$e) {
 
  451                    if (
$e[
"Type"] == 
"GlossaryItem") {
 
  452                        $karr = explode(
":", $k);
 
  455                        foreach ($dids as $did) {
 
  458                            $mob_ids = $def_pg->collectMediaObjects(
false);
 
  459                            foreach ($mob_ids as $mob_id) {
 
  460                                $this->mob_ids[$mob_id] = $mob_id;
 
  463                                if ($media_obj->hasFullscreenItem()) {
 
  464                                    $media_obj->exportMediaFullscreen($a_target_dir, $def_pg);
 
  469                            foreach ($file_ids as $file_id) {
 
  470                                $this->file_ids[$file_id] = $file_id;
 
  478            include_once(
"./Services/COPage/classes/class.ilPCFileList.php");
 
  480            foreach ($file_ids as $file_id) {
 
  481                $this->file_ids[$file_id] = $file_id;
 
  484            if ($mode == 
'pdf') {
 
  485                include_once(
"./Services/COPage/classes/class.ilPCQuestion.php");
 
  487                foreach ($q_ids as $q_id) {
 
  488                    include_once(
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php");
 
  491                    $q_gui->outAdditionalOutput();
 
  492                    $html = $q_gui->getPreview(
true);
 
  493                    $page_output = preg_replace(
"/{{{{{Question;il__qst_" . $q_id . 
"}}}}}/i", $html, $page_output);
 
  496                $sco_tpl->touchBlock(
"pdf_pg_break");
 
  499            $sco_tpl->setCurrentBlock(
"page");
 
  500            $sco_tpl->setVariable(
"PAGE", $page_output);
 
  501            $sco_tpl->parseCurrentBlock();
 
  504            if ($a_one_file != 
"") {
 
  505                include_once(
"./Services/COPage/classes/class.ilPCQuestion.php");
 
  507                foreach ($q_ids as 
$i) {
 
  508                    if (!in_array(
$i, $sco_q_ids)) {
 
  516        if ($mode != 
'pdf') {
 
  517            $sco_tpl->setVariable(
 
  523        if ($a_one_file == 
"") {
 
  524            $output = $sco_tpl->get();
 
  526            $output = $sco_tpl->get(
"page");
 
  529        if ($mode == 
'pdf') {
 
  530            $output = preg_replace(
"/<div class=\"ilc_page_title_PageTitle\">(.*?)<\/div>/i", 
"<h2>$1</h2>", $output);
 
  533        $output = preg_replace(
"/mobs\/mm_(\d+)\/([^\"]+)/i", 
"./objects/il_" . 
IL_INST_ID . 
"_mob_$1/$2", $output);
 
  534        $output = preg_replace(
"/\.\/files\/file_(\d+)\/([^\"]+)/i", 
"./objects/il_" . 
IL_INST_ID . 
"_file_$1/$2", $output);
 
  535        $output = preg_replace(
"/\.\/Services\/MediaObjects\/flash_mp3_player/i", 
"./players", $output);
 
  536        $output = preg_replace(
"/file=..\/..\/..\/.\//i", 
"file=../", $output);
 
  538        if ($mode != 
'pdf') {
 
  539            $output = preg_replace_callback(
"/href=\"&mob_id=(\d+)&pg_id=(\d+)\"/", array(get_class($this), 
'fixFullscreeenLink'), $output);
 
  541            $output = preg_replace_callback(
"/href=\"fullscreen_(\d+)\.html\"/", array(get_class($this), 
'fixFullscreeenLink'), $output);
 
  542            $output = preg_replace_callback(
"/{{{{{(Question;)(il__qst_[0-9]+)}}}}}/", array(get_class($this), 
'insertQuestion'), $output);
 
  543            $q_handling = file_get_contents(
'./Modules/Scorm2004/scripts/questions/question_handling.js');
 
  546                "./Modules/Scorm2004/templates/default/question_handling.css",
 
  547                $a_target_dir . 
'/css/question_handling.css' 
  551            if ($a_one_file != 
"") {
 
  553                if (count($sco_q_ids) > 0) {
 
  554                    $output .= 
'<script type="text/javascript">';
 
  555                    foreach ($sco_q_ids as 
$i) {
 
  557                            $output .= 
"ilias.questions.showCorrectAnswers(" . 
$i . 
"); \n";
 
  560                    $output .= 
'</script>';
 
  565                $this->mob_ids[$mob_id] = $mob_id;
 
  571        if ($a_one_file != 
"") {
 
  572            fputs($a_one_file, $output);
 
  574            fputs(fopen($a_target_dir . 
'/index.html', 
'w+'), $output);
 
  592        if ($a_spacer_img == 
"") {
 
  596            $a_lang = 
$lng->getLangKey();
 
  599        $a_tpl->setCurrentBlock(
"ilLMNavigation");
 
  600        $a_tpl->setVariable(
"TXT_PREVIOUS", 
$lng->txtlng(
"content", 
'scplayer_previous', $a_lang));
 
  601        $a_tpl->setVariable(
"SRC_SPACER", $a_spacer_img);
 
  602        $a_tpl->setVariable(
"TXT_NEXT", 
$lng->txtlng(
"content", 
'scplayer_next', $a_lang));
 
  603        $a_tpl->parseCurrentBlock();
 
  604        $a_tpl->setCurrentBlock(
"ilLMNavigation2");
 
  605        $a_tpl->setVariable(
"TXT_PREVIOUS", 
$lng->txtlng(
"content", 
'scplayer_previous', $a_lang));
 
  606        $a_tpl->setVariable(
"SRC_SPACER", $a_spacer_img);
 
  607        $a_tpl->setVariable(
"TXT_NEXT", 
$lng->txtlng(
"content", 
'scplayer_next', $a_lang));
 
  608        $a_tpl->parseCurrentBlock();
 
  619    public static function renderMetaPage($a_tpl, $a_sco, $a_asset_type = 
"", $mode = 
"")
 
  625        if ($a_sco->getType() != 
"sco" || $a_sco->getHideObjectivePage()) {
 
  629        if ($a_asset_type != 
"entry_asset" && $a_asset_type != 
"final_asset") {
 
  630            $meta = 
new ilMD($a_sco->getSLMId(), $a_sco->getId(), $a_sco->getType());
 
  631            $desc_ids = $meta->getGeneral()->getDescriptionIds();
 
  632            $sco_description = $meta->getGeneral()->getDescription($desc_ids[0])->getDescription();
 
  635        if ($mode != 
'pdf') {
 
  637            if ($a_asset_type != 
"entry_asset" && $a_asset_type != 
"final_asset") {
 
  638                $a_tpl->setCurrentBlock(
"title");
 
  639                $a_tpl->setVariable(
"SCO_TITLE", $a_sco->getTitle());
 
  640                $a_tpl->parseCurrentBlock();
 
  644            $a_tpl->setCurrentBlock(
"pdf_title");
 
  645            $a_tpl->setVariable(
"SCO_TITLE", $a_sco->getTitle());
 
  646            $a_tpl->parseCurrentBlock();
 
  647            $a_tpl->touchBlock(
"pdf_break");
 
  651        if (trim($sco_description) != 
"") {
 
  652            $a_tpl->setCurrentBlock(
"sco_desc");
 
  653            $a_tpl->setVariable(
"TXT_DESC", 
$lng->txt(
"description"));
 
  654            include_once(
"./Services/COPage/classes/class.ilPCParagraph.php");
 
  655            $a_tpl->setVariable(
"VAL_DESC", self::convertLists($sco_description));
 
  656            $a_tpl->parseCurrentBlock();
 
  659        if ($a_asset_type == 
"sco") {
 
  661            $objs = $a_sco->getObjectives();
 
  662            if (count($objs) > 0) {
 
  663                foreach ($objs as $objective) {
 
  664                    $a_tpl->setCurrentBlock(
"sco_obj");
 
  665                    $a_tpl->setVariable(
"VAL_OBJECTIVE", self::convertLists($objective->getObjectiveID()));
 
  666                    $a_tpl->parseCurrentBlock();
 
  668                $a_tpl->setCurrentBlock(
"sco_objs");
 
  669                $a_tpl->setVariable(
"TXT_OBJECTIVES", 
$lng->txt(
"sahs_objectives"));
 
  670                $a_tpl->parseCurrentBlock();
 
  673        $a_tpl->setCurrentBlock(
"meta_page");
 
  674        $a_tpl->parseCurrentBlock();
 
  686        include_once(
"./Services/COPage/classes/class.ilPCParagraph.php");
 
  687        $a_text = nl2br($a_text);
 
  688        $a_text = str_replace(array(
"\n", 
"\r"), 
"", $a_text);
 
  689        $a_text = str_replace(
"<br>", 
"<br />", $a_text);
 
  691        $a_text = str_replace(
 
  692            array(
"<SimpleBulletList>", 
"</SimpleBulletList>",
 
  693                "<SimpleListItem>", 
"</SimpleListItem>",
 
  694                "<SimpleNumberedList>", 
"</SimpleNumberedList>" 
  696            array(
"<ul class='ilc_list_u_BulletedList'>", 
"</ul>",
 
  697                "<li class='ilc_list_item_StandardListItem'>", 
"</li>",
 
  698                "<ol class='ilc_list_o_NumberedList'>", 
"</ol>" 
  708        if ($media_obj->hasFullscreenItem()) {
 
  709            return "href=\"./objects/il_" . 
IL_INST_ID . 
"_mob_" . $matches[1] . 
"/fullscreen.html\"";
 
  719        $ret = $q_exporter->exportQuestion($matches[2], 
"./objects/", 
"offline");
 
  726        include_once 
"./Modules/Scorm2004/classes/class.ilSCORM2004PageNode.php";
 
  727        include_once 
"./Modules/Scorm2004/classes/class.ilSCORM2004Page.php";
 
  729        $tree = 
new ilTree($this->slm_id);
 
  730        $tree->setTableNames(
'sahs_sc13_tree', 
'sahs_sc13_tree_node');
 
  731        $tree->setTreeTablePK(
"slm_id");
 
  733        $pages = $tree->getSubTree($tree->getNodeData($this->getId()), 
true, 
'page');
 
  734        foreach ($pages as $page) {
 
  735            $expLog->write(date(
"[y-m-d H:i:s] ") . 
"Page Object " . $page[
"obj_id"]);
 
  739            $page_obj->exportXML($a_xml_writer, 
"normal", $a_inst);
 
  742            $mob_ids = $page_obj->getMediaObjectIds();
 
  743            foreach ($mob_ids as $mob_id) {
 
  744                $this->mob_ids[$mob_id] = $mob_id;
 
  748            $file_ids = $page_obj->getFileItemIds();
 
  749            foreach ($file_ids as $file_id) {
 
  750                $this->file_ids[$file_id] = $file_id;
 
  753            include_once(
"./Services/COPage/classes/class.ilPCQuestion.php");
 
  755            if (count($q_ids) > 0) {
 
  756                include_once(
"./Modules/TestQuestionPool/classes/class.assQuestion.php");
 
  757                foreach ($q_ids as $q_id) {
 
  760                    if (is_object($q_obj)) {
 
  761                        $qti_file = fopen($a_target_dir . 
"/qti_" . $q_id . 
".xml", 
"w");
 
  762                        fwrite($qti_file, $q_obj->toXML());
 
  774        include_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
 
  775        include_once(
"./Modules/File/classes/class.ilObjFile.php");
 
  776        $linked_mobs = array();
 
  777        if (is_array($this->mob_ids)) {
 
  779            foreach ($this->mob_ids as $mob_id) {
 
  781                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"Media Object " . $mob_id);
 
  783                    $media_obj->exportXML($a_xml_writer, $a_inst);
 
  784                    $lmobs = $media_obj->getLinkedMediaObjects($this->mob_ids);
 
  785                    $linked_mobs = array_merge($linked_mobs, $lmobs);
 
  791            foreach ($linked_mobs as $mob_id) {
 
  793                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"Media Object " . $mob_id);
 
  795                    $media_obj->exportXML($a_xml_writer, $a_inst);
 
  800        if (is_array($this->file_ids)) {
 
  801            foreach ($this->file_ids as $file_id) {
 
  803                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"File Item " . $file_id);
 
  804                    $file_obj = 
new ilObjFile($file_id, 
false);
 
  805                    $file_obj->export($a_target_dir);
 
  818        include_once(
"./Modules/File/classes/class.ilObjFile.php");
 
  819        if (is_array($this->file_ids)) {
 
  820            foreach ($this->file_ids as $file_id) {
 
  821                $expLog->write(date(
"[y-m-d H:i:s] ") . 
"File Item " . $file_id);
 
  823                    $file_obj = 
new ilObjFile($file_id, 
false);
 
  824                    $file_obj->export($a_target_dir);
 
  827                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"File Item not found, ID: " . $file_id);
 
  832        include_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
 
  833        $linked_mobs = array();
 
  834        if (is_array($this->mob_ids)) {
 
  836            foreach ($this->mob_ids as $mob_id) {
 
  838                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"Media Object " . $mob_id);
 
  840                    $media_obj->exportFiles($a_target_dir, $expLog);
 
  841                    $lmobs = $media_obj->getLinkedMediaObjects($this->mob_ids);
 
  842                    $linked_mobs = array_merge($linked_mobs, $lmobs);
 
  849            foreach ($linked_mobs as $mob_id) {
 
  851                    $expLog->write(date(
"[y-m-d H:i:s] ") . 
"Media Object " . $mob_id);
 
  853                    $media_obj->exportFiles($a_target_dir);
 
  860        foreach ($this->q_media as $media) {
 
  863                if (is_file($media)) {
 
  864                    copy($media, $a_target_dir . 
"/objects/" . basename($media));
 
  877        include_once(
"Services/MetaData/classes/class.ilMD2XML.php");
 
  879        $md2xml->setExportMode(
true);
 
  880        $md2xml->startExport();
 
  881        $a_xml_writer->appendXML($md2xml->getXML());
 
  888        require_once(
"./Modules/Scorm2004/classes/class.ilSCORM2004Export.php");
 
  890        $export = 
new ilSCORM2004Export($this);
 
  891        foreach ($export->getSupportedExportTypes() as 
$type) {
 
  892            $dir = $export->getExportDirectoryForType(
$type);
 
  894            if (!@is_dir($dir) or !is_writeable($dir)) {
 
  901            while ($entry = $cdir->read()) {
 
  902                if ($entry != 
"." and
 
  905                    preg_match(
"~^[0-9]{10}_{2}[0-9]+_{2}(" . $this->
getType() . 
"_)" . $this->
getId() . 
"+\.zip\$~", $entry) or
 
  906                    preg_match(
"~^[0-9]{10}_{2}[0-9]+_{2}(" . $this->
getType() . 
"_)" . $this->
getId() . 
"+\.pdf\$~", $entry) or
 
  907                    preg_match(
"~^[0-9]{10}_{2}[0-9]+_{2}(" . $this->
getType() . 
"_)" . $this->
getId() . 
"+\.iso\$~", $entry)
 
  909                    $file[$entry . 
$type] = array(
"type" => 
$type, 
"file" => $entry,
 
  910                        "size" => filesize($dir . 
"/" . $entry));
 
  932        $childs = $this->tree->getChilds($this->
getId());
 
  934        foreach ($childs as 
$c) {
 
  939            foreach ($links as $l) {
 
  940                if ($l[
"type"] == 
"git" && (
int) $l[
"inst"] == 0 && !isset($ids[$l[
"id"]])) {
 
An exception for terminatinating execution or to throw for unit testing.
static _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
const RENDER_PURPOSE_PREVIEW
static _instantiateQuestion($question_id)
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
HTML export class for pages.
static recursive_dirscan($dir, &$arr)
Recursively scans a given directory and writes path and filename into referenced array.
special template class to simplify handling of ITX/PEAR
Glossary definition page object.
static getDefinitionList($a_term_id)
static
static _lookGlossaryTerm($term_id)
get glossary term
static _extractObjIdOfTarget($a_target)
Extract object id out of target.
static _getTargetsOfSource($a_source_type, $a_source_id, $a_source_lang="-")
Get all targets of a source object (e.g., a page)
static getAffectiveLocalization($a_id)
Get affective localization.
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupType($a_id, $a_reference=false)
lookup object type
static collectFileItems($a_page, $a_domdoc)
Get all file items that are used within the page.
static input2xmlReplaceLists($a_text)
Converts xml from DB to output in edit textarea.
static getJSTextInitCode($a_lang)
Get js txt init code.
static _getQuestionIdsForPage($a_parent_type, $a_page_id, $a_lang="-")
Get all questions of a page.
Scorm 2004 Question Exporter.
static questionsJS(array $a_qids=null)
__construct($a_slm_object, $a_id=0)
Constructor.
getGlossaryTermIds()
Get glossary term ids in sco.
exportXMLMediaObjects(&$a_xml_writer, $a_inst, $a_target_dir, &$expLog)
copy($a_target_slm)
Copy sco.
static convertLists($a_text)
Convert * and # to lists.
exportXMLPageObjects($a_target_dir, &$a_xml_writer, $a_inst, &$expLog)
exportPDF($a_inst, $a_target_dir, &$expLog)
exportHTML( $a_inst, $a_target_dir, &$expLog, $a_asset_type="sco", $a_one_file="")
static renderMetaPage($a_tpl, $a_sco, $a_asset_type="", $mode="")
Render meta page (description/objectives at beginning)
exportXMLMetaData(&$a_xml_writer)
static fixFullscreeenLink($matches)
exportHTMLPageObjects( $a_inst, $a_target_dir, &$expLog, $mode, $a_asset_type="sco", $a_one_file="", $a_sco_tpl=null)
Export HTML pages of SCO.
insertDefaultSequencingItem()
Insert default sequencing item.
static renderNavigation($a_tpl, $a_spacer_img="", $a_lang="")
Render navigation.
exportHTML4PDF($a_inst, $a_target_dir, &$expLog)
static insertQuestion($matches)
delete_rec($a_delete_meta_data=true)
Delete Nested Page Objects.
create($a_upload=false, $a_template=false)
Create asset.
exportPDFPrepareXmlNFiles($a_inst, $a_target_dir, &$expLog, &$a_xml_writer)
exportFileItems($a_target_dir, &$expLog)
export files of file itmes
exportScorm($a_inst, $a_target_dir, $ver, &$expLog)
Class ilSCORM2004Condition.
static getInstance($a_slm_object, $a_id=0, $a_halt=true)
getSLMId()
Get ID of parent Scorm Learning Module Object.
setType($a_type)
Set type.
getDescription()
Get description.
Class ilSCORM2004Page GUI class.
static initExport()
Init export.
static getGlossaryHTML($a_sco)
Get glossary html (only in export mode)
static getGlossaryOverviewId()
Get sco glossary overlay id.
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
xmlStartTag($tag, $attrs=null, $empty=false, $encode=true, $escape=true)
Writes a starttag.
xmlSetDtdDef($dtdDef)
Sets dtd definition.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc