Browse Source

page des stats de visites site et articles, en panoramique

spip-3.0
cedric@yterium.com 12 years ago
parent
commit
217938c829
  1. 2
      .gitattributes
  2. 16
      inc/statistiques.php
  3. 3
      inc/stats_to_array.php
  4. 6
      plugin.xml
  5. 2
      prive/squelettes/contenu/stats_visites.html
  6. 110
      prive/squelettes/inclure/stats-visites-data.html
  7. 7
      prive/squelettes/inclure/stats-visites-data_fonctions.php
  8. 2
      prive/squelettes/top/stats_visites.html
  9. 4
      prive/stats/visites.html
  10. 10
      prive/transmettre/statistiques.html

2
.gitattributes vendored

@ -25,10 +25,12 @@ prive/squelettes/contenu/stats_visites.html -text
prive/squelettes/inclure/admin_effacer_stats.html -text
prive/squelettes/inclure/stats-visites-data.html -text
prive/squelettes/inclure/stats-visites-data_fonctions.php -text
prive/squelettes/top/stats_visites.html -text
prive/stats/visites.html -text
prive/style_prive_plugin_stats.html -text
prive/themes/spip/images/statistique-16.png -text
prive/themes/spip/images/statistique-24.png -text
prive/transmettre/statistiques.html -text
public/stats.php -text
/stats_autoriser.php -text
/stats_pipelines.php -text

16
inc/statistiques.php

@ -459,6 +459,22 @@ function statistiques_moyenne($tab){
return $moyenne / count($tab);
}
/**
* Construire un tableau par popularite
* classemnt => id_truc
* @param string $type
* @param string $serveur
* @return array
*/
function classement_populaires($type, $serveur=''){
static $classement = array();
if (isset($classement[$type]))
return $classement[$type];
$classement[$type] = sql_allfetsel(id_table_objet($type, $serveur), table_objet_sql($type, $serveur), "statut='publie' AND popularite > 0", "", "popularite DESC",'','',$serveur);
$classement[$type] = array_map('reset',$classement[$type]);
return $classement[$type];
}
// http://doc.spip.org/@statistiques_signatures_dist
function statistiques_signatures_dist($duree, $interval, $type, $id_article, $serveur)

3
inc/stats_to_array.php

