ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilCmiXapiContentUploadImporter Class Reference
+ Collaboration diagram for ilCmiXapiContentUploadImporter:

Public Member Functions

 __construct (ilObjCmiXapi $object)
 ilCmiXapiContentUploadImporter constructor. More...
 
 ensureCreatedObjectDirectory ()
 
 importServerFile (string $serverFile)
 
 importFormUpload (array $fileData)
 
 getWebDataDirRelativeObjectDirectory ()
 

Data Fields

const RELATIVE_CONTENT_DIRECTORY_NAMEBASE = 'lm_data/lm_'
 
const RELATIVE_XSD_DIRECTORY = 'components/ILIAS/CmiXapi/xml/contentschema'
 
const IMP_FILE_EXTENSION_XML = 'xml'
 
const IMP_FILE_EXTENSION_ZIP = 'zip'
 
const CMI5_XML = 'cmi5.xml'
 
const CMI5_XSD = 'cmi5_v1_CourseStructure.xsd'
 
const TINCAN_XML = 'tincan.xml'
 
const TINCAN_XSD = 'tincan.xsd'
 

Protected Member Functions

 sanitizeObjectDirectory ()
 
 handleFile (string $serverFile)
 
 getUpload (?string $uploadFilePath)
 
 handleUpload (FileUploadResult $uploadResult)
 
 handleXmlFile (string $xmlFilePath)
 
 handleXmlFileFromUpload (string $xmlFileName, string $xmlFilePath)
 
 validateXmlFile (DOMDocument $dom, $xsdFilePath)
 
 handleZipContentUpload (string $uploadFilePath)
 
 getAbsoluteObjectDirectory ()
 
 fetchFileExtension (FileUploadResult $uploadResult)
 
 hasStoredContentXml ()
 
 getStoredContentXml ()
 
 getXsdFilePath (string $xsdFileName)
 
 initObjectFromCmi5Xml (DOMDocument $dom)
 
 initObjectFromTincanXml (DOMDocument $dom)
 

Protected Attributes

ilObjCmiXapi $object
 

Static Protected Attributes

static array $CONTENT_XML_FILENAMES
 
static array $CONTENT_XSD_FILENAMES
 

Private Member Functions

 generateActivityId (string $publisherId)
 

Private Attributes

ILIAS DI Container $dic
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilCmiXapiContentUploadImporter::__construct ( ilObjCmiXapi  $object)

ilCmiXapiContentUploadImporter constructor.

Definition at line 74 of file class.ilCmiXapiContentUploadImporter.php.

75 {
76 global $DIC;
77 $this->dic = $DIC;
78 $this->object = $object;
79 }
global $DIC
Definition: shib_login.php:26

References $DIC, and $object.

Member Function Documentation

◆ ensureCreatedObjectDirectory()

ilCmiXapiContentUploadImporter::ensureCreatedObjectDirectory ( )
Exceptions

ILIAS\Filesystem\Exception\IOException

Definition at line 84 of file class.ilCmiXapiContentUploadImporter.php.

84 : void
85 {
86 global $DIC; /* @var \ILIAS\DI\Container $DIC */
87 if (!$DIC->filesystem()->web()->has($this->getWebDataDirRelativeObjectDirectory())) {
88 $DIC->filesystem()->web()->createDir($this->getWebDataDirRelativeObjectDirectory());
89 }
90 }

References $DIC, and getWebDataDirRelativeObjectDirectory().

Referenced by importFormUpload(), and importServerFile().

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

◆ fetchFileExtension()

ilCmiXapiContentUploadImporter::fetchFileExtension ( FileUploadResult  $uploadResult)
protected

Definition at line 315 of file class.ilCmiXapiContentUploadImporter.php.

315 : string
316 {
317 return pathinfo($uploadResult->getName(), PATHINFO_EXTENSION);
318 }

Referenced by handleUpload().

+ Here is the caller graph for this function:

◆ generateActivityId()

ilCmiXapiContentUploadImporter::generateActivityId ( string  $publisherId)
private

Definition at line 459 of file class.ilCmiXapiContentUploadImporter.php.

