ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilImport Class Reference

Import class. More...

+ Inheritance diagram for ilImport:
+ Collaboration diagram for ilImport:

Public Member Functions

 __construct ($a_target_id=0)
 Constructor. More...
 
 getConfig ($a_comp)
 Get configuration (note that configurations are optional, null may be returned!) More...
 
 getMapping ()
 Get mapping object. More...
 
 setEntityTypes ($a_val)
 Set entity types. More...
 
 getEntityTypes ()
 Get entity types. More...
 
 addSkipEntity ($a_component, $a_entity, $skip=true)
 Add skip entity. More...
 
 setCurrentDataset ($a_val)
 Set currrent dataset. More...
 
 getCurrentDataset ()
 Get currrent dataset. More...
 
 afterEntityTypes ()
 After entity types are parsed. More...
 
 importRecord ($a_entity, $a_types, $a_record)
 After entity types are parsed. More...
 
 importEntity ($a_tmp_file, $a_filename, $a_entity, $a_component, $a_copy_file=false)
 Import entity. More...
 
 importObject ($a_new_obj, $a_tmp_file, $a_filename, $a_type, $a_comp="", $a_copy_file=false)
 Import repository object export file. More...
 
 importFromDirectory ($dir, $a_type, $a_comp)
 Import from directory. More...
 
 getTemporaryImportDir ()
 Get temporary import directory. More...
 
 processItemXml ($a_entity, $a_schema_version, $a_id, $a_xml, $a_install_id, $a_install_url)
 Process item xml. More...
 

Protected Member Functions

 setTemporaryImportDir ($a_val)
 Set temporary import directory. More...
 
 doImportObject ($dir, $a_type, $a_component="", $a_tmpdir="")
 Import repository object export file. More...
 

Protected Attributes

 $log
 
 $install_id = ""
 
 $install_url = ""
 
 $entities = ""
 
 $tmp_import_dir = ""
 
 $mapping = null
 
 $skip_entity = array()
 
 $configs = array()
 

Detailed Description

Import class.

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 11 of file class.ilImport.php.

Constructor & Destructor Documentation

◆ __construct()

ilImport::__construct (   $a_target_id = 0)

Constructor.

Parameters
intid of parent container
Returns

Reimplemented in ilImportContainer.

Definition at line 33 of file class.ilImport.php.

34 {
35 include_once("./Services/Export/classes/class.ilImportMapping.php");
36 $this->mapping = new ilImportMapping();
37 $this->mapping->setTagetId($a_target_id);
38 $this->log = ilLoggerFactory::getLogger('exp');
39 }
static getLogger($a_component_id)
Get component logger.

References ilLoggerFactory\getLogger().

+ Here is the call graph for this function:

Member Function Documentation

◆ addSkipEntity()

ilImport::addSkipEntity (   $a_component,
  $a_entity,
  $skip = true 
)

Add skip entity.

Parameters
string$a_valcomponent
string$a_valentity

Definition at line 107 of file class.ilImport.php.

108 {
109 $this->skip_entity[$a_component][$a_entity] = $skip;
110 }

◆ afterEntityTypes()

ilImport::afterEntityTypes ( )

After entity types are parsed.

Definition at line 136 of file class.ilImport.php.

137 {
138 $this->getCurrentDataset()->setImport($this);
139 }
getCurrentDataset()
Get currrent dataset.

References getCurrentDataset().

+ Here is the call graph for this function:

◆ doImportObject()

ilImport::doImportObject (   $dir,
  $a_type,
  $a_component = "",
  $a_tmpdir = "" 
)
protected

Import repository object export file.

Parameters
stringabsolute filename of temporary upload file

Definition at line 248 of file class.ilImport.php.

249 {
250 global $objDefinition, $tpl;
251
252 if ($a_component == "")
253 {
254 $comp = $objDefinition->getComponentForType($a_type);
255 $class = $objDefinition->getClassName($a_type);
256 }
257 else
258 {
259 $comp = $a_component;
260 $c = explode("/", $comp);
261 $class = $c[count($c) - 1];
262 }
263
264 $this->comp = $comp;
265
266 // get import class
267 $success = true;
268
269 // process manifest file
270 include_once("./Services/Export/classes/class.ilManifestParser.php");
271 if (!is_file($dir."/manifest.xml"))
272 {
273 include_once("./Services/Export/exceptions/class.ilManifestFileNotFoundImportException.php");
274 $mess = (DEVMODE)
275 ? 'Manifest file not found: "'.$dir."/manifest.xml".'".'
276 : 'Manifest file not found: "manifest.xml."';
278 $e->setManifestDir($dir);
279 $e->setTmpDir($a_tmpdir);
280 throw $e;
281 }
282 $parser = new ilManifestParser($dir."/manifest.xml");
283 $this->mapping->setInstallUrl($parser->getInstallUrl());
284 $this->mapping->setInstallId($parser->getInstallId());
285
286 // check for correct type
287 if ($parser->getMainEntity() != $a_type)
288 {
289 include_once("./Services/Export/exceptions/class.ilImportObjectTypeMismatchException.php");
290 $e = new ilImportObjectTypeMismatchException("Object type does not match. Import file has type '".$parser->getMainEntity()."' but import being processed for '".$a_type."'.");
291 throw $e;
292 }
293
294 // process export files
295 $expfiles = $parser->getExportFiles();
296
297 include_once("./Services/Export/classes/class.ilExportFileParser.php");
298 $all_importers = array();
299 foreach ($expfiles as $expfile)
300 {
301 $comp = $expfile["component"];
302 $comp_arr = explode("/", $comp);
303 $import_class_file = "./".$comp."/classes/class.il".$comp_arr[1]."Importer.php";
304 $class = "il".$comp_arr[1]."Importer";
305 include_once($import_class_file);
306 $this->importer = new $class();
307 $this->importer->setImport($this);
308 $all_importers[] = $this->importer;
309 $this->importer->setImportDirectory($dir);
310 $this->importer->init();
311 $this->current_comp = $comp;
312 try {
313 $this->log->debug("Process file: ".$dir."/".$expfile["path"]);
314 $parser = new ilExportFileParser($dir."/".$expfile["path"],$this, "processItemXml");
315 }
316 catch(Exception $e)
317 {
318 $this->log->error("Import failed: ".$e->getMessage());
319 throw $e;
320 }
321 }
322
323 // final processing
324 foreach ($all_importers as $imp)
325 {
326 $this->log->debug("Call finalProcessing for: ".get_class($imp));
327 $imp->finalProcessing($this->mapping);
328 }
329
330 // we should only get on mapping here
331 $top_mapping = $this->mapping->getMappingsOfEntity($this->comp, $a_type);
332 $new_id = (int) current($top_mapping);
333 return array(
334 'new_id' => $new_id,
335 'importers' => (array) $all_importers
336 );
337 }
global $tpl
Definition: ilias.php:8
$success
Definition: Utf8Test.php:87
manifest.xml file not found-exception for import
Manifest parser for ILIAS standard export files.

References $success, $tpl, and ilManifestFileNotFoundImportException\setManifestDir().

Referenced by importFromDirectory(), and importObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getConfig()

ilImport::getConfig (   $a_comp)

Get configuration (note that configurations are optional, null may be returned!)

Parameters
string$a_compcomponent (e.g. "Modules/Glossary")
Returns
ilImportConfig $a_comp configuration object or null
Exceptions
ilImportException

Definition at line 48 of file class.ilImport.php.

49 {
50 // if created, return existing config object
51 if (isset($this->configs[$a_comp]))
52 {
53 return $this->configs[$a_comp];
54 }
55
56 // create instance of export config object
57 $comp_arr = explode("/", $a_comp);
58 $a_class = "il".$comp_arr[1]."ImportConfig";
59 $import_config_file = "./".$a_comp."/classes/class.".$a_class.".php";
60 if (!is_file($import_config_file))
61 {
62 include_once("./Services/Export/exceptions/class.ilImportException.php");
63 throw new ilImportException('Component "'.$a_comp.'" does not provide ImportConfig class.');
64 }
65 include_once($import_config_file);
66 $imp_config = new $a_class();
67 $this->configs[$a_comp] = $imp_config;
68
69 return $imp_config;
70 }
General import exception.

