exit; } ##############################################À ### SALVATAGGIO DELL'ALLEGATO SU FILESYSTEM ################################################################## #### MI ASSICURO CHE URI,SIZE ED HASH NON SIANO GIA' SPECIFICATE NEL METADATA $mod = modifiable($ExtrinsicObject_node); $datetime = "CURRENT_TIMESTAMP"; $insert_into_DOCUMENTS = "INSERT INTO DOCUMENTS (XDSDOCUMENTENTRY_UNIQUEID,DATA,URI,MIMETYPE,CRYPT) VALUES ('" . $UniqueId_valid_array[1][$o] . "'," . $datetime . ",'" . $document_URI2 . "','" . $AllegatiExtrinsicObject[2][$o] . "','" . $REP_crypt . "')"; //writeTimeFile($idfile."--Repository: INSERT INTO DOCUMENTS".$insert_into_DOCUMENTS); $ris = query_execute2($insert_into_DOCUMENTS, $connessione); //FINO A QUA OK!!! $selectTOKEN = "SELECT KEY_PROG FROM DOCUMENTS WHERE XDSDOCUMENTENTRY_UNIQUEID = '" . $UniqueId_valid_array[1][$o] . "'"; //writeTimeFile($idfile."--Repository: uniqueid".$selectTOKEN); //$selectTOKEN= "SELECT MAX(TOKEN_ID) AS TOKEN_ID FROM TOKEN"; $res_token = query_select2($selectTOKEN, $connessione); $next_token = $res_token[0][0]; $document_token = $www_REP_path . "getDocument.php?token=" . $next_token; //writeTimeFile($idfile."--Repository: document_token".$document_token); ###### Calcolo URI if ($rep_protocol == "NORMAL") { $Document_URI_token = $normal_protocol . $rep_host . ":" . $rep_port . $document_token; } else { if ($rep_protocol == "TLS") { $Document_URI_token = $tls_protocol . $rep_host . ":" . $rep_port . $document_token; } } ###### Calcolo Hash $hash = hash("sha1", file_get_contents($document_URI)); //writeTimeFile($idfile."--Repository: hash".$hash); ###### Calcolo size
function validate_XDSDocumentEntryUniqueId($dom, $connessione) { // $fp_uniqueIdQuery = fopen("tmp/DocumentEntryUniqueIdQuery","w+"); $ebxml_value = array(); ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI ExtrinsicObject $dom_ebXML_ExtrinsicObject_node_array = $root_ebXML->get_elements_by_tagname("ExtrinsicObject"); #### CICLO SU OGNI ExtrinsicObject #### $isEmpty = false; $failure = ""; for ($index = 0; $index < count($dom_ebXML_ExtrinsicObject_node_array); $index++) { ##### NODO ExtrinsicObject RELATIVO AL DOCUMENTO NUMERO $index $ExtrinsicObject_node = $dom_ebXML_ExtrinsicObject_node_array[$index]; #### ARRAY DEI FIGLI DEL NODO ExtrinsicObject ############## $ExtrinsicObject_child_nodes = $ExtrinsicObject_node->child_nodes(); ################################################################# ################# PROCESSO TUTTI I NODI FIGLI DI ExtrinsicObject for ($k = 0; $k < count($ExtrinsicObject_child_nodes); $k++) { #### SINGOLO NODO FIGLIO DI ExtrinsicObject $ExtrinsicObject_child_node = $ExtrinsicObject_child_nodes[$k]; #### NOME DEL NODO $ExtrinsicObject_child_node_tagname = $ExtrinsicObject_child_node->node_name(); if ($ExtrinsicObject_child_node_tagname == 'ExternalIdentifier') { $externalidentifier_node = $ExtrinsicObject_child_node; $value_value = avoidHtmlEntitiesInterpretation($externalidentifier_node->get_attribute('value')); #### NODI FIGLI DI EXTERNALIDENTIFIER $externalidentifier_child_nodes = $externalidentifier_node->child_nodes(); //print_r($name_node); for ($q = 0; $q < count($externalidentifier_child_nodes); $q++) { $externalidentifier_child_node = $externalidentifier_child_nodes[$q]; $externalidentifier_child_node_tagname = $externalidentifier_child_node->node_name(); if ($externalidentifier_child_node_tagname == 'Name') { $name_node = $externalidentifier_child_node; $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if (strpos(strtolower(trim($LocalizedString_value)), strtolower('DocumentEntry.uniqueId'))) { $ebxml_value[$index] = $value_value; } } } } } } //END OF if($ExtrinsicObject_child_node_tagname=='ExternalIdentifier') } //QUERY AL DB $query = "SELECT XDSDOCUMENTENTRY_UNIQUEID FROM DOCUMENTS WHERE XDSDOCUMENTENTRY_UNIQUEID = '" . $ebxml_value[$index] . "'"; ### EFFETTUO LA QUERY ED OTTENGO IL RISULTATO $res = query_select2($query, $connessione); //array bidimensionale //Qui dovrei verificare che l'hash sia differente ma dato che non salvo l'hash non posso verificarlo //$isEmptyUniqueId = ((empty($res)) || $isEmpty); $isEmptyUniqueId = true; if (!$isEmptyUniqueId) { ###---> uniqueId già presente --> eccezione $errorcode[] = "XDSNonIdenticalHash"; $error_message[] = "ExternalIdentifier XDSDocumentEntry.uniqueId '" . $ebxml_value[$index] . "' (urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab) already exists in registry"; $uniqueId_response = makeSoapedFailureResponse($error_message, $errorcode); writeTimeFile($_SESSION['idfile'] . "--Repository: uniqueId_failure_response"); $file_input = $_SESSION['idfile'] . "-uniqueId_failure_response-" . $_SESSION['idfile']; writeTmpFiles($uniqueId_response, $file_input); SendResponse($uniqueId_response); exit; } } //END OF for($index=0;$index<(count($dom_ebXML_ExtrinsicObject_node_array));$index++) $ret = array($isEmptyUniqueId, $ebxml_value); return $ret; }
$clean_cache = $res_config[0][0]; ### A=attiva O=non attivo if ($clean_cache == "O" || $clean_cache == "L") { $tmp_path = "./tmp/"; $tmpQueryService_path = "./tmpQueryService/"; } else { if ($clean_cache == "H") { $tmp_path = "./tmp/" . date("Y") . date("m") . date("d") . "/" . $ip_source . "/"; $tmpQueryService_path = "./tmpQueryService/" . date("Y") . date("m") . date("d") . "/" . $ip_source . "/"; } } ##### CONTROL PATIENT ID ### A=controlla il PatientID e se non presente nel database ritorna un errore ## O=controlla il PatientID e se non presente lo inserisce nel database $control_PatientID = $res_config[0][1]; ##### LOG $logActive = $res_config[0][2]; $log_path = "./log/"; ##### STAT $statActive = $res_config[0][3]; ##### FOLDER $controlFolderUniqueId = $res_config[0][4]; ##### STATUS $registry_status = $res_config[0][5]; ####### NAV $get_NAV = "SELECT * FROM NAV"; $res_NAV = query_select2($get_NAV, $connessione); $NAV = $res_NAV[0][0]; ### A=attiva O=non attivo $NAV_from = $res_NAV[0][1]; $NAV_to = $res_NAV[0][2];
function fill_ExtrinsicObject_tables($dom, $connessione) { #### LANGUAGECODE DI DEFAULT $lang = "it-it"; ##### ARRAY DELL'ATTRIBUTO ID DI EXTRINSICOBJECT $ExtrinsicObject_id_array = array(); $simbolic_ExtrinsicObject_id_array = array(); ##### ARRAY DEGLI ATTRIBUTI DEL NODO EXTRINSICOBJECT $DB_array_extrinsicobject_attributes = array(); ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI EXTRINSICOBJECT $dom_ebXML_ExtrinsicObject_node_array = $root_ebXML->get_elements_by_tagname("ExtrinsicObject"); ##### ARRAY DEI NODI ASSOCIATION $dom_ebXML_Association_node_array = $root_ebXML->get_elements_by_tagname("Association"); if (!empty($dom_ebXML_ExtrinsicObject_node_array)) { #### CICLO SU OGNI DOCUMENTO RICEVUTO #### for ($index = 0; $index < count($dom_ebXML_ExtrinsicObject_node_array); $index++) { ##### NODO EXTRINSICOBJECT RELATIVO AL DOCUMENTO NUMERO $index $ExtrinsicObject_node = $dom_ebXML_ExtrinsicObject_node_array[$index]; ############## RECUPERO TUTTI GLI ATTRIBUTI DEL NODO EXTRINSICOBJECT $value_ExtrinsicObject_id = "urn:uuid:" . idrandom(); $simbolic_ExtrinsicObject_id = $ExtrinsicObject_node->get_attribute('id'); $simbolic_ExtrinsicObject_id_array[] = $ExtrinsicObject_node->get_attribute('id'); ############################################################# ####NOTA BENE NEL CASO NON SIMBOLICO(VEDI SOLINFO) if (!isSimbolic($simbolic_ExtrinsicObject_id)) { $value_ExtrinsicObject_id = $simbolic_ExtrinsicObject_id; } ############################################################# $ExtrinsicObject_id_array[$simbolic_ExtrinsicObject_id] = $value_ExtrinsicObject_id; $value_accessControlPolicy = $ExtrinsicObject_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $ExtrinsicObject_node->get_attribute('objectType'); if ($value_objectType == '') { #### DEVO CERCARE NEL DB: INITIALIZE $query_for_objectType = "SELECT id FROM ClassificationNode WHERE ClassificationNode.code = 'XDSDocumentEntry'"; $res = query_select2($query_for_objectType, $connessione); writeSQLQuery($res . ": " . $query_for_objectType); $value_objectType = $res[0][0]; } $value_expiration = $ExtrinsicObject_node->get_attribute('expiration'); if ($value_expiration == '') { $value_expiration = "CURRENT_TIMESTAMP"; } $value_majorVersion = $ExtrinsicObject_node->get_attribute('majorVersion'); if ($value_majorVersion == '') { $value_majorVersion = "0"; } $value_minorVersion = $ExtrinsicObject_node->get_attribute('minorVersion'); if ($value_minorVersion == '') { $value_minorVersion = "1"; } $value_stability = $ExtrinsicObject_node->get_attribute('stability'); if ($value_stability == '') { $value_stability = "NULL"; } $value_status = $ExtrinsicObject_node->get_attribute('status'); #### DEAULT //$value_status = "Approved";###QUI LA SUBMISSION VA A BUON FINE $value_status = "NotCompleted"; ### VERIFICO CASO DI REPLACEMENT for ($t = 0; $t < count($dom_ebXML_Association_node_array); $t++) { $dom_ebXML_Association_node = $dom_ebXML_Association_node_array[$t]; #### ATTRIBUTO associationType $Association_node_associationType_attr = $dom_ebXML_Association_node->get_attribute('associationType'); /*if($Association_node_associationType_attr=='RPLC' || $Association_node_associationType_attr=='XFRM_RPLC') { $value_status = "Approved"; } else if($Association_node_associationType_attr=='XFRM') { $value_status = "Approved"; } else if($Association_node_associationType_attr=='APND') { $value_status = "Approved"; } else continue; */ } //END OF for($t=0;$t<count($dom_ebXML_Association_node_array);$t++) $value_userVersion = $ExtrinsicObject_node->get_attribute('userVersion'); if ($value_userVersion == '') { $value_userVersion = "NULL"; } $value_isOpaque = $ExtrinsicObject_node->get_attribute('isOpaque'); if ($value_isOpaque == '') { $value_isOpaque = "0"; } $value_mimeType = $ExtrinsicObject_node->get_attribute('mimeType'); if ($value_mimeType == '') { $value_mimeType = "text/xml"; } $DB_array_extrinsicobject_attributes['id'] = $value_ExtrinsicObject_id; $DB_array_extrinsicobject_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_extrinsicobject_attributes['objectType'] = $value_objectType; $DB_array_extrinsicobject_attributes['expiration'] = $value_expiration; $DB_array_extrinsicobject_attributes['majorVersion'] = $value_majorVersion; $DB_array_extrinsicobject_attributes['minorVersion'] = $value_minorVersion; $DB_array_extrinsicobject_attributes['stability'] = $value_stability; $DB_array_extrinsicobject_attributes['status'] = $value_status; $DB_array_extrinsicobject_attributes['userVersion'] = $value_userVersion; $DB_array_extrinsicobject_attributes['isOpaque'] = $value_isOpaque; $DB_array_extrinsicobject_attributes['mimeType'] = $value_mimeType; ####### QUI ORA POSSO RIEMPIRE IL DB $INSERT_INTO_ExtrinsicObject = "INSERT INTO ExtrinsicObject \n(id,accessControlPolicy,objectType,expiration,majorVersion,minorVersion,stability,status,userVersion,isOpaque,mimeType) \nVALUES \n('" . trim($DB_array_extrinsicobject_attributes['id']) . "','" . trim($DB_array_extrinsicobject_attributes['accessControlPolicy']) . "','" . trim($DB_array_extrinsicobject_attributes['objectType']) . "'," . trim($DB_array_extrinsicobject_attributes['expiration']) . ",'" . trim($DB_array_extrinsicobject_attributes['majorVersion']) . "','" . trim($DB_array_extrinsicobject_attributes['minorVersion']) . "','" . trim($DB_array_extrinsicobject_attributes['stability']) . "','" . trim($DB_array_extrinsicobject_attributes['status']) . "','" . trim($DB_array_extrinsicobject_attributes['userVersion']) . "','" . trim($DB_array_extrinsicobject_attributes['isOpaque']) . "','" . trim($DB_array_extrinsicobject_attributes['mimeType']) . "')"; $ris = query_exec2($INSERT_INTO_ExtrinsicObject, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_ExtrinsicObject); ############## FINE RECUPERO TUTTI GLI ATTRIBUTI DEL NODO EXTRINSICOBJECT #### ARRAY DEI FIGLI DEL NODO EXTRINSICOBJECT ############## $ExtrinsicObject_child_nodes = $ExtrinsicObject_node->child_nodes(); ######################################################################## ######### PROCESSO TUTTI I NODI FIGLI DI EXTRINSICOBJECT ### PARENT $value_parent = $value_ExtrinsicObject_id; #### LANGUAGECODE DI DEFAULT $lang = "it-it"; for ($k = 0; $k < count($ExtrinsicObject_child_nodes); $k++) { #### SINGOLO NODO FIGLIO DI EXTRINSICOBJECT $ExtrinsicObject_child_node = $ExtrinsicObject_child_nodes[$k]; #### NOME DEL NODO $ExtrinsicObject_child_node_tagname = $ExtrinsicObject_child_node->node_name(); #### NODO SLOT if ($ExtrinsicObject_child_node_tagname == 'Slot') { $slot_node = $ExtrinsicObject_child_node; $DB_array_slot_attributes = array(); $value_name = $slot_node->get_attribute('name'); if ($value_name == '') { $value_name = "NOT DECLARED"; } $value_slotType = $slot_node->get_attribute('slotType'); if ($value_slotType == '') { $value_slotType = "NULL"; } $DB_array_slot_attributes['name'] = $value_name; $DB_array_slot_attributes['slotType'] = $value_slotType; $DB_array_slot_attributes['value'] = ''; $DB_array_slot_attributes['parent'] = $value_parent; #### NODI FIGLI DI SLOT $slot_child_nodes = $slot_node->child_nodes(); for ($q = 0; $q < count($slot_child_nodes); $q++) { $slot_child_node = $slot_child_nodes[$q]; $slot_child_node_tagname = $slot_child_node->node_name(); if ($slot_child_node_tagname == 'ValueList') { $valuelist_node = $slot_child_node; $valuelist_child_nodes = $valuelist_node->child_nodes(); for ($r = 0; $r < count($valuelist_child_nodes); $r++) { $value_node = $valuelist_child_nodes[$r]; $value_node_tagname = $value_node->node_name(); if ($value_node_tagname == 'Value') { $value_value = $value_node->get_content(); $DB_array_slot_attributes['value'] = $value_value; #### LANGUAGE CODE if (strtoupper($value_name) == "LANGUAGECODE") { ### LANG $lang = $value_value; $update_Name_lang = "UPDATE Name SET Name.lang = '{$lang}' WHERE Name.parent = '{$value_ExtrinsicObject_id}'"; $update_Description_lang = "UPDATE Description SET Description.lang = '{$lang}' WHERE Description.parent = '{$value_ExtrinsicObject_id}'"; $rs = query_exec2($update_Name_lang, $connessione); $rs = query_exec2($update_Description_lang, $connessione); } //SALVO LA LINGUA ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('" . trim($DB_array_slot_attributes['name']) . "','" . trim($DB_array_slot_attributes['slotType']) . "','" . trim(adjustString($DB_array_slot_attributes['value'])) . "','" . trim($DB_array_slot_attributes['parent']) . "')"; if (trim($DB_array_slot_attributes['name']) == 'sourcePatientInfo' && substr_count(trim(adjustString($DB_array_slot_attributes['value'])), 'PID-5') > 0) { $atna_patient_value = trim(adjustString($DB_array_slot_attributes['value'])); } $ris = query_exec2($INSERT_INTO_Slot, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Slot); } } } } } else { if ($ExtrinsicObject_child_node_tagname == 'Name') { $name_node = $ExtrinsicObject_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id;//ExtrinsicObject $DB_array_name['parent'] = $value_parent; //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } else { if ($ExtrinsicObject_child_node_tagname == 'Description') { $description_node = $ExtrinsicObject_child_node; $DB_array_description = array(); $LocalizedString_nodes = $description_node->child_nodes(); if (count($LocalizedString_nodes) != 0) { //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_description['charset'] = $LocalizedString_charset; $DB_array_description['lang'] = $LocalizedString_lang; $DB_array_description['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id;//ExtrinsicObject $DB_array_description['parent'] = $value_parent; } else { $DB_array_description['charset'] = "UTF-8"; $DB_array_description['lang'] = "it-it"; $DB_array_description['value'] = "NOT DECLARED"; $DB_array_description['parent'] = $value_parent; } ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Description = "INSERT INTO Description (charset,lang,value,parent) VALUES ('" . trim($DB_array_description['charset']) . "','" . trim($DB_array_description['lang']) . "','" . trim(adjustString($DB_array_description['value'])) . "','" . trim($DB_array_description['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Description, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Description); } else { if ($ExtrinsicObject_child_node_tagname == 'Classification') { $classification_node = $ExtrinsicObject_child_node; $DB_array_classification_attributes = array(); $value_id = $classification_node->get_attribute('id'); if ($value_id == '' || isSimbolic($value_id)) { $value_id = "urn:uuid:" . idrandom(); } $value_classifiedObject = $value_ExtrinsicObject_id; $value_accessControlPolicy = $classification_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $classification_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Classification') { $value_objectType = "Classification"; } // $value_classificationScheme= $classification_node->get_attribute('classificationScheme'); // if($value_classificationScheme == '') // { // $value_classificationScheme = "NOT DECLARED"; // } // $value_classificationNode= $classification_node->get_attribute('classificationNode'); // if($value_classificationNode == '') // { // $value_classificationNode = "NOT DECLARED"; // } $value_classificationNode = $classification_node->get_attribute('classificationNode'); $value_classificationScheme = $classification_node->get_attribute('classificationScheme'); if ($value_classificationNode == '') { $queryForName_value = "SELECT Name_value FROM ClassificationScheme WHERE ClassificationScheme.id = '{$value_classificationScheme}'"; $risName_value = query_select2($queryForName_value, $connessione); writeSQLQuery($risName_value . ": " . $queryForName_value); $name_value = $risName_value[0][0]; $name_value = substr($name_value, 0, strpos($name_value, '.')); $queryForClassificationNode = "SELECT id FROM ClassificationNode WHERE ClassificationNode.code = '{$name_value}'"; $ris_code = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_code . ": " . $queryForClassificationNode); $value_classificationNode = $ris_code[0][0]; } if ($value_classificationScheme == '') { $queryForClassificationNode = "SELECT code FROM ClassificationNode WHERE ClassificationNode.id = '{$value_classificationNode}'"; $ris_classificationNode = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_classificationNode . ": " . $queryForClassificationNode); $code_classificationNode = $ris_classificationNode[0][0]; #### FOLDER if ($code_classificationNode == "XDSFolder") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme.Name_value = 'XDSFolder.codeList'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; } else { if ($code_classificationNode == "XDSSubmissionSet") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme.Name_value = 'XDSSubmissionSet.contentTypeCode'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; } } //END OF if($code_classificationNode=="XDSSubmissionSet") } //END OF if($value_classificationScheme == '') $value_nodeRepresentation = $classification_node->get_attribute('nodeRepresentation'); /*if($value_nodeRepresentation == '') { $value_nodeRepresentation = "NULL"; //$value_nodeRepresentation = "default"; }*/ $DB_array_classification_attributes['classificationScheme'] = $value_classificationScheme; $DB_array_classification_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_classification_attributes['id'] = $value_id; $DB_array_classification_attributes['objectType'] = $value_objectType; $DB_array_classification_attributes['classifiedObject'] = $value_classifiedObject; $DB_array_classification_attributes['classificationNode'] = $value_classificationNode; $DB_array_classification_attributes['nodeRepresentation'] = $value_nodeRepresentation; //print_r($DB_array_classification_attributes); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Classification = "INSERT INTO Classification (id,accessControlPolicy,objectType,classificationNode,classificationScheme,classifiedObject,nodeRepresentation) VALUES ('" . trim($DB_array_classification_attributes['id']) . "','" . trim($DB_array_classification_attributes['accessControlPolicy']) . "','" . trim($DB_array_classification_attributes['objectType']) . "','" . trim($DB_array_classification_attributes['classificationNode']) . "','" . trim($DB_array_classification_attributes['classificationScheme']) . "','" . trim($DB_array_classification_attributes['classifiedObject']) . "','" . trim($DB_array_classification_attributes['nodeRepresentation']) . "')"; $ris = query_exec2($INSERT_INTO_Classification, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Classification); #### NODI FIGLI DI CLASSIFICATION $classification_child_nodes = $classification_node->child_nodes(); for ($q = 0; $q < count($classification_child_nodes); $q++) { $classification_child_node = $classification_child_nodes[$q]; $classification_child_node_tagname = $classification_child_node->node_name(); if ($classification_child_node_tagname == 'Name') { $name_node = $classification_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id;//ExtrinsicObject $DB_array_name['parent'] = $value_id; //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } //END OF if($classification_child_node_tagname=='Name') } //END of for child_nodes //else //{ //Slot di Classification for ($sl = 0; $sl < count($classification_child_nodes); $sl++) { $classification_child_node = $classification_child_nodes[$sl]; $classification_child_node_tagname = $classification_child_node->node_name(); if ($classification_child_node_tagname == 'Slot') { $slot_node = $classification_child_node; $DB_array_slot_attributes = array(); $value_name = $slot_node->get_attribute('name'); if ($value_name == '') { $value_name = "NOT DECLARED"; } $value_slotType = $slot_node->get_attribute('slotType'); if ($value_slotType == '') { $value_slotType = "NULL"; } $DB_array_slot_attributes['name'] = $value_name; $DB_array_slot_attributes['slotType'] = $value_slotType; $DB_array_slot_attributes['value'] = ''; $DB_array_slot_attributes['parent'] = $value_id; $slot_child_nodes = $slot_node->child_nodes(); for ($q = 0; $q < count($slot_child_nodes); $q++) { $slot_child_node = $slot_child_nodes[$q]; $slot_child_node_tagname = $slot_child_node->node_name(); if ($slot_child_node_tagname == 'ValueList') { $valuelist_node = $slot_child_node; $valuelist_child_nodes = $valuelist_node->child_nodes(); for ($r = 0; $r < count($valuelist_child_nodes); $r++) { $value_node = $valuelist_child_nodes[$r]; $value_node_tagname = $value_node->node_name(); if ($value_node_tagname == 'Value') { $value_value = $value_node->get_content(); $DB_array_slot_attributes['value'] = $value_value; ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('" . trim($DB_array_slot_attributes['name']) . "','" . trim($DB_array_slot_attributes['slotType']) . "','" . trim(adjustString($DB_array_slot_attributes['value'])) . "','" . trim($DB_array_slot_attributes['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Slot, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Slot); } } } } } //END OF if($classification_child_node_tagname=='Slot') } //Fine for per Slot //}//Fine else per Slot } else { if ($ExtrinsicObject_child_node_tagname == 'ExternalIdentifier') { $externalidentifier_node = $ExtrinsicObject_child_node; $DB_array_externalidentifier_attributes = array(); $value_accessControlPolicy = $externalidentifier_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_id = $externalidentifier_node->get_attribute('id'); if ($value_id == '' || isSimbolic($value_id)) { $value_id = "urn:uuid:" . idrandom(); } $value_objectType = $externalidentifier_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier') { $value_objectType = "ExternalIdentifier"; } $value_registryObject = $value_ExtrinsicObject_id; // $value_registryObject= $externalidentifier_node->get_attribute('registryObject'); // if($value_registryObject == '') // { // $value_registryObject = "NOT DECLARED"; // } $value_identificationScheme = $externalidentifier_node->get_attribute('identificationScheme'); if ($value_identificationScheme == '') { $value_identificationScheme = "NOT DECLARED"; } //$value_value= avoidHtmlEntitiesInterpretation($externalidentifier_node->get_attribute('value')); $value_value = $externalidentifier_node->get_attribute('value'); if ($value_value == '') { $value_value = "NOT DECLARED"; } $DB_array_externalidentifier_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_externalidentifier_attributes['id'] = $value_id; $DB_array_externalidentifier_attributes['objectType'] = $value_objectType; $DB_array_externalidentifier_attributes['registryObject'] = $value_registryObject; $DB_array_externalidentifier_attributes['identificationScheme'] = $value_identificationScheme; $DB_array_externalidentifier_attributes['value'] = $value_value; //print_r($DB_array_externalidentifier_attributes); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_ExternalIdentifier = "INSERT INTO ExternalIdentifier (id,accessControlPolicy,objectType,registryObject,identificationScheme,value) VALUES ('" . trim($DB_array_externalidentifier_attributes['id']) . "','" . trim($DB_array_externalidentifier_attributes['accessControlPolicy']) . "','" . trim($DB_array_externalidentifier_attributes['objectType']) . "','" . trim($DB_array_externalidentifier_attributes['registryObject']) . "','" . trim($DB_array_externalidentifier_attributes['identificationScheme']) . "','" . trim(adjustString($DB_array_externalidentifier_attributes['value'])) . "')"; $ris = query_exec2($INSERT_INTO_ExternalIdentifier, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_ExternalIdentifier); #### NODI FIGLI DI EXTERNALIDENTIFIER $externalidentifier_child_nodes = $externalidentifier_node->child_nodes(); //print_r($name_node); for ($q = 0; $q < count($externalidentifier_child_nodes); $q++) { $externalidentifier_child_node = $externalidentifier_child_nodes[$q]; $externalidentifier_child_node_tagname = $externalidentifier_child_node->node_name(); if ($externalidentifier_child_node_tagname == 'Name') { $name_node = $externalidentifier_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id;//ExtrinsicObject $DB_array_name['parent'] = $value_id; } } //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } } } } } //END OF if($ExtrinsicObject_child_node_tagname=='ExternalIdentifier') } //END OF for($k=0;$k<count($ExtrinsicObject_child_nodes);$k++) ################# FINE PROCESSO TUTTI I NODI FIGLI DI EXTRINSICOBJECT ######## AGGIORNO IL CONTATORE $UPDATE_counters = "UPDATE Counters SET id = id + 1"; $ris = query_exec2($UPDATE_counters, $connessione); writeSQLQuery($ris . ": " . $UPDATE_counters); } //END OF for($index=0;$index<(count($dom_ebXML_ExtrinsicObject_node_array));$index++) } ### COMPONGO L'ARRAY DA TORNARE $ret = array($ExtrinsicObject_id_array, $lang, $atna_patient_value, $simbolic_ExtrinsicObject_id_array); ### RETURN return $ret; }
echo "<FORM action=\"./DB_SERVICES/SVUOTA_REGISTRY_DB.php\" method=\"POST\"> "; echo "If you press button \"Delete TMP Files\" all tmp files will be lost"; echo "<INPUT type=\"hidden\" name=\"delete_registry\" value=\"tmp\""; echo "<br>"; echo "<br>"; echo "<INPUT type=\"Submit\" value=\"Delete TMP Files\"><br></br>"; echo "</FORM>"; echo "<FORM name=\"svuota_registry\" action=\"./DB_SERVICES/SVUOTA_REGISTRY_DB.php\" method=\"POST\"onSubmit=\"return conferma()\">"; echo "If you press button \"Delete Database\" all references of documents in the Registry Database will be lost"; echo "<INPUT type=\"hidden\" name=\"delete_registry\" value=\"database\""; echo "<br>"; echo "<br>"; echo "<INPUT type=\"Submit\" value=\"Delete Registry\"><br></br>"; echo "</FORM>"; } #################### PASSWORD #################### $get_USER = "******"; $res_USER = query_select2($get_USER, $connessione); $USER_login = $res_USER[0][0]; echo "<h3>Setup User and password</h3>"; echo "If you change login or password <br>you must fill the new login e the new password <br>immediately after you press update<br><br>"; echo "<FORM name=\"myForm\" action=\"updateuser.php\" method=\"POST\"onSubmit=\"return validatePwd()\">"; echo "Login: <INPUT type=\"text\" name=\"login\" value=\"{$USER_login}\" size=\"20\" maxlength=\"30\"><br></br>"; echo "Password: <INPUT type=\"password\" name=\"password\" value=\"\" size=\"10\" maxlength=\"20\"><br></br>"; echo "Verify Password: <INPUT type=\"password\" name=\"password2\" value=\"\" size=\"10\" maxlength=\"20\"><br></br>"; echo "<INPUT type=\"Submit\" value=\"Update User\"><br></br>"; echo "</FORM>"; echo "</td></tr>"; echo '<tr bgcolor="black"><td colspan="2"><br><br></td></tr></table>'; } disconnectDB($connessione);
$status_response = makeSoapedFailureResponse($error_message, $errorcode); writeTimeFile($_SESSION['idfile'] . "--Repository: Repository is down"); $file_input = $idfile . "-down_failure_response.xml"; writeTmpFiles($status_response, $file_input, true); //SendResponseFile($tmp_path.$file_input); SendResponse($status_response); exit; } ob_start(); //Non stampa niente a monitor ma mette tutto su un buffer $connessione = connectDB(); //ob_get_clean();//OKKIO FONDAMENTALE!!!!! Pulisco il buffer //ob_end_flush();// Spedisco il contenuto del buffer $token = $_GET["token"]; $get_token = "SELECT URI,MIMETYPE,CRYPT FROM DOCUMENTS WHERE KEY_PROG={$token}"; $res_token = query_select2($get_token, $connessione); // Da verificare se si possono usare funzioni php al posto di java if ($ATNA_active == 'A') { $eventOutcomeIndicator = "0"; //EventOutcomeIndicator 0 OK 12 ERROR $today = date("Y-m-d"); $cur_hour = date("H:i:s"); $datetime = $today . "T" . $cur_hour; $message_export = "<AuditMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"healthcare-security-audit.xsd\">\n\t<EventIdentification EventActionCode=\"R\" EventDateTime=\"{$datetime}\" EventOutcomeIndicator=\"0\">\n \t<EventID code=\"110106\" codeSystemName=\"DCM\" displayName=\"Export\"/>\n \t<EventTypeCode code=\"ITI-17\" codeSystemName=\"IHE Transactions\" displayName=\"Retrieve Document\"/>\n \t</EventIdentification>\n\t<ActiveParticipant UserID=\"MARIS VIEW\" NetworkAccessPointTypeCode=\"2\" NetworkAccessPointID=\"" . $_SERVER['REMOTE_ADDR'] . "\" UserIsRequestor=\"true\">\n \t<RoleIDCode code=\"110153\" codeSystemName=\"DCM\" displayName=\"Source\"/>\n\t</ActiveParticipant>\n\t<ActiveParticipant UserID=\"http://" . $rep_host . ":" . $rep_port . $www_REP_path . "getDocument.php\" NetworkAccessPointTypeCode=\"2\" NetworkAccessPointID=\"" . $reg_host . "\" UserIsRequestor=\"false\">\n \t<RoleIDCode code=\"110152\" codeSystemName=\"DCM\" displayName=\"Destination\"/>\n \t</ActiveParticipant>\n\t<AuditSourceIdentification AuditSourceID=\"MARIS REPOSITORY\"/>\n\t<ParticipantObjectIdentification ParticipantObjectID=\"http://" . $rep_host . ":" . $rep_port . $www_REP_path . "getDocument.php?token=" . $token . "\" ParticipantObjectTypeCode=\"2\" ParticipantObjectTypeCodeRole=\"3\">\n \t<ParticipantObjectIDTypeCode code=\"12\"/>\n \t</ParticipantObjectIdentification>\n\t</AuditMessage>"; require_once './lib/syslog.php'; $syslog = new Syslog(); $logSyslog = $syslog->Send($ATNA_host, $ATNA_port, $message_export); } header('Content-type: ' . $res_token[0][1]); header('Content-Disposition: inline;'); if ($res_token[0][2] == "A") {
function validate_XDSDocumentEntryUniqueId($dom, $connessione) { $ebxml_value = ''; ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI ExtrinsicObject $dom_ebXML_ExtrinsicObject_node_array = $root_ebXML->get_elements_by_tagname("ExtrinsicObject"); #### CICLO SU OGNI ExtrinsicObject #### $isEmpty = false; $failure = ""; for ($index = 0; $index < count($dom_ebXML_ExtrinsicObject_node_array); $index++) { ##### NODO ExtrinsicObject RELATIVO AL DOCUMENTO NUMERO $index $ExtrinsicObject_node = $dom_ebXML_ExtrinsicObject_node_array[$index]; #### ARRAY DEI FIGLI DEL NODO ExtrinsicObject ############## $ExtrinsicObject_child_nodes = $ExtrinsicObject_node->child_nodes(); ################################################################# ################# PROCESSO TUTTI I NODI FIGLI DI ExtrinsicObject for ($k = 0; $k < count($ExtrinsicObject_child_nodes); $k++) { #### SINGOLO NODO FIGLIO DI ExtrinsicObject $ExtrinsicObject_child_node = $ExtrinsicObject_child_nodes[$k]; #### NOME DEL NODO $ExtrinsicObject_child_node_tagname = $ExtrinsicObject_child_node->node_name(); if ($ExtrinsicObject_child_node_tagname == 'ExternalIdentifier') { $externalidentifier_node = $ExtrinsicObject_child_node; $value_value = avoidHtmlEntitiesInterpretation($externalidentifier_node->get_attribute('value')); #### NODI FIGLI DI EXTERNALIDENTIFIER $externalidentifier_child_nodes = $externalidentifier_node->child_nodes(); //print_r($name_node); for ($q = 0; $q < count($externalidentifier_child_nodes); $q++) { $externalidentifier_child_node = $externalidentifier_child_nodes[$q]; $externalidentifier_child_node_tagname = $externalidentifier_child_node->node_name(); if ($externalidentifier_child_node_tagname == 'Name') { $name_node = $externalidentifier_child_node; $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if (strpos(strtolower(trim($LocalizedString_value)), strtolower('DocumentEntry.uniqueId'))) { $ebxml_value = $value_value; } } } } } } //END OF if($ExtrinsicObject_child_node_tagname=='ExternalIdentifier') } //QUERY AL DB $query = "SELECT XDSDOCUMENTENTRY_UNIQUEID FROM DOCUMENTS WHERE XDSDOCUMENTENTRY_UNIQUEID = '{$ebxml_value}'"; ### EFFETTUO LA QUERY ED OTTENGO IL RISULTATO $res = query_select2($query, $connessione); //array bidimensionale $isEmpty = empty($res) || $isEmpty; if (!$isEmpty) { $failure = $failure . "\nExternalIdentifier XDSDocumentEntry.uniqueId {$ebxml_value} (urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab) already exists in registry\n"; } } //END OF for($index=0;$index<(count($dom_ebXML_ExtrinsicObject_node_array));$index++) $ret = array($isEmpty, $failure, $ebxml_value); return $ret; }
} } } ##### STATUS $repository_status = $res_config[0][6]; #### MESSAGGI $service = "repository.php"; $logentry = "\"http://{$rep_host}:{$rep_port}" . "{$www_REP_path}\""; ### PER LA CHIAMATA AL JAR FILE $path_to_VALIDATION_jar = "./XSD_VALIDATION_JAR/"; $path_to_XSD_file = "./schemas/rs.xsd"; //------------------- LOCAL FILE SYSTEM PATHS ---------------------// //------------------- TO REGISTRY CONNECTION INFOS -------------------// #### LEGGO LE INFORMAZIONI DA DB: NODO ATTIVO $select_registry = "SELECT HOST,PORT,PATH,HTTP FROM REGISTRY_A WHERE ACTIVE = 'A' AND SERVICE = 'SUBMISSION'"; $ris = query_select($select_registry); #### OTTENGO LE INFORMAZIONI DEL NODO REGISTRY $reg_host = $ris[0][0]; $reg_port = $ris[0][1]; $reg_path = $ris[0][2]; $reg_http = $ris[0][3]; ###### A CHI SPEDIRE I MESSAGGI ATNA $get_ATNA_node = "SELECT * FROM ATNA"; $res_ATNA = query_select2($get_ATNA_node, $connessione); $ATNA_host = $res_ATNA[0][1]; $ATNA_port = $res_ATNA[0][2]; $ATNA_active = $res_ATNA[0][3]; ##### LOGS ATNA $atna_path = "./atna_logs/"; $namespacerim_path = "urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1"; //-------------------------- TO REGISTRY CONNECTION INFOS --------------------------//
function fill_Association_tables($dom, $RegistryPackage_id_array, $ExtrinsicObject_id_array, $simbolic_RegistryPackage_FOL_id_array, $connessione) { writeTimeFile("Registry: sono entrato in fill_Association_tables"); ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_node_array = $root_ebXML->get_elements_by_tagname("LeafRegistryObjectList"); ##### NODO LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_node = $dom_ebXML_LeafRegistryObjectList_node_array[0]; ##### TUTTI I NODI FIGLI DI LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_child_nodes = $dom_ebXML_LeafRegistryObjectList_node->child_nodes(); for ($i = 0; $i < count($dom_ebXML_LeafRegistryObjectList_child_nodes); $i++) { #### SINGOLO NODO $dom_ebXML_LeafRegistryObjectList_child_node = $dom_ebXML_LeafRegistryObjectList_child_nodes[$i]; ##### tagname $dom_ebXML_LeafRegistryObjectList_child_node_tagname = $dom_ebXML_LeafRegistryObjectList_child_node->node_name(); #### SOLO I NODI ASSOCIATION if ($dom_ebXML_LeafRegistryObjectList_child_node_tagname == 'Association') { $association_node = $dom_ebXML_LeafRegistryObjectList_child_node; $DB_array_association_attributes = array(); $value_id = $association_node->get_attribute('id'); if ($value_id == '' || isSimbolic($value_id)) { $value_id = "urn:uuid:" . idrandom(); } #### PARENT $value_parent = $value_id; $value_accessControlPolicy = $association_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $association_node->get_attribute('objectType'); if ($value_objectType == '') { $value_objectType = "Association"; } $value_associationType = $association_node->get_attribute('associationType'); if ($value_associationType == '') { $value_associationType = "NOT DECLARED"; } $value_sourceObject = $association_node->get_attribute('sourceObject'); //writeSQLQuery('Valore fuori dall if '.$value_sourceObject); if ($value_sourceObject == "") { $errorcode[] = "XDSRegistryError"; $error_message[] = "The sourceObject in Association is empty. "; $folder_response = makeSoapedFailureResponse($error_message, $errorcode); writeTimeFile($_SESSION['idfile'] . "--Registry: targetObject error"); $file_input = $idfile . "-sourceObject_failure_response.xml"; writeTmpFiles($folder_response, $file_input, true); SendResponseFile($_SESSION['tmp_path'] . $file_input); //SendResponse($folder_response,"application/soap+xml",filesize($tmp_path.$idfile."-folder_failure_response.xml")); exit; } if (isSimbolic($value_sourceObject)) { $value_sourceObject_1 = $ExtrinsicObject_id_array[$value_sourceObject]; $value_sourceObject_2 = $RegistryPackage_id_array[$value_sourceObject]; if ($value_sourceObject_1 != "") { $value_sourceObject = $value_sourceObject_1; } else { $value_sourceObject = $value_sourceObject_2; } } //END OF if(isSimbolic($value_sourceObject)) $value_targetObject = $association_node->get_attribute('targetObject'); if ($value_targetObject == "") { $errorcode[] = "XDSRegistryError"; $error_message[] = "The targetObject in Association is empty. "; $folder_response = makeSoapedFailureResponse($error_message, $errorcode); writeTimeFile($_SESSION['idfile'] . "--Registry: targetObject error"); $file_input = $idfile . "-targetObject_failure_response.xml"; writeTmpFiles($folder_response, $file_input, true); SendResponseFile($_SESSION['tmp_path'] . $file_input); //SendResponse($folder_response,"application/soap+xml",filesize($tmp_path.$idfile."-folder_failure_response.xml")); exit; } $simbolic_value_targetObject = $association_node->get_attribute('targetObject'); if (isSimbolic($value_targetObject)) { $value_targetObject_1 = $ExtrinsicObject_id_array[$value_targetObject]; $value_targetObject_2 = $RegistryPackage_id_array[$value_targetObject]; if ($value_targetObject_1 != "") { $value_targetObject = $value_targetObject_1; } else { $value_targetObject = $value_targetObject_2; } } //END OF if(isSimbolic($simbolic_value_targetObject)) $value_isConfirmedBySourceOwner = $association_node->get_attribute('isConfirmedBySourceOwner'); if ($value_isConfirmedBySourceOwner == '') { $value_isConfirmedBySourceOwner = "0"; } $value_isConfirmedByTargetOwner = $association_node->get_attribute('isConfirmedByTargetOwner'); if ($value_isConfirmedByTargetOwner == '') { $value_isConfirmedByTargetOwner = "0"; } $DB_array_association_attributes['id'] = $value_id; $DB_array_association_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_association_attributes['objectType'] = $value_objectType; $DB_array_association_attributes['associationType'] = $value_associationType; $DB_array_association_attributes['sourceObject'] = $value_sourceObject; $DB_array_association_attributes['targetObject'] = $value_targetObject; $DB_array_association_attributes['isConfirmedBySourceOwner'] = $value_isConfirmedBySourceOwner; $DB_array_association_attributes['isConfirmedByTargetOwner'] = $value_isConfirmedByTargetOwner; $Association_folder = in_array($simbolic_value_targetObject, $simbolic_RegistryPackage_FOL_id_array); if (!$Association_folder) { ####### QUI ORA POSSO RIEMPIRE IL DB $INSERT_INTO_Association = "INSERT INTO Association (id,accessControlPolicy,objectType,associationType,sourceObject,targetObject,isConfirmedBySourceOwner,isConfirmedByTargetOwner) VALUES ('" . $DB_array_association_attributes['id'] . "','" . $DB_array_association_attributes['accessControlPolicy'] . "','" . $DB_array_association_attributes['objectType'] . "','" . $DB_array_association_attributes['associationType'] . "','" . $DB_array_association_attributes['sourceObject'] . "','" . $DB_array_association_attributes['targetObject'] . "','" . $DB_array_association_attributes['isConfirmedBySourceOwner'] . "','" . $DB_array_association_attributes['isConfirmedByTargetOwner'] . "')"; $ris = query_exec2($INSERT_INTO_Association, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Association); #### NODI FIGLI DI ASSOCIATION $association_child_nodes = $association_node->child_nodes(); if (!empty($association_child_nodes)) { for ($j = 0; $j < count($association_child_nodes); $j++) { #### SINGOLO NODO $association_child_node = $association_child_nodes[$j]; ##### tagname $association_child_node_tagname = $association_child_node->node_name(); #### SOLO I NODI SLOT if ($association_child_node_tagname == 'Slot') { $slot_node = $association_child_node; $DB_array_slot_attributes = array(); $value_name = $slot_node->get_attribute('name'); if ($value_name == '') { $value_name = "NOT DECLARED"; } $value_slotType = $slot_node->get_attribute('slotType'); if ($value_slotType == '') { $value_slotType = "NULL"; } $DB_array_slot_attributes['name'] = $value_name; $DB_array_slot_attributes['slotType'] = $value_slotType; $DB_array_slot_attributes['value'] = ''; $DB_array_slot_attributes['parent'] = $value_parent; #### NODI FIGLI DI SLOT $slot_child_nodes = $slot_node->child_nodes(); for ($q = 0; $q < count($slot_child_nodes); $q++) { $slot_child_node = $slot_child_nodes[$q]; $slot_child_node_tagname = $slot_child_node->node_name(); if ($slot_child_node_tagname == 'ValueList') { $valuelist_node = $slot_child_node; $valuelist_child_nodes = $valuelist_node->child_nodes(); ## UN SOLO VALUE for ($r = 0; $r < count($valuelist_child_nodes); $r++) { $value_node = $valuelist_child_nodes[$r]; $value_node_tagname = $value_node->node_name(); if ($value_node_tagname == 'Value') { $value_value = $value_node->get_content(); $DB_array_slot_attributes['value'] = $value_value; ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('" . trim($DB_array_slot_attributes['name']) . "','" . trim($DB_array_slot_attributes['slotType']) . "','" . trim(adjustString($DB_array_slot_attributes['value'])) . "','" . trim($DB_array_slot_attributes['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Slot, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Slot); } } } } } //END OF if($association_child_node_tagname=='Slot') } } //END OF if(!empty($association_child_nodes)) } else { } ########### CASI DI REPLACEMENT + ADDENDUM + TRANSFORMATION ##### CASO RPLC Accept Document Replace if ($value_associationType == "RPLC") { // devo verificare se il documento da sostituire è dentro ad un folder, se è dentro ad un folder devo creare una association Folder Document. $query_SELECT_RegistryPackage = "SELECT id from RegistryPackage where id IN (SELECT sourceObject from Association where targetObject = '{$value_targetObject}') and objectType = 'urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2'"; $Association_folder_array = query_select2($query_SELECT_RegistryPackage, $connessione); writeSQLQuery($Association_folder_array . ": " . $query_SELECT_RegistryPackage); //Se trovo qualche RegistryPackage di tipo folder $conta_Folder = count($Association_folder_array); for ($i_Folder = 0; $i_Folder < $conta_Folder; $i_Folder++) { $insert_Association_folderDoc = "INSERT INTO Association (id,objectType,associationType,sourceObject,targetObject) VALUES ('urn:uuid:" . idrandom() . "','Association','HasMember','" . $Association_folder_array[$i_Folder][0] . "','" . $value_sourceObject . "')"; $res_insert_Association = query_exec2($insert_Association_folderDoc, $connessione); writeSQLQuery($res_insert_Association . ": " . $insert_Association_folderDoc); } // devo cambiare lo stato del documento a Deprecated $query_UPDATE_targetObject = "UPDATE ExtrinsicObject SET status = 'Deprecated' WHERE ExtrinsicObject.id = '{$value_targetObject}'"; $ex = query_exec2($query_UPDATE_targetObject, $connessione); writeSQLQuery($ex . ": " . $query_UPDATE_targetObject); } //END OF if($value_associationType=="RPLC") ##### CASO XFRM_RPLC Accept Document Replace with Transformation if ($value_associationType == "XFRM_RPLC") { $query_UPDATE_targetObject = "UPDATE ExtrinsicObject SET status = 'Deprecated' WHERE ExtrinsicObject.id = '{$value_targetObject}'"; $ex = query_exec2($query_UPDATE_targetObject, $connessione); writeSQLQuery($ex . ": " . $query_UPDATE_targetObject); } //END OF if($value_associationType=="XFRM_RPLC") ##### CASO XFRM Accept Document Transformation if ($value_associationType == "XFRM") { $query_UPDATE_targetObject = "UPDATE ExtrinsicObject SET status = 'Approved' WHERE ExtrinsicObject.id = '{$value_targetObject}'"; $ex = query_exec2($query_UPDATE_targetObject, $connessione); writeSQLQuery($ex . ": " . $query_UPDATE_targetObject); } //END OF if($value_associationType=="XFRM") ##### CASO APND Accept Document Addendum if ($value_associationType == "APND") { $query_UPDATE_targetObject = "UPDATE ExtrinsicObject SET status = 'Approved' WHERE ExtrinsicObject.id = '{$value_targetObject}'"; $ex = query_exec2($query_UPDATE_targetObject, $connessione); writeTimeFile("Registry: update status" . $query_UPDATE_targetObject); } //END OF if($value_associationType=="APND") ########### CASI DI GESTIONE FOLDER + SUBMISSIONSET if ($value_associationType == "HasMember") { ##### FIGLI DI ASSOCIATION $association_node_childs = $association_node->child_nodes(); #### AGGIUNTA DI UN DOCUMENTO A FOLDER GIA' ESISTENTE if (!isSimbolic($value_sourceObject) && empty($association_node_childs)) { #### APPURIAMO DI ESSERE NEL CASO FOLDER $query_folder = "SELECT * FROM Slot WHERE Slot.name = 'lastUpdateTime' AND Slot.parent = '{$value_sourceObject}'"; $ris_folder = query_select2($query_folder, $connessione); writeSQLQuery($ris_folder . ": " . $query_folder); if (!empty($ris_folder[0])) { #### ricavo data-ora correnti $today = date("Ymd"); $cur_hour = date("His"); $datetime = $today . $cur_hour; //$datetime = "CURRENT_TIMESTAMP"; ####UPDATE DI lastUpdateTime $update_lastUpdateTime = "UPDATE Slot SET Slot.value = '{$datetime}' WHERE Slot.name = 'lastUpdateTime' AND Slot.parent = '{$value_sourceObject}'"; $ex = query_exec2($update_lastUpdateTime, $connessione); writeSQLQuery($ex . ": " . $update_lastUpdateTime); } //END OF if(!empty($ris_folder)) } else { if (!isSimbolic($value_sourceObject) && !empty($association_node_childs)) { for ($y = 0; $y < count($association_node_childs); $y++) { ##### NODO SLOT $slot_node = $association_node_childs[$y]; ##### RECUPERO TAGNAME $slot_node_tagname = $slot_node->node_name(); if ($slot_node_tagname == "Slot") { #### NAME ATTRIBUTE FOR SLOT $slot_node_name = $slot_node->get_attribute('name'); #### NODI FIGLI DI SLOT $slot_node_childs = $slot_node->child_nodes(); for ($x = 0; $x < count($slot_node_childs); $x++) { $slot_node_child = $slot_node_childs[$x]; $slot_node_child_tagname = $slot_node_child->node_name(); if ($slot_node_child_tagname == "ValueList") { $slot_node_childs_2 = $slot_node_child->child_nodes(); for ($z = 0; $z < count($slot_node_childs_2); $z++) { $slot_node_child_2 = $slot_node_childs_2[$z]; $slot_node_child_2_tagname = $slot_node_child_2->node_name(); if ($slot_node_child_2_tagname == "Value") { $update_value = $slot_node_child_2->get_content(); } //END OF if($slot_node_child_2_tagname=="Value") } } //END OF if($slot_node_child_tagname=="ValueList") } ####UPDATE DI SubmissionSetStatus Non va fatta ????? Deve rimanere Approved $update_RegistryPackageStatus = "UPDATE RegistryPackage SET RegistryPackage.status = '{$update_value}' WHERE RegistryPackage.id = '{$value_sourceObject}'"; //writeSQLQuery($ris.": ".$update_RegistryPackageStatus); $selectIdAssociation = "SELECT id FROM Association WHERE Association.sourceObject = '{$value_sourceObject}'"; $ris_selectIdAssociation = query_select2($selectIdAssociation, $connessione); writeSQLQuery($ris_selectIdAssociation . ": " . $selectIdAssociation); $countID = count($ris_selectIdAssociation); for ($risId = 0; $risId < $countID; $risId++) { //$update_SubmissionSetStatus="UPDATE Slot SET Slot.value = '$update_value' WHERE name ='$slot_node_name' AND Slot.parent IN (SELECT id FROM Association WHERE Association.sourceObject = '$value_sourceObject')"; $update_SubmissionSetStatus = "UPDATE Slot SET Slot.value = '{$update_value}' WHERE name ='{$slot_node_name}' AND Slot.parent ='" . $ris_selectIdAssociation[$risId][0] . "'"; //writeTimeFile("Registry: update Slot ".$update_SubmissionSetStatus); $ex = query_exec2($update_SubmissionSetStatus, $connessione); writeSQLQuery($ex . ": " . $update_SubmissionSetStatus); } } //END OF if($slot_node_tagname=="Slot") } //END OF for($y=0;$y<count($association_node_childs);$y++) } } //END OF else if(!isSimbolic($value_sourceObject)) } //END OF if($value_associationType=="HasMember") } else { continue; } } //END OF for($i=0;$i<count($dom_ebXML_LeafRegistryObjectList_child_nodes);$i++) writeTimeFile("Registry: esco da fill_Association_tables"); }
function validate_Append($dom, $DocumentEntryPatientId_array, $connessione) { writeSQLQuery('---------------------------validate_Append--------------------------------'); $ExtrinsicObject_node_id_attr_arr = array(); $Association_node_sourceObject_attr_arr = array(); $Association_node_targetObject_attr_arr = array(); $failure_message = array(); $errorcode = array(); ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_node_array = $root_ebXML->get_elements_by_tagname("LeafRegistryObjectList"); ##### NODO LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_node = $dom_ebXML_LeafRegistryObjectList_node_array[0]; ##### TUTTI I NODI FIGLI DI LeafRegistryObjectList $dom_ebXML_LeafRegistryObjectList_child_nodes = $dom_ebXML_LeafRegistryObjectList_node->child_nodes(); for ($i = 0; $i < count($dom_ebXML_LeafRegistryObjectList_child_nodes); $i++) { #### SINGOLO NODO $dom_ebXML_LeafRegistryObjectList_child_node = $dom_ebXML_LeafRegistryObjectList_child_nodes[$i]; ##### tagname $dom_ebXML_LeafRegistryObjectList_child_node_tagname = $dom_ebXML_LeafRegistryObjectList_child_node->node_name(); if ($dom_ebXML_LeafRegistryObjectList_child_node_tagname == 'ExtrinsicObject') { #### SINGOLO NODO EXTRINSICOBJECT $ExtrinsicObject_node = $dom_ebXML_LeafRegistryObjectList_child_node; $ExtrinsicObject_node_id_attr = $ExtrinsicObject_node->get_attribute('id'); $ExtrinsicObject_node_id_attr_arr[$ExtrinsicObject_node_id_attr] = $ExtrinsicObject_node_id_attr; } //END OF if($dom_ebXML_LeafRegistryObjectList_child_node_tagname=='ExtrinsicObject') #### SOLO I NODI CLASSIFICATION if ($dom_ebXML_LeafRegistryObjectList_child_node_tagname == 'Association') { #### SINGOLO NODO ASSOCIATION $Association_node = $dom_ebXML_LeafRegistryObjectList_child_node; #### ATTRIBUTO associationType $Association_node_associationType_attr = $Association_node->get_attribute('associationType'); #### ATTRIBUTO sourceObject $Association_node_sourceObject_attr = $Association_node->get_attribute('sourceObject'); #### ATTRIBUTO sourceObject $Association_node_targetObject_attr = $Association_node->get_attribute('targetObject'); $performControls = true; $patId_coherence_failure = ""; $patId_coherence = true; if ($Association_node_associationType_attr == 'APND' || $Association_node_associationType_attr == 'XFRM') { $Association_node_sourceObject_attr_arr[] = $Association_node_sourceObject_attr; $Association_node_targetObject_attr_arr[] = $Association_node_targetObject_attr; $query_for_patId_coherence = "SELECT value FROM ExternalIdentifier WHERE registryObject = '{$Association_node_targetObject_attr}' AND identificationScheme = 'urn:uuid:58a6f841-87b3-4a3e-92fd-a8ffeff98427'"; $patId_res = query_select2($query_for_patId_coherence, $connessione); writeSQLQuery($patId_res . ": " . $query_for_patId_coherence); if (!empty($patId_res)) { $targetObject_patID = $patId_res[0][0]; $source_patID = $DocumentEntryPatientId_array[0]; #### VERIFICO IL MATCHING if ($targetObject_patID != $source_patID) { $patId_coherence = false && $patId_coherence; $errorcode[] = "XDSRegistryMetadataError"; $failure_message[] = "ERROR in Append targetObject '{$Association_node_targetObject_attr}' with '{$Association_node_sourceObject_attr}' - XDSDocumentEntry.patientId {$source_patID} in the Submission does not match the original one {$targetObject_patID}"; } //END OF if($targetObject_patID!=$source_patID) } //END OF if(empty($patId_res)) } else { $performControls = false; } } //END OF if($dom_ebXML_LeafRegistryObjectList_child_node_tagname=='Association') } //END OF for($i=0;$i<count($dom_ebXML_LeafRegistryObjectList_child_nodes);$i++) $is_sourceObject_Valid = true; $error_on_sourceObject = ""; $is_targetObject_Valid = true; $error_on_targetObject = ""; $isEmpty_7 = false; if ($performControls) { for ($r = 0; $r < count($Association_node_sourceObject_attr_arr); $r++) { $Association_node_sourceObject_attr = $Association_node_sourceObject_attr_arr[$r]; if (!$ExtrinsicObject_node_id_attr_arr[$Association_node_sourceObject_attr]) { $is_sourceObject_Valid = false; $errorcode[] = "XDSRegistryMetadataError"; $failure_message[] = "Association sourceObject ({$Association_node_sourceObject_attr}) does not match any ExtrinsicObject id in the metadata"; } //END OF if(!($ExtrinsicObject_node_id_attr_arr[$Association_node_sourceObject_attr])) } //END OF for($r=0;$r<count($Association_node_sourceObject_attr_arr);$r++) for ($s = 0; $s < count($Association_node_targetObject_attr_arr); $s++) { $Association_node_targetObject_attr = $Association_node_targetObject_attr_arr[$s]; $query = "SELECT id,status FROM ExtrinsicObject WHERE ExtrinsicObject.id = '{$Association_node_targetObject_attr}' AND status='Approved'"; $res = query_select2($query, $connessione); writeSQLQuery($res . ": " . $query); $isEmpty_7 = empty($res); if ($isEmpty_7) { $is_targetObject_Valid = false; $errorcode[] = "XDSRegistryMetadataError"; $failure_message[] = "Association: targetObject ({$Association_node_targetObject_attr}) is not present in the Registry or you try to append/replace a document to a deprecated document"; } //END OF if($isEmpty_7) } //END OF for($s=0;$s<count($Association_node_targetObject_attr_arr);$s++) } //END OF if($performControls) $isValid = $is_sourceObject_Valid && $is_targetObject_Valid && $patId_coherence; //$arr=array($is_sourceObject_Valid,$error_on_sourceObject,$is_targetObject_Valid,$error_on_targetObject,$patId_coherence,$patId_coherence_failure); $arr = array($isValid, $failure_message, $errorcode); return $arr; }
function fill_RegistryPackage_tables($dom, $language, $connessione) { #### LANGUAGECODE $lang = $language; ##### NODEREPRESENTATION $value_nodeRepresentation_assigned = ''; ##### ARRAY DELL'ATTRIBUTO ID DI REGISTRYPACKAGE $RegistryPackage_id_array = array(); $simbolic_RegistryPackage_id_array = array(); #### FOLDERID DA NON INSERIRE $RegistryPackage_Fol_id_array = array(); ##### ARRAY DEGLI ATTRIBUTI DEL NODO REGISTRYPACKAGE $DB_array_registrypackage_attributes = array(); ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI REGISTRYPACKAGE $dom_ebXML_RegistryPackage_node_array = $root_ebXML->get_elements_by_tagname("RegistryPackage"); ##### ARRAY FOR ATNA $atna_value = array(); #### CICLO SU OGNI RegistryPackage #### for ($index = 0; $index < count($dom_ebXML_RegistryPackage_node_array); $index++) { ##### NODO REGISTRYPACKAGE RELATIVO AL DOCUMENTO NUMERO $index $RegistryPackage_node = $dom_ebXML_RegistryPackage_node_array[$index]; ### Setto di default che RegistryPackage non è un folder già presente $isEmpty_F = true; ##### NODO REGISTRYPACKAGE RELATIVO AL DOCUMENTO NUMERO $index $RegistryPackage_node = $dom_ebXML_RegistryPackage_node_array[$index]; #### ARRAY DEI FIGLI DEL NODO REGISTRYPACKAGE ############## $RegistryPackage_child_nodes = $RegistryPackage_node->child_nodes(); ################################################################# ################# PROCESSO TUTTI I NODI FIGLI DI REGISTRYPACKAGE for ($k = 0; $k < count($RegistryPackage_child_nodes); $k++) { #### SINGOLO NODO FIGLIO DI REGISTRYPACKAGE $RegistryPackage_child_node = $RegistryPackage_child_nodes[$k]; #### NOME DEL NODO $RegistryPackage_child_node_tagname = $RegistryPackage_child_node->node_name(); ########## Versione 2.1 per gestione Folder.uniqueid ############# if ($RegistryPackage_child_node_tagname == 'ExternalIdentifier') { $externalidentifier_node = $RegistryPackage_child_node; $value_value = avoidHtmlEntitiesInterpretation($externalidentifier_node->get_attribute('value')); #### NODI FIGLI DI EXTERNALIDENTIFIER $externalidentifier_child_nodes = $externalidentifier_node->child_nodes(); for ($q = 0; $q < count($externalidentifier_child_nodes); $q++) { $externalidentifier_child_node = $externalidentifier_child_nodes[$q]; $externalidentifier_child_node_tagname = $externalidentifier_child_node->node_name(); if ($externalidentifier_child_node_tagname == 'Name') { $name_node = $externalidentifier_child_node; $LocalizedString_nodes = $name_node->child_nodes(); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if (strpos(strtolower(trim($LocalizedString_value)), strtolower('Folder.uniqueId'))) { $ebxml_value = $value_value; ### QUERY AL DB $query = "SELECT registryObject FROM ExternalIdentifier WHERE value = '{$ebxml_value}' and identificationScheme = 'urn:uuid:75df8f67-9973-4fbe-a900-df66cefecc5a'"; $res = query_select2($query, $connessione); //array bidimensionale writeSQLQuery($res . ": " . $query); $isEmpty_F = empty($res); $value_RegistryPackage_id = $res[0][0]; //$RegistryPackage_Fol_id_array[]=$simbolic_RegistryPackage_id_fol; } } } } } } } ############################################################################### if ($isEmpty_F) { ############## RECUPERO TUTTI GLI ATTRIBUTI DEL NODO REGISTRYPACKAGE $value_RegistryPackage_id = "urn:uuid:" . idrandom(); $simbolic_RegistryPackage_id = $RegistryPackage_node->get_attribute('id'); $simbolic_RegistryPackage_id_array[] = $RegistryPackage_node->get_attribute('id'); ############################################################# ####NOTA BENE NEL CASO NON SIMBOLICO(VEDI SOLINFO) if (!isSimbolic($simbolic_RegistryPackage_id)) { $value_RegistryPackage_id = $simbolic_RegistryPackage_id; } ############################################################# $RegistryPackage_id_array[$simbolic_RegistryPackage_id] = $value_RegistryPackage_id; $value_accessControlPolicy = $RegistryPackage_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $RegistryPackage_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:RegistryPackage') { $value_objectType = "RegistryPackage"; } $value_expiration = $RegistryPackage_node->get_attribute('expiration'); if ($value_expiration == '') { $value_expiration = "CURRENT_TIMESTAMP"; } $value_majorVersion = $RegistryPackage_node->get_attribute('majorVersion'); if ($value_majorVersion == '') { $value_majorVersion = "0"; } $value_minorVersion = $RegistryPackage_node->get_attribute('minorVersion'); if ($value_minorVersion == '') { $value_minorVersion = "1"; } $value_stability = $RegistryPackage_node->get_attribute('stability'); if ($value_stability == '') { $value_stability = "NULL"; } $value_status = $RegistryPackage_node->get_attribute('status'); if ($value_status == '') { //$value_status = "Approved"; $value_status = "NotCompleted"; } $value_userVersion = $RegistryPackage_node->get_attribute('userVersion'); if ($value_userVersion == '') { $value_userVersion = "NULL"; } $DB_array_registrypackage_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_registrypackage_attributes['id'] = $value_RegistryPackage_id; $DB_array_registrypackage_attributes['objectType'] = $value_objectType; $DB_array_registrypackage_attributes['expiration'] = $value_expiration; $DB_array_registrypackage_attributes['majorVersion'] = $value_majorVersion; $DB_array_registrypackage_attributes['minorVersion'] = $value_minorVersion; $DB_array_registrypackage_attributes['stability'] = $value_stability; $DB_array_registrypackage_attributes['status'] = $value_status; $DB_array_registrypackage_attributes['userVersion'] = $value_userVersion; ####### QUI ORA POSSO RIEMPIRE IL DB $INSERT_INTO_RegistryPackage = "INSERT INTO RegistryPackage (id,accessControlPolicy,objectType,expiration,majorVersion,minorVersion,stability,status,userVersion) VALUES\n('" . $DB_array_registrypackage_attributes['id'] . "','" . $DB_array_registrypackage_attributes['accessControlPolicy'] . "','" . $DB_array_registrypackage_attributes['objectType'] . "'," . $DB_array_registrypackage_attributes['expiration'] . ",'" . $DB_array_registrypackage_attributes['majorVersion'] . "','" . $DB_array_registrypackage_attributes['minorVersion'] . "','" . $DB_array_registrypackage_attributes['stability'] . "','" . $DB_array_registrypackage_attributes['status'] . "','" . $DB_array_registrypackage_attributes['userVersion'] . "')"; $ris = query_exec2($INSERT_INTO_RegistryPackage, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_RegistryPackage); ############## FINE RECUPERO TUTTI GLI ATTRIBUTI DEL NODO REGISTRYPACKAGE #### ARRAY DEI FIGLI DEL NODO REGISTRYPACKAGE ############## $RegistryPackage_child_nodes = $RegistryPackage_node->child_nodes(); ################################################################# ################# PROCESSO TUTTI I NODI FIGLI DI REGISTRYPACKAGE $value_parent = $value_RegistryPackage_id; for ($k = 0; $k < count($RegistryPackage_child_nodes); $k++) { #### SINGOLO NODO FIGLIO DI REGISTRYPACKAGE $RegistryPackage_child_node = $RegistryPackage_child_nodes[$k]; #### NOME DEL NODO $RegistryPackage_child_node_tagname = $RegistryPackage_child_node->node_name(); #### NODO NAME if ($RegistryPackage_child_node_tagname == 'Name') { $name_node = $RegistryPackage_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } ### CASO DI FOLDER $lastUpdateTime = true; ###NON MODIFICARE!!! $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $value_RegistryPackage_id; $DB_array_name['parent'] = $value_parent; //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } else { if ($RegistryPackage_child_node_tagname == 'Description') { $description_node = $RegistryPackage_child_node; $DB_array_description = array(); $LocalizedString_nodes = $description_node->child_nodes(); if (count($LocalizedString_nodes) != 0) { //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_description['charset'] = $LocalizedString_charset; $DB_array_description['lang'] = $LocalizedString_lang; $DB_array_description['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id; $DB_array_description['parent'] = $value_parent; } else { $DB_array_description['charset'] = "UTF-8"; $DB_array_description['lang'] = "it-it"; $DB_array_description['value'] = "NOT DECLARED"; $DB_array_description['parent'] = $value_parent; } ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Description = "INSERT INTO Description (charset,lang,value,parent) VALUES ('" . trim($DB_array_description['charset']) . "','" . trim($DB_array_description['lang']) . "','" . trim(adjustString($DB_array_description['value'])) . "','" . trim($DB_array_description['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Description, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Description); } else { if ($RegistryPackage_child_node_tagname == 'Slot') { $slot_node = $RegistryPackage_child_node; $DB_array_slot_attributes = array(); $value_name = $slot_node->get_attribute('name'); if ($value_name == '') { $value_name = "NOT DECLARED"; } $value_slotType = $slot_node->get_attribute('slotType'); if ($value_slotType == '') { $value_slotType = "NULL"; } $DB_array_slot_attributes['name'] = $value_name; $DB_array_slot_attributes['slotType'] = $value_slotType; $DB_array_slot_attributes['value'] = ''; $DB_array_slot_attributes['parent'] = $value_parent; #### NODI FIGLI DI SLOT $slot_child_nodes = $slot_node->child_nodes(); for ($q = 0; $q < count($slot_child_nodes); $q++) { $slot_child_node = $slot_child_nodes[$q]; $slot_child_node_tagname = $slot_child_node->node_name(); if ($slot_child_node_tagname == 'ValueList') { $valuelist_node = $slot_child_node; $valuelist_child_nodes = $valuelist_node->child_nodes(); for ($r = 0; $r < count($valuelist_child_nodes); $r++) { $value_node = $valuelist_child_nodes[$r]; $value_node_tagname = $value_node->node_name(); if ($value_node_tagname == 'Value' && $value_name != "lastUpdateTime") { $value_value = $value_node->get_content(); $DB_array_slot_attributes['value'] = $value_value; ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('" . trim($DB_array_slot_attributes['name']) . "','" . trim($DB_array_slot_attributes['slotType']) . "','" . trim(adjustString($DB_array_slot_attributes['value'])) . "','" . trim($DB_array_slot_attributes['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Slot, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Slot); } } } } } else { if ($RegistryPackage_child_node_tagname == 'Classification') { $classification_node = $RegistryPackage_child_node; $DB_array_classification_attributes = array(); $value_id = $classification_node->get_attribute('id'); if ($value_id == '' || isSimbolic($value_id)) { $value_id = "urn:uuid:" . idrandom(); } $value_classifiedObject = $value_RegistryPackage_id; $value_accessControlPolicy = $classification_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $classification_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Classification') { $value_objectType = "Classification"; } $value_classificationNode = $classification_node->get_attribute('classificationNode'); $value_classificationScheme = $classification_node->get_attribute('classificationScheme'); if ($value_classificationNode == '') { $queryForName_value = "SELECT Name_value FROM ClassificationScheme WHERE ClassificationScheme.id = '{$value_classificationScheme}'"; $risName_value = query_select2($queryForName_value, $connessione); writeSQLQuery($risName_value . ": " . $queryForName_value); $name_value = $risName_value[0][0]; $name_value = substr($name_value, 0, strpos($name_value, '.')); $queryForClassificationNode = "SELECT id FROM ClassificationNode WHERE ClassificationNode.code = '{$name_value}'"; $ris_code = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_code . ": " . $queryForClassificationNode); $value_classificationNode = $ris_code[0][0]; } if ($value_classificationScheme == '') { $queryForClassificationNode = "SELECT code FROM ClassificationNode WHERE ClassificationNode.id = '{$value_classificationNode}'"; $ris_classificationNode = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_classificationNode . ": " . $queryForClassificationNode); $code_classificationNode = $ris_classificationNode[0][0]; #### FOLDER if ($code_classificationNode == "XDSFolder") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme. Name_value = 'XDSFolder.codeList'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; } else { if ($code_classificationNode == "XDSSubmissionSet") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme. Name_value = 'XDSSubmissionSet.contentTypeCode'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; } } //END OF if($code_classificationNode=="XDSSubmissionSet") } //END OF if($value_classificationScheme == '') $value_nodeRepresentation = $classification_node->get_attribute('nodeRepresentation'); ## SALVO IL VALORE DI nodeRepresentation DICHIARATO NEL SUBMISSIONSET if ($value_nodeRepresentation != '' && $value_classificationScheme == 'urn:uuid:aa543740-bdda-424e-8c96-df4873be8500') { $value_nodeRepresentation_assigned = $value_nodeRepresentation; } ## CASO DI nodeRepresentation NON DICHIARATO (ES. FOLDER) if ($value_nodeRepresentation == '') { $value_nodeRepresentation = $value_nodeRepresentation_assigned; } $DB_array_classification_attributes['classificationScheme'] = $value_classificationScheme; $DB_array_classification_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_classification_attributes['id'] = $value_id; $DB_array_classification_attributes['objectType'] = $value_objectType; $DB_array_classification_attributes['classifiedObject'] = $value_classifiedObject; $DB_array_classification_attributes['classificationNode'] = $value_classificationNode; $DB_array_classification_attributes['nodeRepresentation'] = $value_nodeRepresentation; //print_r($DB_array_classification_attributes); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Classification = "INSERT INTO Classification (id,accessControlPolicy,objectType,classificationNode,classificationScheme,classifiedObject,nodeRepresentation) VALUES ('" . trim($DB_array_classification_attributes['id']) . "','" . trim($DB_array_classification_attributes['accessControlPolicy']) . "','" . trim($DB_array_classification_attributes['objectType']) . "','" . trim($DB_array_classification_attributes['classificationNode']) . "','" . trim($DB_array_classification_attributes['classificationScheme']) . "','" . trim($DB_array_classification_attributes['classifiedObject']) . "','" . trim($DB_array_classification_attributes['nodeRepresentation']) . "')"; $ris = query_exec2($INSERT_INTO_Classification, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Classification); #### NODI FIGLI DI CLASSIFICATION $classification_child_nodes = $classification_node->child_nodes(); for ($q = 0; $q < count($classification_child_nodes); $q++) { $classification_child_node = $classification_child_nodes[$q]; $classification_child_node_tagname = $classification_child_node->node_name(); if ($classification_child_node_tagname == 'Name') { $name_node = $classification_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id; $DB_array_name['parent'] = $value_id; //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } //END OF if($classification_child_node_tagname=='Name') } for ($rs = 0; $rs < count($classification_child_nodes); $rs++) { $classification_child_node = $classification_child_nodes[$rs]; $classification_child_node_tagname = $classification_child_node->node_name(); if ($classification_child_node_tagname == 'Slot') { $slot_node = $classification_child_node; $DB_array_slot_attributes = array(); $value_name = $slot_node->get_attribute('name'); if ($value_name == '') { $value_name = "NOT DECLARED"; } $value_slotType = $slot_node->get_attribute('slotType'); if ($value_slotType == '') { $value_slotType = "NULL"; } $DB_array_slot_attributes['name'] = $value_name; $DB_array_slot_attributes['slotType'] = $value_slotType; $DB_array_slot_attributes['value'] = ''; $DB_array_slot_attributes['parent'] = $value_id; $slot_child_nodes = $slot_node->child_nodes(); for ($q = 0; $q < count($slot_child_nodes); $q++) { $slot_child_node = $slot_child_nodes[$q]; $slot_child_node_tagname = $slot_child_node->node_name(); if ($slot_child_node_tagname == 'ValueList') { $valuelist_node = $slot_child_node; $valuelist_child_nodes = $valuelist_node->child_nodes(); for ($r = 0; $r < count($valuelist_child_nodes); $r++) { $value_node = $valuelist_child_nodes[$r]; $value_node_tagname = $value_node->node_name(); if ($value_node_tagname == 'Value') { $value_value = $value_node->get_content(); $DB_array_slot_attributes['value'] = $value_value; ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('" . trim($DB_array_slot_attributes['name']) . "','" . trim($DB_array_slot_attributes['slotType']) . "','" . trim(adjustString($DB_array_slot_attributes['value'])) . "','" . trim($DB_array_slot_attributes['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Slot, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Slot); } } } } } //END OF if($classification_child_node_tagname=='Slot') } } else { if ($RegistryPackage_child_node_tagname == 'ExternalIdentifier') { //$ExternalIdentifier_count++; $externalidentifier_node = $RegistryPackage_child_node; $DB_array_externalidentifier_attributes = array(); $value_accessControlPolicy = $externalidentifier_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_id = $externalidentifier_node->get_attribute('id'); if ($value_id == '' || isSimbolic($value_id)) { $value_id = "urn:uuid:" . idrandom(); } $value_objectType = $externalidentifier_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:ExternalIdentifier') { $value_objectType = "ExternalIdentifier"; } $value_registryObject = $value_RegistryPackage_id; // $value_registryObject= $externalidentifier_node->get_attribute('registryObject'); // if($value_registryObject == '') // { // $value_registryObject = "NOT DECLARED"; // } $value_identificationScheme = $externalidentifier_node->get_attribute('identificationScheme'); #### DALL'identificationScheme RICONOSCO IL TIPO DI REGISTRYPACKAGE $queryForName_value = "SELECT Name_value FROM ClassificationScheme WHERE ClassificationScheme.id = '{$value_identificationScheme}'"; $risName_value = query_select2($queryForName_value, $connessione); $name_value = $risName_value[0][0]; $name_value = substr($name_value, 0, strpos($name_value, '.')); $query_for_objectType = "SELECT id FROM ClassificationNode WHERE ClassificationNode.code = '{$name_value}'"; $objectType_arr = query_select2($query_for_objectType, $connessione); writeSQLQuery($objectType_arr . ": " . $query_for_objectType); $objectType = $objectType_arr[0][0]; #### CASO DI FOLDER if ($name_value == 'XDSFolder' && $lastUpdateTime) { //$datetime="00000000000000"; $today = date("Ymd"); $cur_hour = date("His"); $datetime = $today . $cur_hour; $insert_lastUpdateTime_Slot = "INSERT INTO Slot (name,slotType,value,parent) VALUES ('lastUpdateTime','NULL','{$datetime}','{$value_parent}')"; $ris = query_exec2($insert_lastUpdateTime_Slot, $connessione); writeSQLQuery($ris . ": " . $insert_lastUpdateTime_Slot); $lastUpdateTime = false; } //END OF if($name_value=='XDSFolder') ####UPDATE DELL'OBJECTTYPE $update_objectType = "UPDATE RegistryPackage SET RegistryPackage.objectType = '{$objectType}' WHERE RegistryPackage.id = '{$value_RegistryPackage_id}'"; $ris = query_exec2($update_objectType, $connessione); writeSQLQuery($ris . ": " . $update_objectType); //$value_value= avoidHtmlEntitiesInterpretation($externalidentifier_node->get_attribute('value')); $value_value = $externalidentifier_node->get_attribute('value'); if ($value_value == '') { $value_value = "NOT DECLARED"; } $DB_array_externalidentifier_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_externalidentifier_attributes['id'] = $value_id; $DB_array_externalidentifier_attributes['objectType'] = $value_objectType; $DB_array_externalidentifier_attributes['registryObject'] = $value_registryObject; $DB_array_externalidentifier_attributes['identificationScheme'] = $value_identificationScheme; $DB_array_externalidentifier_attributes['value'] = $value_value; //print_r($DB_array_externalidentifier_attributes); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_ExternalIdentifier = "INSERT INTO ExternalIdentifier (id,accessControlPolicy,objectType,registryObject,identificationScheme,value) VALUES ('" . trim($DB_array_externalidentifier_attributes['id']) . "','" . trim($DB_array_externalidentifier_attributes['accessControlPolicy']) . "','" . trim($DB_array_externalidentifier_attributes['objectType']) . "','" . trim($DB_array_externalidentifier_attributes['registryObject']) . "','" . trim($DB_array_externalidentifier_attributes['identificationScheme']) . "','" . trim(adjustString($DB_array_externalidentifier_attributes['value'])) . "')"; $ris = query_exec2($INSERT_INTO_ExternalIdentifier, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_ExternalIdentifier); $atna_value_index = trim($DB_array_externalidentifier_attributes['identificationScheme']); $atna_value[$atna_value_index] = trim(adjustString($DB_array_externalidentifier_attributes['value'])); #### NODI FIGLI DI EXTERNALIDENTIFIER $externalidentifier_child_nodes = $externalidentifier_node->child_nodes(); //print_r($name_node); for ($q = 0; $q < count($externalidentifier_child_nodes); $q++) { $externalidentifier_child_node = $externalidentifier_child_nodes[$q]; $externalidentifier_child_node_tagname = $externalidentifier_child_node->node_name(); if ($externalidentifier_child_node_tagname == 'Name') { $name_node = $externalidentifier_child_node; $DB_array_name = array(); $LocalizedString_nodes = $name_node->child_nodes(); //print_r($LocalizedString_nodes); for ($p = 0; $p < count($LocalizedString_nodes); $p++) { $LocalizedString_node = $LocalizedString_nodes[$p]; //->node_name(); $LocalizedString_node_tagname = $LocalizedString_node->node_name(); if ($LocalizedString_node_tagname == 'LocalizedString') { $LocalizedString_charset = $LocalizedString_node->get_attribute('charset'); if ($LocalizedString_charset == '') { $LocalizedString_charset = "UTF-8"; } $LocalizedString_lang = $LocalizedString_node->get_attribute('lang'); if ($LocalizedString_lang == '') { $LocalizedString_lang = $lang; } $LocalizedString_value = $LocalizedString_node->get_attribute('value'); if ($LocalizedString_value == '') { $LocalizedString_value = "NOT DECLARED"; } $DB_array_name['charset'] = $LocalizedString_charset; $DB_array_name['lang'] = $LocalizedString_lang; $DB_array_name['value'] = $LocalizedString_value; } //END OF if($LocalizedString_node_tagname == 'LocalizedString') } //END OF for($p = 0;$p < count($val_list_node);$p++) //$value_parent = $id; $DB_array_name['parent'] = $value_id; } } //print_r($DB_array_name); ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Name = "INSERT INTO Name (charset,lang,value,parent) VALUES ('" . trim($DB_array_name['charset']) . "','" . trim($DB_array_name['lang']) . "','" . trim(adjustString($DB_array_name['value'])) . "','" . trim($DB_array_name['parent']) . "')"; $ris = query_exec2($INSERT_INTO_Name, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Name); } } } } } //END OF if($RegistryPackage_child_node_tagname=='ExternalIdentifier') } //END OF for($k=0;$k<count($RegistryPackage_child_nodes);$k++) ################# FINE PROCESSO TUTTI I NODI FIGLI DI REGISTRYPACKAGE } else { $simbolic_RegistryPackage_id_fol = $RegistryPackage_node->get_attribute('id'); $RegistryPackage_Fol_id_array[] = $simbolic_RegistryPackage_id_fol; $RegistryPackage_id_array[$simbolic_RegistryPackage_id_fol] = $value_RegistryPackage_id; } } //END OF for($index=0;$index<(count($dom_ebXML_RegistryPackage_node_array));$index++) $RegistryPackage_id_array['nodeRepresentation'] = $value_nodeRepresentation_assigned; //return $RegistryPackage_id_array; return array($RegistryPackage_id_array, $atna_value, $simbolic_RegistryPackage_id_array, $RegistryPackage_Fol_id_array); }
function fill_Classification_tables($dom, $RegistryPackage_id_array, $simbolic_RegistryPackage_FOL_id_array, $connessione) { ##### NODEREPRESENTATION $value_nodeRepresentation_assigned = ''; ##### RADICE DEL DOCUMENTO ebXML $root_ebXML = $dom->document_element(); ##### ARRAY DEI NODI RegistryObjectList $dom_ebXML_RegistryObjectList_node_array = $root_ebXML->get_elements_by_tagname("RegistryObjectList"); ##### NODO RegistryObjectList $dom_ebXML_RegistryObjectList_node = $dom_ebXML_RegistryObjectList_node_array[0]; ##### TUTTI I NODI FIGLI DI RegistryObjectList $dom_ebXML_RegistryObjectList_child_nodes = $dom_ebXML_RegistryObjectList_node->child_nodes(); for ($i = 0; $i < count($dom_ebXML_RegistryObjectList_child_nodes); $i++) { #### SINGOLO NODO $dom_ebXML_RegistryObjectList_child_node = $dom_ebXML_RegistryObjectList_child_nodes[$i]; ##### tagname $dom_ebXML_RegistryObjectList_child_node_tagname = $dom_ebXML_RegistryObjectList_child_node->node_name(); #### SOLO I NODI CLASSIFICATION if ($dom_ebXML_RegistryObjectList_child_node_tagname == 'Classification') { $classification_node = $dom_ebXML_RegistryObjectList_child_node; $value_id = "urn:uuid:" . idrandom(); $simbolic_Classification_id = $classification_node->get_attribute('id'); ############################################################# ####NOTA BENE NEL CASO NON SIMBOLICO(VEDI SOLINFO) if (!isSimbolic($simbolic_Classification_id)) { $value_id = $simbolic_Classification_id; } ############################################################# $value_accessControlPolicy = $classification_node->get_attribute('accessControlPolicy'); if ($value_accessControlPolicy == '') { $value_accessControlPolicy = "NULL"; } $value_objectType = $classification_node->get_attribute('objectType'); if ($value_objectType == '' || $value_objectType == 'urn:oasis:names:tc:ebxml-regrep:ObjectType:RegistryObject:Classification') { $value_objectType = "Classification"; } $value_classificationNode = $classification_node->get_attribute('classificationNode'); $value_classificationScheme = $classification_node->get_attribute('classificationScheme'); $value_nodeRepresentation = $classification_node->get_attribute('nodeRepresentation'); if ($value_nodeRepresentation == '' && $value_classificationNode == 'urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2') { ##### VALORE DI DEFAULT CASO DI CLASSIFICATION ##### NON FIGLIE DI EXTRINSICOBJECT E/O REGISTRYPACKAGE //$value_nodeRepresentation = "NULL"; $value_nodeRepresentation = $RegistryPackage_id_array['nodeRepresentation']; } if ($value_classificationNode == '') { $queryForName_value = "SELECT Name_value FROM ClassificationScheme WHERE ClassificationScheme.id = '{$value_classificationScheme}'"; $risName_value = query_select2($queryForName_value, $connessione); writeSQLQuery($risName_value . ": " . $queryForName_value); $name_value = $risName_value[0][0]; $name_value = substr($name_value, 0, strpos($name_value, '.')); $queryForClassificationNode = "SELECT id FROM ClassificationNode WHERE ClassificationNode.code = '{$name_value}'"; $ris_code = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_code . ": " . $queryForClassificationNode); $value_classificationNode = $ris_code[0][0]; } if ($value_classificationScheme == '') { $queryForClassificationNode = "SELECT code FROM ClassificationNode WHERE ClassificationNode.id = '{$value_classificationNode}'"; $ris_classificationNode = query_select2($queryForClassificationNode, $connessione); writeSQLQuery($ris_classificationNode . ": " . $queryForClassificationNode); $code_classificationNode = $ris_classificationNode[0][0]; #### FOLDER if ($code_classificationNode == "XDSFolder") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme.Name_value = 'XDSFolder.codeList'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; //$value_nodeRepresentation = "Radiology"; } else { if ($code_classificationNode == "XDSSubmissionSet") { $queryForClassificationScheme = "SELECT id FROM ClassificationScheme WHERE ClassificationScheme.Name_value = 'XDSSubmissionSet.contentTypeCode'"; $ris_ClassificationScheme = query_select2($queryForClassificationScheme, $connessione); writeSQLQuery($ris_ClassificationScheme . ": " . $queryForClassificationScheme); $value_classificationScheme = $ris_ClassificationScheme[0][0]; } } //END OF if($code_classificationNode=="XDSSubmissionSet") } //END OF if($value_classificationScheme == '') $simbolic_value_classifiedObject = $classification_node->get_attribute('classifiedObject'); $Classification_folder = in_array($simbolic_value_classifiedObject, $simbolic_RegistryPackage_FOL_id_array); if (!$Classification_folder) { $value_classifiedObject = $RegistryPackage_id_array[$simbolic_value_classifiedObject]; // if($value_classifiedObject == '') // { // $value_classifiedObject = "NOT DECLARED"; // } $DB_array_classification_attributes['id'] = $value_id; $DB_array_classification_attributes['classificationScheme'] = $value_classificationScheme; $DB_array_classification_attributes['accessControlPolicy'] = $value_accessControlPolicy; $DB_array_classification_attributes['objectType'] = $value_objectType; $DB_array_classification_attributes['classifiedObject'] = $value_classifiedObject; $DB_array_classification_attributes['classificationNode'] = $value_classificationNode; $DB_array_classification_attributes['nodeRepresentation'] = $value_nodeRepresentation; if ($value_classificationNode != 'urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd' && $value_classificationNode != 'urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2') { ##### SONO PRONTO A SCRIVERE NEL DB $INSERT_INTO_Classification = "INSERT INTO Classification (id,accessControlPolicy,objectType,classificationNode,classificationScheme,classifiedObject,nodeRepresentation) VALUES ('" . trim($DB_array_classification_attributes['id']) . "','" . trim($DB_array_classification_attributes['accessControlPolicy']) . "','" . trim($DB_array_classification_attributes['objectType']) . "','" . trim($DB_array_classification_attributes['classificationNode']) . "','" . trim($DB_array_classification_attributes['classificationScheme']) . "','" . trim($DB_array_classification_attributes['classifiedObject']) . "','" . trim($DB_array_classification_attributes['nodeRepresentation']) . "')"; $ris = query_exec2($INSERT_INTO_Classification, $connessione); writeSQLQuery($ris . ": " . $INSERT_INTO_Classification); } } //Fine if(!$Classification_folder) } //END OF if($dom_ebXML_RegistryObjectList_child_node_tagname=='Classification') } //END OF for($i=0;$i<count($dom_ebXML_RegistryObjectList_child_nodes);$i++) }
} //END OF if($objectType_code_from_RegistryPackage=="XDSFolder") ##### ASSOCIATION if ($objectType_from_Association == "Association") { writeSQLQueryService("Sono nel caso Association"); $Association_id = $SQLResponse[$rr][0]; $dom_ebXML_Association = domxml_new_doc("1.0"); ## ROOT $dom_ebXML_Association_root = $dom_ebXML_Association->create_element("Association"); $dom_ebXML_Association_root = $dom_ebXML_Association->append_child($dom_ebXML_Association_root); #### SETTO I NAMESPACES $dom_ebXML_Association_root->set_namespace($ns_rim_path, $ns_rim); $dom_ebXML_Association_root->add_namespace($ns_q_path, $ns_q); ####OTTENGO DAL DB GLI ATTRIBUTI DI Association $queryForAssociationAttributes = "SELECT associationType,objectType,sourceObject,targetObject FROM Association WHERE Association.id = '{$Association_id}'"; $AssociationAttributes = query_select2($queryForAssociationAttributes, $connessione); writeSQLQueryService($queryForAssociationAttributes); $Association_associationType = $AssociationAttributes[0][0]; $Association_objectType = $AssociationAttributes[0][1]; $Association_sourceObject = $AssociationAttributes[0][2]; $Association_targetObject = $AssociationAttributes[0][3]; $dom_ebXML_Association_root->set_attribute("id", $Association_id); $dom_ebXML_Association_root->set_attribute("associationType", $Association_associationType); $dom_ebXML_Association_root->set_attribute("objectType", $Association_objectType); $dom_ebXML_Association_root->set_attribute("sourceObject", $Association_sourceObject); $dom_ebXML_Association_root->set_attribute("targetObject", $Association_targetObject); #### PREPARO PER OBJECTREF $Association_sourceObject_ARR_1[$Association_sourceObject] = $Association_sourceObject; $Association_sourceObject_ARR_2[] = $Association_sourceObject; $Association_targetObject_ARR_1[$Association_targetObject] = $Association_targetObject; $Association_targetObject_ARR_2[] = $Association_targetObject;
function appendDescription_ExternalIdentifier($dom_ebXML_ExtrinsicObject, $dom_ebXML_ExtrinsicObject_ExternalIdentifier, $ns_rim_path, $ExtrinsicObject_ExternalIdentifier_id, $connessione) { #### DESCRIPTION $queryForExternalIdentifier_Description = "SELECT charset,value,lang FROM Description WHERE Description.parent = '{$ExtrinsicObject_ExternalIdentifier_id}'"; $Description_arr = query_select2($queryForExternalIdentifier_Description, $connessione); writeSQLQueryService($queryForExternalIdentifier_Description); $Description_charset = $Description_arr[0][0]; $Description_value = $Description_arr[0][1]; $Description_lang = $Description_arr[0][2]; if (!empty($Description_arr) && $Description_value != "NOT DECLARED") { $dom_ebXML_ExternalIdentifier_Description = $dom_ebXML_ExtrinsicObject->create_element_ns($ns_rim_path, "Description"); $dom_ebXML_ExternalIdentifier_Description = $dom_ebXML_ExtrinsicObject_ExternalIdentifier->append_child($dom_ebXML_ExternalIdentifier_Description); $dom_ebXML_ExternalIdentifier_Description_LocalizedString = $dom_ebXML_ExtrinsicObject->create_element_ns($ns_rim_path, "LocalizedString"); $dom_ebXML_ExternalIdentifier_Description_LocalizedString = $dom_ebXML_ExternalIdentifier_Description->append_child($dom_ebXML_ExternalIdentifier_Description_LocalizedString); $dom_ebXML_ExternalIdentifier_Description_LocalizedString->set_attribute("charset", $Description_charset); $dom_ebXML_ExternalIdentifier_Description_LocalizedString->set_attribute("value", $Description_value); $dom_ebXML_ExternalIdentifier_Description_LocalizedString->set_attribute("xml:lang", $Description_lang); } }