459 : string
460 {
461 global $DIC;
462 $objId = $this->object->getId();
463 return "https://ilias.de/cmi5/activityid/" . (new \Ramsey\Uuid\UuidFactory())->uuid3(ilCmiXapiUser::getIliasUuid(), $objId . '-' . $publisherId);
464 }
$objId
Definition: xapitoken.php:55

References $DIC, $objId, and ilCmiXapiUser\getIliasUuid().

Referenced by initObjectFromCmi5Xml().

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

◆ getAbsoluteObjectDirectory()

ilCmiXapiContentUploadImporter::getAbsoluteObjectDirectory ( )
protected

Definition at line 299 of file class.ilCmiXapiContentUploadImporter.php.

299 : string
300 {
301 $dirs = [
302 ILIAS_ABSOLUTE_PATH,
303 'public/' . ILIAS_WEB_DIR . "/" . CLIENT_ID,
305 ];
306
307 return implode(DIRECTORY_SEPARATOR, $dirs);
308 }
const CLIENT_ID
Definition: constants.php:41
const ILIAS_WEB_DIR
Definition: constants.php:45

References CLIENT_ID, getWebDataDirRelativeObjectDirectory(), and ILIAS_WEB_DIR.

Referenced by getStoredContentXml(), and handleZipContentUpload().

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

◆ getStoredContentXml()

ilCmiXapiContentUploadImporter::getStoredContentXml ( )
protected

Definition at line 325 of file class.ilCmiXapiContentUploadImporter.php.

325 : string
326 {
327 foreach (self::$CONTENT_XML_FILENAMES as $xmlFileName) {
328 $xmlFilePath = $this->getWebDataDirRelativeObjectDirectory() . DIRECTORY_SEPARATOR . $xmlFileName;
329
330 if ($this->dic->filesystem()->web()->has($xmlFilePath)) {
331 return $this->getAbsoluteObjectDirectory() . DIRECTORY_SEPARATOR . $xmlFileName;
332 }
333 }
334
335 return '';
336 }

References getAbsoluteObjectDirectory(), and getWebDataDirRelativeObjectDirectory().

Referenced by handleFile(), handleUpload(), and hasStoredContentXml().

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

◆ getUpload()

ilCmiXapiContentUploadImporter::getUpload ( ?string  $uploadFilePath)
protected
Exceptions

ILIAS\FileUpload\Exception\IllegalStateException

Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 163 of file class.ilCmiXapiContentUploadImporter.php.

163 : FileUploadResult
164 {
165 global $DIC; /* @var \ILIAS\DI\Container $DIC */
166
167 if ($DIC->upload()->hasUploads()) {
168 if (!$DIC->upload()->hasBeenProcessed()) {
169 $DIC->upload()->process();
170 }
171
172 /* @var FileUploadResult $result */
173
174 $results = $DIC->upload()->getResults();
175
176 if (isset($results[$uploadFilePath])) {
177 $result = $results[$uploadFilePath];
178
179 if ($result->isOK()) {
180 return $result;
181 }
182
184 'upload processing failed with message ' .
185 '"' . $result->getStatus()->getMessage() . '"'
186 );
187 }
188
189 throw new ilCmiXapiInvalidUploadContentException('upload lost during processing!');
190 }
191
192 throw new ilCmiXapiInvalidUploadContentException('no upload provided!');
193 }
$results

References $DIC, and $results.

Referenced by importFormUpload().

+ Here is the caller graph for this function:

◆ getWebDataDirRelativeObjectDirectory()

ilCmiXapiContentUploadImporter::getWebDataDirRelativeObjectDirectory ( )

Definition at line 310 of file class.ilCmiXapiContentUploadImporter.php.

310 : string
311 {
312 return self::RELATIVE_CONTENT_DIRECTORY_NAMEBASE . $this->object->getId();
313 }

Referenced by ensureCreatedObjectDirectory(), getAbsoluteObjectDirectory(), getStoredContentXml(), and sanitizeObjectDirectory().

+ Here is the caller graph for this function:

◆ getXsdFilePath()

ilCmiXapiContentUploadImporter::getXsdFilePath ( string  $xsdFileName)
protected

Definition at line 338 of file class.ilCmiXapiContentUploadImporter.php.

338 : string
339 {
340 return ILIAS_ABSOLUTE_PATH . DIRECTORY_SEPARATOR . self::RELATIVE_XSD_DIRECTORY . DIRECTORY_SEPARATOR . $xsdFileName;
341 }

Referenced by handleXmlFile(), and handleXmlFileFromUpload().

+ Here is the caller graph for this function:

◆ handleFile()

ilCmiXapiContentUploadImporter::handleFile ( string  $serverFile)
protected
Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 118 of file class.ilCmiXapiContentUploadImporter.php.

118 : void
119 {
120 $fileInfo = pathinfo($serverFile);
121
122 switch ($fileInfo['extension']) {
124
125 $this->handleXmlFile($serverFile);
126 break;
127
129
130 $this->handleZipContentUpload($serverFile);
131
132 if ($this->hasStoredContentXml()) {
133 $this->handleXmlFile($this->getStoredContentXml());
134 }
135
136 break;
137 }
138 }

References getStoredContentXml(), handleXmlFile(), handleZipContentUpload(), hasStoredContentXml(), IMP_FILE_EXTENSION_XML, and IMP_FILE_EXTENSION_ZIP.

Referenced by importServerFile().

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

◆ handleUpload()

ilCmiXapiContentUploadImporter::handleUpload ( FileUploadResult  $uploadResult)
protected
Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 198 of file class.ilCmiXapiContentUploadImporter.php.

198 : void
199 {
200 switch ($this->fetchFileExtension($uploadResult)) {
202
203 $this->handleXmlFileFromUpload($uploadResult->getName(), $uploadResult->getPath());
204 break;
205
207
208 $this->handleZipContentUpload($uploadResult->getPath());
209
210 if ($this->hasStoredContentXml()) {
211 $this->handleXmlFile($this->getStoredContentXml());
212 }
213
214 break;
215 }
216 }
fetchFileExtension(FileUploadResult $uploadResult)
handleXmlFileFromUpload(string $xmlFileName, string $xmlFilePath)

References fetchFileExtension(), getStoredContentXml(), handleXmlFile(), handleXmlFileFromUpload(), handleZipContentUpload(), hasStoredContentXml(), IMP_FILE_EXTENSION_XML, and IMP_FILE_EXTENSION_ZIP.

Referenced by importFormUpload().

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

◆ handleXmlFile()

ilCmiXapiContentUploadImporter::handleXmlFile ( string  $xmlFilePath)
protected
Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 221 of file class.ilCmiXapiContentUploadImporter.php.

221 : void
222 {
223 $dom = new DOMDocument();
224 $dom->load($xmlFilePath);
225
226 switch (basename($xmlFilePath)) {
227 case self::CMI5_XML:
228
229 $xsdFilePath = $this->getXsdFilePath(self::CMI5_XSD);
230 $this->validateXmlFile($dom, $xsdFilePath);
231
232 $this->initObjectFromCmi5Xml($dom);
233
234 break;
235
236 case self::TINCAN_XML:
237
238 $xsdFilePath = $this->getXsdFilePath(self::TINCAN_XSD);
239 $this->validateXmlFile($dom, $xsdFilePath);
240
241 $this->initObjectFromTincanXml($dom);
242
243 break;
244 }
245 }

References CMI5_XML, getXsdFilePath(), initObjectFromCmi5Xml(), initObjectFromTincanXml(), TINCAN_XML, and validateXmlFile().

Referenced by handleFile(), and handleUpload().

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

◆ handleXmlFileFromUpload()

ilCmiXapiContentUploadImporter::handleXmlFileFromUpload ( string  $xmlFileName,
string  $xmlFilePath 
)
protected
Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 250 of file class.ilCmiXapiContentUploadImporter.php.

250 : void
251 {
252 $dom = new DOMDocument();
253 $dom->load($xmlFilePath);
254 switch (basename($xmlFileName)) {
255 case self::CMI5_XML:
256
257 $xsdFilePath = $this->getXsdFilePath(self::CMI5_XSD);
258 $this->validateXmlFile($dom, $xsdFilePath);
259
260 $this->initObjectFromCmi5Xml($dom);
261
262 break;
263
264 case self::TINCAN_XML:
265
266 $xsdFilePath = $this->getXsdFilePath(self::TINCAN_XSD);
267 $this->validateXmlFile($dom, $xsdFilePath);
268
269 $this->initObjectFromTincanXml($dom);
270
271 break;
272 }
273 }

References CMI5_XML, getXsdFilePath(), initObjectFromCmi5Xml(), initObjectFromTincanXml(), TINCAN_XML, and validateXmlFile().

Referenced by handleUpload().

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

◆ handleZipContentUpload()

ilCmiXapiContentUploadImporter::handleZipContentUpload ( string  $uploadFilePath)
protected

Definition at line 285 of file class.ilCmiXapiContentUploadImporter.php.

285 : void
286 {
287 $targetPath = $this->getAbsoluteObjectDirectory();
288 $archives = new Archives();
289 $unzip = $archives->unzip(
290 Streams::ofResource(fopen($uploadFilePath, 'rb')),
291 $archives->unzipOptions()
292 ->withZipOutputPath($targetPath)
293 ->withOverwrite(true)
294 // ->withDirectoryHandling(ZipDirectoryHandling::FLAT_STRUCTURE)
295 );
296 $unzip->extract();
297 }

References getAbsoluteObjectDirectory().

Referenced by handleFile(), and handleUpload().

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

◆ hasStoredContentXml()

ilCmiXapiContentUploadImporter::hasStoredContentXml ( )
protected

Definition at line 320 of file class.ilCmiXapiContentUploadImporter.php.

320 : bool
321 {
322 return $this->getStoredContentXml() !== '';
323 }

References getStoredContentXml().

Referenced by handleFile(), and handleUpload().

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

◆ importFormUpload()

ilCmiXapiContentUploadImporter::importFormUpload ( array  $fileData)
Exceptions

ILIAS\FileUpload\Exception\IllegalStateException

Exceptions

ILIAS\Filesystem\Exception\IOException

Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 145 of file class.ilCmiXapiContentUploadImporter.php.

145 : void
146 {
147 global $DIC;
149
150 $uploadResult = $this->getUpload(
151 $fileData['tmp_name']
152 );
153
154 $this->handleUpload($uploadResult);
155
157 }

References $DIC, ensureCreatedObjectDirectory(), getUpload(), handleUpload(), and sanitizeObjectDirectory().

+ Here is the call graph for this function:

◆ importServerFile()

ilCmiXapiContentUploadImporter::importServerFile ( string  $serverFile)
Exceptions

ILIAS\Filesystem\Exception\IOException

Exceptions
ilCmiXapiInvalidUploadContentException

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

106 : void
107 {
109
110 $this->handleFile($serverFile);
111
113 }

References ensureCreatedObjectDirectory(), handleFile(), and sanitizeObjectDirectory().

+ Here is the call graph for this function:

◆ initObjectFromCmi5Xml()

ilCmiXapiContentUploadImporter::initObjectFromCmi5Xml ( DOMDocument  $dom)
protected

Definition at line 343 of file class.ilCmiXapiContentUploadImporter.php.

