ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
ilDataSet Class Reference

A dataset contains in data in a common structure that can be shared and transformed for different purposes easily, examples. More...

+ Inheritance diagram for ilDataSet:
+ Collaboration diagram for ilDataSet:

Public Member Functions

 __construct ()
 
 init (string $a_entity, string $a_schema_version)
 Init. More...
 
 getSupportedVersions ()
 
 readData (string $a_entity, string $a_version, array $a_ids)
 Read data from DB. More...
 
 initByExporter (ilXmlExporter $xml_exporter)
 
 setImportDirectory (string $a_val)
 
 getImportDirectory ()
 
 setDSPrefix (string $a_val)
 
 getDSPrefix ()
 
 getDSPrefixString ()
 
 getDirectDataFromQuery (string $a_query, bool $a_convert_to_leading_upper=true, bool $a_set=true)
 Get data from query.This is a standard procedure, all db field names are directly mapped to abstract fields. More...
 
 convertToLeadingUpper (string $a_str)
 Make xyz_abc a XyzAbc string. More...
 
 getXmlRepresentation (string $a_entity, string $a_schema_version, ?array $a_ids, string $a_field="", bool $a_omit_header=false, bool $a_omit_types=false)
 Get xml representation <dataset install_id="123" install_url="..."> <types entity="table_name" version="4.0.1"> <ftype name="field_1" type="text"> <ftype name="field_2" type="date"> <ftype name="field_3" type="integer"> </types> <types ...> ... More...
 
 addRecordsXml (ilXmlWriter $a_writer, array $a_prefixes, string $a_entity, string $a_schema_version, array $a_ids, ?string $a_field="")
 
 afterXmlRecordWriting (string $a_entity, string $a_version, array $a_set)
 
 getNamespaces (array &$namespaces, string $a_entity, string $a_schema_version)
 
 getXmlRecord (string $a_entity, string $a_version, array $a_set)
 Get xml record for version. More...
 
 getXmlTypes (string $a_entity, string $a_version)
 Get xml types. More...
 
 getXMLEntityName (string $a_entity, string $a_version)
 Get entity name for xml (may be overwritten) More...
 
 getXMLEntityTag (string $a_entity, string $a_schema_version)
 Get entity tag. More...
 
 setImport (ilSurveyImporter $a_val)
 
 getImport ()
 
 setCurrentInstallationId (string $a_val)
 
 getCurrentInstallationId ()
 
 importRecord (string $a_entity, array $a_types, array $a_rec, ilImportMapping $a_mapping, string $a_schema_version)
 Needs to be overwritten for import use case. More...
 
 getCollection (array $record, string $entity, string $schema_version, string $field, string $value)
 
 getContainerExportConfig (array $record, string $entity, string $schema_version, string $field, string $value)
 

Data Fields

const DATASET_NS = 'http://www.ilias.de/Services/DataSet/ds/4_3'
 
const DATASET_NS_PREFIX = 'ds'
 
const EXPORT_NO_INST_ID = 1
 
const EXPORT_ID_ILIAS_LOCAL = 2
 
const EXPORT_ID_ILIAS_LOCAL_INVALID = 3
 
const EXPORT_ID_ILIAS_REMOTE = 4
 
const EXPORT_ID_ILIAS_REMOTE_INVALID = 5
 
const EXPORT_ID = 6
 
const EXPORT_ID_INVALID = 7
 
int $dircnt = 0
 

Protected Member Functions

 getTypes (string $a_entity, string $a_version)
 Get (abstract) types for (abstract) field names. More...
 
 getXmlNamespace (string $a_entity, string $a_schema_version)
 
 getExportDirInContainer (string $exp_dir)
 
 getIRSSContainerExportConfig (StorableResource $source_container, string $source_path, string $target_path="")
 
 getDependencies (string $a_entity, string $a_version, ?array $a_rec=null, ?array $a_ids=null)
 
 createObjectExportId (string $a_type, string $a_id)
 Build ilias export id. More...
 
 parseObjectExportId (string $a_id, ?string $a_fallback_id=null)
 Parse export id. More...
 
 stripTags (array $rec, array $omit_keys=[])
 

Protected Attributes

ILIAS ResourceStorage Services $irss
 
string $current_installation_id = ""
 
array $data = []
 
ilDBInterface $db
 
ilLogger $ds_log
 
string $import_directory = ""
 
string $entity = ""
 
string $schema_version = ""
 
string $component_export_dir = ""
 
string $ds_prefix = "ds"
 
string $version = ""
 
ilSurveyImporter $import
 
ilExport $export
 

Private Member Functions

 addTypesXml (ilXmlWriter $a_writer, string $a_entity, string $a_schema_version)
 

Detailed Description

A dataset contains in data in a common structure that can be shared and transformed for different purposes easily, examples.

  • transform associative arrays into (set-)xml and back (e.g. for import/export)
  • transform assiciative arrays into json and back (e.g. for ajax requests)

The general structure is:

  • entity name (many times this corresponds to a table name)
  • structure (this is a set of field names and types pairs) currently supported types: text, integer, timestamp planned: date, time, clob types correspond to db types, see http://www.ilias.de/docu/goto.php?target=pg_25354_42&client_id=docu
  • records (similar to records of a database query; associative arrays)
Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de

Definition at line 42 of file class.ilDataSet.php.

Constructor & Destructor Documentation

◆ __construct()

ilDataSet::__construct ( )

Definition at line 70 of file class.ilDataSet.php.

References $DIC, and ilLoggerFactory\getLogger().

71  {
72  global $DIC;
73 
74  $this->db = $DIC->database();
75  $this->ds_log = ilLoggerFactory::getLogger('ds');
76  $this->irss = $DIC->resourceStorage();
77  }
static getLogger(string $a_component_id)
Get component logger.
global $DIC
Definition: shib_login.php:26
+ Here is the call graph for this function:

Member Function Documentation

◆ addRecordsXml()

ilDataSet::addRecordsXml ( ilXmlWriter  $a_writer,
array  $a_prefixes,
string  $a_entity,
string  $a_schema_version,
array  $a_ids,
?string  $a_field = "" 
)

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

References $c, Vendor\Package\$d, $dircnt, Vendor\Package\$f, afterXmlRecordWriting(), getCollection(), getContainerExportConfig(), getDependencies(), getDSPrefixString(), getExportDirInContainer(), getIRSSContainerExportConfig(), getXMLEntityName(), getXMLEntityTag(), getXmlRecord(), getXmlTypes(), null, readData(), ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by getXmlRepresentation().

294  : void {
295  $types = $this->getXmlTypes($a_entity, $a_schema_version);
296  $this->ds_log->debug("...read data");
297  $this->readData($a_entity, $a_schema_version, $a_ids);
298  $this->ds_log->debug("...data: " . print_r($this->data, true));
299  foreach ($this->data as $d) {
300  $a_writer->xmlStartTag(
301  $this->getDSPrefixString() . "Rec",
302  array("Entity" => $this->getXMLEntityName($a_entity, $a_schema_version))
303  );
304  $a_writer->xmlStartTag($this->getXMLEntityTag($a_entity, ''));
305  $rec = $this->getXmlRecord($a_entity, $a_schema_version, $d);
306  foreach ($rec as $f => $c) {
307  if (isset($this->export) and ($types[$f] ?? "") === "directory") {
308  $sdir = realpath($c);
309  $path_in_container = $this->export->getPathToComponentExpDirInContainer() . "/dsDir_" . $this->dircnt;
310  $this->export->getExportWriter()->writeDirectory(
311  $sdir,
312  $path_in_container
313  );
314  $c = $this->getExportDirInContainer($path_in_container); // note: this corrects the path, see above
315  $this->dircnt++;
316  }
317  if (isset($this->export) and ($types[$f] ?? "") === "rscollection") {
318  $path_in_container = $this->export->getPathToComponentExpDirInContainer() . "/dsDir_" . $this->dircnt;
319  $collection = $this->getCollection($rec, $a_entity, $a_schema_version, $f, $c);
320  if (!is_null($collection)) {
321  $this->export->getExportWriter()->writeFilesByResourceCollection(
322  $collection,
323  $path_in_container
324  );
325  }
326 
327  $c = $this->getExportDirInContainer($path_in_container); // note: this corrects the path, see above
328  $this->dircnt++;
329  }
330  if (isset($this->export) and ($types[$f] ?? "") === "rscontainer") {
331  $path_in_container = "/dsDir_" . $this->dircnt;
332  if ($this->export->isContainerExport()) { // note: this checks if the export is in a container context and adds the set number to the path accordingly
333  $path_in_container = $this->export->getPathToComponentExpDirInContainerWithLeadingSetNumber() . $path_in_container;
334  } else {
335  $path_in_container = $this->export->getPathToComponentExpDirInContainer() . $path_in_container;
336  }
337  if ($config = $this->getContainerExportConfig($rec, $a_entity, $a_schema_version, $f, $c)) {
338  $this->export->getExportWriter()->writeFilesByResourceContainer(
340  $config->getSourceContainer(),
341  $config->getSourcePath(),
342  $path_in_container
343  )
344  );
345  }
346  $c = $this->getExportDirInContainer($path_in_container); // note: this corrects the path, see above
347  $this->dircnt++;
348  }
349  // this changes schema/dtd
350  //$a_writer->xmlElement($a_prefixes[$a_entity].":".$f,
351  // array(), $c);
352  $a_writer->xmlElement($f, array(), $c);
353  }
354 
355  $a_writer->xmlEndTag($this->getXMLEntityTag($a_entity, ''));
356 
357  $a_writer->xmlEndTag($this->getDSPrefixString() . "Rec");
358 
359  $this->afterXmlRecordWriting($a_entity, $a_schema_version, $d);
360 
361  // foreach record records of dependent entities
362  $this->ds_log->debug("...get dependencies");
363  $deps = $this->getDependencies($a_entity, $a_schema_version, $rec, $a_ids);
364  $this->ds_log->debug("...dependencies: " . print_r($deps, true));
365  foreach ($deps as $dp => $par) {
366  $ids = !is_array($par["ids"])
367  ? [$par["ids"]]
368  : $par["ids"];
369  $this->addRecordsXml($a_writer, $a_prefixes, $dp, $a_schema_version, $ids, $par["field"] ?? null);
370  }
371  }
372  }
getXMLEntityName(string $a_entity, string $a_version)
Get entity name for xml (may be overwritten)
readData(string $a_entity, string $a_version, array $a_ids)
Read data from DB.
getCollection(array $record, string $entity, string $schema_version, string $field, string $value)
getXmlRecord(string $a_entity, string $a_version, array $a_set)
Get xml record for version.
getContainerExportConfig(array $record, string $entity, string $schema_version, string $field, string $value)
getXmlTypes(string $a_entity, string $a_version)
Get xml types.
getExportDirInContainer(string $exp_dir)
$c
Definition: deliver.php:25
addRecordsXml(ilXmlWriter $a_writer, array $a_prefixes, string $a_entity, string $a_schema_version, array $a_ids, ?string $a_field="")
getIRSSContainerExportConfig(StorableResource $source_container, string $source_path, string $target_path="")
xmlEndTag(string $tag)
Writes an endtag.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
afterXmlRecordWriting(string $a_entity, string $a_version, array $a_set)
getDependencies(string $a_entity, string $a_version, ?array $a_rec=null, ?array $a_ids=null)
getXMLEntityTag(string $a_entity, string $a_schema_version)
Get entity tag.
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addTypesXml()

ilDataSet::addTypesXml ( ilXmlWriter  $a_writer,
string  $a_entity,
string  $a_schema_version 
)
private

Definition at line 401 of file class.ilDataSet.php.

References Vendor\Package\$f, getDependencies(), getDSPrefixString(), getXMLEntityName(), getXmlTypes(), null, ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by getXmlRepresentation().

401  : void
402  {
403  $types = $this->getXmlTypes($a_entity, $a_schema_version);
404 
405  // add types of current entity
406  if (count($types) > 0) {
407  $a_writer->xmlStartTag(
408  $this->getDSPrefixString() . "Types",
409  array("Entity" => $this->getXMLEntityName($a_entity, $a_schema_version),
410  "SchemaVersion" => $a_schema_version)
411  );
412  foreach ($this->getXmlTypes($a_entity, $a_schema_version) as $f => $t) {
413  $a_writer->xmlElement(
414  $this->getDSPrefixString() . 'FieldType',
415  array("Name" => $f, "Type" => $t)
416  );
417  }
418  $a_writer->xmlEndTag($this->getDSPrefixString() . "Types");
419  }
420 
421  // add types of dependent entities
422  $deps = $this->getDependencies($a_entity, $a_schema_version, null, null);
423  foreach ($deps as $dp => $w) {
424  $this->addTypesXml($a_writer, $dp, $a_schema_version);
425  }
426  }
getXMLEntityName(string $a_entity, string $a_version)
Get entity name for xml (may be overwritten)
getXmlTypes(string $a_entity, string $a_version)
Get xml types.
xmlEndTag(string $tag)
Writes an endtag.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getDependencies(string $a_entity, string $a_version, ?array $a_rec=null, ?array $a_ids=null)
addTypesXml(ilXmlWriter $a_writer, string $a_entity, string $a_schema_version)
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ afterXmlRecordWriting()

ilDataSet::afterXmlRecordWriting ( string  $a_entity,
string  $a_version,
array  $a_set 
)

Definition at line 396 of file class.ilDataSet.php.

Referenced by addRecordsXml().

396  : void
397  {
398  }
+ Here is the caller graph for this function:

◆ convertToLeadingUpper()

ilDataSet::convertToLeadingUpper ( string  $a_str)

Make xyz_abc a XyzAbc string.

Definition at line 189 of file class.ilDataSet.php.

