ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilCOPageHTMLExport.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
12 {
16  protected $mobs = [];
17 
21  protected $glossary_terms = [];
22 
26  protected $files = [];
27 
31  protected $files_direct = [];
32 
36  protected $int_links = [];
37 
41  protected $q_ids = [];
42 
46  protected $exp_dir = "";
47 
51  protected $content_style_id = 0;
52 
56  protected $user;
57 
61  protected $log;
62 
66  protected $global_screen;
67 
71  protected $page_linker;
72 
76  protected $ref_id;
77 
82  public function __construct($a_exp_dir, \ILIAS\COPage\PageLinker $linker = null, $ref_id = 0)
83  {
84  global $DIC;
85 
86  $this->log = ilLoggerFactory::getLogger('copg');
87  $this->user = $DIC->user();
88  $this->global_screen = $DIC->globalScreen();
89  $this->page_linker = is_null($linker)
90  ? new ilPageLinker("", true)
91  : $linker;
92  $this->ref_id = $ref_id;
93 
94  $this->exp_dir = $a_exp_dir;
95  $this->mobs_dir = $a_exp_dir . "/mobs";
96  $this->files_dir = $a_exp_dir . "/files";
97  $this->tex_dir = $a_exp_dir . "/teximg";
98  $this->content_style_dir = $a_exp_dir . "/content_style";
99  $this->content_style_img_dir = $a_exp_dir . "/content_style/images";
100 
101  include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
102  $this->services_dir = $a_exp_dir . "/Services";
103  $this->media_service_dir = $this->services_dir . "/MediaObjects";
104  $this->flv_dir = $a_exp_dir . "/" . ilPlayerUtil::getFlashVideoPlayerDirectory();
105  $this->mp3_dir = $this->media_service_dir . "/flash_mp3_player";
106 
107  $this->js_dir = $a_exp_dir . '/js';
108  $this->js_yahoo_dir = $a_exp_dir . '/js/yahoo';
109  $this->css_dir = $a_exp_dir . '/css';
110  }
111 
117  public function setContentStyleId($a_val)
118  {
119  $this->content_style_id = $a_val;
120  }
121 
127  public function getContentStyleId()
128  {
130  }
131 
138  public function createDirectories()
139  {
140  ilUtil::makeDir($this->mobs_dir);
141  ilUtil::makeDir($this->files_dir);
142  ilUtil::makeDir($this->tex_dir);
143  ilUtil::makeDir($this->content_style_dir);
144  ilUtil::makeDir($this->content_style_img_dir);
145  ilUtil::makeDir($this->services_dir);
146  ilUtil::makeDir($this->media_service_dir);
147  ilUtil::makeDir($this->flv_dir);
148  ilUtil::makeDir($this->mp3_dir);
149 
150  ilUtil::makeDir($this->js_dir);
151  ilUtil::makeDir($this->js_yahoo_dir);
152  ilUtil::makeDir($this->css_dir);
153  ilUtil::makeDir($this->css_dir . "/yahoo");
154  }
155 
163  public function exportStyles()
164  {
165  $this->log->debug("export styles");
166 
167  // export content style sheet
168  if ($this->getContentStyleId() < 1) { // basic style
170  ilUtil::makeDirParents($this->exp_dir . "/Services/COPage/css");
171  copy("Services/COPage/css/content.css", $this->exp_dir . "/Services/COPage/css/content.css");
172  } else {
173  $style = new ilObjStyleSheet($this->getContentStyleId());
174  $style->copyImagesToDir($this->exp_dir . "/" . $style->getImagesDirectory());
175  $this->exportResourceFile($this->exp_dir,
177  }
178 
179  // export syntax highlighting style
180  $syn_stylesheet = ilObjStyleSheet::getSyntaxStylePath();
181  $this->exportResourceFile($this->exp_dir, $syn_stylesheet);
182  }
183 
192  public function exportSupportScripts()
193  {
194  $this->log->debug("export scripts");
195 
196  $collector = new \ILIAS\COPage\ResourcesCollector(ilPageObjectGUI::OFFLINE);
197 
198  foreach ($collector->getJavascriptFiles() as $js) {
199  $this->exportResourceFile($this->exp_dir, $js);
200  }
201 
202  foreach ($collector->getCssFiles() as $css) {
203  $this->exportResourceFile($this->exp_dir, $css);
204  }
205 
206  //copy('./Services/UIComponent/Overlay/js/ilOverlay.js', $this->js_dir . '/ilOverlay.js');
207 
208 
209  // yui stuff we use
210  /*
211  include_once("./Services/YUI/classes/class.ilYuiUtil.php");
212  copy(
213  ilYuiUtil::getLocalPath('yahoo/yahoo-min.js'),
214  $this->js_yahoo_dir . '/yahoo-min.js'
215  );
216  copy(
217  ilYuiUtil::getLocalPath('yahoo-dom-event/yahoo-dom-event.js'),
218  $this->js_yahoo_dir . '/yahoo-dom-event.js'
219  );
220  copy(
221  ilYuiUtil::getLocalPath('animation/animation-min.js'),
222  $this->js_yahoo_dir . '/animation-min.js'
223  );
224  copy(
225  ilYuiUtil::getLocalPath('container/container-min.js'),
226  $this->js_yahoo_dir . '/container-min.js'
227  );
228  copy(
229  ilYuiUtil::getLocalPath('container/assets/skins/sam/container.css'),
230  $this->css_dir . '/container.css'
231  );
232  copy(
233  ilYuiUtil::getLocalPath('container/assets/skins/sam/container.css'),
234  $this->css_dir . '/yahoo/container.css'
235  );*/ // see #23083
236 
237 
238  // mediaelement.js
239  include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
241  }
242 
249  protected function exportResourceFile(string $target_dir, string $file)
250  {
251  if (is_int(strpos($file, "?"))) {
252  $file = substr($file, 0, strpos($file, "?"));
253  }
254  if (is_file($file)) {
255  $dir = dirname($file);
256  \ilUtil::makeDirParents($target_dir . "/" . $dir);
257  if (!is_file($target_dir . "/" . $file)) {
258  copy($file, $target_dir . "/" . $file);
259  }
260  }
261  }
262 
263 
270  public function getPreparedMainTemplate($a_tpl = "")
271  {
272  global $DIC;
273  $this->log->debug("get main template");
274 
275 
276  $resource_collector = new \ILIAS\COPage\ResourcesCollector(ilPageObjectGUI::OFFLINE);
277  $resource_injector = new \ILIAS\COPage\ResourcesInjector($resource_collector);
278 
279 
280  include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
281 
282  if ($a_tpl != "") {
283  $tpl = $a_tpl;
284  } else {
285  // template workaround: reset of template
286  $tpl = new ilGlobalPageTemplate($DIC->globalScreen(), $DIC->ui(), $DIC->http());
287  }
288  // scripts needed
289  /*
290  $scripts = array("./js/yahoo/yahoo-min.js", "./js/yahoo/yahoo-dom-event.js",
291  "./js/yahoo/animation-min.js", "./js/yahoo/container-min.js",
292  "./js/ilOverlay.js",
293  "./js/ilTooltip.js",);*/
294  $scripts = [];
295  $scripts = array_merge($scripts, ilPlayerUtil::getJsFilePaths());
296 
297  $mathJaxSetting = new ilSetting("MathJax");
298  $use_mathjax = $mathJaxSetting->get("enable");
299  if ($use_mathjax) {
300  $scripts[] = $mathJaxSetting->get("path_to_mathjax");
301  }
302 
306 
307  $resource_injector->inject($tpl);
308 
309  return $tpl;
310  }
311 
318  public function collectPageElements($a_type, $a_id, $lang = "")
319  {
320  $this->log->debug("collect page elements");
321 
322  // collect all dependent pages (only one level deep)
323  $pages[] = [
324  "type" => $a_type,
325  "id" => $a_id
326  ];
327 
328  // ... content includes
329  $pcs = ilPageContentUsage::getUsagesOfPage($a_id, $a_type, 0, false, $lang);
330  foreach ($pcs as $pc) {
331  // content includes
332  if ($pc["type"] == "incl") {
333  $pages[] = [
334  "type" => "mep:pg",
335  "id" => $pc["id"]
336  ];
337  }
338  }
339 
340  // ... internal links
342  $this->int_links = array_merge($this->int_links, $pg_links);
343  $this->glossary_terms = [];
344 
345  // ... glossary pages of internal links
346  foreach ($this->int_links as $int_link) {
347  if ($int_link["type"] == "git") {
348  $this->glossary_terms[] = $int_link["id"];
349  // store linked/embedded media objects of glosssary term
350  $defs = \ilGlossaryDefinition::getDefinitionList($int_link["id"]);
351  foreach ($defs as $def) {
352  $pages[] = [
353  "type" => "gdf:pg",
354  "id" => $def["obj_id"]
355  ];
356  }
357  }
358  }
359 
360  // resources of pages
361  foreach ($pages as $page) {
362  $page_id = $page["id"];
363  $page_type = $page["type"];
364 
365  // collect media objects
366  $pg_mobs = ilObjMediaObject::_getMobsOfObject($page_type, $page_id, 0, $lang);
367  foreach ($pg_mobs as $pg_mob) {
368  $this->mobs[$pg_mob] = $pg_mob;
369  $this->log->debug("HTML Export: Add media object $pg_mob (" . \ilObject::_lookupTitle($pg_mob) . ") " .
370  " due to page $page_id, $page_type ).");
371  }
372 
373  // collect all files
374  $files = ilObjFile::_getFilesOfObject($page_type, $page_id, 0, $lang);
375  foreach ($files as $f) {
376  $this->files[$f] = $f;
377  }
378 
379  // collect all questions
381  foreach ($q_ids as $q_id) {
382  $this->q_ids[$q_id] = $q_id;
383  }
384  }
385 
386  // collect page content items
387  $skill_tree = $ws_tree = null;
388 
389  // skills
390  foreach ($pcs as $pc) {
391  if ($pc["type"] == "skmg") {
392  $skill_id = $pc["id"];
393 
394  // trying to find user id
395  $user_id = null;
396  switch ($a_type) {
397  case "prtf:pg":
398  include_once "Modules/Portfolio/classes/class.ilPortfolioPage.php";
399  $page = new ilPortfolioPage($a_id);
400  $user_id = $page->create_user;
401  break;
402 
403  default:
404  // :TODO:
405  break;
406  }
407 
408  if ($user_id) {
409  // we only need 1 instance each
410  if (!$skill_tree) {
411  include_once "Services/Skill/classes/class.ilSkillTree.php";
412  $skill_tree = new ilSkillTree();
413 
414  include_once "Services/Skill/classes/class.ilPersonalSkill.php";
415 
416  include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php";
417  $ws_tree = new ilWorkspaceTree($user_id);
418  }
419 
420  // walk skill tree
421  include_once("./Services/Skill/classes/class.ilVirtualSkillTree.php");
422  $vtree = new ilVirtualSkillTree();
423  $tref_id = 0;
424  $skill_id = (int) $skill_id;
425  include_once("./Services/Skill/classes/class.ilSkillTreeNode.php");
426  if (ilSkillTreeNode::_lookupType($skill_id) == "sktr") {
427  include_once("./Services/Skill/classes/class.ilSkillTemplateReference.php");
428  $tref_id = $skill_id;
429  $skill_id = ilSkillTemplateReference::_lookupTemplateId($skill_id);
430  }
431  $b_skills = $vtree->getSubTreeForCSkillId($skill_id . ":" . $tref_id, true);
432 
433  foreach ($b_skills as $bs) {
434  $skill = ilSkillTreeNodeFactory::getInstance($bs["skill_id"]);
435  $level_data = $skill->getLevelData();
436  foreach ($level_data as $k => $v) {
437  // get assigned materials from personal skill
438  $mat = ilPersonalSkill::getAssignedMaterial($user_id, $bs["tref_id"], $v["id"]);
439  if (sizeof($mat)) {
440  foreach ($mat as $item) {
441  $wsp_id = $item["wsp_id"];
442  $obj_id = $ws_tree->lookupObjectId($wsp_id);
443 
444  // all possible material types for now
445  switch (ilObject::_lookupType($obj_id)) {
446  case "file":
447  $this->files[$obj_id] = $obj_id;
448  break;
449 
450  case "tstv":
451  include_once "Modules/Test/classes/class.ilObjTestVerification.php";
452  $obj = new ilObjTestVerification($obj_id, false);
453  $this->files_direct[$obj_id] = array($obj->getFilePath(),
454  $obj->getOfflineFilename());
455  break;
456 
457  case "excv":
458  include_once "Modules/Exercise/classes/class.ilObjExerciseVerification.php";
459  $obj = new ilObjExerciseVerification($obj_id, false);
460  $this->files_direct[$obj_id] = array($obj->getFilePath(),
461  $obj->getOfflineFilename());
462  break;
463 
464  case "crsv":
465  include_once "Modules/Course/classes/Verification/class.ilObjCourseVerification.php";
466  $obj = new ilObjCourseVerification($obj_id, false);
467  $this->files_direct[$obj_id] = array($obj->getFilePath(),
468  $obj->getOfflineFilename());
469  break;
470 
471  case "cmxv":
472  $obj = new ilObjCmiXapiVerification($obj_id, false);
473  $this->files_direct[$obj_id] = array($obj->getFilePath(),
474  $obj->getOfflineFilename());
475  break;
476 
477  case "ltiv":
478  $obj = new ilObjLTIConsumerVerification($obj_id, false);
479  $this->files_direct[$obj_id] = array($obj->getFilePath(),
480  $obj->getOfflineFilename());
481  break;
482 
483  case "scov":
484  include_once "Modules/ScormAicc/classes/Verification/class.ilObjSCORMVerification.php";
485  $obj = new ilObjSCORMVerification($obj_id, false);
486  $this->files_direct[$obj_id] = array($obj->getFilePath(),
487  $obj->getOfflineFilename());
488  break;
489  }
490  }
491  }
492  }
493  }
494  }
495  }
496  }
497  }
498 
505  public function exportPageElements($a_update_callback = null)
506  {
507  $this->log->debug("export page elements");
508 
509  $total = count($this->mobs) + count($this->files) + count($this->files_direct);
510  $cnt = 0;
511 
512  // export all media objects
513  $linked_mobs = array();
514  foreach ($this->mobs as $mob) {
515  if (ilObject::_exists($mob) && ilObject::_lookupType($mob) == "mob") {
516  $this->exportHTMLMOB($mob, $linked_mobs);
517  }
518  if (is_callable($a_update_callback)) {
519  $cnt++;
520  $a_update_callback($total, $cnt);
521  }
522  }
523  $linked_mobs2 = array(); // mobs linked in link areas
524  foreach ($linked_mobs as $mob) {
525  if (ilObject::_exists($mob)) {
526  $this->exportHTMLMOB($mob, $linked_mobs2);
527  }
528  }
529 
530  // export all file objects
531  foreach ($this->files as $file) {
532  $this->exportHTMLFile($file);
533  if (is_callable($a_update_callback)) {
534  $cnt++;
535  $a_update_callback($total, $cnt);
536  }
537  }
538 
539  // export all files (which are not objects
540  foreach ($this->files_direct as $file_id => $attr) {
541  $this->exportHTMLFileDirect($file_id, $attr[0], $attr[1]);
542  if (is_callable($a_update_callback)) {
543  $cnt++;
544  $a_update_callback($total, $cnt);
545  }
546  }
547 
548  // export all glossary terms
549  $this->exportHTMLGlossaryTerms();
550  }
551 
558  protected function initResourceTemplate($tempalate_file)
559  {
560  $this->global_screen->layout()->meta()->reset();
561  $tpl = new ilGlobalTemplate($tempalate_file, true, true, "Services/COPage");
566  return $tpl;
567  }
568 
572  public function exportHTMLMOB($a_mob_id, &$a_linked_mobs)
573  {
574  $this->log->debug("export html mobs");
575 
576  $source_dir = ilUtil::getWebspaceDir() . "/mobs/mm_" . $a_mob_id;
577  if (is_dir($source_dir)) {
578  ilUtil::makeDir($this->mobs_dir . "/mm_" . $a_mob_id);
579  ilUtil::rCopy($source_dir, $this->mobs_dir . "/mm_" . $a_mob_id);
580  }
581 
582  $mob_obj = new ilObjMediaObject($a_mob_id);
583 
584  $tpl = $this->initResourceTemplate("tpl.fullscreen.html");
585  $med_links = ilMediaItem::_getMapAreasIntLinks($a_mob_id);
586  $link_xml = $this->page_linker->getLinkXML($med_links);
587 
588  $params = [
589  "mode" => "media",
590  'enlarge_path' => ilUtil::getImagePath("enlarge.svg", false, "output", true),
591  'fullscreen_link' => $this->page_linker->getFullScreenLink("fullscreen")
592  ];
593  if ($this->ref_id > 0) {
594  $params["ref_id"] = $this->ref_id;
595  $params["link_params"] = "ref_id=" . $this->ref_id;
596  }
597 
598  $tpl->setVariable("MEDIA_CONTENT", $this->renderMob($mob_obj, $link_xml, $params));
599  $html = $tpl->printToString();
600  $file = $this->exp_dir . "/media_" . $a_mob_id . ".html";
601  $fp = fopen($file, "w+");
602  fwrite($fp, $html);
603  fclose($fp);
604  unset($fp);
605 
606  if ($mob_obj->hasFullscreenItem()) {
607  $tpl = $this->initResourceTemplate("tpl.fullscreen.html");
608  $params["mode"] = "fullscreen";
609  $tpl->setVariable("MEDIA_CONTENT", $this->renderMob($mob_obj, $link_xml, $params));
610  $html = $tpl->printToString();
611  $file = $this->exp_dir . "/fullscreen_" . $a_mob_id . ".html";
612  $fp = fopen($file, "w+");
613  fwrite($fp, $html);
614  fclose($fp);
615  unset($fp);
616  }
617 
618  $linked_mobs = $mob_obj->getLinkedMediaObjects();
619  $a_linked_mobs = array_merge($a_linked_mobs, $linked_mobs);
620  }
621 
629  protected function renderMob(\ilObjMediaObject $mob_obj, string $link_xml, array $params)
630  {
631  // render media object html
632  $xh = xslt_create();
633  $output = xslt_process(
634  $xh,
635  "arg:/_xml",
636  "arg:/_xsl",
637  null,
638  array(
639  "/_xml" =>
640  "<dummy>" .
641  $mob_obj->getXML(IL_MODE_ALIAS) .
642  $mob_obj->getXML(IL_MODE_OUTPUT) .
643  $link_xml .
644  "</dummy>",
645  "/_xsl" => file_get_contents("./Services/COPage/xsl/page.xsl")
646  ),
647  $params
648  );
649  xslt_free($xh);
650  unset($xh);
651  return $output;
652  }
653 
654 
658  public function exportHTMLFile($a_file_id)
659  {
660  $file_dir = $this->files_dir . "/file_" . $a_file_id;
661  ilUtil::makeDir($file_dir);
662 
663  include_once("./Modules/File/classes/class.ilObjFile.php");
664  $file_obj = new ilObjFile($a_file_id, false);
665  $source_file = $file_obj->getDirectory($file_obj->getVersion()) . "/" . $file_obj->getFileName();
666  if (!is_file($source_file)) {
667  $source_file = $file_obj->getDirectory() . "/" . $file_obj->getFileName();
668  }
669  if (is_file($source_file)) {
670  copy($source_file, $file_dir . "/" . $file_obj->getFileName());
671  }
672  }
673 
677  public function exportHTMLFileDirect($a_file_id, $a_source_file, $a_file_name)
678  {
679  $file_dir = $this->files_dir . "/file_" . $a_file_id;
680  ilUtil::makeDir($file_dir);
681 
682  if (is_file($a_source_file)) {
683  copy(
684  $a_source_file,
685  $file_dir . "/" . ilUtil::getASCIIFilename($a_file_name)
686  );
687  }
688  }
689 
693  protected function exportQuestionFiles()
694  {
695  // export questions (images)
696  if (count($this->q_ids) > 0) {
697  foreach ($this->q_ids as $q_id) {
698  \ilUtil::makeDirParents($this->exp_dir . "/assessment/0/" . $q_id . "/images");
700  \ilUtil::getWebspaceDir() . "/assessment/0/" . $q_id . "/images",
701  $this->exp_dir . "/assessment/0/" . $q_id . "/images"
702  );
703  }
704  }
705  }
706 
711  public function exportHTMLGlossaryTerms()
712  {
713  foreach ($this->glossary_terms as $term_id) {
714  $tpl = $this->initResourceTemplate("tpl.glossary_term_output.html");
715 
716  $term_gui = new ilGlossaryTermGUI($term_id);
717  $term_gui->setPageLinker($this->page_linker);
718  $term_gui->setOfflineDirectory($this->exp_dir);
719  $term_gui->output(true, $tpl);
720 
721  // write file
722  $html = $tpl->printToString();
723  $file = $this->exp_dir . "/term_" . $term_id . ".html";
724  $fp = fopen($file, "w+");
725  fwrite($fp, $html);
726  fclose($fp);
727  }
728  }
729 }
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
xslt_create()
static makeDirParents($a_dir)
Create a new directory and all parent directories.
setContentStyleId($a_val)
Set content style id.
static _getMobsOfObject($a_type, $a_id, $a_usage_hist_nr=0, $a_lang="-")
get mobs of object
renderMob(\ilObjMediaObject $mob_obj, string $link_xml, array $params)
Render Mob.
static getDefinitionList($a_term_id)
static
Page linker.
static _getMapAreasIntLinks($a_mob_id)
get all internal links of map areas of a mob
static _getQuestionIdsForPage($a_parent_type, $a_page_id, $a_lang="-")
Get all questions of a page.
if(isset($_FILES['img_file']['size']) && $_FILES['img_file']['size'] > 0) $tpl
exportHTMLFile($a_file_id)
Export file object.
special template class to simplify handling of ITX/PEAR
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
HTML export class for pages.
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
Skill tree.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
Class ChatMainBarProvider .
xslt_free(&$proc)
getContentStyleId()
Get content style id.
if(strpos($jquery_path, './')===0) elseif(strpos($jquery_path, '.')===0) $mathJaxSetting
Definition: latex.php:32
initResourceTemplate($tempalate_file)
Get resource template.
static _lookupTitle($a_id)
lookup object title
exportHTMLFileDirect($a_file_id, $a_source_file, $a_file_name)
Export file from path.
exportHTMLGlossaryTerms()
Export glossary terms.
getPreparedMainTemplate($a_tpl="")
Get prepared main template.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
user()
Definition: user.php:4
$total
Definition: Utf8Test.php:87
static getBasicImageDir()
Get basic image dir.
Tree handler for personal workspace.
static _lookupType($a_obj_id)
Lookup Type.
static getJsFilePaths()
Get js file paths.
$a_type
Definition: workflow.php:92
createDirectories()
Create directories.
static getUsagesOfPage($a_usage_id, $a_usage_type, $a_hist_nr=0, $a_all_hist_nrs=false, $a_lang="-")
Get page content usages for page.
collectPageElements($a_type, $a_id, $lang="")
Collect page elements (that need to be exported separately)
Class ilGlobalPageTemplate.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
GUI class for glossary terms.
static getFlashVideoPlayerDirectory()
Get flash video player directory.
exportSupportScripts()
Export support scripts.
Page for user portfolio.
static _lookupTemplateId($a_obj_id)
Lookup template ID.
Class ilObjMediaObject.
static getSyntaxStylePath()
get syntax style path
static _getFilesOfObject($a_type, $a_id, $a_usage_hist_nr=0, $a_usage_lang="-")
get all files of an object
const IL_MODE_ALIAS
static _lookupType($a_id, $a_reference=false)
lookup object type
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
$lang
Definition: xapiexit.php:8
exportResourceFile(string $target_dir, string $file)
Export resource file.
static getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
__construct($a_exp_dir, \ILIAS\COPage\PageLinker $linker=null, $ref_id=0)
ilCOPageHTMLExport constructor.
static copyPlayerFilesToTargetDirectory($a_target_dir)
Copy css files to target dir.
Class ilObjStyleSheet.
$DIC
Definition: xapitoken.php:46
const IL_MODE_OUTPUT
static getLogger($a_component_id)
Get component logger.
exportStyles()
Export content style.
exportQuestionFiles()
Export question images.
exportHTMLMOB($a_mob_id, &$a_linked_mobs)
Export media object to html.
static getWebspaceDir($mode="filesystem")
get webspace directory
getXML($a_mode=IL_MODE_FULL, $a_inst=0, $a_sign_locals=false)
get MediaObject XLM Tag
exportPageElements($a_update_callback=null)
Export page elements.