343 : void
344 {
345 $xPath = new DOMXPath($dom);
346
347 $courseNode = $xPath->query("//*[local-name()='course']")->item(0);
348 // TODO: multilanguage support
349 $title = $xPath->query("//*[local-name()='title']/*[local-name()='langstring']", $courseNode)->item(0)->nodeValue;
350 $this->object->setTitle(trim($title));
351
352 $description = $xPath->query("//*[local-name()='description']/*[local-name()='langstring']", $courseNode)->item(0)->nodeValue;
353 $this->object->setDescription(trim($description));
354
355 $publisherId = trim($courseNode->getAttribute('id'));
356 $this->object->setPublisherId($publisherId);
357
358 $activityId = $this->generateActivityId($publisherId);
359 $this->object->setActivityId($activityId);
360
361 $moveOn = '';
362
363 foreach ($xPath->query("//*[local-name()='au']") as $assignedUnitNode) {
364 $relativeLaunchUrl = $xPath->query("//*[local-name()='url']", $assignedUnitNode)->item(0)->nodeValue;
365 if (!empty($xPath->query("//*[local-name()='launchParameters']", $assignedUnitNode)->item(0)->nodeValue)) {
366 $launchParameters = $xPath->query(
367 "//*[local-name()='launchParameters']",
368 $assignedUnitNode
369 )->item(0)->nodeValue;
370 }
371 if (!empty($assignedUnitNode->getAttribute('moveOn'))) {
372 $moveOn = trim($assignedUnitNode->getAttribute('moveOn'));
373 }
374 if (!empty($xPath->query("//*[local-name()='entitlementKey']", $assignedUnitNode)->item(0)->nodeValue)) {
375 $entitlementKey = $xPath->query(
376 "//*[local-name()='entitlementKey']",
377 $assignedUnitNode
378 )->item(0)->nodeValue;
379 }
380 if (!empty($assignedUnitNode->getAttribute('masteryScore'))) {
381 $masteryScore = trim($assignedUnitNode->getAttribute('masteryScore'));
382 }
383
384 if (!empty($relativeLaunchUrl)) {
385 $this->object->setLaunchUrl(trim($relativeLaunchUrl));
386 }
387 if (!empty($launchParameters)) {
388 $this->object->setLaunchParameters(trim($launchParameters));
389 }
390 if (!empty($moveOn)) {
393 }
394 $this->object->setMoveOn($moveOn);
395 }
396 if (!empty($entitlementKey)) {
397 $this->object->setEntitlementKey($entitlementKey);
398 }
399 if (!empty($masteryScore)) {
400 $this->object->setMasteryScore((float) $masteryScore);
401 } else {
402 $this->object->setMasteryScore(ilObjCmiXapi::LMS_MASTERY_SCORE);
403 }
404
405 break; // TODO: manage multi au imports
406 }
407 $xml_str = $dom->saveXML();
408 $this->object->setXmlManifest($xml_str);
409 $this->object->update();
410 $this->object->save();
411
412 $lpSettings = new ilLPObjSettings($this->object->getId());
414
415 switch ($moveOn) {
418 break;
421 break;
424 break;
425 case ilCmiXapiLP::MOVEON_COMPLETED_AND_PASSED: // ich würde es noch implementieren
427 break;
428 }
429 $lpSettings->setMode($mode);
430 $lpSettings->update();
431 }
const MOVEON_COMPLETED_OR_PASSED
const MOVEON_COMPLETED_AND_PASSED

References generateActivityId(), ilObjCmiXapi\LMS_MASTERY_SCORE, ilLPObjSettings\LP_MODE_CMIX_COMPLETED, ilLPObjSettings\LP_MODE_CMIX_COMPLETED_OR_PASSED, ilLPObjSettings\LP_MODE_CMIX_PASSED, ilLPObjSettings\LP_MODE_DEACTIVATED, ilCmiXapiLP\MOVEON_COMPLETED, ilCmiXapiLP\MOVEON_COMPLETED_AND_PASSED, ilCmiXapiLP\MOVEON_COMPLETED_OR_PASSED, ilCmiXapiLP\MOVEON_PASSED, and ILIAS\Repository\object().

Referenced by handleXmlFile(), and handleXmlFileFromUpload().

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

◆ initObjectFromTincanXml()

ilCmiXapiContentUploadImporter::initObjectFromTincanXml ( DOMDocument  $dom)
protected

Definition at line 433 of file class.ilCmiXapiContentUploadImporter.php.

433 : void
434 {
435 $xPath = new DOMXPath($dom);
436
437 foreach ($xPath->query("//*[local-name()='activity']") as $activityNode) {
438 $title = $xPath->query("//*[local-name()='name']", $activityNode)->item(0)->nodeValue;
439 $this->object->setTitle(trim($title));
440
441 $description = $xPath->query("//*[local-name()='description']", $activityNode)->item(0)->nodeValue;
442 $this->object->setDescription(trim($description));
443
444 $activityId = $activityNode->getAttribute('id');
445 $this->object->setActivityId(trim($activityId));
446
447 $relativeLaunchUrl = $xPath->query("//*[local-name()='launch']", $activityNode)->item(0)->nodeValue;
448 $this->object->setLaunchUrl(trim($relativeLaunchUrl));
449
450 break; // TODO: manage multi activities imports
451 }
452
453 $xml_str = $dom->saveXML();
454 $this->object->setXmlManifest($xml_str);
455 $this->object->update();
456 $this->object->save();
457 }

