executeStatementsNode("INIT"); /////////// CONSOLIDATION : GETENV /////////// $executed = execute_statement_node_getenv($forced_env); if (!$executed) { logErrorMsg("L'établissement $forced_env n'a pas été trouvé dans les settings"); die_conso(); } /////////// POST TRAITEMENT : POST /////////// // Suppression des séjours Et intégrité des la bdd nettoyage_sejours_bdd($ENV_CONSO_PMSI_DELETE_BEFORE_YEAR); $cti_sqlStatements->executeStatementsNode("POST"); } function execute_statement_node_getenv($forced_env){ global $environments_settings; global $iCTI_connexion; $executed = false; foreach ($environments_settings as $environment) { $db_name = strtolower($environment["dbname"]); if ($forced_env == '' || $forced_env == $db_name) { $executed = true; $environmentVars = get_environmentVars($environment); $cti_sqlStatements_finess = new CTI_SqlStatements_class("iCTI_import_pmsi_CONSOLIDATION.XML",$iCTI_connexion,$environmentVars); $cti_sqlStatements_finess->executeStatementsNode("GETENV"); } } return $executed; } function get_environmentVars($environment){ global $environmentVars; $environmentVars["DBNAME"] = $environment["dbname"]; $environmentVars["DBPORT"] = $environment["dbport"]; $environmentVars["DBHOST"] = $environment["dbhost"]; $environmentVars["DBUSERNAME"] = $environment["dbusername"]; $environmentVars["DBPASSWORD"] = $environment["dbpassword"]; $environmentVars["FINESS"] = $environment["finess"]; $environmentVars["FINESS_TEXTE"] = $environment["texte"]; return $environmentVars; } function iCTI_connect() { global $iCTI_connexion; global $ENV_FINESS_PRINCIPAL; global $ENV_CONSO_PMSI_ANNEE_DEBUT; global $ENV_CONSO_PMSI_DELETE_BEFORE_YEAR; global $environments_settings; $iCTI_connexion = FALSE; $file = "../../../settings/settings.XML"; $settings_xml = simplexml_load_file($file); $ENV_CONSOLIDATION = "0"; // On traite l'année en cours + 2 années par défault $ENV_CONSO_PMSI_ANNEE_DEBUT = transform_AX_in_annee_mois("A2"); // Supprimer les séjours avant une année AX donnée dans les settings $ENV_CONSO_PMSI_DELETE_BEFORE_YEAR= false; $properties = $settings_xml->xpath("/SETTINGS/ENVIRONMENT/PROPERTY"); foreach ($properties as $propertyNode) { if ($propertyNode['name'] == 'CONSOLIDATION') { $ENV_CONSOLIDATION = $propertyNode['value']; } if ($propertyNode['name'] == 'FINESS') { $ENV_FINESS_PRINCIPAL = $propertyNode['value']; } if ($propertyNode['name'] == 'CONSO_PMSI_ANNEE_DEBUT' || $propertyNode['name'] == 'DEPUIS_ANNEE_MOIS_SORTIE') { $ENV_CONSO_PMSI_ANNEE_DEBUT = transform_AX_in_annee_mois($propertyNode['value']); } if ($propertyNode['name'] == 'CONSO_PMSI_DELETE_BEFORE_YEAR') { $year_AX = $propertyNode['value']; if (is_year_AX($year_AX)){ //On garde au moins l'année en cours + 2 ans au cas où $year_mini_delete_before = date("Y") - 2; $year_delete_before = transform_AX_in_year($year_AX); if ($year_delete_before <= $year_mini_delete_before){ $ENV_CONSO_PMSI_DELETE_BEFORE_YEAR = $year_delete_before; } } } } if ($ENV_CONSOLIDATION != "1") { logErrorMsg("Environnement NON CONSOLIDE"); return FALSE; } $environment_error = FALSE; $environments_settings = array(); $environments = $settings_xml->xpath("/SETTINGS/CONSOLIDATION/ENVIRONMENT"); // Création d'un tableau comprenant les infos de connexion de tous les environnements du conso foreach ($environments as $environmentNode) { $environment_dir = ""; $environment_finess = ""; $environment_texte = ""; $environment_dbname = ""; $environment_host = ""; $environment_port = ""; $environment_username = ""; $environment_password = ""; foreach ($environmentNode->PROPERTY as $propertyNode) { if ($propertyNode['name'] == 'ENVIRONMENT') { $environment_texte = utf8_decode($propertyNode['value']); } if ($propertyNode['name'] == 'DIR') { $environment_dir = $propertyNode['value']; } } //Chaine de connexion $dbSettings = new EnvironmentDatabaseSettings($environment_dir); try { $dbSettings->readSettings(); } catch (Exception $e) { logErrorMsg($e->getMessage()); $environment_error = TRUE; } $environment_host = $dbSettings->getHost(); $environment_port = $dbSettings->getPort(); $environment_dbname = $dbSettings->getName(); $environment_username = $dbSettings->getUsername(); $environment_password = $dbSettings->getPassword(); //Settings de l'environnemnt if (file_exists($environment_dir . "/settings/settings.xml")) { $environment_settings_xml = simplexml_load_file($environment_dir . "/settings/settings.xml"); if ($environment_settings_xml) { foreach ($environment_settings_xml->ENVIRONMENT as $toEnvironmentNode) { foreach ($toEnvironmentNode->PROPERTY as $toPropertyNode) { if ($toPropertyNode['name'] == 'FINESS') { $environment_finess = $toPropertyNode['value']; } if ($toPropertyNode['name'] == 'ENVIRONMENT') { $environment_texte = utf8_decode($toPropertyNode['value']); } } } } } else { logErrorMsg("iCTI_connect : Fichier settings de l'environnement non trouvé, vérifier le DIR du '$environment_texte' dans les settings du consolidé"); $environment_error = TRUE; } if ($environment_dbname == "") { logErrorMsg("iCTI_connect : Nom de la base de donnée non trouvé"); $environment_error = TRUE; } if ($environment_finess == "") { logErrorMsg("iCTI_connect : Finess non trouvé"); $environment_error = TRUE; } if ($environment_error == TRUE) { logErrorMsg("iCTI_connect : Environnement '$environment_texte' sur '$environment_dir' inexistant ou mal configuré"); logErrorMsg("iCTI_connect : Au moins un environnement de la consolidation n'est pas correct"); return FALSE; } $environment = array(); $environment["dir"] = $environment_dir; $environment["finess"] = $environment_finess; $environment["texte"] = $environment_texte; $environment["dbname"] = $environment_dbname; $environment["dbport"] = $environment_port; $environment["dbhost"] = $environment_host; $environment["dbusername"] = $environment_username; $environment["dbpassword"] = $environment_password; $environments_settings[] = $environment; } $iCTI_connexion = Database2Factory::getInstance(Environnement::PROVIDER_CTI); $ret = $iCTI_connexion->connect(); if (!$ret) { logErrorMsg("La connexion PostgreSQL iCTI a échoué"); return FALSE; } return $ret; } ?>