ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilExportContainer Class Reference

Export Container. More...

+ Inheritance diagram for ilExportContainer:
+ Collaboration diagram for ilExportContainer:

Public Member Functions

 __construct (ilExportOptions $eo)
 Constructor. More...
 
 exportObject ($a_type, $a_id, $a_target_release="")
 Export a container. More...
 
- Public Member Functions inherited from ilExport
 __construct ()
 Default constructor. More...
 
 getConfig ($a_comp)
 Get configuration (note that configurations are optional, null may be returned!) More...
 
 exportObject ($a_type, $a_id, $a_target_release="")
 Export an ILIAS object (the object type must be known by objDefinition) More...
 
 exportEntity ( $a_entity, $a_id, $a_target_release, $a_component, $a_title, $a_export_dir, $a_type_for_file="")
 Export an ILIAS entity. More...
 
 processExporter ($a_comp, $a_class, $a_entity, $a_target_release, $a_id)
 Process exporter. More...
 

Protected Member Functions

 manifestWriterBegin ($a_type, $a_id, $a_target_release)
 Write container manifest. More...
 
 addContainer ()
 Add container description. More...
 
 addSubitems ($a_id, $a_type, $a_target_release)
 Add subitems. More...
 
 manifestWriterEnd ($a_type, $a_id, $a_target_release)
 Write manifest footer. More...
 

Private Attributes

 $cont_export_dir = ''
 
 $cont_manifest_writer = null
 
 $eo = null
 

Additional Inherited Members

- Static Public Member Functions inherited from ilExport
static _getValidExportSubItems ($a_ref_id)
 Get a list of subitems of a repository resource, that implement the export. More...
 
static _getLastExportFileDate ($a_obj_id, $a_type="", $a_obj_type="")
 Get date of last export file. More...
 
static _getLastExportFileInformation ($a_obj_id, $a_type="", $a_obj_type="")
 Get last export file information. More...
 
static _getExportDirectory ($a_obj_id, $a_type="xml", $a_obj_type="", $a_entity="")
 Get export directory for an repository object. More...
 
static _getExportFiles ($a_obj_id, $a_export_types="", $a_obj_type="")
 Get Export Files for a repository object. More...
 
static _createExportDirectory ($a_obj_id, $a_export_type="xml", $a_obj_type="")
 
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) More...
 
- Static Public Attributes inherited from ilExport
static $new_file_structure = array('cat','exc','crs','sess','file','grp','frm', 'usr', 'catr', 'crsr', 'grpr')
 
static $export_implementer = array("tst", "lm", "glo", "sahs")
 
- Protected Attributes inherited from ilExport
 $log
 
 $configs = array()
 

Detailed Description

Export Container.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om
Version
$Id$

Definition at line 15 of file class.ilExportContainer.php.

Constructor & Destructor Documentation

◆ __construct()

ilExportContainer::__construct ( ilExportOptions  $eo)

Constructor.

Parameters
ilExportOptions$eo
Returns

Definition at line 27 of file class.ilExportContainer.php.

References $eo.

28  {
29  $this->eo = $eo;
30  parent::__construct();
31  }

Member Function Documentation

◆ addContainer()

ilExportContainer::addContainer ( )
protected

Add container description.

Returns

Definition at line 95 of file class.ilExportContainer.php.

Referenced by exportObject().

96  {
97  }
+ Here is the caller graph for this function:

◆ addSubitems()

ilExportContainer::addSubitems (   $a_id,
  $a_type,
  $a_target_release 
)
protected

Add subitems.

Parameters
object$a_id
object$a_type
Returns

Definition at line 106 of file class.ilExportContainer.php.

References $DIC, ilExport\_getExportDirectory(), ilObject\_lookupObjId(), ilObject\_lookupType(), ilExportFileInfo\lookupLastExport(), ilUtil\makeDirParents(), and ilUtil\unzip().

Referenced by exportObject().

107  {
108  global $DIC;
109 
110  $logger =
111 
112  $set_number = 1;
113  foreach ($this->eo->getSubitemsForExport() as $ref_id) {
114  // get last export file
115  $obj_id = ilObject::_lookupObjId($ref_id);
116 
117  $expi = ilExportFileInfo::lookupLastExport($obj_id, 'xml', $a_target_release);
118 
119  if (!$expi instanceof ilExportFileInfo) {
120  $this->log->warning('Cannot find export file for refId ' . $ref_id . ', type ' . ilObject::_lookupType($a_id));
121  continue;
122  }
123 
124  $exp_dir = ilExport::_getExportDirectory($obj_id, 'xml', ilObject::_lookupType($obj_id));
125  $exp_full = $exp_dir . DIRECTORY_SEPARATOR . $expi->getFilename();
126 
127  $this->log->debug('Zip path ' . $exp_full);
128 
129  // Unzip
130  ilUtil::unzip($exp_full, true, false);
131 
132  // create set directory
133  ilUtil::makeDirParents($this->cont_export_dir . DIRECTORY_SEPARATOR . 'set_' . $set_number);
134 
135  // cut .zip
136  $new_path_rel = 'set_' . $set_number . DIRECTORY_SEPARATOR . $expi->getBasename();
137  $new_path_abs = $this->cont_export_dir . DIRECTORY_SEPARATOR . $new_path_rel;
138 
139  $this->log->debug($new_path_rel . ' ' . $new_path_abs);
140 
141  // Move export
142  rename(
143  $exp_dir . DIRECTORY_SEPARATOR . $expi->getBasename(),
144  $new_path_abs
145  );
146 
147  $this->log->debug($exp_dir . DIRECTORY_SEPARATOR . $expi->getBasename() . ' -> ' . $new_path_abs);
148 
149  // Delete latest container xml of source
150  if ($a_id == $obj_id) {
151  $expi->delete();
152  if (file_exists($exp_full)) {
153  $this->log->info('Deleting' . $exp_full);
154  unlink($exp_full);
155  }
156  }
157 
158  $this->cont_manifest_writer->xmlElement(
159  'ExportSet',
160  array(
161  'Path' => $new_path_rel,
162  'Type' => ilObject::_lookupType($obj_id)
163  )
164  );
165 
166 
167  ++$set_number;
168  }
169  }
static makeDirParents($a_dir)
Create a new directory and all parent directories.
global $DIC
Definition: saml.php:7
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static _lookupObjId($a_id)
static lookupLastExport($a_obj_id, $a_type, $a_version='')
Lookup last export.
Stores information of creation date and versions of export files
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getExportDirectory($a_obj_id, $a_type="xml", $a_obj_type="", $a_entity="")
Get export directory for an repository object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportObject()