Referenced by handleXmlFile(), and handleXmlFileFromUpload().

+ Here is the caller graph for this function:

◆ sanitizeObjectDirectory()

ilCmiXapiContentUploadImporter::sanitizeObjectDirectory ( )
protected

Definition at line 92 of file class.ilCmiXapiContentUploadImporter.php.

92 : void
93 {
95 implode(DIRECTORY_SEPARATOR, [
98 ])
99 );
100 }
static getWebspaceDir(string $mode="filesystem")
get webspace directory
static renameExecutables(string $a_dir)

References getWebDataDirRelativeObjectDirectory(), ilFileUtils\getWebspaceDir(), and ilFileUtils\renameExecutables().

Referenced by importFormUpload(), and importServerFile().

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

◆ validateXmlFile()

ilCmiXapiContentUploadImporter::validateXmlFile ( DOMDocument  $dom,
  $xsdFilePath 
)
protected
Exceptions
ilCmiXapiInvalidUploadContentException

Definition at line 278 of file class.ilCmiXapiContentUploadImporter.php.

278 : void
279 {
280 if (!$dom->schemaValidate($xsdFilePath)) {
281 throw new ilCmiXapiInvalidUploadContentException('invalid content xml given!');
282 }
283 }

Referenced by handleXmlFile(), and handleXmlFileFromUpload().

+ Here is the caller graph for this function:

Field Documentation

◆ $CONTENT_XML_FILENAMES

array ilCmiXapiContentUploadImporter::$CONTENT_XML_FILENAMES
staticprotected
Initial value:

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

◆ $CONTENT_XSD_FILENAMES

array ilCmiXapiContentUploadImporter::$CONTENT_XSD_FILENAMES
staticprotected

◆ $dic

ILIAS DI Container ilCmiXapiContentUploadImporter::$dic
private

Definition at line 69 of file class.ilCmiXapiContentUploadImporter.php.

◆ $object

ilObjCmiXapi ilCmiXapiContentUploadImporter::$object
protected

Definition at line 67 of file class.ilCmiXapiContentUploadImporter.php.

Referenced by __construct().

◆ CMI5_XML

const ilCmiXapiContentUploadImporter::CMI5_XML = 'cmi5.xml'

◆ CMI5_XSD

const ilCmiXapiContentUploadImporter::CMI5_XSD = 'cmi5_v1_CourseStructure.xsd'

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

◆ IMP_FILE_EXTENSION_XML

const ilCmiXapiContentUploadImporter::IMP_FILE_EXTENSION_XML = 'xml'

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

Referenced by handleFile(), and handleUpload().

◆ IMP_FILE_EXTENSION_ZIP

const ilCmiXapiContentUploadImporter::IMP_FILE_EXTENSION_ZIP = 'zip'

Definition at line 44 of file class.ilCmiXapiContentUploadImporter.php.

Referenced by handleFile(), and handleUpload().

◆ RELATIVE_CONTENT_DIRECTORY_NAMEBASE

const ilCmiXapiContentUploadImporter::RELATIVE_CONTENT_DIRECTORY_NAMEBASE = 'lm_data/lm_'

◆ RELATIVE_XSD_DIRECTORY

const ilCmiXapiContentUploadImporter::RELATIVE_XSD_DIRECTORY = 'components/ILIAS/CmiXapi/xml/contentschema'

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

◆ TINCAN_XML

const ilCmiXapiContentUploadImporter::TINCAN_XML = 'tincan.xml'

◆ TINCAN_XSD

const ilCmiXapiContentUploadImporter::TINCAN_XSD = 'tincan.xsd'

Definition at line 50 of file class.ilCmiXapiContentUploadImporter.php.


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