ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilDataCollectionExporter.php
Go to the documentation of this file.
1<?php
2require_once("./Services/Export/classes/class.ilExport.php");
3require_once('./Services/Export/classes/class.ilXmlExporter.php');
4require_once('class.ilDataCollectionDataSet.php');
5require_once('./Modules/DataCollection/classes/Helpers/class.ilDclCache.php');
6require_once('./Modules/MediaPool/classes/class.ilObjMediaPool.php');
7
15
19 protected $ds;
23 protected $db;
24
25
26 public function init() {
27 global $DIC;
28 $ilDB = $DIC['ilDB'];
29 $this->ds = new ilDataCollectionDataSet();
30 $this->ds->setDSPrefix('ds');
31 $this->db = $ilDB;
32 }
33
34
40 public function getValidSchemaVersions($a_entity) {
41 return array(
42 '4.5.0' => array(
43 'namespace' => 'http://www.ilias.de/Modules/DataCollection/dcl/4_5',
44 'xsd_file" => "ilias_dcl_4_5.xsd',
45 'uses_dataset' => true,
46 'min' => '4.5.0',
47 'max' => ''
48 )
49 );
50 }
51
52
53 public function getXmlRepresentation($a_entity, $a_schema_version, $a_id) {
55 $this->ds->setExportDirectories($this->dir_relative, $this->dir_absolute);
56
57 return $this->ds->getXmlRepresentation($a_entity, $a_schema_version, $a_id, '', true, true);
58 }
59
60
71 public function getXmlExportHeadDependencies($a_entity, $a_target_release, $a_ids) {
72 $dependencies = array(
74 'component' => 'Modules/File',
75 'entity' => 'file',
76 'ids' => array(),
77 ),
79 'component' => 'Services/MediaObjects',
80 'entity' => 'mob',
81 'ids' => array(),
82 ),
83 );
84
85 // Direct SQL query is faster than looping over objects
86 foreach ($a_ids as $dcl_obj_id) {
87 $sql = "SELECT stloc2.value AS ext_id, f." . $this->db->quoteIdentifier('datatype_id') . " FROM il_dcl_stloc2_value AS stloc2 "
88 . "INNER JOIN il_dcl_record_field AS rf ON (rf." . $this->db->quoteIdentifier('id') . " = stloc2." . $this->db->quoteIdentifier('record_field_id') . ") "
89 . "INNER JOIN il_dcl_field AS f ON (rf." . $this->db->quoteIdentifier('field_id') . " = f." . $this->db->quoteIdentifier('id') . ") " . "INNER JOIN il_dcl_table AS t ON (t." . $this->db->quoteIdentifier('id') . " = f." . $this->db->quoteIdentifier('table_id') . ") "
90 . "WHERE t." . $this->db->quoteIdentifier('obj_id') . " = " . $this->db->quote($dcl_obj_id, 'integer') . " " . "AND f.datatype_id IN ("
91 . implode(',', array_keys($dependencies)) . ") AND stloc2." . $this->db->quoteIdentifier('value') . " IS NOT NULL";
92 $set = $this->db->query($sql);
93 while ($rec = $this->db->fetchObject($set)) {
94 $dependencies[$rec->datatype_id]['ids'][] = (int)$rec->ext_id;
95 }
96 }
97
98 // Return external dependencies/IDs if there are any
99 $return = array();
100 if (count($dependencies[ilDclDatatype::INPUTFORMAT_FILE]['ids'])) {
101 $return[] = $dependencies[ilDclDatatype::INPUTFORMAT_FILE];
102 }
103 if (count($dependencies[ilDclDatatype::INPUTFORMAT_MOB]['ids'])) {
104 $return[] = $dependencies[ilDclDatatype::INPUTFORMAT_MOB];
105 }
106
107 return $return;
108 }
109
110
118 public function getXmlExportTailDependencies($a_entity, $a_target_release, $a_ids) {
119 $page_object_ids = array();
120 foreach ($a_ids as $dcl_obj_id) {
121 // If a DCL table has a detail view, we need to export the associated page objects!
122 $sql = "SELECT page_id FROM page_object "
123 . "WHERE parent_type = " . $this->db->quote('dclf', 'text') . " AND parent_id = " . $this->db->quote($dcl_obj_id, 'integer');
124 $set = $this->db->query($sql);
125 while ($rec = $this->db->fetchObject($set)) {
126 $page_object_ids[] = "dclf:" . $rec->page_id;
127 }
128 }
129 if (count($page_object_ids)) {
130 return array(
131 array(
132 'component' => 'Services/COPage',
133 'entity' => 'pg',
134 'ids' => $page_object_ids,
135 )
136 );
137 }
138
139 return array();
140 }
141
142}
143
144?>
An exception for terminatinating execution or to throw for unit testing.
DataCollection dataset class.
Class ilDataCollectionExporter.
getXmlExportTailDependencies($a_entity, $a_target_release, $a_ids)
getXmlExportHeadDependencies($a_entity, $a_target_release, $a_ids)
MOB/File fieldtypes objects are head dependencies They must be exported and imported first,...
getXmlRepresentation($a_entity, $a_schema_version, $a_id)
Get xml representation.
static makeDirParents($a_dir)
Create a new directory and all parent directories.
Xml Exporter class.
getAbsoluteExportDirectory()
Get absolute export directory.
global $ilDB
global $DIC