◆ getCurrentDataset()

ilImport::getCurrentDataset ( )

Get currrent dataset.

Returns
object currrent dataset

Definition at line 128 of file class.ilImport.php.

129 {
130 return $this->current_dataset;
131 }

Referenced by afterEntityTypes(), and importRecord().

+ Here is the caller graph for this function:

◆ getEntityTypes()

ilImport::getEntityTypes ( )
final

Get entity types.

Returns
array entity types

Definition at line 96 of file class.ilImport.php.

97 {
98 return $this->entity_types;
99 }

◆ getMapping()

ilImport::getMapping ( )

Get mapping object.

Returns
ilImportMapping ilImportMapping

Definition at line 76 of file class.ilImport.php.

77 {
78 return $this->mapping;
79 }

References $mapping.

Referenced by ilImportContainer\createDummy(), ilImportContainer\doImportObject(), and processItemXml().

+ Here is the caller graph for this function:

◆ getTemporaryImportDir()

ilImport::getTemporaryImportDir ( )

Get temporary import directory.

Returns
string temporary import directory (used to unzip and read import)

Definition at line 238 of file class.ilImport.php.

239 {
241 }

References $tmp_import_dir.

◆ importEntity()

ilImport::importEntity (   $a_tmp_file,
  $a_filename,
  $a_entity,
  $a_component,
  $a_copy_file = false 
)
final

Import entity.

Definition at line 155 of file class.ilImport.php.

157 {
158 $this->importObject(null, $a_tmp_file, $a_filename, $a_entity, $a_component, $a_copy_file);
159 }
importObject($a_new_obj, $a_tmp_file, $a_filename, $a_type, $a_comp="", $a_copy_file=false)
Import repository object export file.

References importObject().

+ Here is the call graph for this function:

◆ importFromDirectory()

ilImport::importFromDirectory (   $dir,
  $a_type,
  $a_comp 
)

Import from directory.

Parameters

return

Definition at line 211 of file class.ilImport.php.

212 {
213 $ret = $this->doImportObject($dir, $a_type, $a_comp);
214
215 if(is_array($ret))
216 {
217 return $ret['new_id'];
218 }
219 return null;
220 }
doImportObject($dir, $a_type, $a_component="", $a_tmpdir="")
Import repository object export file.

References $ret, and doImportObject().

+ Here is the call graph for this function:

◆ importObject()

ilImport::importObject (   $a_new_obj,
  $a_tmp_file,
  $a_filename,
  $a_type,
  $a_comp = "",
  $a_copy_file = false 
)
final

Import repository object export file.

Parameters
stringabsolute filename of temporary upload file

Definition at line 167 of file class.ilImport.php.

169 {
170
171 // create temporary directory
172 $tmpdir = ilUtil::ilTempnam();
173 ilUtil::makeDir($tmpdir);
174 if ($a_copy_file)
175 {
176 copy($a_tmp_file, $tmpdir."/".$a_filename);
177 }
178 else
179 {
180 ilUtil::moveUploadedFile($a_tmp_file, $a_filename, $tmpdir."/".$a_filename);
181 }
182
183 $this->log->debug("unzip: ".$tmpdir."/".$a_filename);
184
185 ilUtil::unzip($tmpdir."/".$a_filename);
186 $dir = $tmpdir."/".substr($a_filename, 0, strlen($a_filename) - 4);
187
188 $this->setTemporaryImportDir($dir);
189
190 $this->log->debug("dir: ".$dir);
191
192 $ret = $this->doImportObject($dir, $a_type, $a_comp, $tmpdir);
193 $new_id = null;
194 if(is_array($ret))
195 {
196 $new_id = $ret['new_id'];
197 }
198
199 // delete temporary directory
200 ilUtil::delDir($tmpdir);
201
202 return $new_id;
203 }
setTemporaryImportDir($a_val)
Set temporary import directory.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static ilTempnam($a_temp_path=null)
Create a temporary file in an ILIAS writable directory.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...