@ -50,6 +50,9 @@ function inc_stats_to_array_dist($unite, $duree, $id_article, $options = array()
moyenne_glissante();
$data = array();
$r = sql_fetch($res,$serveur);
if (!$r){
$r = array('d'=>date($format,$now),'v'=>0);
}
do {
$data[$r['d']] = array('visites'=>$r['v'],'moyenne'=>moyenne_glissante($r['v'], $glisse));
$last = $r['d'];

6
plugin.xml

@ -54,12 +54,12 @@
<bouton id="statistiques" parent="bando_activite" position="0">
<icone>images/statistique-16.png</icone>
<titre>icone_statistiques_visites</titre>
<url>statistiques_visites</url>
<url>stats_visites</url>
</bouton>
<onglet id='statistiques_visites' parent='statistiques'>
<onglet id='stats_visites' parent='statistiques'>
<icone>null</icone>
<titre>icone_statistiques_visites</titre>
<url>statistiques_visites</url>
<url>stats_visites</url>
</onglet>
<onglet id='statistiques_repartition' parent='statistiques'>
<icone>null</icone>

2
prive/squelettes/contenu/stats_visites.html

@ -1,4 +1,2 @@
#BOITE_OUVRIR{#CHEMIN_IMAGE{statistique-24.png}|balise_img{'',cadre-icone},'simple stats'}
<INCLURE{fond=prive/squelettes/inclure/stats-visites-data,ajax,env} />
#BOITE_FERMER
<INCLURE{fond=prive/stats/visites} />

110
prive/squelettes/inclure/stats-visites-data.html

@ -1,10 +1,64 @@
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{statistique-24.png}|balise_img{'',cadre-icone})]<h1><:titre_evolution_visite:></h1>,'simple stats'})]
<BOUCLE_expose(ARTICLES){id_article}>
#BOITE_OUVRIR{'','note'}
<a class='annule_filtre ajax' href="[(#SELF|parametre_url{id_article,''})]" title="<:tout_voir|attribut_html:>">[(#CHEMIN_IMAGE{fermer-16.png}|balise_img|inserer_attribut{alt,<:tout_voir:>})]</a>
<:titre_page_statistiques_visites:> <:info_pour:>
<h2 class='objet_titre'><a href='#URL_ARTICLE'>#TITRE</a></h2>
#BOITE_FERMER
</BOUCLE_expose>
<p class="pagination">
<span class="dl">
#SET{args,#ARRAY{id_article,#ID_ARTICLE,duree,#DUREE}}
<a href="[(#URL_PAGE{transmettre,[(#VAL{statistiques}|param_low_sec{#GET{args}, '', 'transmettre'})]})]" class="noajax">CSV</a>
</span>
[<span class="duree">(#ENV{duree,90}) <:info_jours:></span>]
<a href="[(#SELF|parametre_url{duree,#ENV{duree,90}|duree_zoom{moins}})]"
class="ajax">[(#CHEMIN_IMAGE{loupe-moins.gif}|balise_img{<:info_zoom:> -})]</a>
<a href="[(#SELF|parametre_url{duree,#ENV{duree,90}|duree_zoom{plus}})]"
class="ajax">[(#CHEMIN_IMAGE{loupe-plus.gif}|balise_img{<:info_zoom:> +})]</a>
</p>
#SET{max,0}
#SET{moy,0}
#SET{last,0}
#SET{lastlast,0}
<B_statsj>
<table class='spip info visites'>
<thead>
<tr class='row_first'>
<th><:info_maximum|trim{':'}|trim|ucfirst:></th>
<th><:info_moyenne|trim{':'}|trim|ucfirst:></th>
<th><a href="#URL_ECRIRE{statistiques_referers}"
title="<:info_moyenne|trim{':'}|trim|attribut_html:>"><:info_aujourdhui|trim{':'}|trim|ucfirst:></a></th>
<th><a href="#URL_ECRIRE{statistiques_referers,jour=veille}"
title="<:info_moyenne|trim{':'}|trim|attribut_html:>"><:info_hier|trim{':'}|trim|ucfirst:></a></th>
[(#ID_ARTICLE|oui)<th><:info_popularite_5|trim{':'}|trim|ucfirst:></th>]
<th><:info_total|trim{':'}|trim|ucfirst:></th>
[(#ID_ARTICLE|oui)<th></th>]
[(#ID_ARTICLE|non)<th><:info_popularite_2|trim{':'}|trim|ucfirst:></th>]
</thead>
<tbody>
<tr>
<td class='num'>#GET{max}</td>
<td class='num'>[(#GET{moy}|round)]</td>
<td class='num'>#GET{last}</td>
<td class='num'>#GET{lastlast}</td>
<BOUCLE_art(ARTICLES){id_article}{statut?}>
<td class='num'>[(#CHAMP_SQL{popularite}|round)]</td>
<td class='num'>[(#VISITES|round)]</td>
<td class='num'></td>
</BOUCLE_art>
<td class='num'>[(#REM|stats_total)]</td>
<td class='num'>[(#CONFIG{popularite_total}|round)]</td>
<//B_art>
</tr>
</tbody>
</table>
<table class='visites' id='visites_quotidiennes'>
<caption><:visites_journalieres:></caption>
<thead>
@ -21,9 +75,15 @@
<td class="val">#VALEUR{visites}[<em>(<span>(#VALEUR{prevision})</span>)</em>]</td>
<td class="mean">#VALEUR{moyenne}</td>
</tr>
#SET{max,#GET{max}|max{#VALEUR{visites}}}
#SET{moy,#VALEUR{moyenne}}
#SET{lastlast,#GET{last}}
#SET{last,#VALEUR{visites}}
</BOUCLE_statsj>
</tbody>
</table>
</B_statsj>
<B_statsm>
@ -46,4 +106,52 @@
</BOUCLE_statsm>
</tbody>
</table>
</B_statsm>
</B_statsm>
#BOITE_FERMER
#BOITE_OUVRIR{'','note'}
<div class="stats-articles">
<div class="unit size1of2">
<p><:info_visites_plus_populaires:></p>
#SET{c,#VAL{article}|classement_populaires}
<B_pluspop>
<ol class='classement'>
<BOUCLE_pluspop(ARTICLES){id_article IN #GET{c}}{0,30}{doublons}>
<li[ class="(#EXPOSE)"]><a href="[(#SELF|parametre_url{id_article,#ID_ARTICLE})]" class="ajax"
title="<:info_popularite_3{visites=#VISITES,popularite=#POPULARITE}|attribut_html:>">#TITRE</a></li>
</BOUCLE_pluspop>
</ol>
<B_derniers>
<p class="center">[...]</p>
<ol class='classement'>
<BOUCLE_derniers(ARTICLES){popularite>0}{!par date}{0,10}{doublons}>
<li value="[(#ID_ARTICLE|array_search{#GET{c}}|plus{1})]"[ class="(#EXPOSE)"]><a href="[(#SELF|parametre_url{id_article,#ID_ARTICLE})]" class="ajax"
title="<:info_popularite_3{visites=#VISITES,popularite=#POPULARITE}|attribut_html:>">#TITRE</a></li>
</BOUCLE_derniers>
</ol>
</B_derniers>
</B_pluspop>
<h4><a href='#' onclick="$(this).parent().next().toggle('fast');return false;"><:info_comment_lire_tableau:></a></h4>
<p class="none"><:texte_comment_lire_tableau:></p>
</div>
<div class="unit lastUnit">
<p><:info_affichier_visites_articles_plus_visites:></p>
#SET{c,#VAL{article}|classement_populaires}
<B_plusvisites>
<ol class='classement'>
<BOUCLE_plusvisites(ARTICLES){popularite>0}{!par visites}{0,30}{doublons}>
<li value="[(#ID_ARTICLE|array_search{#GET{c}}|plus{1})]"[ class="(#EXPOSE)"]><a href="[(#SELF|parametre_url{id_article,#ID_ARTICLE})]" class="ajax"
title="<:info_popularite_3{visites=#VISITES,popularite=#POPULARITE}|attribut_html:>">#TITRE</a></li>
</BOUCLE_plusvisites>
</ol>
</B_plusvisites>
</div>
</div>
#BOITE_FERMER

7
prive/squelettes/inclure/stats-visites-data_fonctions.php

@ -1,5 +1,7 @@
<?php
include_spip('inc/acces');
include_spip('inc/statistiques');
function duree_zoom($duree,$sens='plus'){
$largeur_abs = 420/$duree;
@ -20,4 +22,9 @@ function duree_zoom($duree,$sens='plus'){
$duree_moins = round(420 * ((1/$largeur_abs) - 1));
}
return ($sens=='plus'?$duree_moins:$duree_plus);
}
function stats_total($serveur=''){
$row = sql_fetsel("SUM(visites) AS total_absolu", "spip_visites",'','','','','',$serveur);
return $row ? $row['total_absolu'] : 0;
}

2
prive/squelettes/top/stats_visites.html

@ -0,0 +1,2 @@
<?php $GLOBALS['pleine_largeur']=true; ?>
[(#VAL{statistiques}|barre_onglets{stats_visites})]

4
prive/stats/visites.html

@ -21,8 +21,8 @@ function trace_stats(){
params = {
legendeExterne:true,
legendeActions:true,
width:'480px',
height:'200px',
width:($('.large #page').length)?'945px':'750px',
height:'250px',
modeDate:true,
zoom:true,
parse:{

10
prive/transmettre/statistiques.html

@ -0,0 +1,10 @@
<BOUCLE0(AUTEURS){tout}{id_auteur=#ENV{id}}{lang_select}><?php
if ([(#ID_AUTEUR|securiser_acces{#ENV{cle},transmettre,#ENV{op}, #ENV{args}}|?{1,0})]) {
?><B_statsj><:date|trim{':'}|trim:>,<:info_visites|trim{':'}|trim:>
<BOUCLE_statsj(DATA){source stats,jour,#ENV{duree,90},#ENV{id_article}}>[(#CLE|affdate{'Y-m-d'})],[(#VALEUR{visites})]
</BOUCLE_statsj>
<?php
} else {
include_spip('inc/minipres');
echo minipres();
}?></BOUCLE0>
Loading…
Cancel
Save