Referenced by getDirectDataFromQuery(), getXMLEntityTag(), ilUserDataSet\importRecord(), ilMediaPoolDataSet\readData(), and ilLearningModuleDataSet\readData().

189  : string
190  {
191  $a_str = strtoupper(substr($a_str, 0, 1)) . substr($a_str, 1);
192  while (($pos = strpos($a_str, "_")) !== false) {
193  $a_str = substr($a_str, 0, $pos) .
194  strtoupper(substr($a_str, $pos + 1, 1)) .
195  substr($a_str, $pos + 2);
196  }
197  return $a_str;
198  }
+ Here is the caller graph for this function:

◆ createObjectExportId()

ilDataSet::createObjectExportId ( string  $a_type,
string  $a_id 
)
protected

Build ilias export id.

Definition at line 500 of file class.ilDataSet.php.

References IL_INST_ID.

Referenced by ilBlogDataSet\readData().

500  : string
501  {
502  return "il_" . IL_INST_ID . "_" . $a_type . "_" . $a_id;
503  }
const IL_INST_ID
Definition: constants.php:40
+ Here is the caller graph for this function:

◆ getCollection()

ilDataSet::getCollection ( array  $record,
string  $entity,
string  $schema_version,
string  $field,
string  $value 
)

Definition at line 572 of file class.ilDataSet.php.

References null.

Referenced by addRecordsXml().

578  : ?ResourceCollection {
579  return null;
580  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the caller graph for this function:

◆ getContainerExportConfig()

ilDataSet::getContainerExportConfig ( array  $record,
string  $entity,
string  $schema_version,
string  $field,
string  $value 
)

Definition at line 582 of file class.ilDataSet.php.

References null.

Referenced by addRecordsXml().

589  return null;
590  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the caller graph for this function:

◆ getCurrentInstallationId()

ilDataSet::getCurrentInstallationId ( )

Definition at line 492 of file class.ilDataSet.php.

References $current_installation_id.

Referenced by ilSurveyDataSet\importRecord(), ilGlossaryDataSet\importRecord(), ilMediaObjectDataSet\importRecord(), ilLearningModuleDataSet\importRecord(), and ilSkillDataSet\importRecord().

492  : string
493  {
495  }
string $current_installation_id
+ Here is the caller graph for this function:

◆ getDependencies()

ilDataSet::getDependencies ( string  $a_entity,
string  $a_version,
?array  $a_rec = null,
?array  $a_ids = null 
)
protected

Definition at line 386 of file class.ilDataSet.php.

Referenced by addRecordsXml(), addTypesXml(), and getNamespaces().

391  : array {
392  return [];
393  }
+ Here is the caller graph for this function:

◆ getDirectDataFromQuery()

ilDataSet::getDirectDataFromQuery ( string  $a_query,
bool  $a_convert_to_leading_upper = true,
bool  $a_set = true 
)

Get data from query.This is a standard procedure, all db field names are directly mapped to abstract fields.

Definition at line 158 of file class.ilDataSet.php.

References $db, $ilDB, and convertToLeadingUpper().

Referenced by ilObjectDataSet\getTypes(), ilCmiXapiDataSet\getTypes(), ilRatingDataSet\readData(), ilHTMLLearningModuleDataSet\readData(), ilItemGroupDataSet\readData(), ilCOPageDataSet\readData(), ilSurveyDataSet\readData(), ilNewsDataSet\readData(), ilNotesDataSet\readData(), ilMediaCastDataSet\readData(), ilHelpDataSet\readData(), ilPortfolioDataSet\readData(), ilTaxonomyDataSet\readData(), ilCalendarDataSet\readData(), ilGlossaryDataSet\readData(), ilMediaPoolDataSet\readData(), ilPollDataSet\readData(), ilMediaObjectDataSet\readData(), ilUserDataSet\readData(), ilWikiDataSet\readData(), ilBlogDataSet\readData(), ilSessionDataSet\readData(), ilSkillDataSet\readData(), ilStyleDataSet\readData(), ilLearningModuleDataSet\readData(), and ilExerciseDataSet\readData().

162  : array {
163  $ilDB = $this->db;
164 
165  $set = $ilDB->query($a_query);
166  $this->data = array();
167  $ret = [];
168  while ($rec = $ilDB->fetchAssoc($set)) {
169  if ($a_convert_to_leading_upper) {
170  $tmp = array();
171  foreach ($rec as $k => $v) {
172  $tmp[$this->convertToLeadingUpper($k)]
173  = $v;
174  }
175  $rec = $tmp;
176  }
177 
178  if ($a_set) {
179  $this->data[] = $rec;
180  }
181  $ret[] = $rec;
182  }
183  return $ret;
184  }
convertToLeadingUpper(string $a_str)
Make xyz_abc a XyzAbc string.
ilDBInterface $db
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDSPrefix()

ilDataSet::getDSPrefix ( )

Definition at line 141 of file class.ilDataSet.php.

References $ds_prefix.

Referenced by getDSPrefixString(), and getXmlRepresentation().

141  : string
142  {
143  return $this->ds_prefix;
144  }
string $ds_prefix
+ Here is the caller graph for this function:

◆ getDSPrefixString()

ilDataSet::getDSPrefixString ( )

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

References getDSPrefix().

Referenced by addRecordsXml(), addTypesXml(), and getXmlRepresentation().

146  : string
147  {
148  if ($this->getDSPrefix() !== "") {
149  return $this->getDSPrefix() . ":";
150  }
151  return "";
152  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExportDirInContainer()

ilDataSet::getExportDirInContainer ( string  $exp_dir)
protected

Definition at line 273 of file class.ilDataSet.php.

Referenced by addRecordsXml().

273  : string
274  {
275  // note, the export returns in ILIAS 10 (Jan 2024) something like
276  // 1737382047__0__cat_436/components/ILIAS/Style/set_0/dsDir_1
277  // whereas ILIAS 9 returned
278  // Services/Style/set_1/expDir_1/dsDir_1
279  // thus we skip the 1737382047__0__cat_436/ part since it would be redundant
280  // an make import fail
281  if (str_contains($exp_dir, "components/")) {
282  $exp_dir = substr($exp_dir, strpos($exp_dir, "components/"));
283  }
284  return $exp_dir;
285  }
+ Here is the caller graph for this function:

◆ getImport()

ilDataSet::getImport ( )

Definition at line 482 of file class.ilDataSet.php.

References $import.

Referenced by ilSurveyDataSet\importRecord().

483  {
484  return $this->import;
485  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilSurveyImporter $import
+ Here is the caller graph for this function:

◆ getImportDirectory()

◆ getIRSSContainerExportConfig()

ilDataSet::getIRSSContainerExportConfig ( StorableResource  $source_container,
string  $source_path,
string  $target_path = "" 
)
protected

Definition at line 374 of file class.ilDataSet.php.

Referenced by addRecordsXml(), ilHTMLLearningModuleDataSet\getContainerExportConfig(), ilMediaObjectDataSet\getContainerExportConfig(), and ilStyleDataSet\getContainerExportConfig().

379  return new IRSSContainerExportConfig(
380  $source_container,
381  $source_path,
382  $target_path
383  );
384  }
+ Here is the caller graph for this function:

◆ getNamespaces()

ilDataSet::getNamespaces ( array &  $namespaces,
string  $a_entity,
string  $a_schema_version 
)

Definition at line 429 of file class.ilDataSet.php.

References getDependencies(), getXmlNamespace(), and null.

Referenced by getXmlRepresentation().

429  : void
430  {
431  $ns = $this->getXmlNamespace($a_entity, $a_schema_version);
432  if ($ns !== "") {
433  $namespaces[$a_entity] = $ns;
434  }
435  // add types of dependent entities
436  $deps = $this->getDependencies($a_entity, $a_schema_version, null, null);
437  foreach ($deps as $dp => $w) {
438  $this->getNamespaces($namespaces, $dp, $a_schema_version);
439  }
440  }
getNamespaces(array &$namespaces, string $a_entity, string $a_schema_version)
getXmlNamespace(string $a_entity, string $a_schema_version)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getDependencies(string $a_entity, string $a_version, ?array $a_rec=null, ?array $a_ids=null)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSupportedVersions()

ilDataSet::getSupportedVersions ( )
abstract

Referenced by init().

+ Here is the caller graph for this function:

◆ getTypes()

ilDataSet::getTypes ( string  $a_entity,
string  $a_version 
)
abstractprotected

Get (abstract) types for (abstract) field names.

Please note that the abstract fields/types only depend on the version! Not on a choosen representation!

Returns
array types array, e.g. array("field_1" => "text", "field_2" => "integer", ...)

Referenced by getXmlTypes(), and init().

+ Here is the caller graph for this function:

◆ getXMLEntityName()

ilDataSet::getXMLEntityName ( string  $a_entity,
string  $a_version 
)

Get entity name for xml (may be overwritten)

Definition at line 464 of file class.ilDataSet.php.

Referenced by addRecordsXml(), and addTypesXml().

464  : string
465  {
466  return $a_entity;
467  }
+ Here is the caller graph for this function:

◆ getXMLEntityTag()

ilDataSet::getXMLEntityTag ( string  $a_entity,
string  $a_schema_version 
)

Get entity tag.

Definition at line 472 of file class.ilDataSet.php.

References convertToLeadingUpper().

Referenced by addRecordsXml().

472  : string
473  {
474  return $this->convertToLeadingUpper($a_entity);
475  }
convertToLeadingUpper(string $a_str)
Make xyz_abc a XyzAbc string.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getXmlNamespace()

ilDataSet::getXmlNamespace ( string  $a_entity,
string  $a_schema_version 
)
abstractprotected

Referenced by getNamespaces(), and init().

+ Here is the caller graph for this function:

◆ getXmlRecord()

ilDataSet::getXmlRecord ( string  $a_entity,
string  $a_version,
array  $a_set 
)

Get xml record for version.

Parameters
array$a_setabstract data record

Definition at line 446 of file class.ilDataSet.php.

Referenced by addRecordsXml().

446  : array
447  {
448  return $a_set;
449  }
+ Here is the caller graph for this function:

◆ getXmlRepresentation()

ilDataSet::getXmlRepresentation ( string  $a_entity,
string  $a_schema_version,
?array  $a_ids,
string  $a_field = "",
bool  $a_omit_header = false,
bool  $a_omit_types = false 
)
final

Get xml representation <dataset install_id="123" install_url="..."> <types entity="table_name" version="4.0.1"> <ftype name="field_1" type="text"> <ftype name="field_2" type="date"> <ftype name="field_3" type="integer"> </types> <types ...> ...

</types> <set entity="table_name"> <rec> <field_1>content</field_1> <field_2>my_date</field_2> <field_3>my_number</field_3> </rec> ... </set> </dataset>

Definition at line 222 of file class.ilDataSet.php.

References $entity, addRecordsXml(), addTypesXml(), getDSPrefix(), getDSPrefixString(), getNamespaces(), and IL_INST_ID.

229  : string {
230  $this->dircnt = 1;
231 
232  // init writer
233  $writer = new ilXmlWriter();
234  if (!$a_omit_header) {
235  $writer->xmlHeader();
236  }
237 
238  // collect namespaces
239  $namespaces = $prefixes = array();
240  $this->getNamespaces($namespaces, $a_entity, $a_schema_version);
241  $atts = array("InstallationId" => IL_INST_ID,
242  "InstallationUrl" => ILIAS_HTTP_PATH, "TopEntity" => $a_entity);
243  $cnt = 1;
244  foreach ($namespaces as $entity => $ns) {
245  $prefix = "ns" . $cnt;
246  $prefixes[$entity] = $prefix;
247  // $atts["xmlns:".$prefix] = $ns;
248  $cnt++;
249  }
250  $this->ds_log->debug("Start writing Dataset, entity: " . $a_entity . ", schema version: " . $a_schema_version .
251  ", ids: " . print_r($a_ids, true));
252 
253  if ($this->getDSPrefix() !== '') {
254  $atts['xmlns:' . $this->getDSPrefix()] = self::DATASET_NS;
255  } else {
256  $atts['xmlns'] = self::DATASET_NS;
257  }
258  $writer->xmlStartTag($this->getDSPrefixString() . 'DataSet', $atts);
259  // add types
260  if (!$a_omit_types) {
261  $this->ds_log->debug("...write types");
262  $this->addTypesXml($writer, $a_entity, $a_schema_version);
263  }
264  // add records
265  $this->ds_log->debug("...write records");
266  $this->addRecordsXml($writer, $prefixes, $a_entity, $a_schema_version, $a_ids, $a_field);
267 
268  $writer->xmlEndTag($this->getDSPrefixString() . "DataSet");
269 
270  return $writer->xmlDumpMem(false);
271  }
const IL_INST_ID
Definition: constants.php:40
getNamespaces(array &$namespaces, string $a_entity, string $a_schema_version)
addRecordsXml(ilXmlWriter $a_writer, array $a_prefixes, string $a_entity, string $a_schema_version, array $a_ids, ?string $a_field="")
addTypesXml(ilXmlWriter $a_writer, string $a_entity, string $a_schema_version)
string $entity
+ Here is the call graph for this function:

◆ getXmlTypes()

ilDataSet::getXmlTypes ( string  $a_entity,
string  $a_version 
)

Get xml types.

Returns
array types array for xml/version set in constructor

Definition at line 455 of file class.ilDataSet.php.

References getTypes().

Referenced by addRecordsXml(), and addTypesXml().

455  : array
456  {
457  return $this->getTypes($a_entity, $a_version);
458  }
getTypes(string $a_entity, string $a_version)
Get (abstract) types for (abstract) field names.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ importRecord()

ilDataSet::importRecord ( string  $a_entity,
array  $a_types,
array  $a_rec,
ilImportMapping  $a_mapping,
string  $a_schema_version 
)

Needs to be overwritten for import use case.

Definition at line 563 of file class.ilDataSet.php.

Referenced by ilHTMLLearningModuleDataSet\getContainerExportConfig(), ilItemGroupDataSet\getDependencies(), ilObjectDataSet\getDependencies(), ilBibliographicDataSet\getXmlNamespace(), ilDataCollectionDataSet\getXmlNamespace(), and ilPollDataSet\getXmlRecord().

569  : void {
570  }
+ Here is the caller graph for this function:

◆ init()

ilDataSet::init ( string  $a_entity,
string  $a_schema_version 
)
final

Init.

Parameters
string(abstract) entity name
stringversion string, always the ILIAS release versions that defined the a structure or made changes to it, never use another version. Example: structure is defined in 4.1.0 and changed in 4.3.0 -> use these values only, not 4.2.0 (ask for the 4.1.0 version in ILIAS 4.2.0)

Definition at line 91 of file class.ilDataSet.php.

References getSupportedVersions(), getTypes(), getXmlNamespace(), and readData().

91  : void
92  {
93  $this->entity = $a_entity;
94  $this->schema_version = $a_schema_version;
95  $this->data = array();
96  }
+ Here is the call graph for this function:

◆ initByExporter()

ilDataSet::initByExporter ( ilXmlExporter  $xml_exporter)

Definition at line 121 of file class.ilDataSet.php.

References ilXmlExporter\getExport().

Referenced by ilUserDataSet\__construct().

121  : void
122  {
123  $this->export = $xml_exporter->getExport();
124  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseObjectExportId()

ilDataSet::parseObjectExportId ( string  $a_id,
?string  $a_fallback_id = null 
)
protected

Parse export id.

Returns
array type, id

Definition at line 509 of file class.ilDataSet.php.

References $id, $parts, ilObject\_getIdForImportId(), ilObject\_lookupType(), and IL_INST_ID.

Referenced by ilBlogDataSet\importRecord().

509  : array
510  {
511  // ilias export id?
512  if (strpos($a_id, "il_") === 0) {
513  $parts = explode("_", $a_id);
514  if (count($parts) !== 4) {
515  throw new ilException("Invalid import ID '" . $a_id . "'.");
516  }
517  $inst_id = $parts[1];
518  $type = $parts[2];
519  $id = $parts[3];
520 
521  // missing installation ids?
522  if (($inst_id == 0 || IL_INST_ID === "0") && !DEVMODE) {
523  return array("type" => self::EXPORT_NO_INST_ID, "id" => $a_fallback_id);
524  }
525 
526  // same installation?
527  if ($inst_id == IL_INST_ID) {
528  // still existing?
529  if (ilObject::_lookupType($id) === $type) {
530  return array("type" => self::EXPORT_ID_ILIAS_LOCAL, "id" => $id);
531  }
532  // not found
533  else {
534  return array("type" => self::EXPORT_ID_ILIAS_LOCAL_INVALID, "id" => $a_fallback_id);
535  }
536  }
537  // different installation
538  else {
540  // matching type?
541  if ($id && ilObject::_lookupType($id) === $type) {
542  return array("type" => self::EXPORT_ID_ILIAS_REMOTE, "id" => $id);
543  }
544  // not found
545  else {
546  return array("type" => self::EXPORT_ID_ILIAS_REMOTE_INVALID, "id" => $a_fallback_id);
547  }
548  }
549  } else {
550  // external id
552  if ($id) {
553  return array("type" => self::EXPORT_ID, "id" => $id);
554  } else {
555  return array("type" => self::EXPORT_ID_INVALID, "id" => $a_fallback_id);
556  }
557  }
558  }
const IL_INST_ID
Definition: constants.php:40
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
Definition: ltitoken.php:61
static _getIdForImportId(string $import_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ readData()

ilDataSet::readData ( string  $a_entity,
string  $a_version,
array  $a_ids 
)
abstract

Read data from DB.

This should result in the abstract field structure of the version set in the constructor.

Referenced by addRecordsXml(), ilCmiXapiDataSet\getDependencies(), ilObjectDataSet\getTypes(), ilCmiXapiDataSet\getTypes(), and init().

+ Here is the caller graph for this function:

◆ setCurrentInstallationId()

ilDataSet::setCurrentInstallationId ( string  $a_val)

Definition at line 487 of file class.ilDataSet.php.

487  : void
488  {
489  $this->current_installation_id = $a_val;
490  }

◆ setDSPrefix()

ilDataSet::setDSPrefix ( string  $a_val)

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

136  : void
137  {
138  $this->ds_prefix = $a_val;
139  }

◆ setImport()

ilDataSet::setImport ( ilSurveyImporter  $a_val)

Definition at line 477 of file class.ilDataSet.php.

477  : void
478  {
479  $this->import = $a_val;
480  }

◆ setImportDirectory()

ilDataSet::setImportDirectory ( string  $a_val)

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

126  : void
127  {
128  $this->import_directory = $a_val;
129  }

◆ stripTags()

ilDataSet::stripTags ( array  $rec,
array  $omit_keys = [] 
)
protected

Definition at line 592 of file class.ilDataSet.php.

References ilUtil\stripSlashes().

Referenced by ilHTMLLearningModuleDataSet\getContainerExportConfig(), ilItemGroupDataSet\getDependencies(), ilPollDataSet\getXmlRecord(), ilRatingDataSet\importRecord(), ilCOPageDataSet\importRecord(), ilNewsDataSet\importRecord(), ilSurveyDataSet\importRecord(), ilHelpDataSet\importRecord(), ilNotesDataSet\importRecord(), ilPortfolioDataSet\importRecord(), ilMediaCastDataSet\importRecord(), ilTaxonomyDataSet\importRecord(), ilMediaPoolDataSet\importRecord(), ilGlossaryDataSet\importRecord(), ilBlogDataSet\importRecord(), ilWikiDataSet\importRecord(), ilMediaObjectDataSet\importRecord(), ilStyleDataSet\importRecord(), ilLearningModuleDataSet\importRecord(), and ilExerciseDataSet\importRecord().

592  : array
593  {
594  $ret_rec = [];
595  foreach ($rec as $k => $v) {
596  if (in_array($k, $omit_keys, true)) {
597  $ret_rec[$k] = $v;
598  } else {
599  $ret_rec[$k] = ilUtil::stripSlashes($v);
600  }
601  }
602  return $ret_rec;
603  }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $component_export_dir

string ilDataSet::$component_export_dir = ""
protected

Definition at line 64 of file class.ilDataSet.php.

◆ $current_installation_id

string ilDataSet::$current_installation_id = ""
protected

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

Referenced by getCurrentInstallationId().

◆ $data

◆ $db

◆ $dircnt

int ilDataSet::$dircnt = 0

Definition at line 56 of file class.ilDataSet.php.

Referenced by addRecordsXml().

◆ $ds_log

ilLogger ilDataSet::$ds_log
protected

Definition at line 60 of file class.ilDataSet.php.

◆ $ds_prefix

string ilDataSet::$ds_prefix = "ds"
protected

Definition at line 65 of file class.ilDataSet.php.

Referenced by getDSPrefix().

◆ $entity

string ilDataSet::$entity = ""
protected

◆ $export

ilExport ilDataSet::$export
protected

Definition at line 68 of file class.ilDataSet.php.

◆ $import

ilSurveyImporter ilDataSet::$import
protected

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

Referenced by getImport().

◆ $import_directory

string ilDataSet::$import_directory = ""
protected

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

Referenced by getImportDirectory().

◆ $irss

ILIAS ResourceStorage Services ilDataSet::$irss
protected

Definition at line 54 of file class.ilDataSet.php.

◆ $schema_version

string ilDataSet::$schema_version = ""
protected

Definition at line 63 of file class.ilDataSet.php.

Referenced by ilObjectDataSet\getDependencies().

◆ $version

string ilDataSet::$version = ""
protected

Definition at line 66 of file class.ilDataSet.php.

Referenced by ilObjectDataSet\getTypes().

◆ DATASET_NS

const ilDataSet::DATASET_NS = 'http://www.ilias.de/Services/DataSet/ds/4_3'

◆ DATASET_NS_PREFIX

const ilDataSet::DATASET_NS_PREFIX = 'ds'

◆ EXPORT_ID

const ilDataSet::EXPORT_ID = 6

Definition at line 52 of file class.ilDataSet.php.

◆ EXPORT_ID_ILIAS_LOCAL

const ilDataSet::EXPORT_ID_ILIAS_LOCAL = 2

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

◆ EXPORT_ID_ILIAS_LOCAL_INVALID

const ilDataSet::EXPORT_ID_ILIAS_LOCAL_INVALID = 3

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

◆ EXPORT_ID_ILIAS_REMOTE

const ilDataSet::EXPORT_ID_ILIAS_REMOTE = 4

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

◆ EXPORT_ID_ILIAS_REMOTE_INVALID

const ilDataSet::EXPORT_ID_ILIAS_REMOTE_INVALID = 5

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

◆ EXPORT_ID_INVALID

const ilDataSet::EXPORT_ID_INVALID = 7

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

◆ EXPORT_NO_INST_ID

const ilDataSet::EXPORT_NO_INST_ID = 1

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


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