public function action_full_stream($last_modified = -1, $cache_names = false, $headers = false, $do_headers = true, $exit = true) { $directories = array(); if (!is_array($cache_names)) { $cache_names = I2CE::getConfig()->getKeys("/modules/csd_cache"); } if ($do_headers && array_key_exists('HTTP_HOST', $_SERVER)) { if (!is_array($headers)) { $headers = array('Content-Type: text/xml'); } foreach ($headers as $header) { header($header); } } foreach ($cache_names as $cache_name) { try { $csd_cache = new iHRIS_CSDCache($cache_name); } catch (Exception $e) { I2CE::raiseError("{$cache_name} exception"); continue; } if (!$csd_cache->enabled()) { continue; } if (!($directory = $csd_cache->directory())) { I2CE::raiseError("{$cache_name} error with directory"); continue; } if (!array_key_exists($directory, $directories)) { $directories[$directory] = array(); } $directories[$directory][] = $csd_cache; } if ($errors = I2CE_Dumper::cleanlyEndOutputBuffers()) { I2CE::raiseError("Got errors:\n{$errors}"); } if ($do_headers) { echo '<?xml version="1.0" encoding="UTF-8"?> '; flush(); } echo '<csd:CSD xmlns:csd="urn:ihe:iti:csd:2013" > '; foreach (array('organization', 'service', 'facility', 'provider') as $directory) { if (!array_key_exists($directory, $directories)) { $directories[$directory] = array(); } echo "<csd:" . $directory . "Directory>"; foreach ($directories[$directory] as $csd_cache) { $csd_cache->streamCache(false, $last_modified, array(), '', '', false); flush(); } echo "</csd:" . $directory . "Directory>"; } echo '</csd:CSD>'; flush(); if ($exit) { exit(0); } return true; }