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"); }
function addPatientHL7($data, $table, $base = BDD) { global $errs; global $options; // Calcul de la durée depuis lequel le patient est admis. $d1 = new clDate(); $d2 = new clDate($data['dt_admission']); $duree = new clDuree($d1->getDifference($d2)); $duree->invertNegatif(); // Procédure anti-fantôme : si aucun de ces champs n'est saisi, on ne fait pas l'ajout du patient. if ($data['nom'] or $data['prenom'] or $data['sexe'] or $data['ilp']) { // Appel de la classe Requete. $requete = new clRequete($base, $table, $data); // Exécution de la requete. $res = $requete->addRecord(); // eko ( "On ajoute un nouveau patient (nsej=$nsej)" ) ; // Si le patient est admis depuis plus de 30 minutes, alors il est placé dans la table des sortis if ($duree->getMinutes() > $options->getOption('ImportsBasculeSortis')) { $pat = new clPatient($res['cur_id'], '', $base); $pat->sortirPatient('simple'); } $this->news1++; } }
function addPatientSQL($idimport, $table) { global $errs; global $news1; global $mods1; global $errs1; global $news2; global $mods2; global $errs2; // Récupération des informations sur le patient à créer. $param['cw'] = "WHERE idimport='{$idimport}'"; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getImports", $param, "ResultQuery"); $i = 0; if ($res['uf'][$i] == '6004') { $base = 'terminal2_tuv2'; $news2++; } else { $base = BDD; $news1++; } if ($res['INDIC_SVC'][2]) { $ras = $req->Execute("Fichier", "getMaxIdToulon", $param, "ResultQuery"); $max = 1; for ($j = 0; isset($ras['idpatient'][$j]); $j++) { if ($ras['idpatient'][$j] > $max) { $max = $ras['idpatient'][$j]; } } $max++; $data['idpatient'] = $max; $data['idu'] = $res['idu'][$i]; $data['ilp'] = $res['ilp'][$i]; $data['nsej'] = $res['idpass'][$i]; $data['uf'] = $res['uf'][$i]; $data['nom'] = $res['nom'][$i]; $data['prenom'] = $res['prenom'][$i]; $data['sexe'] = $res['sexe'][$i]; $data['dt_naissance'] = $res['dt_naissance'][$i]; $data['adresse_libre'] = $res['adresse_libre'][$i]; $data['adresse_cp'] = $res['adresse_cp'][$i]; $data['adresse_ville'] = $res['adresse_ville'][$i]; $data['telephone'] = $res['telephone'][$i]; $data['prevenir'] = str_replace('^', '<br/>', $res['prevenir'][$i]); $data['medecin_traitant'] = $res['medecin_traitant'][$i]; $data['dt_admission'] = $res['dt_admission'][$i]; $data['mode_admission'] = $res['mode_admission'][$i]; $data['iduser'] = "******"; $data['manuel'] = 0; //newfct ( gen_affiche_tableau, $data ) ; // Calcul de la durée depuis lequel le patient est admis. $d1 = new clDate(); $d2 = new clDate($data['dt_admission']); $duree = new clDuree($d1->getDifference($d2)); $duree->invertNegatif(); // Appel de la classe Requete. $requete = new clRequete($base, $table, $data); // Exécution de la requete. $res = $requete->addRecord(); // Si le patient est admis depuis plus de 30 minutes, alors il est placé dans la table des sortis if ($duree->getMinutes() > 30) { $pat = new clPatient($res['cur_id'], '', $base); $pat->sortirPatient('simple'); } // Mise à jour de la date de traitement de l'import. $date = new clDate(); $data2['dt_traitement'] = $date->getDatetime(); // Appel de la classe Requete. $requete = new clRequete(BDD, IMPORTS, $data2); // Exécution de la requete. $requete->updRecord("idimport='{$idimport}'"); } else { // En cas d'erreur, on la signale... $errs->addErreur("clImportation : Impossible d'importer ce nouveau patient, l'identifiant de l'import est introuvable (idimport=\"{$idimport}\")."); $errs1++; $errs2++; } }
function getLast() { global $options; if ($_POST['idSessionATQ']) { $session = $_POST['idSessionATQ']; } if ($_GET['idSessionATQ']) { $session = $_GET['idSessionATQ']; } if ($session) { $this->index = $session; } else { $this->index = ""; } // Récupération de la date de dernier clic. $date = new clDate($_SESSION['last' . $this->index]); // Calcul de la durée entre ce dernier clic et maintenant. $dateN = new clDate(); $duree = new clDuree(); $duree->setValues($dateN->getDifference($date)); // On calcule une clé de session s'il n'y en a pas déjà une. if (!$_SESSION['sidtuv2' . $this->index]) { $_SESSION['sidtuv2' . $this->index] = $this->genIdSession(16); // Affichage pour débugage. if (DEBUGSESSION) { print "<br />Génération de l'idSession : " . $_SESSION['sidtuv2' . $this->index]; } } else { // Affichage pour débugage. if (DEBUGSESSION) { print "<br />idSession : " . $_SESSION['sidtuv2' . $this->index]; } } // On vérifie que la session est toujours valide <=> que la durée calculée n'est pas supérieure // à la durée maximum d'inactivité. if ($duree->getMinutes() <= ($options->getOption("DureeSession") < 480 ? $options->getOption("DureeSession") : 480)) { $_SESSION['last' . $this->index] = $dateN->getDatetime(); // print affTab ( $_SESSION['informations'.$this->index] ) ; // eko ( $_SESSION['informations'.$this->index] ) ; /* mail( Erreurs_Mail, 'Trace connexion', 'Connexion active après '.$duree->getSeconds ( ).' secondes d\'inactivité.' . '\nHeure du clic : '.$dateN->getDatetime ( ). '\nHeure du précédent clic : '.$date->getDatetime ( )."<br/>" ) ; */ /* eko ( 'Connexion active après '.$duree->getSeconds ( ).' secondes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( )."<br/>" ) ; */ return $_SESSION['informations' . $this->index]; } else { /* $errs -> addErreur ( 'Déconnexion après '.$duree->getMinutes ( ).' minutes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( ) ) ; */ $entete = "<html><head><title>{$subject}</title><body>"; $fin = "</ul></body></html>"; $headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n"; $headers .= "To: " . Erreurs_Mail . "\r\nFrom: " . Erreurs_NomApp . "<" . Erreurs_MailApp . ">\r\n"; /* mail( '', '[XHAM V1] Trace connexion', $entete.' - Perte de la connexion après <b>'.$duree->getSeconds ( ).'</b> secondes d\'inactivité.<br/>' . ' - Heure du clic : <b>'.$dateN->getDatetime ( ).'</b><br/> - Heure du précédent clic : <b>'.$date->getDatetime ( ).'</b><br/>' . ' - Application : <b>'.NOMAPPLICATION.'</b><br/> - Durée maximale : <b>'.$options -> getOption ( "DureeSession" ).' minutes</b><br/>'.$fin, $headers ) ; */ /*print 'Déconnexion après '.$duree->getMinutes ( ).' minutes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( )."<br/>";*/ } $_SESSION['last' . $this->index] = $dateN->getDatetime(); }