References $ret, ilUtil\delDir(), doImportObject(), ilUtil\ilTempnam(), ilUtil\makeDir(), ilUtil\moveUploadedFile(), setTemporaryImportDir(), and ilUtil\unzip().

Referenced by importEntity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ importRecord()

ilImport::importRecord (   $a_entity,
  $a_types,
  $a_record 
)

After entity types are parsed.

Parameters

Definition at line 146 of file class.ilImport.php.

147 {
148 $this->getCurrentDataset()->importRecord($a_entity, $a_types, $a_record);
149 }

References getCurrentDataset().

+ Here is the call graph for this function:

◆ processItemXml()

ilImport::processItemXml (   $a_entity,
  $a_schema_version,
  $a_id,
  $a_xml,
  $a_install_id,
  $a_install_url 
)

Process item xml.

@global ilObjectDefinition $objDefinition

Definition at line 344 of file class.ilImport.php.

345 {
346 global $objDefinition;
347
348 // skip
349 if ($this->skip_entity[$this->current_comp][$a_entity])
350 {
351 return;
352 }
353
354 if($objDefinition->isRBACObject($a_entity) &&
355 $this->getMapping()->getMapping('Services/Container', 'imported', $a_id))
356 {
357 $this->log->info('Ignoring referenced '.$a_entity.' with id '.$a_id);
358 return;
359 }
360 $this->importer->setInstallId($a_install_id);
361 $this->importer->setInstallUrl($a_install_url);
362 $this->importer->setSchemaVersion($a_schema_version);
363 $this->importer->setSkipEntities($this->skip_entity);
364 $new_id = $this->importer->importXmlRepresentation($a_entity, $a_id, $a_xml, $this->mapping);
365
366 // Store information about imported obj_ids in mapping to avoid double imports of references
367 if($objDefinition->isRBACObject($a_entity))
368 {
369 $this->getMapping()->addMapping('Services/Container', 'imported', $a_id, 1);
370 }
371
372 // @TODO new id is not always set
373 if($new_id)
374 {
375 $this->mapping->addMapping($this->comp ,$a_entity, $a_id, $new_id);
376 }
377 }
getMapping()
Get mapping object.

References getMapping().

+ Here is the call graph for this function:

◆ setCurrentDataset()

ilImport::setCurrentDataset (   $a_val)

Set currrent dataset.

Parameters
objectcurrrent dataset

Definition at line 117 of file class.ilImport.php.

118 {
119 $this->current_dataset = $a_val;
120 }

◆ setEntityTypes()

ilImport::setEntityTypes (   $a_val)
final

Set entity types.

Parameters
arrayentity types

Definition at line 86 of file class.ilImport.php.

87 {
88 $this->entity_types = $a_val;
89 }

◆ setTemporaryImportDir()

ilImport::setTemporaryImportDir (   $a_val)
protected

Set temporary import directory.

Parameters
string$a_valtemporary import directory (used to unzip and read import)

Definition at line 228 of file class.ilImport.php.

229 {
230 $this->tmp_import_dir = $a_val;
231 }

Referenced by importObject().

+ Here is the caller graph for this function:

Field Documentation

◆ $configs

ilImport::$configs = array()
protected

Definition at line 25 of file class.ilImport.php.

◆ $entities

ilImport::$entities = ""
protected

Definition at line 20 of file class.ilImport.php.

◆ $install_id

ilImport::$install_id = ""
protected

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

◆ $install_url

ilImport::$install_url = ""
protected

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

◆ $log

ilImport::$log
protected

Definition at line 16 of file class.ilImport.php.

◆ $mapping

ilImport::$mapping = null
protected

Definition at line 23 of file class.ilImport.php.

Referenced by getMapping().

◆ $skip_entity

ilImport::$skip_entity = array()
protected

Definition at line 24 of file class.ilImport.php.

◆ $tmp_import_dir

ilImport::$tmp_import_dir = ""
protected

Definition at line 21 of file class.ilImport.php.

Referenced by getTemporaryImportDir().


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