24 include_once(
'Modules/Course/classes/class.ilFSStorageCourse.php');
71 $this->ARCHIVE_XML = 1;
72 $this->ARCHIVE_HTML = 2;
73 $this->ARCHIVE_PDF = 3;
83 return $this->archives;
88 return $this->archives[$a_id];
93 foreach ($this->archives as
$id => $archive) {
94 if ($archive[
'archive_type'] == $this->ARCHIVE_XML) {
97 if ($this->course_obj->getArchiveType() != $this->course_obj->ARCHIVE_DOWNLOAD and
98 $archive[
'archive_type'] == $this->ARCHIVE_PDF) {
101 $public_archives[
$id] = $archive;
104 return $public_archives ? $public_archives :
array();
113 return $this->archive_type ? $this->archive_type : $this->ARCHIVE_XML;
118 $this->archive_date = $a_date;
122 return $this->archive_date ? $this->archive_date :
time();
127 $this->archive_size = $a_size;
135 $this->archive_name = $a_name;
143 $this->archive_lang = $a_lang_code;
157 return $this->course_files_obj->getArchiveDirectory() .
'/' . $archive[
'archive_name'] .
'.zip';
159 return $this->course_files_obj->getArchiveDirectory() .
'/' . $archive[
'archive_name'];
168 public function addXML($a_selection =
"")
170 $this->
setType($this->ARCHIVE_XML);
171 $this->
setName(
time() .
'__' . $this->
ilias->getSetting(
'inst_id') .
'__crs_' . $this->course_obj->getId());
176 $this->course_files_obj->addArchiveSubDirectory($this->
getName());
181 $this->course_xml_writer->start();
182 $this->course_files_obj->writeArchiveFile($this->course_xml_writer->getXML(), $this->
getName() .
'/' . $this->
getName() .
'.xml');
187 $this->course_files_obj->addArchiveSubDirectory($this->
getName() .
'/objects');
189 $this->copied_files =
array();
190 $this->
__addZipFiles($this->course_obj->getRefId(), $a_selection);
193 include_once(
"./Services/Export/classes/class.ilExport.php");
195 $this->
getName() .
'/index.html', $this->course_obj->getId(), $this->copied_files);
198 $this->
setSize($this->course_files_obj->zipArchive($this->getName(), $this->
getName() .
'.zip'));
209 $this->
setType($this->ARCHIVE_HTML);
211 $this->
setName($this->
getDate() .
'__' . $this->
ilias->getSetting(
'inst_id') .
'__crs_' . $this->course_obj->getId());
215 $this->course_files_obj->addArchiveSubDirectory($this->
getName());
218 $this->course_files_obj->addArchiveSubDirectory($this->
getName() .
'/objects');
225 $this->course_files_obj->createArchiveOnlineVersion($this->
getName());
228 $this->
setSize($this->course_files_obj->zipArchive($this->getName(), $this->
getName() .
'.zip'));
241 $next_id = $ilDB->nextId(
'crs_archives');
242 $query =
"INSERT INTO crs_archives (archive_id,course_id,archive_name,archive_type,archive_date,archive_size,archive_lang) " .
244 $ilDB->quote($next_id,
'integer') .
", " .
245 $ilDB->quote($this->course_obj->getId(),
'integer') .
"," .
246 $ilDB->quote($this->getName(),
'text') .
"," .
247 $ilDB->quote($this->getType(),
'integer') .
", " .
248 $ilDB->quote($this->getDate(),
'integer') .
"," .
249 $ilDB->quote($this->getSize(),
'integer') .
"," .
250 $ilDB->quote($this->getLanguage(),
'text') .
258 public function delete($a_id)
265 $this->course_files_obj->deleteArchive($this->archives[$a_id][
"archive_name"]);
267 $query =
"DELETE FROM crs_archives " .
268 "WHERE course_id = " . $ilDB->quote($this->course_obj->getId(),
'integer') .
" " .
269 "AND archive_id = " . $ilDB->quote($a_id,
'integer') .
" ";
285 if (!is_object($this->course_files_obj)) {
286 include_once(
'Modules/Course/classes/class.ilFSStorageCourse.php');
294 if (!is_object($this->course_xml_writer)) {
295 include_once
"./Modules/Course/classes/class.ilCourseXMLWriter.php";
310 $this->course_obj->initCourseItemObject();
311 $this->course_obj->items_obj->setParentId($a_parent_id);
313 foreach ($this->course_obj->items_obj->getAllItems() as $item) {
317 $action = $a_selection[$item[
'child']];
318 if ($a_selection ==
"") {
327 $abs_file_name = $tmp_obj->getXMLZip();
329 include_once(
"./Services/Export/classes/class.ilExport.php");
332 if (!@is_file($abs_file_name)) {
338 if ($abs_file_name !=
"") {
340 $new_name = basename($abs_file_name);
341 $this->course_files_obj->copyFile($abs_file_name, $this->course_files_obj->getArchiveDirectory() .
'/' .
342 $this->
getName() .
'/' . $new_name);
343 if (is_file($this->course_files_obj->getArchiveDirectory() .
'/' .
344 $this->
getName() .
'/' . $new_name)) {
345 $this->copied_files[] =
array(
"title" => $item[
'title'],
346 "file" => $new_name,
"type" => $item[
'type']);
358 $this->course_obj->initCourseItemObject();
359 $this->course_obj->items_obj->setParentId($a_parent_id);
361 foreach ($this->course_obj->items_obj->getAllItems() as $item) {
365 if ($abs_dir_name = $tmp_obj->getHTMLDirectory()) {
366 $new_name =
'il_' . $this->
ilias->getSetting(
'inst_id') .
'_' . $tmp_obj->getType() .
'_' . $item[
'obj_id'];
368 $this->course_files_obj->addDirectory($this->
getName() .
'/objects/' . $new_name);
369 $this->course_files_obj->rCopy($abs_dir_name, $this->
getName() .
'/objects/' . $new_name);
372 $this->html_files[
"$item[obj_id]"] =
"objects/" . $new_name .
"/index.html";
387 $lng->loadLanguageModule(
'crs');
392 $tmp_tpl =
new ilTemplate(
"tpl.crs_export.html",
true,
true,
'Modules/Course');
394 $this->course_files_obj->copyFile(
395 $tpl->tplPath .
'/' . $ilias->account->prefs[
"style"] .
'.css',
396 $this->course_files_obj->getArchiveDirectory() .
'/' . $this->
getName() .
'/default.css' 399 $tmp_tpl->setVariable(
'TITLE',
$lng->txt(
'crs_export'));
400 $tmp_tpl->setVariable(
"CRS_STRUCTURE",
$lng->txt(
'crs_structure'));
403 $tmp_tpl->setVariable(
"DETAILS_TITLE",
$lng->txt(
"crs_details"));
406 $tmp_tpl->setVariable(
"TXT_SYLLABUS",
$lng->txt(
"crs_syllabus"));
407 $tmp_tpl->setVariable(
"TXT_CONTACT",
$lng->txt(
"crs_contact"));
408 $tmp_tpl->setVariable(
"TXT_CONTACT_NAME",
$lng->txt(
"crs_contact_name"));
409 $tmp_tpl->setVariable(
"TXT_CONTACT_RESPONSIBILITY",
$lng->txt(
"crs_contact_responsibility"));
410 $tmp_tpl->setVariable(
"TXT_CONTACT_EMAIL",
$lng->txt(
"crs_contact_email"));
411 $tmp_tpl->setVariable(
"TXT_CONTACT_PHONE",
$lng->txt(
"crs_contact_phone"));
412 $tmp_tpl->setVariable(
"TXT_CONTACT_CONSULTATION",
$lng->txt(
"crs_contact_consultation"));
413 $tmp_tpl->setVariable(
"TXT_DATES",
$lng->txt(
"crs_dates"));
414 $tmp_tpl->setVariable(
"TXT_ACTIVATION",
$lng->txt(
"crs_activation"));
415 $tmp_tpl->setVariable(
"TXT_SUBSCRIPTION",
$lng->txt(
"crs_subscription"));
416 $tmp_tpl->setVariable(
"TXT_ARCHIVE",
$lng->txt(
"crs_archive"));
419 $tmp_tpl->setVariable(
"SYLLABUS", nl2br($this->course_obj->getSyllabus() ?
420 $this->course_obj->getSyllabus() :
421 $lng->txt(
"crs_not_available")));
423 $tmp_tpl->setVariable(
"CONTACT_NAME", $this->course_obj->getContactName() ?
424 $this->course_obj->getContactName() :
425 $lng->txt(
"crs_not_available"));
426 $tmp_tpl->setVariable(
"CONTACT_RESPONSIBILITY", $this->course_obj->getContactResponsibility() ?
427 $this->course_obj->getContactResponsibility() :
428 $lng->txt(
"crs_not_available"));
429 $tmp_tpl->setVariable(
"CONTACT_PHONE", $this->course_obj->getContactPhone() ?
430 $this->course_obj->getContactPhone() :
431 $lng->txt(
"crs_not_available"));
432 $tmp_tpl->setVariable(
"CONTACT_CONSULTATION", nl2br($this->course_obj->getContactConsultation() ?
433 $this->course_obj->getContactConsultation() :
434 $lng->txt(
"crs_not_available")));
435 if ($this->course_obj->getContactEmail()) {
436 $tmp_tpl->setCurrentBlock(
"email_link");
437 #$tmp_tpl->setVariable("EMAIL_LINK","ilias.php?baseClass=ilMailGUI&type=new&rcp_to=".$this->course_obj->getContactEmail()); 438 $tmp_tpl->setVariable(
"CONTACT_EMAIL", $this->course_obj->getContactEmail());
439 $tmp_tpl->parseCurrentBlock();
441 $tmp_tpl->setCurrentBlock(
"no_mail");
442 $tmp_tpl->setVariable(
"NO_CONTACT_EMAIL", $this->course_obj->getContactEmail());
443 $tmp_tpl->parseCurrentBlock();
445 if ($this->course_obj->getActivationUnlimitedStatus()) {
446 $tmp_tpl->setVariable(
"ACTIVATION",
$lng->txt(
'crs_unlimited'));
448 $str =
$lng->txt(
"crs_from") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getActivationStart()) .
" " .
449 $lng->txt(
"crs_to") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getActivationEnd());
450 $tmp_tpl->setVariable(
"ACTIVATION", $str);
452 if ($this->course_obj->getSubscriptionUnlimitedStatus()) {
453 $tmp_tpl->setVariable(
"SUBSCRIPTION",
$lng->txt(
'crs_unlimited'));
455 $str =
$lng->txt(
"crs_from") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getSubscriptionStart()) .
" " .
456 $lng->txt(
"crs_to") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getSubscriptionEnd());
457 $tmp_tpl->setVariable(
"SUBSCRIPTION", $str);
459 if ($this->course_obj->getArchiveType() == $this->course_obj->ARCHIVE_DISABLED) {
460 $tmp_tpl->setVariable(
"ARCHIVE",
$lng->txt(
'crs_archive_disabled'));
462 $str =
$lng->txt(
"crs_from") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getArchiveStart()) .
" " .
463 $lng->txt(
"crs_to") .
" " . strftime(
"%Y-%m-%d %R", $this->course_obj->getArchiveEnd());
464 $tmp_tpl->setVariable(
"ARCHIVE", $str);
467 $this->structure =
'';
469 $tmp_tpl->setVariable(
"STRUCTURE", $this->structure);
471 $this->course_files_obj->writeArchiveFile($tmp_tpl->get(), $this->
getName() .
'/index.html');
478 $this->course_obj->initCourseItemObject();
479 $this->course_obj->items_obj->setParentId($a_parent_id);
481 $items = $this->course_obj->items_obj->getAllItems();
483 foreach ($items as
$key => $item) {
490 $this->structure .=
"<ul>";
493 $this->structure .=
"<li>";
495 if (isset($this->html_files[
"$item[obj_id]"])) {
496 $link =
"<a href=\"./" . $this->html_files[
"$item[obj_id]"] .
"\">" . $item[
"title"] .
"</a>";
498 $link = $item[
'title'];
500 $this->structure .= $link;
501 $this->structure .=
"</li>";
505 if (
$key == (count($items) - 1)) {
506 $this->structure .=
"</ul>";
531 $this->archives =
array();
532 $query =
"SELECT * FROM crs_archives " .
533 "WHERE course_id = " . $ilDB->quote($this->course_obj->getId(),
'integer') .
" " .
534 "ORDER BY archive_date DESC";
538 $this->archives[
$row->archive_id][
"archive_id"] =
$row->archive_id;
539 $this->archives[
$row->archive_id][
"archive_type"] =
$row->archive_type;
540 $this->archives[
$row->archive_id][
"archive_date"] =
$row->archive_date;
541 $this->archives[
$row->archive_id][
"archive_size"] =
$row->archive_size;
542 $this->archives[
$row->archive_id][
"archive_name"] =
$row->archive_name;
543 $this->archives[
$row->archive_id][
"archive_lang"] =
$row->archive_lang;
__buildStructure(&$tmp_tpl, $a_parent_id)
query($sql, $a_handle_error=true)
Query.
if(!array_key_exists('StateId', $_REQUEST)) $id
cloneArchives()
Clone archives.
__addZipFiles($a_parent_id, $a_selection="")
Add zip files to folder.
addXML($a_selection="")
Add XML archive.
foreach($_POST as $key=> $value) $res
special template class to simplify handling of ITX/PEAR
__addHTMLFiles($a_parent_id)
redirection script todo: (a better solution should control the processing via a xml file) ...
Create styles array
The data for the language used.
static _getExportDirectory($a_obj_id, $a_type="xml", $a_obj_type="", $a_entity="")
Get export directory for an repository object.
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
static _generateIndexFile($a_filename, $a_obj_id, $a_files, $a_type="")
Generates an index.html file including links to all xml files included (for container exports) ...
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
setLanguage($a_lang_code)
__construct($course_obj)
Constructor.
static _getLastExportFileInformation($a_obj_id, $a_type="", $a_obj_type="")
Get last export file information.