ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
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...
 
 setExportDirectories (string $a_relative, string $a_absolute)
 
 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)
 

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)
 
 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 $relative_export_dir = ""
 
string $absolute_export_dir = ""
 
string $ds_prefix = "ds"
 
string $version = ""
 
ilSurveyImporter $import
 

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 38 of file class.ilDataSet.php.

Constructor & Destructor Documentation

◆ __construct()

ilDataSet::__construct ( )

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

References $DIC, and ilLoggerFactory\getLogger().

67  {
68  global $DIC;
69 
70  $this->db = $DIC->database();
71  $this->ds_log = ilLoggerFactory::getLogger('ds');
72  $this->irss = $DIC->resourceStorage();
73  }
static getLogger(string $a_component_id)
Get component logger.
global $DIC
Definition: feed.php:28
+ 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 271 of file class.ilDataSet.php.

References Vendor\Package\$c, Vendor\Package\$d, $dircnt, Vendor\Package\$e, Vendor\Package\$f, afterXmlRecordWriting(), getCollection(), getDependencies(), getDSPrefixString(), getXMLEntityName(), getXMLEntityTag(), getXmlRecord(), getXmlTypes(), ilFileUtils\makeDirParents(), ilFileUtils\rCopy(), readData(), ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by getXmlRepresentation().

