ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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.

Reimplemented from ilXmlImporter.

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

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 }
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26

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

+ 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.

295 {
296 if ($this->_isSingleImport) {
297 $this->deleteImportDirectiry();
298 }
299 }
deleteImportDirectiry()
Delete the import directory.

References deleteImportDirectiry().

+ Here is the call graph for this function:

Member Function Documentation

◆ deleteImportDirectiry()

ilCmiXapiImporter::deleteImportDirectiry ( )
private

Delete the import directory.

Exceptions

ILIAS\Filesystem\Exception\FileNotFoundException

Exceptions

ILIAS\Filesystem\Exception\IOException

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

255 : self
256 {
257 $this->filesystemTemp->delete($this->_relImportDir);
258 return $this;
259 }

Referenced by __destruct().

+ 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.

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 }

References ilXmlImporter\getImportDirectory().

Referenced by importXmlRepresentation().

+ 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.

265 : self
266 {
267 $importTempDir = $this->getImportDirectory();
268 $dirArr = array_reverse(explode('/', $importTempDir));
269 $this->_relImportDir = $dirArr[1] . '/' . $dirArr[0];
270 return $this;
271 }

References ilXmlImporter\getImportDirectory().

Referenced by importXmlRepresentation().

+ 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

ILIAS\Filesystem\Exception\FileNotFoundException

Exceptions

ILIAS\Filesystem\Exception\IOException

Reimplemented from ilXmlImporter.

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

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
89 } else {
90 // single object
91 $this->prepareSingleObject();
93 $this->_isSingleImport = true;
94 }
97 $this->updateNewObj();
98 }
updateNewObj()
Finalize the new CmiXapi Object.
getImportDirectorySingle()
Gets the relative path to the Filesystem::temp Folder.
getImportDirectoryContainer()
Gets the relative path to the Filesystem::temp Folder.
prepareLocalSourceStorage()
Creates a folder in the data directory of the document root.
parseXmlFileProperties()
Parse xml file and set properties.
prepareContainerObject()
Builds the CmiXapi Object.
prepareSingleObject()
Builds the CmiXapi Object.
getMapping(string $a_comp, string $a_entity, string $a_old_id)

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

+ Here is the call graph for this function:

◆ init()

ilCmiXapiImporter::init ( )

Reimplemented from ilXmlImporter.

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

ILIAS\Filesystem\Exception\FileNotFoundException

Exceptions

ILIAS\Filesystem\Exception\IOException

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

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 }

Referenced by importXmlRepresentation().

+ 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.

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

References ilObjectFactory\getInstanceByObjId().

Referenced by importXmlRepresentation().

+ 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

ILIAS\Filesystem\Exception\FileNotFoundException

Exceptions

ILIAS\Filesystem\Exception\IOException

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

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

References ilFileUtils\getWebspaceDir().

Referenced by importXmlRepresentation().

+ 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.

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 }

References $_import_objId.

Referenced by importXmlRepresentation().

+ 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.

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 }

Referenced by importXmlRepresentation().

+ 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.

Referenced by prepareSingleObject().

◆ $_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: