Deltacms/module/statislite/view/index/index.php

328 lines
11 KiB
PHP

<link rel="stylesheet" href="./module/statislite/view/index/index.css">
<?php
// Lexique
$text = [];
$val = $this->getData(['config', 'i18n', 'langAdmin']);
switch ($val) {
case 'fr' :
$text[0] = 'Visites depuis le ';
$text[1] = 'Nombre de pages vues = ';
$text[2] = 'Nombre de visites = ';
$text[3] = 'Durée moyenne = ';
$text[4] = 'Pages vues, comptabilisées une seule fois par session';
$text[5] = 'Langages préférés';
$text[6] = 'Navigateurs';
$text[7] = 'Systèmes d\'exploitation';
$text[8] = 'Robots détectés : ';
$text[9] = 'Sessions invalides : ';
$text[10] = 'Affichage chronologique résumé';
$text[11] = ' : Visites => ';
$text[12] = 'Pages vues => ';
$text[13] = 'Durée totale => ';
$text[14] = 'Durée moyenne par visite => ';
$text[15] = 'Affichage détaillé des dernières visites';
$text[16] = ' - Début de session : ';
$text[17] = ' Géolocalisation : ';
$text[18] = ' Système d\'exploitation : ';
$text[19] = ' Navigateur : ';
$text[20] = ' Langage préféré : ';
$text[21] = ' - Nombre total de pages vues : ';
$text[22] = ' - Pages vues (durée) : ';
$text[23] = ' - Pages vues : ';
$text[24] = ' - Durée de la visite > à ';
$text[25] = ' - Durée de la visite : ?';
$text[26] = 'Visites depuis le ';
$text[27] = ' - Nombre total de pages vues : ';
$text[28] = ' - Nombre de visites : ';
break;
case 'en' :
$text[0] = 'Visits since ';
$text[1] = 'Number of page views = ';
$text[2] = 'Number of visits = ';
$text[3] = 'Average duration = ';
$text[4] = 'Page views, counted only once per session';
$text[5] = 'Preferred languages';
$text[6] = 'Browsers';
$text[7] = 'Operating systems';
$text[8] = 'Robots detected: ';
$text[9] = 'Invalid sessions: ';
$text[10] = 'Chronological summary display';
$text[11] = ' : Visits => ';
$text[12] = 'Page views => ';
$text[13] = 'Total duration => ';
$text[14] = 'Average time per visit => ';
$text[15] = 'Detailed display of last visits';
$text[16] = ' - Start of session: ';
$text[17] = ' Geolocation: ';
$text[18] = ' Operating system: ';
$text[19] = ' Browser: ';
$text[20] = ' Preferred language: ';
$text[21] = ' - Total page views: ';
$text[22] = ' - Page views (duration): ';
$text[23] = ' - Page views: ';
$text[24] = ' - Duration of visit > ';
$text[25] = ' - Duration of visit: ? ';
$text[26] = 'Visits since ';
$text[27] = ' - Total number of pages viewed: ';
$text[28] = ' - Number of visits: ';
break;
}
/*
* Affichage des résultats
*/
/*
* Paramètres réglés en configuration du module
*/
// Temps minimum à passer sur le site en secondes pour valider une visite
$timeVisiteMini = $this->getData(['module', $this->getUrl(0), 'config', 'timeVisiteMini' ]);
// Affichage graphique : nombre de pages vues à afficher en commençant par la plus fréquente, de 0 à toutes
$nbaffipagesvues = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffipagesvues']);
// Affichage graphique : nombre de langues à afficher en commençant par la plus fréquente, de 0 à toutes
$nbaffilangues = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffilangues']);
// Affichage graphique : nombre de navigateurs à afficher en commençant par le plus fréquent, de 0 à toutes
$nbaffinavigateurs = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffinavigateurs']);
// Affichage graphique : nombre de systèmes d'exploitation à afficher en commençant par le plus fréquent, de 0 à tous
$nbaffise = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffise']);
// Affichage graphique : nombre de pays à afficher en commençant par le plus fréquent, de 0 à tous
$nbaffipays = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffipays']);
// Nombre de sessions affichées dans l'affichage détaillé
$nbEnregSession = $this->getData(['module', $this->getUrl(0), 'config', 'nbEnregSession' ]);
// Nombre de dates affichées dans l'affichage chronologique
$nbAffiDates = $this->getData(['module', $this->getUrl(0), 'config', 'nbaffidates' ]);
// option avec geolocalisation
$geolocalisation = $this->getData(['module', $this->getUrl(0), 'config', 'geolocalisation' ]);
/*
* Affichage cumulé depuis le début de l'analyse soit depuis l'initialisation du fichier cumul.json
*/
?>
<div class="block">
<?php
if( function_exists('datefmt_create') && function_exists('datefmt_create') && extension_loaded('intl') ){
$lang = 'fr_FR';
$zone = 'Europe/Paris';
if ($val === 'en'){
$lang = 'en_GB';
$zone = 'Europe/London';
}
$fmt = datefmt_create(
$lang,
IntlDateFormatter::LONG,
IntlDateFormatter::SHORT,
$zone,
IntlDateFormatter::GREGORIAN
);
$datedeb = datefmt_format($fmt, strtotime($module::$datedebut));
} else{
$datedeb = $module::$datedebut;
}
?>
<h4><?php echo $text[0]; echo $datedeb;?></h4>
<div class="row">
<div class="col4"><h3>
<?php echo $text[1].$module::$comptepagestotal;?></h3>
</div>
<div class="col4"><h3>
<?php echo $text[2].$module::$comptevisitetotal;?></h3>
</div>
<div class="col4"><h3>
<?php echo $text[3].$module::$dureevisitemoyenne;?></h3>
</div>
</div><br/><br/>
<?php
if($nbaffipagesvues != 0){
// Affichage des pages vues et de leur nombre de clics en prenant en compte cumul.json et sessionLog.json
?> <div class="blockgraph">
<div class="stats multicolor">
<h4><?php echo $text[4]; ?></h4>
<ul>
<?php foreach($module::$pagesvuesaffi as $page=>$score){
// Adaptation de la longueur au score
$long =ceil((float)($score/$module::$scoremax)*10)*10;
?> <li><?php echo $page; ?><span class="percent v<?php echo $long; ?>"> <?php echo $score; ?></span></li>
<?php }
?>
</ul>
</div>
</div><br/><br/>
<?php }
// Affichage des langages préférés en prenant en compte cumul.json et sessionLog.json
if($nbaffilangues != 0){
?> <div class="blockgraph">
<div class="stats grey_gradiant">
<h4><?php echo $text[5];?></h4>
<ul>
<?php foreach($module::$languesaffi as $lang=>$score){
// Adaptation de la longueur au score
$long =ceil((float)($score/$module::$scoremaxlangues)*10)*10;
?> <li><?php echo $lang; ?><span class="percent v<?php echo $long; ?>"> <?php echo $score; ?></span></li>
<?php }
?>
</ul>
</div>
</div><br/><br/>
<?php }
// Affichage des navigateurs en prenant en compte cumul.json et sessionLog.json
if($nbaffinavigateurs != 0){
?> <div class="blockgraph notranslate">
<div class="stats green_gradiant">
<h4><?php echo $text[6]; ?></h4>
<ul>
<?php foreach($module::$navigateursaffi as $navig=>$score){
// Adaptation de la longueur au score
$long =ceil((float)($score/$module::$scoremaxnavi)*10)*10;
?> <li><?php echo $navig; ?><span class="percent v<?php echo $long; ?>"> <?php echo $score; ?></span></li>
<?php }
?>
</ul>
</div>
</div><br/><br/>
<?php }
// Affichage des systèmes d'exploitation en prenant en compte cumul.json et sessionLog.json
if($nbaffise != 0){
?> <div class="blockgraph notranslate">
<div class="stats grey_gradiant">
<h4><?php echo $text[7]; ?></h4>
<ul>
<?php foreach($module::$systemesaffi as $syse=>$score){
// Adaptation de la longueur au score
$long =ceil((float)($score/$module::$scoremaxse)*10)*10;
?> <li><?php echo $syse; ?><span class="percent v<?php echo $long; ?>"> <?php echo $score; ?></span></li>
<?php }
?>
</ul>
</div>
</div><br/><br/>
<?php }
// Affichage des robots et des sessions invalides
$json = file_get_contents($module::$fichiers_json.'cumul.json');
$cumul = json_decode($json, true);?>
<br/><h3>
<div class="row">
<div class="col4">
<?php echo $text[8].$cumul['robots']['ua']; ?>
</div>
<div class="col4">
<?php echo $text[9].($cumul['robots']['np'] + $cumul['robots']['tv'] + $cumul['robots']['ue']);?>
</div>
</div></h3>
<!-- Fermeture bloc principal -->
</div>
<?php
/*
* Affichage des visites, pages vues, durée des x dernières dates du fichier chrono.json
*
*/
if( $nbAffiDates != 0){ ?>
<div class="block">
<h4><?php echo $text[10]; ?></h4>
<?php
$i = 0;
foreach($module::$chronoaffi as $date=>$value){
$dureeparvisite = '';
if($module::$chronoaffi[$date]['nb_visites'] > 0){
$dureeparvisite = $module::conversionTime( (int)($module::$chronoaffi[$date]['duree'] / $module::$chronoaffi[$date]['nb_visites']));
}
?>
<div class="row">
<div class="col3">
<?php echo '<strong>'.$date.'</strong>'.$text[11].$module::$chronoaffi[$date]['nb_visites']; ?>
</div>
<div class="col2">
<?php echo $text[12].$module::$chronoaffi[$date]['nb_pages_vues']; ?>
</div>
<div class="col3">
<?php echo $text[13].$module::conversionTime($module::$chronoaffi[$date]['duree']); ?>
</div>
<div class="col4">
<?php if($module::$chronoaffi[$date]['nb_visites'] > 0){ echo $text[14].$dureeparvisite; }?>
</div>
</div>
<?php
$i++;
if($i >= $nbAffiDates) { break;}
} ?>
</div>
<?php
}
/*
* Affichage détaillé pour les enregistrements du fichier affitampon.json
*
*/
$tableau = $module::$affidetaille;
if( isset($tableau[0]['vues'][0])){
// Recherche de la première date dans le fichier courant
$datedebut = date('Y/m/d H:i:s');
$datedebut = substr($tableau[count($tableau) - 1]['vues'][0], 0 , 19);
?>
<div class="block">
<h4><?php echo $text[15]; ?></h4>
<?php
$comptepages = 0;
$comptevisites = 0;
foreach($tableau as $num=>$values){
$pagesvues ='';
$nbpageparsession = count($tableau[$num]['vues']);
$datetimei = strtotime(substr($tableau[$num]['vues'][0], 0 , 19));
$datetimef = strtotime(substr($tableau[$num]['vues'][$nbpageparsession - 1], 0 , 19));
$dureevisite = 0;
for( $i=0 ; $i < $nbpageparsession - 1 ; $i++){
$nompage = substr($tableau[$num]['vues'][$i], 22 , strlen($tableau[$num]['vues'][$i]));
$dureepage = strtotime(substr($tableau[$num]['vues'][$i + 1], 0 , 19)) - strtotime(substr($tableau[$num]['vues'][$i], 0 , 19));
$pagesvues .= $nompage.' ('.$dureepage.' s) - ';
$dureevisite = $dureevisite + $dureepage;
}
$pagesvues .= substr($tableau[$num]['vues'][$nbpageparsession - 1], 22 , strlen($tableau[$num]['vues'][$nbpageparsession - 1]));
// Affichages
echo '<strong>'.$text[16].substr($tableau[$num]['vues'][0], 0 , 19).'</strong><br/>';
if($geolocalisation){
echo ' >><em>'.$text[17].$tableau[$num]['geolocalisation'].'</em><br/>';
}
echo ' - User Agent : '.$tableau[$num]['userAgent'].'<br/>';
echo ' >><em>'.$text[18].$tableau[$num]['client'][2].'</em><br/>';
echo ' >><em>'.$text[19].$tableau[$num]['client'][1].'</em><br/>';
echo ' - Accept Language : '.$tableau[$num]['langage'].'<br/>';
echo ' >><em>'.$text[20].$tableau[$num]['client'][0].'</em><br/>';
echo ' - Referer : '.$tableau[$num]['referer'].'<br/>';
echo '<em>'.$text[21].$nbpageparsession.'</em><br/>';
if($nbpageparsession >= 1){
echo $text[22].$pagesvues.'<br/>';
}
else{
echo $text[23].$pagesvues.'<br/>';
}
$dureevisite = $module::conversionTime($dureevisite);
if($dureevisite != '0 s'){
echo '<em>'.$text[24]. $dureevisite.'</em><br/>'.'<br/>';
}
else{
echo $text[25].'<br/>'.'<br/>';
}
$comptevisites++;
$comptepages = $comptepages + $nbpageparsession;
}
// Affichage du bilan pour la période en cours
echo '<strong>'.$text[26].$datedebut.'</strong><br/>'.'<br/>';
echo $text[27].$comptepages.'<br/>';
echo $text[28].$comptevisites.'<br/>'.'<br/>';
}
?>
</div>