ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilCmiXapiImporter Class Reference
+ Inheritance diagram for ilCmiXapiImporter:
+ Collaboration diagram for ilCmiXapiImporter:

Public Member Functions

 __construct ()
 ilCmiXapiImporter constructor. More...
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 Init the object creation from import. More...
 
 init ()
 
 __destruct ()
 if single import then deleteImportDirectiry More...
 
- Public Member Functions inherited from ilXmlImporter
 __construct ()
 
 setImport (ilImport $a_val)
 
 getImport ()
 
 init ()
 
 setInstallId (string $a_val)
 
 getInstallId ()
 
 setInstallUrl (string $a_val)
 
 getInstallUrl ()
 
 setSchemaVersion (string $a_val)
 
 getSchemaVersion ()
 
 setImportDirectory (string $a_val)
 
 getImportDirectory ()
 
 setSkipEntities (array $a_val)
 
 getSkipEntities ()
 
 exportedFromSameInstallation ()
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 
 finalProcessing (ilImportMapping $a_mapping)
 
 afterContainerImportProcessing (ilImportMapping $mapping)
 

Data Fields

array $manifest = []
 

Private Member Functions

 prepareSingleObject ()
 Builds the CmiXapi Object. More...
 
 prepareContainerObject ()
 Builds the CmiXapi Object. More...
 
 prepareLocalSourceStorage ()
 Creates a folder in the data directory of the document root. More...
 
 parseXmlFileProperties ()
 Parse xml file and set properties. More...
 
 updateNewObj ()
 Finalize the new CmiXapi Object. More...
 
 deleteImportDirectiry ()
 Delete the import directory. More...
 
 getImportDirectorySingle ()
 Gets the relative path to the Filesystem::temp Folder. More...
 
 getImportDirectoryContainer ()
 Gets the relative path to the Filesystem::temp Folder. More...
 

Private Attributes

array $_moduleProperties = []
 
ILIAS Filesystem Util Archive LegacyArchives $archives
 
ilCmiXapiDataSet $_dataset
 
ilObject $_cmixObj
 
string $_newId = null
 
string $_import_objId
 
ilImportMapping $_mapping
 
string $_relWebDir = 'lm_data/lm_'
 
string $_relImportDir = ''
 
bool $_isSingleImport = false
 
ILIAS DI Container $dic
 
ILIAS Filesystem Filesystem $filesystemWeb
 
ILIAS Filesystem Filesystem $filesystemTemp
 

Additional Inherited Members

- Protected Attributes inherited from ilXmlImporter
array $skip_entities = array()
 
ilImport $imp
 
string $install_id
 
string $install_url
 
string $schema_version
 
string $import_directory
 

Detailed Description

Definition at line 30 of file class.ilCmiXapiImporter.php.

Constructor & Destructor Documentation

◆ __construct()

ilCmiXapiImporter::__construct ( )

ilCmiXapiImporter constructor.

Definition at line 61 of file class.ilCmiXapiImporter.php.

References $DIC, and ILIAS\GlobalScreen\Provider\__construct().

62  {
64  global $DIC;
65  $this->dic = $DIC;
66  $this->filesystemWeb = $DIC->filesystem()->web();
67  $this->filesystemTemp = $DIC->filesystem()->temp();
68  $this->archives = $DIC->legacyArchives();
69  $this->_dataset = new ilCmiXapiDataSet();
70  $this->_dataset->_cmixSettingsProperties['Title'] = '';
71  $this->_dataset->_cmixSettingsProperties['Description'] = '';
72  //todo: at the moment restricted to one module in xml file, extend?
73  }
global $DIC
Definition: shib_login.php:22
__construct(Container $dic, ilPlugin $plugin)
+ Here is the call graph for this function:

◆ __destruct()

ilCmiXapiImporter::__destruct ( )

if single import then deleteImportDirectiry

Definition at line 294 of file class.ilCmiXapiImporter.php.

References deleteImportDirectiry().

295  {
296  if ($this->_isSingleImport) {
297  $this->deleteImportDirectiry();
298  }
299  }
deleteImportDirectiry()
Delete the import directory.
+ Here is the call graph for this function:

Member Function Documentation

◆ deleteImportDirectiry()

ilCmiXapiImporter::deleteImportDirectiry ( )
private

Delete the import directory.

Exceptions

Definition at line 255 of file class.ilCmiXapiImporter.php.

Referenced by __destruct().

255  : self
256  {
257  $this->filesystemTemp->delete($this->_relImportDir);
258  return $this;
259  }
+ Here is the caller graph for this function:

◆ getImportDirectoryContainer()

ilCmiXapiImporter::getImportDirectoryContainer ( )
private

Gets the relative path to the Filesystem::temp Folder.

Returns
$this

Definition at line 277 of file class.ilCmiXapiImporter.php.

References ilXmlImporter\getImportDirectory().

Referenced by importXmlRepresentation().

277  : self
278  {
279  $importTempDir = $this->getImportDirectory();
280  $dirArr = array_reverse(explode('/', $importTempDir));
281  $this->_relImportDir = $dirArr[3] . '/' . $dirArr[2] . '/' . $dirArr[1] . '/' . $dirArr[0];
282 
283  return $this;
284  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getImportDirectorySingle()

ilCmiXapiImporter::getImportDirectorySingle ( )
private

Gets the relative path to the Filesystem::temp Folder.

Returns
$this

Definition at line 265 of file class.ilCmiXapiImporter.php.

References ilXmlImporter\getImportDirectory().

Referenced by importXmlRepresentation().

265  : self
266  {
267  $importTempDir = $this->getImportDirectory();
268  $dirArr = array_reverse(explode('/', $importTempDir));
269  $this->_relImportDir = $dirArr[1] . '/' . $dirArr[0];
270  return $this;
271  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ importXmlRepresentation()

ilCmiXapiImporter::importXmlRepresentation ( string  $a_entity,
string  $a_id,
string  $a_xml,
ilImportMapping  $a_mapping 
)

Init the object creation from import.

Exceptions

Definition at line 80 of file class.ilCmiXapiImporter.php.

References getImportDirectoryContainer(), getImportDirectorySingle(), ilImportMapping\getMapping(), parseXmlFileProperties(), prepareContainerObject(), prepareLocalSourceStorage(), prepareSingleObject(), and updateNewObj().

80  : void
81  {
82  $this->_import_objId = $a_id;
83  $this->_mapping = $a_mapping;
84 
85  if ($this->_newId = $a_mapping->getMapping('components/ILIAS/Container', 'objs', (string) $this->_import_objId)) {
86  // container content
87  $this->prepareContainerObject();
89  } else {
90  // single object
91  $this->prepareSingleObject();
92  $this->getImportDirectorySingle();
93  $this->_isSingleImport = true;
94  }
96  $this->parseXmlFileProperties();
97  $this->updateNewObj();
98  }
getImportDirectoryContainer()
Gets the relative path to the Filesystem::temp Folder.
prepareSingleObject()
Builds the CmiXapi Object.
prepareLocalSourceStorage()
Creates a folder in the data directory of the document root.
getMapping(string $a_comp, string $a_entity, string $a_old_id)
getImportDirectorySingle()
Gets the relative path to the Filesystem::temp Folder.
parseXmlFileProperties()
Parse xml file and set properties.
updateNewObj()
Finalize the new CmiXapi Object.
prepareContainerObject()
Builds the CmiXapi Object.
+ Here is the call graph for this function:

◆ init()

ilCmiXapiImporter::init ( )

Definition at line 287 of file class.ilCmiXapiImporter.php.

287  : void
288  {
289  }

◆ parseXmlFileProperties()

ilCmiXapiImporter::parseXmlFileProperties ( )
private

Parse xml file and set properties.

Returns
$this
Exceptions

Definition at line 168 of file class.ilCmiXapiImporter.php.

References null.

Referenced by importXmlRepresentation().

168  : self
169  {
170  $xmlRoot = null;
171  $xml = $this->filesystemTemp->readStream($this->_relImportDir . '/properties.xml');
172  if ($xml != false) {
173  $use_internal_errors = libxml_use_internal_errors(true);
174  $xmlRoot = simplexml_load_string((string) $xml);
175  libxml_use_internal_errors($use_internal_errors);
176  }
177  foreach ($this->_dataset->_cmixSettingsProperties as $key => $property) {
178  $this->_moduleProperties[$key] = trim($xmlRoot->$key->__toString());
179  }
180  return $this;
181  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the caller graph for this function:

◆ prepareContainerObject()

ilCmiXapiImporter::prepareContainerObject ( )
private

Builds the CmiXapi Object.

Definition at line 126 of file class.ilCmiXapiImporter.php.

References ilObjectFactory\getInstanceByObjId().

Referenced by importXmlRepresentation().

126  : void
127  {
128  $this->_newId = $this->_mapping->getMapping('components/ILIAS/Container', 'objs', (string) $this->_import_objId);
129  if (!is_null($this->_newId) && $this->_newId != "") {
130  // container content
131  $this->_cmixObj = ilObjectFactory::getInstanceByObjId((int) $this->_newId, false);
132  //$_SESSION['tst_import_subdir'] = $this->getImportPackageName();
133  $this->_cmixObj->save(); // this generates test id first time
134  //var_dump([$this->getImportDirectory(), $this->_import_dirname]); exit;
135  $this->_mapping->addMapping("components/ILIAS/CmiXapi", "cmix", (string) $this->_import_objId, $this->_newId);
136  }
137  $this->_cmixObj->save();
138  $this->_cmixObj->update();
139  }
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ prepareLocalSourceStorage()

ilCmiXapiImporter::prepareLocalSourceStorage ( )
private

Creates a folder in the data directory of the document root.

Exceptions

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

References ilFileUtils\getWebspaceDir().

Referenced by importXmlRepresentation().

146  : self
147  {
148  if (true === $this->filesystemTemp->has($this->_relImportDir . '/content.zip')) {
149  // $this->_hasContent = true;
150  $this->_relWebDir = $this->_relWebDir . $this->_cmixObj->getId();
151  if (false === $this->filesystemWeb->has($this->_relWebDir)) {
152  $this->filesystemWeb->createDir($this->_relWebDir);
153  $this->filesystemWeb->put($this->_relWebDir . '/content.zip', $this->filesystemTemp->read($this->_relImportDir . '/content.zip'));
154  $webDataDir = ilFileUtils::getWebspaceDir();
155  $this->archives->unzip($webDataDir . "/" . $this->_relWebDir . "/content.zip");
156  $this->filesystemWeb->delete($this->_relWebDir . '/content.zip');
157  }
158  }
159  return $this;
160  }
static getWebspaceDir(string $mode="filesystem")
get webspace directory
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ prepareSingleObject()

ilCmiXapiImporter::prepareSingleObject ( )
private

Builds the CmiXapi Object.

Definition at line 103 of file class.ilCmiXapiImporter.php.

Referenced by importXmlRepresentation().

103  : self
104  {
105  // create new cmix object
106  $this->_cmixObj = new ilObjCmiXapi();
107  // set type of questionpool object
108  $this->_cmixObj->setType('cmix');
109  // set title of questionpool object to "dummy"
110  $this->_cmixObj->setTitle("dummy");
111  // set description of questionpool object
112  $this->_cmixObj->setDescription("test import");
113  // create the questionpool class in the ILIAS database (object_data table)
114  $this->_cmixObj->create(true);
115  $this->_newId = (string) $this->_cmixObj->getId();
116  $this->_mapping->addMapping('components/ILIAS/CmiXapi', 'cmix', (string) $this->_import_objId, (string) $this->_newId);
117  //$this->getImport();
118  $this->_cmixObj->update();
119 
120  return $this;
121  }
+ Here is the caller graph for this function:

◆ updateNewObj()

ilCmiXapiImporter::updateNewObj ( )
private

Finalize the new CmiXapi Object.

Returns
void

Definition at line 187 of file class.ilCmiXapiImporter.php.

Referenced by importXmlRepresentation().

187  : void
188  {
189  $this->_cmixObj->setTitle($this->_moduleProperties['Title'] . " " . $this->dic->language()->txt("copy_of_suffix"));
190  $this->_cmixObj->setDescription($this->_moduleProperties['Description']);
191  $this->_cmixObj->update();
192 
193  if ($this->_moduleProperties['LrsTypeId']) {
194  $this->_cmixObj->setLrsTypeId((int) $this->_moduleProperties['LrsTypeId']);
195  $this->_cmixObj->setLrsType(new ilCmiXapiLrsType((int) $this->_moduleProperties['LrsTypeId']));
196  }
197  $this->_cmixObj->setContentType((string) $this->_moduleProperties['ContentType']);
198  $this->_cmixObj->setSourceType((string) $this->_moduleProperties['SourceType']);
199  $this->_cmixObj->setActivityId((string) $this->_moduleProperties['ActivityId']);
200  $this->_cmixObj->setInstructions((string) $this->_moduleProperties['Instructions']);
201  // $this->_cmixObj->setOfflineStatus($this->_moduleProperties['OfflineStatus']);
202  $this->_cmixObj->setLaunchUrl((string) $this->_moduleProperties['LaunchUrl']);
203  $this->_cmixObj->setAuthFetchUrlEnabled((bool) $this->_moduleProperties['AuthFetchUrl']);
204  $this->_cmixObj->setLaunchMethod((string) $this->_moduleProperties['LaunchMethod']);
205  $this->_cmixObj->setLaunchMode((string) $this->_moduleProperties['LaunchMode']);
206  $this->_cmixObj->setMasteryScore((float) $this->_moduleProperties['MasteryScore']);
207  $this->_cmixObj->setKeepLpStatusEnabled((bool) $this->_moduleProperties['KeepLp']);
208  $this->_cmixObj->setPrivacyIdent((int) $this->_moduleProperties['PrivacyIdent']);
209  $this->_cmixObj->setPrivacyName((int) $this->_moduleProperties['PrivacyName']);
210  $this->_cmixObj->setUserPrivacyComment((string) $this->_moduleProperties['UsrPrivacyComment']);
211  $this->_cmixObj->setStatementsReportEnabled((bool) $this->_moduleProperties['ShowStatements']);
212  $this->_cmixObj->setXmlManifest((string) $this->_moduleProperties['XmlManifest']);
213  $this->_cmixObj->setVersion((int) $this->_moduleProperties['Version']);
214  $this->_cmixObj->setHighscoreEnabled((bool) $this->_moduleProperties['HighscoreEnabled']);
215  $this->_cmixObj->setHighscoreAchievedTS((bool) $this->_moduleProperties['HighscoreAchievedTs']);
216  $this->_cmixObj->setHighscorePercentage((bool) $this->_moduleProperties['HighscorePercentage']);
217  $this->_cmixObj->setHighscoreWtime((bool) $this->_moduleProperties['HighscoreWtime']);
218  $this->_cmixObj->setHighscoreOwnTable((bool) $this->_moduleProperties['HighscoreOwnTable']);
219  $this->_cmixObj->setHighscoreTopTable((bool) $this->_moduleProperties['HighscoreTopTable']);
220  $this->_cmixObj->setHighscoreTopNum((int) $this->_moduleProperties['HighscoreTopNum']);
221  $this->_cmixObj->setBypassProxyEnabled((bool) $this->_moduleProperties['BypassProxy']);
222  $this->_cmixObj->setOnlyMoveon((bool) $this->_moduleProperties['OnlyMoveon']);
223  $this->_cmixObj->setAchieved((bool) $this->_moduleProperties['Achieved']);
224  $this->_cmixObj->setAnswered((bool) $this->_moduleProperties['Answered']);
225  $this->_cmixObj->setCompleted((bool) $this->_moduleProperties['Completed']);
226  $this->_cmixObj->setFailed((bool) $this->_moduleProperties['Failed']);
227  $this->_cmixObj->setInitialized((bool) $this->_moduleProperties['Initialized']);
228  $this->_cmixObj->setPassed((bool) $this->_moduleProperties['Passed']);
229  $this->_cmixObj->setProgressed((bool) $this->_moduleProperties['Progressed']);
230  $this->_cmixObj->setSatisfied((bool) $this->_moduleProperties['Satisfied']);
231  $this->_cmixObj->setTerminated((bool) $this->_moduleProperties['Terminated']);
232  $this->_cmixObj->setHideData((bool) $this->_moduleProperties['HideData']);
233  $this->_cmixObj->setTimestamp((bool) $this->_moduleProperties['Timestamp']);
234  $this->_cmixObj->setDuration((bool) $this->_moduleProperties['Duration']);
235  $this->_cmixObj->setNoSubstatements((bool) $this->_moduleProperties['NoSubstatements']);
236  $this->_cmixObj->setPublisherId((string) $this->_moduleProperties['PublisherId']);
237  // $this->_cmixObj->setAnonymousHomepage($this->_moduleProperties['AnonymousHomepage']);
238  $this->_cmixObj->setMoveOn((string) $this->_moduleProperties['MoveOn']);
239  $this->_cmixObj->setLaunchParameters((string) $this->_moduleProperties['LaunchParameters']);
240  $this->_cmixObj->setEntitlementKey((string) $this->_moduleProperties['EntitlementKey']);
241  $this->_cmixObj->setSwitchToReviewEnabled((bool) $this->_moduleProperties['SwitchToReview']);
242  if(isset($this->_moduleProperties['DeleteData'])) {
243  $this->_cmixObj->setDeleteData((int) $this->_moduleProperties['DeleteData']);
244  }
245  $this->_cmixObj->save();
246  $this->_cmixObj->updateMetaData();
247 
248  }
+ Here is the caller graph for this function:

Field Documentation

◆ $_cmixObj

ilObject ilCmiXapiImporter::$_cmixObj
private

Definition at line 39 of file class.ilCmiXapiImporter.php.

◆ $_dataset

ilCmiXapiDataSet ilCmiXapiImporter::$_dataset
private

Definition at line 37 of file class.ilCmiXapiImporter.php.

◆ $_import_objId

string ilCmiXapiImporter::$_import_objId
private

Definition at line 43 of file class.ilCmiXapiImporter.php.

◆ $_isSingleImport

bool ilCmiXapiImporter::$_isSingleImport = false
private

Definition at line 51 of file class.ilCmiXapiImporter.php.

◆ $_mapping

ilImportMapping ilCmiXapiImporter::$_mapping
private

Definition at line 45 of file class.ilCmiXapiImporter.php.

◆ $_moduleProperties

array ilCmiXapiImporter::$_moduleProperties = []
private

Definition at line 32 of file class.ilCmiXapiImporter.php.

◆ $_newId

string ilCmiXapiImporter::$_newId = null
private

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

◆ $_relImportDir

string ilCmiXapiImporter::$_relImportDir = ''
private

Definition at line 49 of file class.ilCmiXapiImporter.php.

◆ $_relWebDir

string ilCmiXapiImporter::$_relWebDir = 'lm_data/lm_'
private

Definition at line 47 of file class.ilCmiXapiImporter.php.

◆ $archives

ILIAS Filesystem Util Archive LegacyArchives ilCmiXapiImporter::$archives
private

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

◆ $dic

ILIAS DI Container ilCmiXapiImporter::$dic
private

Definition at line 53 of file class.ilCmiXapiImporter.php.

◆ $filesystemTemp

ILIAS Filesystem Filesystem ilCmiXapiImporter::$filesystemTemp
private

Definition at line 57 of file class.ilCmiXapiImporter.php.

◆ $filesystemWeb

ILIAS Filesystem Filesystem ilCmiXapiImporter::$filesystemWeb
private

Definition at line 55 of file class.ilCmiXapiImporter.php.

◆ $manifest

array ilCmiXapiImporter::$manifest = []

Definition at line 35 of file class.ilCmiXapiImporter.php.


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