public function intialize_csd_cache_metadata() { $cache_names = array('csd_county_default', 'csd_country_default', 'csd_region_default', 'csd_district_default'); foreach ($cache_names as $cache_name) { if (!iHRIS_CSDCache::intialize_csd_cache_metadata($cache_name)) { return false; } } return true; }
public function intialize_csd_cache_metadata() { $lists = array('cadre', 'id_type', 'council', 'job', 'language', 'classification'); $csd_cache = 'csd_manage_default'; return iHRIS_CSDCache::intialize_csd_cache_metadata($csd_cache, $lists); }
public function intialize_csd_cache_metadata_health_facility() { $lists = array('facility_type'); $csd_cache = 'csd_health_facility_default'; return iHRIS_CSDCache::intialize_csd_cache_metadata($csd_cache, $lists); }
public static function intialize_csd_cache_metadata($csd_cache, $lists = array(), $requested_oids = array(), $options = array()) { if (!I2CE_MagicDataNode::checkKey($csd_cache) || !is_array($lists)) { I2CE::raiseError("Badness on CSD cache metadata args"); return false; } if (!is_array($requested_oids)) { $requested_oids = array(); } if (!is_array($options)) { $options = array(); } $config = I2CE::getConfig(); if (!($svs_config = $config->traverse("/modules/SVS/lists", true, false)) instanceof I2CE_MagicDataNode) { I2CE::raiseError("bad SVS root node"); return false; } if (!($csd_cache_config = $config->traverse("/modules/csd_cache/" . $csd_cache . "/args", true, false)) instanceof I2CE_MagicDataNode) { I2CE::raiseError("bad csd_cache config node"); return false; } $site_module = 'ihris'; $config->setIfIsSet($site_module, '/config/site/module'); $source_uri = "http://localhost/" . $site_module; if (array_key_exists('HTTP_HOST', $_SERVER)) { $source_uri = I2CE_Page::getAccessedBaseURL(); } if (!is_array($oids = $csd_cache_config->getAsArray('svs_dependencies'))) { $oids = array(); } foreach ($lists as $list) { if (array_key_exists($list, $oids)) { continue; } if (array_key_exists($list, $requested_oids)) { $oids[$list] = $oid = $requested_oids[$list]; } else { $oids[$list] = $oid = iHRIS_CSDCache::generateUUIDasOID(); } if (!I2CE_MagicDataNode::checkKey($oid)) { I2CE::raiseError("Invalid OID: {$oid}"); return false; } if (array_key_exists($list, $options) && is_array($options[$list])) { $opts = $options[$list]; } else { $opts = array(); } $styles = iHRIS_SVS::getAvailableStyles($list); if (array_key_exists('code_style', $opts) && is_scalar($opts['code_style'])) { $code_style = $opts['code_style']; } else { $code_style = 'code'; } if (!in_array($code_style, $styles)) { $code_style = 'id'; } $definition = array('list' => $list, 'meta' => array('Source' => $site_module, 'SourceURI' => $source_uri, 'code_style' => $code_style, 'code_system' => $oid)); if (!($svs_list_config = $svs_config->traverse($oid, true, false)) instanceof I2CE_MagicDataNode) { I2CE::raiseError("Could not create MD for {$oid} at " . $svs_config->getPath()); return false; } $svs_list_config->setValue($definition); try { $svs = new iHRIS_SVS($oid); $svs->publishConceptList(); } catch (Exception $e) { I2CE::raiseError("Could not create SVS list on OID: {$oid}"); return false; } } $transform_vars = array('sourceDirectory' => $source_uri, 'rootProviderURN' => 'urn:ihris.org:' . $site_module . ':providers', 'rootFacilityURN' => 'urn:ihris.org:' . $site_module . ':facilities', 'rootOrganizationURN' => 'urn:ihris.org:' . $site_module . ':organizations', 'rootServicesURN' => 'urn:ihris.org:' . $site_module . ':services'); foreach ($lists as $list) { $transform_vars[$list . 'CodingScheme'] = $oids[$list]; } $csd_cache_config->svs_dependencies = $oids; foreach ($transform_vars as $key => $val) { I2CE::raiseError("Setting {$key} at " . $csd_cache_config->getPath()); if (!$csd_cache_config->__isset("transform_vars/" . $key)) { $csd_cache_config->transform_vars->{$key} = $val; } } return true; }
protected function action_soap($cache_name, $headers = false, $content = false) { if (!$content) { $content = file_get_contents("php://input"); } if (!$content || !($req_doc = new DOMDocument("1.0", "UTF-8")) || !$req_doc->loadXML($content) || !($xpath = new DOMXPath($req_doc)) || !$xpath->registerNamespace('soap', 'http://www.w3.org/2003/05/soap-envelope') || !$xpath->registerNamespace('wsa', 'http://www.w3.org/2005/08/addressing') || !$xpath->registerNamespace('csd', 'urn:ihe:iti:csd:2013') || !($results = $xpath->query('/soap:Envelope/soap:Body/csd:getModificationsRequest/csd:lastModified')) instanceof DOMNodeList || !($results->length == 1) || !($item = $results->item(0)) instanceof DOMElement || !($mod_time = $item->textContent) || !($results = $xpath->query('/soap:Envelope/soap:Header/wsa:MessageID')) instanceof DOMNodeList || !($results->length == 1) || !($item = $results->item(0)) instanceof DOMElement || !($msg_id = $item->textContent)) { I2CE::raiseError("Invalid request"); //NEED TO ADD IN ERROR HANDLING ACCORDING TO SPEC return false; } try { $csd_cache = new iHRIS_CSDCache($cache_name); } catch (Exception $e) { return false; } if (!is_array($headers)) { $headers = array('Content-Type: text/xml'); } foreach ($headers as $header) { header($header); } $pre = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:csd="urn:ihe:iti:csd:2013"> <soap:Header> <wsa:Action soap:mustUnderstand="1" >urn:ihe:iti:csd:2013:GetDirectoryModificationsResponse</wsa:Action> <wsa:MessageID>urn:uuid:' . iHRIS_UUID_Map::generateUUID() . '</wsa:MessageID> <wsa:To soap:mustUnderstand="1"> http://www.w3.org/2005/08/addressing/anonymous</wsa:To> <wsa:RelatesTo>' . $msg_id . '</wsa:RelatesTo> </soap:Header> <soap:Body> <csd:getModificationsResponse xmlns:csd="urn:ihe:iti:csd:2013"> '; $post = '</csd:getModificationsResponse> </soap:Body> </soap:Envelope>'; $csd_cache->streamCache(false, $mod_time, array(), $pre, $post); exit(0); }