278  : void {
279  $types = $this->getXmlTypes($a_entity, $a_schema_version);
280 
281  $this->ds_log->debug("...read data");
282  $this->readData($a_entity, $a_schema_version, $a_ids);
283  $this->ds_log->debug("...data: " . print_r($this->data, true));
284  foreach ($this->data as $d) {
285  $a_writer->xmlStartTag(
286  $this->getDSPrefixString() . "Rec",
287  array("Entity" => $this->getXMLEntityName($a_entity, $a_schema_version))
288  );
289  $a_writer->xmlStartTag($this->getXMLEntityTag($a_entity, ''));
290  $rec = $this->getXmlRecord($a_entity, $a_schema_version, $d);
291  foreach ($rec as $f => $c) {
292  if ($this->absolute_export_dir !== "" && $this->relative_export_dir !== "") {
293  if (($types[$f] ?? "") === "directory") {
294  ilFileUtils::makeDirParents($this->absolute_export_dir . "/dsDir_" . $this->dircnt);
295  $sdir = realpath($c);
296  $tdir = realpath($this->absolute_export_dir . "/dsDir_" . $this->dircnt);
297  try {
298  ilFileUtils::rCopy($sdir, $tdir);
299  } catch (\ILIAS\Filesystem\Exception\FileNotFoundException $e) {
300  $this->ds_log->error($e->getMessage());
301  }
302  $c = $this->relative_export_dir . "/dsDir_" . $this->dircnt;
303  $this->dircnt++;
304  }
305  if (($types[$f] ?? "") === "rscollection") {
306  $tdir = $this->absolute_export_dir . "/dsDir_" . $this->dircnt;
308  $tdir = realpath($tdir);
309  if ($collection = $this->getCollection($rec, $a_entity, $a_schema_version, $f, $c)) {
310  foreach ($collection->getResourceIdentifications() as $rid) {
311  $info = $this->irss->manage()->getResource($rid)
312  ->getCurrentRevision()
313  ->getInformation();
314  $stream = $this->irss->consume()->stream($rid);
315  $name = $tdir . "/" . $info->getTitle();
316  file_put_contents($name, $stream->getStream()->getContents());
317  }
318  }
319  $c = $this->relative_export_dir . "/dsDir_" . $this->dircnt;
320  $this->dircnt++;
321  }
322  }
323  // this changes schema/dtd
324  //$a_writer->xmlElement($a_prefixes[$a_entity].":".$f,
325  // array(), $c);
326  $a_writer->xmlElement($f, array(), $c);
327  }
328 
329  $a_writer->xmlEndTag($this->getXMLEntityTag($a_entity, ''));
330 
331  $a_writer->xmlEndTag($this->getDSPrefixString() . "Rec");
332 
333  $this->afterXmlRecordWriting($a_entity, $a_schema_version, $d);
334 
335  // foreach record records of dependent entities
336  $this->ds_log->debug("...get dependencies");
337  $deps = $this->getDependencies($a_entity, $a_schema_version, $rec, $a_ids);
338  $this->ds_log->debug("...dependencies: " . print_r($deps, true));
339  foreach ($deps as $dp => $par) {
340  $ids = !is_array($par["ids"])
341  ? [$par["ids"]]
342  : $par["ids"];
343  $this->addRecordsXml($a_writer, $a_prefixes, $dp, $a_schema_version, $ids, $par["field"] ?? null);
344  }
345  }
346  }
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.
Class ChatMainBarProvider .
getXmlTypes(string $a_entity, string $a_version)
Get xml types.
static rCopy(string $a_sdir, string $a_tdir, bool $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
addRecordsXml(ilXmlWriter $a_writer, array $a_prefixes, string $a_entity, string $a_schema_version, array $a_ids, ?string $a_field="")
xmlEndTag(string $tag)
Writes an endtag.
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 363 of file class.ilDataSet.php.

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

Referenced by getXmlRepresentation().

363  : void
364  {
365  $types = $this->getXmlTypes($a_entity, $a_schema_version);
366 
367  // add types of current entity
368  if (count($types) > 0) {
369  $a_writer->xmlStartTag(
370  $this->getDSPrefixString() . "Types",
371  array("Entity" => $this->getXMLEntityName($a_entity, $a_schema_version),
372  "SchemaVersion" => $a_schema_version)
373  );
374  foreach ($this->getXmlTypes($a_entity, $a_schema_version) as $f => $t) {
375  $a_writer->xmlElement(
376  $this->getDSPrefixString() . 'FieldType',
377  array("Name" => $f, "Type" => $t)
378  );
379  }
380  $a_writer->xmlEndTag($this->getDSPrefixString() . "Types");
381  }
382 
383  // add types of dependent entities
384  $deps = $this->getDependencies($a_entity, $a_schema_version, null, null);
385  foreach ($deps as $dp => $w) {
386  $this->addTypesXml($a_writer, $dp, $a_schema_version);
387  }
388  }
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.
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 358 of file class.ilDataSet.php.

Referenced by addRecordsXml().

358  : void
359  {
360  }
+ Here is the caller graph for this function:

◆ convertToLeadingUpper()

ilDataSet::convertToLeadingUpper ( string  $a_str)

Make xyz_abc a XyzAbc string.

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

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

186  : string
187  {
188  $a_str = strtoupper(substr($a_str, 0, 1)) . substr($a_str, 1);
189  while (($pos = strpos($a_str, "_")) !== false) {
190  $a_str = substr($a_str, 0, $pos) .
191  strtoupper(substr($a_str, $pos + 1, 1)) .
192  substr($a_str, $pos + 2);
193  }
194  return $a_str;
195  }
+ 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 462 of file class.ilDataSet.php.

References IL_INST_ID.

Referenced by ilBlogDataSet\readData().

462  : string
463  {
464  return "il_" . IL_INST_ID . "_" . $a_type . "_" . $a_id;
465  }
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 534 of file class.ilDataSet.php.

Referenced by addRecordsXml().

540  : ?ResourceCollection {
541  return null;
542  }
+ Here is the caller graph for this function:

◆ getCurrentInstallationId()

ilDataSet::getCurrentInstallationId ( )

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

References $current_installation_id.

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

454  : string
455  {
457  }
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 348 of file class.ilDataSet.php.

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

353  : array {
354  return [];
355  }
+ 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 155 of file class.ilDataSet.php.

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

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

159  : array {
160  $ilDB = $this->db;
161 
162  $set = $ilDB->query($a_query);
163  $this->data = array();
164  $ret = [];
165  while ($rec = $ilDB->fetchAssoc($set)) {
166  if ($a_convert_to_leading_upper) {
167  $tmp = array();
168  foreach ($rec as $k => $v) {
169  $tmp[$this->convertToLeadingUpper($k)]
170  = $v;
171  }
172  $rec = $tmp;
173  }
174 
175  if ($a_set) {
176  $this->data[] = $rec;
177  }
178  $ret[] = $rec;
179  }
180  return $ret;
181  }
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 138 of file class.ilDataSet.php.

References $ds_prefix.

Referenced by getDSPrefixString(), and getXmlRepresentation().

138  : string
139  {
140  return $this->ds_prefix;
141  }
string $ds_prefix
+ Here is the caller graph for this function:

◆ getDSPrefixString()

ilDataSet::getDSPrefixString ( )

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

References getDSPrefix().

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

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

◆ getImport()

ilDataSet::getImport ( )

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

References $import.

Referenced by ilSurveyDataSet\importRecord().

445  {
446  return $this->import;
447  }
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()

◆ getNamespaces()

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

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

References getDependencies(), and getXmlNamespace().

Referenced by getXmlRepresentation().

391  : void
392  {
393  $ns = $this->getXmlNamespace($a_entity, $a_schema_version);
394  if ($ns !== "") {
395  $namespaces[$a_entity] = $ns;
396  }
397  // add types of dependent entities
398  $deps = $this->getDependencies($a_entity, $a_schema_version, null, null);
399  foreach ($deps as $dp => $w) {
400  $this->getNamespaces($namespaces, $dp, $a_schema_version);
401  }
402  }
getNamespaces(array &$namespaces, string $a_entity, string $a_schema_version)
getXmlNamespace(string $a_entity, string $a_schema_version)
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 426 of file class.ilDataSet.php.

Referenced by addRecordsXml(), and addTypesXml().

426  : string
427  {
428  return $a_entity;
429  }
+ Here is the caller graph for this function:

◆ getXMLEntityTag()

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

Get entity tag.

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

References convertToLeadingUpper().

Referenced by addRecordsXml().

434  : string
435  {
436  return $this->convertToLeadingUpper($a_entity);
437  }
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 408 of file class.ilDataSet.php.

Referenced by addRecordsXml().

408  : array
409  {
410  return $a_set;
411  }
+ 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 219 of file class.ilDataSet.php.

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

226  : string {
227  $this->dircnt = 1;
228 
229  // init writer
230  $writer = new ilXmlWriter();
231  if (!$a_omit_header) {
232  $writer->xmlHeader();
233  }
234 
235  // collect namespaces
236  $namespaces = $prefixes = array();
237  $this->getNamespaces($namespaces, $a_entity, $a_schema_version);
238  $atts = array("InstallationId" => IL_INST_ID,
239  "InstallationUrl" => ILIAS_HTTP_PATH, "TopEntity" => $a_entity);
240  $cnt = 1;
241  foreach ($namespaces as $entity => $ns) {
242  $prefix = "ns" . $cnt;
243  $prefixes[$entity] = $prefix;
244  // $atts["xmlns:".$prefix] = $ns;
245  $cnt++;
246  }
247  $this->ds_log->debug("Start writing Dataset, entity: " . $a_entity . ", schema version: " . $a_schema_version .
248  ", ids: " . print_r($a_ids, true));
249 
250  if ($this->getDSPrefix() !== '') {
251  $atts['xmlns:' . $this->getDSPrefix()] = self::DATASET_NS;
252  } else {
253  $atts['xmlns'] = self::DATASET_NS;
254  }
255  $writer->xmlStartTag($this->getDSPrefixString() . 'DataSet', $atts);
256  // add types
257  if (!$a_omit_types) {
258  $this->ds_log->debug("...write types");
259  $this->addTypesXml($writer, $a_entity, $a_schema_version);
260  }
261  // add records
262  $this->ds_log->debug("...write records");
263  $this->addRecordsXml($writer, $prefixes, $a_entity, $a_schema_version, $a_ids, $a_field);
264 
265  $writer->xmlEndTag($this->getDSPrefixString() . "DataSet");
266 
267  return $writer->xmlDumpMem(false);
268  }
const IL_INST_ID
Definition: constants.php:40
getNamespaces(array &$namespaces, string $a_entity, string $a_schema_version)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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 417 of file class.ilDataSet.php.

References getTypes().

Referenced by addRecordsXml(), and addTypesXml().

417  : array
418  {
419  return $this->getTypes($a_entity, $a_version);
420  }
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 525 of file class.ilDataSet.php.

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

531  : void {
532  }
+ 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 87 of file class.ilDataSet.php.

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

87  : void
88  {
89  $this->entity = $a_entity;
90  $this->schema_version = $a_schema_version;
91  $this->data = array();
92  }
+ Here is the call 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 471 of file class.ilDataSet.php.

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

Referenced by ilBlogDataSet\importRecord().

471  : array
472  {
473  // ilias export id?
474  if (strpos($a_id, "il_") === 0) {
475  $parts = explode("_", $a_id);
476  if (count($parts) !== 4) {
477  throw new ilException("Invalid import ID '" . $a_id . "'.");
478  }
479  $inst_id = $parts[1];
480  $type = $parts[2];
481  $id = $parts[3];
482 
483  // missing installation ids?
484  if (($inst_id == 0 || IL_INST_ID === "0") && !DEVMODE) {
485  return array("type" => self::EXPORT_NO_INST_ID, "id" => $a_fallback_id);
486  }
487 
488  // same installation?
489  if ($inst_id == IL_INST_ID) {
490  // still existing?
491  if (ilObject::_lookupType($id) === $type) {
492  return array("type" => self::EXPORT_ID_ILIAS_LOCAL, "id" => $id);
493  }
494  // not found
495  else {
496  return array("type" => self::EXPORT_ID_ILIAS_LOCAL_INVALID, "id" => $a_fallback_id);
497  }
498  }
499  // different installation
500  else {
502  // matching type?
503  if ($id && ilObject::_lookupType($id) === $type) {
504  return array("type" => self::EXPORT_ID_ILIAS_REMOTE, "id" => $id);
505  }
506  // not found
507  else {
508  return array("type" => self::EXPORT_ID_ILIAS_REMOTE_INVALID, "id" => $a_fallback_id);
509  }
510  }
511  } else {
512  // external id
514  if ($id) {
515  return array("type" => self::EXPORT_ID, "id" => $id);
516  } else {
517  return array("type" => self::EXPORT_ID_INVALID, "id" => $a_fallback_id);
518  }
519  }
520  }
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:64
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(), ilObjectDataSet\getTypes(), and init().

+ Here is the caller graph for this function:

◆ setCurrentInstallationId()

ilDataSet::setCurrentInstallationId ( string  $a_val)

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

449  : void
450  {
451  $this->current_installation_id = $a_val;
452  }

◆ setDSPrefix()

ilDataSet::setDSPrefix ( string  $a_val)

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

133  : void
134  {
135  $this->ds_prefix = $a_val;
136  }

◆ setExportDirectories()

ilDataSet::setExportDirectories ( string  $a_relative,
string  $a_absolute 
)

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

117  : void
118  {
119  $this->relative_export_dir = $a_relative;
120  $this->absolute_export_dir = $a_absolute;
121  }

◆ setImport()

ilDataSet::setImport ( ilSurveyImporter  $a_val)

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

439  : void
440  {
441  $this->import = $a_val;
442  }

◆ setImportDirectory()

ilDataSet::setImportDirectory ( string  $a_val)

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

123  : void
124  {
125  $this->import_directory = $a_val;
126  }

◆ stripTags()

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

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

References ilUtil\stripSlashes().

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

544  : array
545  {
546  $ret_rec = [];
547  foreach ($rec as $k => $v) {
548  if (in_array($k, $omit_keys, true)) {
549  $ret_rec[$k] = $v;
550  } else {
551  $ret_rec[$k] = ilUtil::stripSlashes($v);
552  }
553  }
554  return $ret_rec;
555  }
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

◆ $absolute_export_dir

string ilDataSet::$absolute_export_dir = ""
protected

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

◆ $current_installation_id

string ilDataSet::$current_installation_id = ""
protected

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

Referenced by getCurrentInstallationId().

◆ $data

◆ $db

◆ $dircnt

int ilDataSet::$dircnt = 0

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

Referenced by addRecordsXml().

◆ $ds_log

ilLogger ilDataSet::$ds_log
protected

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

◆ $ds_prefix

string ilDataSet::$ds_prefix = "ds"
protected

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

Referenced by getDSPrefix().

◆ $entity

string ilDataSet::$entity = ""
protected

◆ $import

ilSurveyImporter ilDataSet::$import
protected

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

Referenced by getImport().

◆ $import_directory

string ilDataSet::$import_directory = ""
protected

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

Referenced by getImportDirectory().

◆ $irss

ILIAS ResourceStorage Services ilDataSet::$irss
protected

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

◆ $relative_export_dir

string ilDataSet::$relative_export_dir = ""
protected

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

◆ $schema_version

string ilDataSet::$schema_version = ""
protected

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

Referenced by ilObjectDataSet\getDependencies().

◆ $version

string ilDataSet::$version = ""
protected

Definition at line 63 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 48 of file class.ilDataSet.php.

◆ EXPORT_ID_ILIAS_LOCAL

const ilDataSet::EXPORT_ID_ILIAS_LOCAL = 2

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

◆ EXPORT_ID_ILIAS_LOCAL_INVALID

const ilDataSet::EXPORT_ID_ILIAS_LOCAL_INVALID = 3

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

◆ EXPORT_ID_ILIAS_REMOTE

const ilDataSet::EXPORT_ID_ILIAS_REMOTE = 4

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

◆ EXPORT_ID_ILIAS_REMOTE_INVALID

const ilDataSet::EXPORT_ID_ILIAS_REMOTE_INVALID = 5

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

◆ EXPORT_ID_INVALID

const ilDataSet::EXPORT_ID_INVALID = 7

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

◆ EXPORT_NO_INST_ID

const ilDataSet::EXPORT_NO_INST_ID = 1

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


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