예제 #1
0
 function getStatsPages()
 {
     global $session;
     // Date de lancement des statistiques.
     $datestats = new clDate(DATESTATS);
     // On récupère la liste des utilisateurs s'étant déjà connectés.
     $param['cw'] = "WHERE idapplication=" . IDAPPLICATION;
     $req = new clResultQuery();
     $res = $req->Execute("Fichier", "getSessionsPersonnes", $param, "ResultQuery");
     // Fabrication du tableau attendu par ModeliXe.
     $tab['%'] = "globales";
     for ($i = 0; isset($res['uid'][$i]); $i++) {
         $tab[$res['uid'][$i]] = "de " . $res['uid'][$i] . " (" . $res['somme'][$i] . ")";
     }
     // Initialisation de l'utilisateur sélectionné et du filtre MySQL correspondant.
     if (!isset($_POST['choix'])) {
         if (isset($_GET['choix'])) {
             $_POST['choix'] = $_GET['choix'];
         } else {
             $_POST['choix'] = "%";
         }
     }
     // Application du filtre MySQL pour aller récupérer les statistiques de l'utilisateur.
     $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION;
     $param['cs'] = "";
     $req = new clResultQuery();
     $res = $req->Execute("Fichier", "getSessionsStatistiques", $param, "ResultQuery");
     // Pour chaque statistique récupérées, on incrémente une case d'un tableau avec son nombre de clic. Il y a une case
     // par partie du Terminal.
     $stats["Total de clics"] = 0;
     for ($i = 0; isset($res['idstats'][$i]); $i++) {
         if ($res['loc2'][$i]) {
             if ($res['loc1'][$i]) {
                 if (isset($stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]])) {
                     $stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]] += $res['nombre'][$i];
                 } else {
                     $stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]] = $res['nombre'][$i];
                 }
             }
         } else {
             if ($res['loc1'][$i]) {
                 if (isset($stats[$res['loc1'][$i]])) {
                     $stats[$res['loc1'][$i]] += $res['nombre'][$i];
                 } else {
                     $stats[$res['loc1'][$i]] = $res['nombre'][$i];
                 }
             }
         }
         // Calcul du nombre total de clic pour cet utilisateur.
         $stats["Total de clics"] += $res['nombre'][$i];
     }
     // Chargement du template ModeliXe.
     $mod = new ModeliXe("SessionsStatistiques.mxt");
     $mod->SetModeliXe();
     // Chargement du template ListMaker pour faire le tableau.
     $list = new ListMaker("template/SessionsStatistiques.html");
     // Passage des variables à transmettre et de leurs valeurs.
     $list->addUserVar('navi', $session->genNavi($session->getNavi(0), $session->getNavi(1)));
     $list->addUrlVar('navi', $session->genNavi($session->getNavi(0), $session->getNavi(1)));
     $list->addUserVar('choix', $_POST['choix']);
     $list->addUrlVar('choix', $_POST['choix']);
     // Nom des colonnes du tableau.
     $list->setSortColumn('col1', 'Page', 'page');
     $list->setSortColumn('col2', 'Clics', 'clics');
     // On alterne les couleurs en fonction de la parité de la ligne.
     $list->setAlternateColor("pair", "impair");
     // On parcourt le tableau précédemment calculé contenant les statistiques,
     // et on les ajoute au template ListMaker.
     if (is_array($stats)) {
         for ($i = 0; list($key, $val) = each($stats); $i++) {
             $item['page'] = $key;
             $item['clics'] = $val;
             $list->addItem($item);
         }
     }
     // Affichage d'informations complémentaires si nous ne sommes pas dans le cas
     // de statistiques globales.
     if ($_POST['choix'] != "%") {
         // Si l'utilisateur est connecté, on affiche un message le signalant.
         $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION;
         $req = new clResultQuery();
         $res = $req->Execute("Fichier", "getSessionsActuelles", $param, "ResultQuery");
         if ($res['INDIC_SVC'][2]) {
             $infos = "Cet utilisateur est actuellement connecté.<br />";
         }
         // Sinon, on affiche les informations de sa dernière connexion.
         if (!isset($infos) or !$infos) {
             // Récupération des informations.
             $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION . " ORDER BY dateslast DESC";
             $req = new clResultQuery();
             $res = $req->Execute("Fichier", "getSessionsHistorique", $param, "ResultQuery");
             // Calcul de la durée de connexion et affichage des différentes dates.
             $last = new clDate(isset($res['dateslast'][0]) ? $res['dateslast'][0] : '');
             $date = new clDate(isset($res['dateshisto'][0]) ? $res['dateshisto'][0] : '');
             $duree = new clDuree($last->getDifference($date));
             if ((isset($res['nombre'][0]) ? $res['nombre'][0] : '0') > 1) {
                 $sc = "s";
             } else {
                 $sc = '';
             }
             if ($duree->getMinutes() > 1) {
                 $sm = "s";
             } else {
                 $sm = '';
             }
             if ($duree->getSeconds() > 1) {
                 $ss = "s";
             } else {
                 $ss = '';
             }
             if ($duree->getMinutes() > 0) {
                 $temps = $duree->getMinutes() . " minute{$sm}";
             } else {
                 $temps = $duree->getSeconds() . " seconde{$ss}";
             }
             $infos = "Dernière connexion le " . $date->getDateTextFull("à") . " (" . (isset($res['nombre'][0]) ? $res['nombre'][0] : '0') . " clic{$sc}, durée de {$temps})<br />";
             $infos .= "Déconnexion enregistrée le " . $last->getDateTextFull("à") . "<br />";
         }
         $mod->MxText("informations", $infos);
     } else {
         $mod->MxText("informations", '--');
     }
     // On affiche la date à laquelle les stats ont commencé être enregistrées.
     $mod->MxText("datestats", $datestats->getDateText());
     // Affichage du tableau de stats.
     $mod->MxText("table", $list->getList(isset($pagination) ? $pagination : ''));
     // Affichage de la liste des personnes à sélectionner.
     $mod->MxSelect("choix", "choix", $_POST['choix'], $tab, '', '', "onChange=reload(this.form)");
     // Variable de navigation.
     $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1)));
     //$this->genGraphs ( $mod ) ;
     $mod->MxCheckerField("graph", "checkbox", 'graph', 1, isset($_POST['graph']) ? $_POST['graph'] ? true : false : false, "title='Graphiques' onChange=reload(this.form)");
     if (isset($_POST['graph']) and $_POST['graph']) {
         $this->genGraphs($mod);
         $mod->MxText("graphs.clicsHeure", "<img src=\"cache/image1.png\" alt=\"Clics par heure\"></img>");
         $mod->MxText("graphs.tempsHeure", "<img src=\"cache/image2.png\" alt=\"Temps par clics moyen par heure\"></img>");
         $mod->MxText("graphs.clicsJour", "<img src=\"cache/image3.png\" alt=\"Clics par jour\"></img>");
     } else {
         $mod->MxBloc("graphs", "delete");
     }
     //$mod -> MxText ( "tempsJour", "<img src=cache/image4.png></img>" ) ;
     // Récupération du code HTML généré.
     return $mod->MxWrite("1");
 }
예제 #2
0
 function genUHCD()
 {
     global $options;
     global $session;
     global $logs;
     // Appel du module de soins continus
     $this->genSC();
     // Appel du module de chirurgie
     $this->genChirurgie();
     // Si le patient n'est pas en soins continus ou en chirurgie, alors on gère l'UHCD.
     if (!$this->patient->isSoinsContinus() and !$this->patient->isChirurgie() and $options->getOption('GestionUHCD')) {
         $ufExec = $options->getOption('numUFexec');
         $ufUHCD = $options->getOption('numUFUHCD');
         $ufUHCDrepere = $options->getOption('numUFUHCDrepere');
         $salleUHCD = $options->getOption("FiltreSalleUHCD");
         $uf = $options->getOption('numUFexec');
         $etat = $this->patient->getEtatUHCD();
         $oldUF = $this->patient->getUF();
         if ($options->getOption('GestionUHCDCode') == 'CCMU') {
             $codeG = $this->patient->getCCMU();
         } else {
             $codeG = $this->patient->getCodeGravite();
         }
         // Gestion des changements de salle (UHCD et UHCD repéré)
         if ($ufUHCDrepere and $ufUHCDrepere != $ufUHCD) {
             if ($oldUF == $ufUHCDrepere and ereg($salleUHCD, $this->patient->getSalle())) {
                 if ($_POST['dateUHCD'] == 'now') {
                     $date = new clDate();
                 } else {
                     $date = new clDate($_POST['dateUHCD']);
                 }
                 $dateC = $date->getDatetime();
                 $this->addBAL('', 'uhcd');
                 $this->patient->setAttribut('DateUHCD', $dateC);
                 $this->patient->setAttribut('UF', $ufUHCD);
                 global $stopAffichage;
                 $stopAffichage = 1;
                 header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)));
             } elseif ($oldUF == $ufUHCD and !ereg($salleUHCD, $this->patient->getSalle())) {
                 if ($_POST['dateUHCD'] == 'now') {
                     $date = new clDate();
                 } else {
                     $date = new clDate($_POST['dateUHCD']);
                 }
                 $dateC = $date->getDatetime();
                 $this->addBAL('', 'uhcdrepere');
                 $this->patient->setAttribut('DateUHCD', $dateC);
                 $this->patient->setAttribut('UF', $ufUHCDrepere);
                 global $stopAffichage;
                 $stopAffichage = 1;
                 header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)));
             }
         }
         // Calcul du critère CCMU4 ou CCMU5
         if ($codeG == 4 or $codeG == 5) {
             $CCMU45 = 1;
         } else {
             $CCMU45 = 0;
         }
         if ($rep == 'okCCMU45') {
             //eko ( "oldUF : $olfUF - ufUHCD : $ufUHCD - ufUHCDrepere : $ufUHCDrepere") ;
             if ($oldUF != $ufUHCD and $oldUF != $ufUHCDrepere) {
                 if (!$ufUHCDrepere or ereg($salleUHCD, $this->patient->getSalle())) {
                     $this->addBAL($rep, 'uhcd');
                     $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD (code > 3)");
                     $this->patient->setAttribut('DateUHCD', $dateC);
                     $this->patient->setAttribut('UF', $ufUHCD);
                 } else {
                     $this->addBAL($rep, 'uhcdrepere');
                     $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD repéré (code > 3)");
                     $this->patient->setAttribut('DateUHCD', $dateC);
                     $this->patient->setAttribut('UF', $ufUHCDrepere);
                 }
             }
             $this->patient->setAttribut('EtatUHCD', $rep);
             global $stopAffichage;
             $stopAffichage = 1;
             header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)) . $sm);
         }
         // Calcul du critère sur la durée
         $datead = new clDate($this->patient->getDateAdmission());
         $dureead = new clDuree();
         $duree = $dureead->getDureeCourte($datead->getDatetime());
         $dureeMaxSansUHCD = 3600 * $options->getOption("Présents UHCD");
         $dureeHeure = $options->getOption("Présents UHCD");
         if ($dureead->getSeconds() > $dureeMaxSansUHCD) {
             $duree = 1;
         } else {
             $duree = 0;
         }
         // Calcul du critère sur le CCMU3
         if ($codeG == 3) {
             $CCMU3 = 1;
         } else {
             $CCMU3 = 0;
         }
         // Vérification des critères directs.
         if ($CCMU45) {
             $rep = 'okCCMU45';
             $uf = $ufUHCD;
             $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD (code > 3)");
         } elseif ($this->patient->getTypeDestination() == 'T') {
             $rep = 'okTransfert';
             $uf = $ufUHCD;
         } elseif ($this->patient->getTypeDestination() == 'D') {
             $rep = 'okDeces';
             $uf = $ufUHCD;
         } else {
             if ($duree) {
                 $rep = 'okDuree';
             } else {
                 if ($CCMU3) {
                     $rep = 'okCCMU3';
                 } else {
                     $rep = 'noCCMU3';
                     $uf = $ufExec;
                 }
             }
         }
         // Vérification de la réponse à la question sur les critères UHCD.
         if ($rep == 'okDuree') {
             if ($_POST['valider'] == 'Oui') {
                 $session->setLogSup('UHCD réponse : Oui');
                 $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Oui");
                 $rep = 'okCriteres';
                 $uf = $ufUHCD;
             } elseif ($_POST['valider'] == 'Non') {
                 $session->setLogSup('UHCD réponse : Non');
                 $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Non");
                 $rep = 'noCriteres';
                 $uf = $ufExec;
             } elseif ($etat != 'okCriteres' and $etat != 'noCriteres') {
                 $session->setLogSup('Question UHCD');
                 // Chargement du template ModeliXe.
                 $mod = new ModeliXe("ErreurUHCD.html");
                 $this->setIHMBusy();
                 $mod->SetModeliXe();
                 // Récupération du code HTML généré.
                 $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)));
                 return $mod->MxWrite("1");
             } else {
                 return '';
             }
         }
         // Vérification de la réponse à la question sur les actes lourds.
         if ($rep == 'okCCMU3') {
             if ($_POST['valider'] == 'Oui') {
                 $session->setLogSup('UHCD réponse : Oui');
                 $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Oui");
                 $rep = 'okActes';
                 $uf = $ufUHCD;
             } elseif ($_POST['valider'] == 'Non') {
                 $session->setLogSup('UHCD réponse : Non');
                 $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Non");
                 $rep = 'noActes';
                 $uf = $ufExec;
             } elseif ($etat != 'okActes' and $etat != 'noActes') {
                 $session->setLogSup('Question UHCD');
                 // Chargement du template ModeliXe.
                 $mod = new ModeliXe("ErreurUHCD.html");
                 $this->setIHMBusy();
                 $mod->SetModeliXe();
                 // Récupération du code HTML généré.
                 $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)));
                 return $mod->MxWrite("1");
             } else {
                 return '';
             }
         }
         // Mise à jour des informations.
         if ($etat != $rep and $rep != 'okDuree' and $rep != 'okCCMU3') {
             if ($_POST['dateUHCD'] == 'now') {
                 $date = new clDate();
             } else {
                 $date = new clDate($_POST['dateUHCD']);
             }
             $dateC = $date->getDatetime();
             if ($rep == 'okCCMU45' or $rep == 'okCriteres' or $rep == 'okActes' or $rep == 'okTransfert' or $rep == 'okDeces') {
                 //eko ( "oldUF : $olfUF - ufUHCD : $ufUHCD - ufUHCDrepere : $ufUHCDrepere") ;
                 if ($oldUF != $ufUHCD and $oldUF != $ufUHCDrepere) {
                     if (!$ufUHCDrepere or ereg($salleUHCD, $this->patient->getSalle())) {
                         $this->addBAL($rep, 'uhcd');
                         //$logs -> addLog ( "uhcd", $session->getNaviFull ( ), "Passage automatique en UHCD (code > 3)" ) ;
                         $this->patient->setAttribut('DateUHCD', $dateC);
                         $this->patient->setAttribut('UF', $ufUHCD);
                     } else {
                         $this->addBAL($rep, 'uhcdrepere');
                         //$logs -> addLog ( "uhcd", $session->getNaviFull ( ), "Passage automatique en UHCD repéré (code > 3)" ) ;
                         $this->patient->setAttribut('DateUHCD', $dateC);
                         $this->patient->setAttribut('UF', $ufUHCDrepere);
                     }
                 }
                 $this->patient->setAttribut('EtatUHCD', $rep);
             } elseif ($rep == 'noCCMU3' or $rep == 'noCriteres' or $rep == 'noActes') {
                 if ($oldUF and ($oldUF == $ufUHCD or $oldUF == $ufUHCDrepere)) {
                     $this->addBAL($rep, 'urg');
                     $logs->addLog("uhcd", $session->getNaviFull(), "Annulation du passage en UHCD (code < 3)");
                     $this->patient->setAttribut('DateUHCD', $dateC);
                     $this->patient->setAttribut('UF', $ufExec);
                 }
                 $this->patient->setAttribut('EtatUHCD', $rep);
                 if ($rep == 'noCriteres') {
                     $sm = '&sendMessage2=Mails Alerte UHCD';
                 }
             }
             if (($_POST['Valider'] or $_POST['Valider_x'] or $_POST['ValiderMaintenant']) and $session->getNavi(3) == "modDateSortie" and $session->getDroit($this->type . "_EtatCivil", "d")) {
             } else {
                 global $stopAffichage;
                 $stopAffichage = 1;
                 header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)) . $sm);
                 print "Erreur de relocation";
                 die;
             }
         }
     }
 }