ilExportContainer::exportObject (   $a_type,
  $a_id,
  $a_target_release = "" 
)

Export a container.

Parameters
object$a_type
object$a_obj_id
object$a_target_release
Returns

Definition at line 41 of file class.ilExportContainer.php.

References $a_type, $GLOBALS, ilExport\$log, ilExport\_createExportDirectory(), ilExport\_getExportDirectory(), addContainer(), addSubitems(), ilUtil\delDir(), ILIAS_VERSION_NUMERIC, ilUtil\makeDirParents(), manifestWriterBegin(), manifestWriterEnd(), and ilUtil\zip().

42  {
43  $log = $GLOBALS['DIC']->logger()->exp();
44 
45  // if no target release specified, use latest major release number
46  if ($a_target_release == "") {
47  $v = explode(".", ILIAS_VERSION_NUMERIC);
48  $a_target_release = $v[0] . "." . $v[1] . ".0";
49  }
50 
51  // Create base export directory
53  $export_dir = ilExport::_getExportDirectory($a_id, "xml", $a_type);
54  $ts = time();
55  $sub_dir = $ts . "__" . IL_INST_ID . "__" . $a_type . "_" . $a_id;
56 
57  $this->cont_export_dir = $export_dir . DIRECTORY_SEPARATOR . $sub_dir;
58  ilUtil::makeDirParents($this->cont_export_dir);
59 
60  $log->debug('Using base directory: ' . $this->export_run_dir);
61 
62  $this->manifestWriterBegin($a_type, $a_id, $a_target_release);
63  $this->addContainer();
64  $this->addSubitems($a_id, $a_type, $a_target_release);
65  $this->manifestWriterEnd($a_type, $a_id, $a_target_release);
66 
67  ilUtil::zip($this->cont_export_dir, $this->cont_export_dir . '.zip');
68  ilUtil::delDir($this->cont_export_dir);
69  }
static _createExportDirectory($a_obj_id, $a_export_type="xml", $a_obj_type="")
static makeDirParents($a_dir)
Create a new directory and all parent directories.
const ILIAS_VERSION_NUMERIC
manifestWriterEnd($a_type, $a_id, $a_target_release)
Write manifest footer.
$a_type
Definition: workflow.php:92
manifestWriterBegin($a_type, $a_id, $a_target_release)
Write container manifest.
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
addContainer()
Add container description.
addSubitems($a_id, $a_type, $a_target_release)
Add subitems.
static _getExportDirectory($a_obj_id, $a_type="xml", $a_obj_type="", $a_entity="")
Get export directory for an repository object.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
+ Here is the call graph for this function:

◆ manifestWriterBegin()

ilExportContainer::manifestWriterBegin (   $a_type,
  $a_id,
  $a_target_release 
)
protected

Write container manifest.

Returns

Definition at line 75 of file class.ilExportContainer.php.

References $a_type, and ilObject\_lookupTitle().

Referenced by exportObject().

76  {
77  include_once "./Services/Xml/classes/class.ilXmlWriter.php";
78  $this->cont_manifest_writer = new ilXmlWriter();
79  $this->cont_manifest_writer->xmlHeader();
80  $this->cont_manifest_writer->xmlStartTag(
81  'Manifest',
82  array(
83  "MainEntity" => $a_type,
84  "Title" => ilObject::_lookupTitle($a_id),
85  "TargetRelease" => $a_target_release,
86  "InstallationId" => IL_INST_ID,
87  "InstallationUrl" => ILIAS_HTTP_PATH)
88  );
89  }
XML writer class.
static _lookupTitle($a_id)
lookup object title
$a_type
Definition: workflow.php:92
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ manifestWriterEnd()

ilExportContainer::manifestWriterEnd (   $a_type,
  $a_id,
  $a_target_release 
)
protected

Write manifest footer.

Parameters
object$a_type
object$a_id
object$a_target_release
Returns

Definition at line 178 of file class.ilExportContainer.php.

Referenced by exportObject().

179  {
180  $this->cont_manifest_writer->xmlEndTag('Manifest');
181  $this->log->debug($this->cont_export_dir . DIRECTORY_SEPARATOR . 'manifest.xml');
182  $this->cont_manifest_writer->xmlDumpFile($this->cont_export_dir . DIRECTORY_SEPARATOR . 'manifest.xml', true);
183  }
+ Here is the caller graph for this function:

Field Documentation

◆ $cont_export_dir

ilExportContainer::$cont_export_dir = ''
private

Definition at line 17 of file class.ilExportContainer.php.

◆ $cont_manifest_writer

ilExportContainer::$cont_manifest_writer = null
private

Definition at line 18 of file class.ilExportContainer.php.

◆ $eo

ilExportContainer::$eo = null
private

Definition at line 19 of file class.ilExportContainer.php.

Referenced by __construct().


The documentation for this class was generated from the following file: