} $display_xml = false; if (isset($arguments['x'])) { $display_xml = true; } $options = array(); if (isset($arguments['t'])) { $options['tracker_id'] = (int) $arguments['t']; } $options['force'] = isset($arguments['f']); $project = ProjectManager::instance()->getProject($project_id); if ($project && !$project->isError() && !$project->isDeleted()) { try { $rng_validator = new XML_RNGValidator(); $users_collection = new UserXMLExportedCollection($rng_validator, new XML_SimpleXMLCDATAFactory()); $xml_exporter = new ProjectXMLExporter(EventManager::instance(), new UGroupManager(), $rng_validator, new UserXMLExporter(UserManager::instance(), $users_collection), new ProjectXMLExporterLogger()); $archive = new ZipArchive(); if ($archive->open($output, ZipArchive::CREATE) !== true) { echo '*** ERROR: Cannot create archive: ' . $archive_path; exit(1); } $xml_security = new XML_Security(); $xml_security->enableExternalLoadOfEntities(); $user = UserManager::instance()->forceLogin($username); $xml_content = $xml_exporter->export($project, $options, $user, $archive); $users_xml_content = $users_collection->toXML(); if ($display_xml) { echo $xml_content; echo PHP_EOL; echo $users_xml_content; }
$project_id = (int) $arguments['p']; } if (!isset($arguments['u'])) { usage(); } else { $username = $arguments['u']; } $options = array(); if (isset($arguments['t'])) { $options['tracker_id'] = (int) $arguments['t']; } $options['force'] = isset($arguments['f']); $project = ProjectManager::instance()->getProject($project_id); if ($project && !$project->isError() && !$project->isDeleted()) { try { $xml_exporter = new ProjectXMLExporter(EventManager::instance(), new UGroupManager(), new XML_RNGValidator(), new UserXMLExporter(UserManager::instance()), new ProjectXMLExporterLogger()); $user = UserManager::instance()->forceLogin($username); echo $xml_exporter->export($project, $options, $user); exit(0); } catch (XML_ParseException $exception) { fwrite(STDERR, "*** PARSE ERROR: " . $exception->getIndentedXml() . PHP_EOL); foreach ($exception->getErrors() as $parse_error) { fwrite(STDERR, "*** PARSE ERROR: " . $parse_error . PHP_EOL); } fwrite(STDERR, "RNG path: " . $exception->getRngPath() . PHP_EOL); exit(1); } catch (Exception $exception) { fwrite(STDERR, "*** ERROR: " . $exception->getMessage() . PHP_EOL); exit(1); } } else {
} else { $output = $arguments['o']; } $display_xml = false; if (isset($arguments['x'])) { $display_xml = true; } $options = array(); if (isset($arguments['t'])) { $options['tracker_id'] = (int) $arguments['t']; } $options['force'] = isset($arguments['f']); $project = ProjectManager::instance()->getProject($project_id); if ($project && !$project->isError() && !$project->isDeleted()) { try { $xml_exporter = new ProjectXMLExporter(EventManager::instance(), new UGroupManager(), new XML_RNGValidator(), new UserXMLExporter(UserManager::instance()), new ProjectXMLExporterLogger()); $archive = new ZipArchive(); if ($archive->open($output, ZipArchive::CREATE) !== true) { echo '*** ERROR: Cannot create archive: ' . $archive_path; exit(1); } $xml_security = new XML_Security(); $xml_security->enableExternalLoadOfEntities(); $user = UserManager::instance()->forceLogin($username); $xml_content = $xml_exporter->export($project, $options, $user); if ($display_xml) { echo $xml_content; } $archive->addFromString('project.xml', $xml_content); $xml_security->disableExternalLoadOfEntities(); $archive->close();