/** * Process exporter * * @param * @return */ function processExporter($a_comp, $a_class, $a_entity, $a_target_release, $a_id) { $success = true; if (!is_array($a_id)) { if ($a_id == "") { return; } $a_id = array($a_id); } // get exporter object $export_class_file = "./" . $a_comp . "/classes/class." . $a_class . ".php"; //echo "1-".$export_class_file."-"; exit; if (!is_file($export_class_file)) { echo "1-not found:" . $export_class_file . "-"; exit; return false; } include_once $export_class_file; $exp = new $a_class(); if (!isset($this->cnt[$a_comp])) { $this->cnt[$a_comp] = 1; } else { $this->cnt[$a_comp]++; } $set_dir_relative = $a_comp . "/set_" . $this->cnt[$a_comp]; $set_dir_absolute = $this->export_run_dir . "/" . $set_dir_relative; ilUtil::makeDirParents($set_dir_absolute); $exp->init(); $sv = $exp->determineSchemaVersion($a_entity, $a_target_release); // process head dependencies $sequence = $exp->getXmlExportHeadDependencies($a_entity, $a_target_release, $a_id); foreach ($sequence as $s) { $comp = explode("/", $s["component"]); $exp_class = "il" . $comp[1] . "Exporter"; $s = $this->processExporter($s["component"], $exp_class, $s["entity"], $a_target_release, $s["ids"]); if (!$s) { $success = false; } } // write export.xml file $export_writer = new ilXmlWriter(); $export_writer->xmlHeader(); $attribs = array("InstallationId" => IL_INST_ID, "InstallationUrl" => ILIAS_HTTP_PATH, "Entity" => $a_entity, "SchemaVersion" => $sv["schema_version"], "TargetRelease" => $a_target_release, "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", "xmlns:exp" => "http://www.ilias.de/Services/Export/exp/4_1", "xsi:schemaLocation" => "http://www.ilias.de/Services/Export/exp/4_1 " . ILIAS_HTTP_PATH . "/xml/ilias_export_4_1.xsd"); if ($sv["namespace"] != "" && $sv["xsd_file"] != "") { $attribs["xsi:schemaLocation"] .= " " . $sv["namespace"] . " " . ILIAS_HTTP_PATH . "/xml/" . $sv["xsd_file"]; $attribs["xmlns"] = $sv["namespace"]; } if ($sv["uses_dataset"]) { $attribs["xsi:schemaLocation"] .= " " . "http://www.ilias.de/Services/DataSet/ds/4_3 " . ILIAS_HTTP_PATH . "/xml/ilias_ds_4_3.xsd"; $attribs["xmlns:ds"] = "http://www.ilias.de/Services/DataSet/ds/4_3"; } $export_writer->xmlStartTag('exp:Export', $attribs); $dir_cnt = 1; foreach ($a_id as $id) { $exp->setExportDirectories($set_dir_relative . "/expDir_" . $dir_cnt, $set_dir_absolute . "/expDir_" . $dir_cnt); $export_writer->xmlStartTag('exp:ExportItem', array("Id" => $id)); //$xml = $exp->getXmlRepresentation($a_entity, $a_target_release, $id); $xml = $exp->getXmlRepresentation($a_entity, $sv["schema_version"], $id); $export_writer->appendXml($xml); $export_writer->xmlEndTag('exp:ExportItem'); $dir_cnt++; } $export_writer->xmlEndTag('exp:Export'); $export_writer->xmlDumpFile($set_dir_absolute . "/export.xml", false); $this->manifest_writer->xmlElement("ExportFile", array("Component" => $a_comp, "Path" => $set_dir_relative . "/export.xml")); // process tail dependencies $sequence = $exp->getXmlExportTailDependencies($a_entity, $a_target_release, $a_id); foreach ($sequence as $s) { $comp = explode("/", $s["component"]); $exp_class = "il" . $comp[1] . "Exporter"; $s = $this->processExporter($s["component"], $exp_class, $s["entity"], $a_target_release, $s["ids"]); if (!$s) { $success = false; } } return $success; }