19declare(strict_types=1);
30 $this->db_table =
"sahs_lm";
33 "Id" => [
"db_col" =>
"id",
"db_type" =>
"integer"],
34 "APIAdapterName" => [
"db_col" =>
"api_adapter",
"db_type" =>
"text"],
35 "APIFunctionsPrefix" => [
"db_col" =>
"api_func_prefix",
"db_type" =>
"text"],
36 "AssignedGlossary" => [
"db_col" =>
"glossary",
"db_type" =>
"integer"],
37 "AutoContinue" => [
"db_col" =>
"auto_continue",
"db_type" =>
"text"],
38 "AutoReviewChar" => [
"db_col" =>
"auto_review",
"db_type" =>
"text"],
39 "AutoSuspend" => [
"db_col" =>
"auto_suspend",
"db_type" =>
"text"],
40 "Auto_last_visited" => [
"db_col" =>
"auto_last_visited",
"db_type" =>
"text"],
41 "Check_values" => [
"db_col" =>
"check_values",
"db_type" =>
"text"],
42 "Comments" => [
"db_col" =>
"comments",
"db_type" =>
"text"],
43 "CreditMode" => [
"db_col" =>
"credit",
"db_type" =>
"text"],
44 "Debug" => [
"db_col" =>
"debug",
"db_type" =>
"text"],
45 "DebugPw" => [
"db_col" =>
"debugpw",
"db_type" =>
"text"],
46 "DefaultLessonMode" => [
"db_col" =>
"default_lesson_mode",
"db_type" =>
"text"],
47 "Editable" => [
"db_col" =>
"editable",
"db_type" =>
"integer"],
48 "Fourth_edition" => [
"db_col" =>
"fourth_edition",
"db_type" =>
"text"],
49 "Height" => [
"db_col" =>
"height",
"db_type" =>
"integer"],
50 "HideNavig" => [
"db_col" =>
"hide_navig",
"db_type" =>
"text"],
51 "Ie_force_render" => [
"db_col" =>
"ie_force_render",
"db_type" =>
"text"],
52 "Interactions" => [
"db_col" =>
"interactions",
"db_type" =>
"text"],
53 "Localization" => [
"db_col" =>
"localization",
"db_type" =>
"text"],
54 "MasteryScore" => [
"db_col" =>
"mastery_score",
"db_type" =>
"integer"],
55 "MaxAttempt" => [
"db_col" =>
"max_attempt",
"db_type" =>
"integer"],
56 "ModuleVersion" => [
"db_col" =>
"module_version",
"db_type" =>
"integer"],
57 "NoMenu" => [
"db_col" =>
"no_menu",
"db_type" =>
"text"],
58 "Objectives" => [
"db_col" =>
"objectives",
"db_type" =>
"text"],
59 "OfflineMode" => [
"db_col" =>
"offline_mode",
"db_type" =>
"text"],
60 "OpenMode" => [
"db_col" =>
"open_mode",
"db_type" =>
"integer"],
61 "Sequencing" => [
"db_col" =>
"sequencing",
"db_type" =>
"text"],
62 "SequencingExpertMode" => [
"db_col" =>
"seq_exp_mode",
"db_type" =>
"integer"],
63 "Session" => [
"db_col" =>
"unlimited_session",
"db_type" =>
"text"],
64 "StyleSheetId" => [
"db_col" =>
"stylesheet",
"db_type" =>
"integer"],
65 "SubType" => [
"db_col" =>
"c_type",
"db_type" =>
"text"],
66 "Time_from_lms" => [
"db_col" =>
"time_from_lms",
"db_type" =>
"text"],
67 "Tries" => [
"db_col" =>
"question_tries",
"db_type" =>
"integer"],
68 "Width" => [
"db_col" =>
"width",
"db_type" =>
"integer"],
69 "IdSetting" => [
"db_col" =>
"id_setting",
"db_type" =>
"integer"],
70 "NameSetting" => [
"db_col" =>
"name_setting",
"db_type" =>
"integer"]
73 $this->element_db_mapping = [];
77 foreach ($this->properties as $key => $value) {
78 $this->element_db_mapping [$value[
"db_col"]] = $key;
91 public function writeData(
string $a_entity,
string $a_version,
int $a_id, array
$data): void
96 if (count(
$data) > 0) {
98 foreach ($this->properties as $key => $value) {
99 if ($key ===
"Id" || $key ===
"title" || $key ===
"description") {
103 if ($key ===
"MasteryScore" && isset(
$data[$key][0]) &&
$data[$key][0] == 0) {
106 if ($key ===
"Localization" && isset(
$data[$key][0]) &&
$data[$key][0] ==
"") {
110 if ( isset(
$data[ $key ] ) ) {
112 if ( is_array(
$data[ $key ] ) ) {
113 $data_value =
$data[ $key ][ 0 ] ??
'';
116 $data_value =
$data[ $key ];
118 $columns [ $value[
"db_col" ] ] = [
124 if (is_array($columns)) {
125 if (count($columns) > 0) {
126 $conditions [
"id"] = [
"integer", $a_id];
127 $ilDB->update($this->db_table, $columns, $conditions);
132 $od_table =
"object_data";
134 "Title" => [
"db_col" =>
"title",
"db_type" =>
"text"],
135 "Description" => [
"db_col" =>
"description",
"db_type" =>
"text"]
137 foreach ($od_properties as $key => $value) {
138 if ( isset(
$data[ $key ] ) ) {
140 if ( is_array(
$data[ $key ] ) ) {
141 $data_value =
$data[ $key ][ 0 ] ??
'';
144 $data_value =
$data[ $key ];
146 $od_columns [ $value[
"db_col" ] ] = [
152 if (isset($od_columns) && is_array($od_columns)) {
153 if (count($od_columns) > 0) {
154 $od_conditions [
"obj_id"] = [
"integer", $a_id];
155 $ilDB->update(
"object_data", $od_columns, $od_conditions);
160 $ilLog->write(
"no module properties for imported object");
168 string $exportArchiveDir,
170 string $a_schema_version,
172 string $a_field =
"",
173 bool $a_omit_header =
false,
174 bool $a_omit_types =
false
180 $ilLog->write(json_encode($this->getTypes(
"sahs",
"5.1.0"), JSON_PRETTY_PRINT));
184 $this->readData($a_entity, $a_schema_version, $a_ids, $a_field =
"");
185 $id = (
int) $this->data[
"id"];
187 $this->_archive[
'files'] = [
188 "properties" =>
"properties.xml",
189 "manifest" =>
'manifest.xml',
190 'scormFile' =>
"content.zip"
195 $exportArchiveDir .
"/" . $this->_archive[
'files'][
'manifest'],
196 $this->buildManifest()
200 if (isset($this->_archive[
'files'][
'scormFile'])) {
203 $DIC->legacyArchives()->zip(
205 $exportArchiveDir .
"/" . $this->_archive[
'files'][
'scormFile'],
212 $exportArchiveDir .
"/" . $this->_archive[
'files'][
'properties'],
213 $this->buildProperties($a_entity, $a_omit_header)
216 return $exportArchiveDir .
'.zip';
225 protected function getTypes(
string $a_entity,
string $a_version): array
227 if ($a_entity ===
"sahs") {
228 switch ($a_version) {
231 foreach ($this->properties as $key => $value) {
232 $types[$key] = $value[
"db_type"];
240 public function readData(
string $a_entity,
string $a_version, array $a_ids,
string $a_field =
""): void
245 $obj_id = (
int) $a_ids[0];
247 foreach ($this->properties as $property) {
248 $columns[] = $property[
"db_col"];
251 $query =
"SELECT " . implode(
",", $columns) .
" FROM " . $this->db_table;
252 $query .=
" WHERE id=" .
$ilDB->quote($obj_id,
"integer");
253 $result =
$ilDB->query($query);
255 if ($dataset =
$ilDB->fetchAssoc($result)) {
256 $this->data = $dataset;
259 $query =
"SELECT title,description FROM object_data";
260 $query .=
" WHERE obj_id=" .
$ilDB->quote($obj_id,
"integer");
261 $result =
$ilDB->query($query);
262 while ($dataset =
$ilDB->fetchAssoc($result)) {
263 $this->data [
"title"] = $dataset[
"title"];
264 $this->data [
"description"] = $dataset[
"description"];
273 if ($db_col_name ===
"title") {
276 if ($db_col_name ===
"description") {
277 return "Description";
279 return $this->element_db_mapping[$db_col_name];
285 protected function getXmlNamespace(
string $a_entity,
string $a_schema_version): string
287 return "http://www.ilias.de/xml/Modules/ScormAicc/" . $a_entity;
304 $manWriter->xmlHeader();
305 foreach ($this->_archive[
'files'] as $key => $value) {
306 $manWriter->xmlElement($key,
null, $value,
true,
true);
309 return $manWriter->xmlDumpMem(
true);
321 if (!$a_omit_header) {
322 $writer->xmlHeader();
325 $writer->appendXML(
"\n");
326 $writer->xmlStartTag(
'DataSet', array(
328 "InstallationUrl" => ILIAS_HTTP_PATH,
329 "TopEntity" => $a_entity
332 $writer->appendXML(
"\n");
334 foreach ($this->data as $key => $value) {
335 $writer->xmlElement($this->getElementNameByDbColumn($key),
null, $value,
true,
true);
336 $writer->appendXML(
"\n");
339 $writer->xmlEndTag(
"DataSet");
341 return $writer->xmlDumpMem(
false);
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
A dataset contains in data in a common structure that can be shared and transformed for different pur...
static getLogger(string $a_component_id)
Get component logger.
getElementNameByDbColumn(string $db_col_name)
retrieve element name by database column name
buildProperties($a_entity, bool $a_omit_header=false)
getExtendedXmlRepresentation(string $exportArchiveDir, string $a_entity, string $a_schema_version, array $a_ids, string $a_field="", bool $a_omit_header=false, bool $a_omit_types=false)
own getXmlRepresentation function to embed zipfile in xml
getXmlNamespace(string $a_entity, string $a_schema_version)
Get xml namespace.
getTypes(string $a_entity, string $a_version)
Get field types for entity.
getDependencies(string $a_entity, string $a_version, ?array $a_rec=null, ?array $a_ids=null)
array $element_db_mapping
writeData(string $a_entity, string $a_version, int $a_id, array $data)
readData(string $a_entity, string $a_version, array $a_ids, string $a_field="")
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc