ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilDataCollectionExporter.php
Go to the documentation of this file.
1 <?php
2 require_once("./Services/Export/classes/class.ilExport.php");
3 require_once('./Services/Export/classes/class.ilXmlExporter.php');
4 require_once('class.ilDataCollectionDataSet.php');
5 require_once('./Modules/DataCollection/classes/Helpers/class.ilDclCache.php');
6 require_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 ?>
static makeDirParents($a_dir)
Create a new directory and all parent directories.
getXmlExportHeadDependencies($a_entity, $a_target_release, $a_ids)
MOB/File fieldtypes objects are head dependencies They must be exported and imported first...
Xml Exporter class.
DataCollection dataset class.
getAbsoluteExportDirectory()
Get absolute export directory.
Create styles array
The data for the language used.
Class ilDataCollectionExporter.
getXmlRepresentation($a_entity, $a_schema_version, $a_id)
global $ilDB
global $DIC
getXmlExportTailDependencies($a_entity, $a_target_release, $a_ids)