Browse Source

on solde la squeletisation de l'extension statistique en rafraichissant legerement la repartition par langue. le squelette est propre mais il reste le pseudo graphique en table+image a refaire (avis au volontaire)

svn/root/tags/plugins/statistiques/0.3.2
cedric@yterium.com 12 years ago
parent
commit
4f1df37844
  1. 5
      .gitattributes
  2. 123
      exec/statistiques_lang.php
  3. 129
      inc/stats_repartition.php
  4. 6
      plugin.xml
  5. 15
      prive/squelettes/contenu/stats_lang.html
  6. 81
      prive/squelettes/contenu/stats_lang_fonctions.php
  7. 128
      prive/squelettes/contenu/stats_repartition_fonctions.php
  8. 2
      prive/squelettes/top/stats_lang.html
  9. 4
      prive/style_prive_plugin_stats.html

5
.gitattributes vendored

@ -4,7 +4,6 @@ base/stats.php -text
base/stats_upgrade.php -text
/engines-list.txt -text
exec/base_delete_stats.php -text
exec/statistiques_lang.php -text
formulaires/configurer_compteur.html -text
formulaires/configurer_compteur.php -text
genie/popularites.php -text
@ -12,13 +11,14 @@ genie/visites.php -text
inc/referenceurs.php -text
inc/statistiques.php -text
inc/stats_referers_to_array.php -text
inc/stats_repartition.php -text
inc/stats_visites_to_array.php -text
javascript/excanvas.js -text
javascript/jquery.flot.js -text
javascript/jquery.tflot.js -text
/plugin.xml -text
prive/bouton/statistiques.html -text
prive/squelettes/contenu/stats_lang.html -text
prive/squelettes/contenu/stats_lang_fonctions.php -text
prive/squelettes/contenu/stats_referers.html -text
prive/squelettes/contenu/stats_referers_fonctions.php -text
prive/squelettes/contenu/stats_repartition.html -text
@ -27,6 +27,7 @@ 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_lang.html -text
prive/squelettes/top/stats_referers.html -text
prive/squelettes/top/stats_repartition.html -text
prive/squelettes/top/stats_visites.html -text

123
exec/statistiques_lang.php

@ -1,123 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
// http://doc.spip.org/@exec_statistiques_lang_dist
function exec_statistiques_lang_dist()
{
if (!autoriser('voirstats')) {
include_spip('inc/minipres');
echo minipres();
} else statistiques_lang_ok();
}
// http://doc.spip.org/@statistiques_lang_ok
function statistiques_lang_ok()
{
global $spip_ecran, $spip_lang_right;
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('onglet_repartition_lang'), "statistiques_visites", "repartition-langues");
if ($spip_ecran == "large") {
$largeur_table = 974;
} else {
$largeur_table = 750;
}
$taille = $largeur_table - 200;
echo "<table class='centered' width='$largeur_table'><tr><td style='width: $largeur_table" . "px; text-align:center;' class='verdana2'>";
echo gros_titre(_T('onglet_repartition_lang'),'', false);
echo barre_onglets("statistiques", "statistiques_lang");
if ($critere == "debut") {
$critere = "visites";
echo "<a href='".generer_url_ecrire('statistiques_lang')."'>"._T('icone_repartition_actuelle').'</a>';
echo " | <strong>"._T('onglet_repartition_debut').'</strong>';
}
else {
$critere = "popularite";
echo "<strong>"._T('icone_repartition_actuelle').'</strong>';
echo " | <a href='".generer_url_ecrire('statistiques_lang','critere=debut')."'>"._T('onglet_repartition_debut').'</a>';
}
//
// Statistiques par langue
//
echo debut_cadre_enfonce("langue-24.png", true);
$r = sql_fetsel("SUM($critere) AS total_visites", "spip_articles");
$visites = 1;
if ($r)
$total_visites = $r['total_visites'];
else
$total_visites = 1;
$result = sql_select("lang, SUM(".$critere.") AS cnt", "spip_articles", "statut='publie' ", "lang");
echo "\n<table cellpadding='2' cellspacing='0' border='0' width='100%' style='border: 1px solid #aaaaaa;'>";
$ifond = 1;
$visites_abs = 0;
while ($row = sql_fetch($result)) {
$lang = $row['lang'];
if ($row['cnt']) {
$visites = round($row['cnt'] / $total_visites * $taille);
$pourcent = round($row['cnt'] / $total_visites * 100);
}
if ($visites > 0) {
if ($ifond==0){
$ifond=1;
$couleur="white";
}else{
$ifond=0;
$couleur="eeeeee";
}
echo "\n<tr style='background-color: $couleur'>";
$dir=lang_dir($lang,'',' dir="rtl"');
echo "<td style='width: 100%; border-bottom: 1px solid #cccccc;'><span class='verdana2'$dir><span style='float: $spip_lang_right;'>$pourcent%</span>".traduire_nom_langue($lang)."</span></td>";
echo "<td style='border-bottom: 1px solid #cccccc;'>";
echo "\n<table cellpadding='0' cellspacing='0' border='0' width='".($taille+5)."'>";
echo "\n<tr><td style='align:$spip_lang_right; background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
if ($visites_abs > 0) echo "<img src='" . chemin_image('rien.gif') . "' width='$visites_abs' height='8' alt=' ' />";
if ($visites>0) echo "<img src='" . chemin_image('rien.gif') . "' class='couleur_langue' style='border: 0px;' width='$visites' height='8' alt=' ' />";
echo "</td></tr></table>\n";
echo "</td>";
echo "</tr>";
$visites_abs += $visites;
}
}
echo "</table>\n";
//echo "<p><span class='verdana1 spip_medium'>"._T('texte_signification')."</span>";
echo fin_cadre_enfonce(true);
echo "</td></tr></table>";
echo fin_page();
}
?>

129
inc/stats_repartition.php

@ -1,129 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
// http://doc.spip.org/@enfants
function enfants($id_parent, $critere, &$nombre_vis, &$nombre_abs){
$result = sql_select("id_rubrique", "spip_rubriques", "id_parent=".intval($id_parent));
$nombre = 0;
while($row = sql_fetch($result)) {
$id_rubrique = $row['id_rubrique'];
$visites = intval(sql_getfetsel("SUM(".$critere.")", "spip_articles", "id_rubrique=".intval($id_rubrique)));
$nombre_abs[$id_rubrique] = $visites;
$nombre_vis[$id_rubrique] = $visites;
$nombre += $visites + enfants($id_rubrique, $critere, $nombre_vis, $nombre_abs);
}
if (!isset($nombre_vis[$id_parent])) $nombre_vis[$id_parent]=0;
$nombre_vis[$id_parent] += $nombre;
return $nombre;
}
// http://doc.spip.org/@enfants_aff
function enfants_aff($id_parent,$decalage, $taille, $critere, $gauche=0) {
global $spip_lang_right, $spip_lang_left;
static $abs_total=null;
static $niveau=0;
static $nombre_vis;
static $nombre_abs;
if (is_null($abs_total)){
$nombre_vis = array();
$nombre_abs = array();
$abs_total = enfants(0, $critere, $nombre_vis, $nombre_abs);
if ($abs_total<1) $abs_total=1;
$nombre_vis[0] = 0;
}
$visites_abs = 0;
$out = "";
$result = sql_select("id_rubrique, titre, descriptif", "spip_rubriques", "id_parent=$id_parent",'', '0+titre,titre');
while($row = sql_fetch($result)){
$id_rubrique = $row['id_rubrique'];
$titre = typo($row['titre']);
$descriptif = attribut_html(couper(typo($row['descriptif']),80));
if ($nombre_vis[$id_rubrique]>0 OR $nombre_abs[$id_rubrique]>0){
$largeur_rouge = floor(($nombre_vis[$id_rubrique] - $nombre_abs[$id_rubrique]) * $taille / $abs_total);
$largeur_vert = floor($nombre_abs[$id_rubrique] * $taille / $abs_total);
if ($largeur_rouge+$largeur_vert>0){
if ($niveau == 0) {
$couleur="#cccccc";
}
else if ($niveau == 1) {
$couleur="#eeeeee";
}
else {
$couleur="white";
}
$out .= "<table cellpadding='2' cellspacing='0' border='0' width='100%'>";
$out .= "\n<tr style='background-color: $couleur'>";
$out .= "\n<td style='border-bottom: 1px solid #aaaaaa; padding-$spip_lang_left: ".($niveau*20+5)."px;'>";
if ( $largeur_rouge > 2)
$out .= bouton_block_depliable("<a href='" . generer_url_entite($id_rubrique,'rubrique') . "' style='color: black;' title=\"$descriptif\">$titre</a>","incertain", "stats$id_rubrique");
else
$out .= "<div class='verdana1' style='padding-left: 18px; padding-top: 4px; padding-bottom: 3px;'>"
. "<a href='" . generer_url_entite($id_rubrique,'rubrique') . "' style='color: black;' title=\"$descriptif\">$titre</a>"
. "</div>";
$out .= "</td>";
if ($niveau==0 OR 1==1){
$pourcent = round($nombre_vis[$id_rubrique]/$abs_total*1000)/10;
$out .= "\n<td class='verdana1' style='text-align: $spip_lang_right; width: 40px; border-bottom: 1px solid #aaaaaa;'>$pourcent%</td>";
}
else {
$out .= "<td style='width: 10px; border-bottom: 1px solid #aaaaaa;'></td>";
}
$out .= "\n<td align='right' style='border-bottom: 1px solid #aaaaaa; width:" . ($taille+5) ."px'>";
$out .= "\n<table cellpadding='0' cellspacing='0' border='0' width='".($decalage+1+$gauche)."'>";
$out .= "\n<tr>";
if ($gauche > 0) $out .= "<td style='width: " .$gauche."px'></td>";
$out .= "\n<td style='border: 0px; white-space: nowrap;'>";
$out .= "<div style='border: 1px solid #999999; background-color: #dddddd; height: 12px; padding: 0px; margin: 0px;'>";
if ($visites_abs > 0) $out .= "<img src='" . chemin_image('rien.gif') . "' style='vertical-align: top; height: 12px; border: 0px; width: ".$visites_abs."px;' alt= ' '/>";
if ($largeur_rouge>0) $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_cumul' style='vertical-align: top; height: 12px; border: 0px; width: " . $largeur_rouge . "px;' alt=' ' />";
if ($largeur_vert>0) $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_nombre' style='vertical-align: top; width: " . $largeur_vert ."px; height: 12px; border: 0px' alt=' ' />";
$out .= "</div>";
$out .= "</td></tr></table>\n";
$out .= "</td></tr></table>";
}
}
if (isset($largeur_rouge) && ($largeur_rouge > 0)) {
$niveau++;
$out .= debut_block_depliable(false,"stats$id_rubrique");
$out .= enfants_aff($id_rubrique,$largeur_rouge, $taille, $critere, $visites_abs+$gauche);
$out .= fin_block();
$niveau--;
}
$visites_abs = $visites_abs + round($nombre_vis[$id_rubrique]/$abs_total*$taille);
}
return $out;
}
?>

6
plugin.xml

@ -66,15 +66,15 @@
<titre>titre_liens_entrants</titre>
<url>stats_referers</url>
</onglet>
<onglet id='statistiques_repartition' parent='statistiques'>
<onglet id='stats_repartition' parent='statistiques'>
<icone>images/chartpie-24.png</icone>
<titre>icone_repartition_visites</titre>
<url>stats_repartition</url>
</onglet>
<onglet id='statistiques_lang' parent='statistiques'>
<onglet id='stats_lang' parent='statistiques'>
<icone>images/langue-24.png</icone>
<titre>onglet_repartition_lang</titre>
<url>statistiques_lang</url>
<url>stats_lang</url>
</onglet>
</plugin>

15
prive/squelettes/contenu/stats_lang.html

@ -0,0 +1,15 @@
[(#AUTORISER{voirstats}|sinon_interdire_acces)]
<h1><:onglet_repartition_lang:></h1>
<div class="onglets_simple clearfix">
<ul>
<li>[(#URL_ECRIRE{stats_lang}|lien_ou_expose{<:icone_repartition_actuelle:>,[(#ENV{critere,''}|=={debut}|non)],ajax})]</li>
<li>[(#URL_ECRIRE{stats_lang,critere=debut}|lien_ou_expose{<:onglet_repartition_debut:>,[(#ENV{critere,''}|=={debut}|oui)],ajax})]</li>
</ul>
</div>
[(#BOITE_OUVRIR{#CHEMIN_IMAGE{langue-24.png}|balise_img{'',cadre-icone}})]
[(#ENV{critere}|=={debut}|?{visites,popularite}|affiche_stats_lang)]
#BOITE_FERMER

81
prive/squelettes/contenu/stats_lang_fonctions.php

@ -0,0 +1,81 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
// http://doc.spip.org/@statistiques_lang_ok
function affiche_stats_lang($critere) {
global $spip_ecran, $spip_lang_right;
$taille = 450;
//
// Statistiques par langue
//
$out = "";
$r = sql_fetsel("SUM($critere) AS total_visites", "spip_articles");
$visites = 1;
if ($r)
$total_visites = $r['total_visites'];
else
$total_visites = 1;
$result = sql_select("lang, SUM(".$critere.") AS cnt", "spip_articles", "statut='publie' ", "lang");
$out .= "\n<table cellpadding='2' cellspacing='0' border='0' width='100%' style='border: 1px solid #aaaaaa;'>";
$ifond = 1;
$visites_abs = 0;
while ($row = sql_fetch($result)) {
$lang = $row['lang'];
if ($row['cnt']) {
$visites = round($row['cnt'] / $total_visites * $taille);
$pourcent = round($row['cnt'] / $total_visites * 100);
}
if ($visites > 0) {
if ($ifond==0){
$ifond=1;
$couleur="white";
}
else{
$ifond=0;
$couleur="eeeeee";
}
$out .= "\n<tr style='background-color: $couleur'>";
$dir=lang_dir($lang,'',' dir="rtl"');
$out .= "<td style='width: 100%; border-bottom: 1px solid #cccccc;'><p $dir><span style='float: $spip_lang_right;'>$pourcent%</span>".traduire_nom_langue($lang)."</p></td>";
$out .= "<td style='border-bottom: 1px solid #cccccc;'>";
$out .= "\n<table cellpadding='0' cellspacing='0' border='0' width='".($taille+5)."'>";
$out .= "\n<tr><td style='align:$spip_lang_right; background-color: #eeeeee; border: 1px solid #999999; white-space: nowrap;'>";
if ($visites_abs > 0)
$out .= "<img src='" . chemin_image('rien.gif') . "' width='$visites_abs' height='10' alt=' ' />";
if ($visites>0)
$out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_langue' style='border: 0px;' width='$visites' height='8' alt=' ' />";
$out .= "</td></tr></table>\n";
$out .= "</td>";
$out .= "</tr>";
$visites_abs += $visites;
}
}
$out .= "</table>\n";
return $out;
}
?>

128
prive/squelettes/contenu/stats_repartition_fonctions.php

@ -1,3 +1,129 @@
<?php
include_spip('inc/stats_repartition');
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2011 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
// http://doc.spip.org/@enfants
function enfants($id_parent, $critere, &$nombre_vis, &$nombre_abs){
$result = sql_select("id_rubrique", "spip_rubriques", "id_parent=".intval($id_parent));
$nombre = 0;
while($row = sql_fetch($result)) {
$id_rubrique = $row['id_rubrique'];
$visites = intval(sql_getfetsel("SUM(".$critere.")", "spip_articles", "id_rubrique=".intval($id_rubrique)));
$nombre_abs[$id_rubrique] = $visites;
$nombre_vis[$id_rubrique] = $visites;
$nombre += $visites + enfants($id_rubrique, $critere, $nombre_vis, $nombre_abs);
}
if (!isset($nombre_vis[$id_parent])) $nombre_vis[$id_parent]=0;
$nombre_vis[$id_parent] += $nombre;
return $nombre;
}
// http://doc.spip.org/@enfants_aff
function enfants_aff($id_parent,$decalage, $taille, $critere, $gauche=0) {
global $spip_lang_right, $spip_lang_left;
static $abs_total=null;
static $niveau=0;
static $nombre_vis;
static $nombre_abs;
if (is_null($abs_total)){
$nombre_vis = array();
$nombre_abs = array();
$abs_total = enfants(0, $critere, $nombre_vis, $nombre_abs);
if ($abs_total<1) $abs_total=1;
$nombre_vis[0] = 0;
}
$visites_abs = 0;
$out = "";
$result = sql_select("id_rubrique, titre, descriptif", "spip_rubriques", "id_parent=$id_parent",'', '0+titre,titre');
while($row = sql_fetch($result)){
$id_rubrique = $row['id_rubrique'];
$titre = typo($row['titre']);
$descriptif = attribut_html(couper(typo($row['descriptif']),80));
if ($nombre_vis[$id_rubrique]>0 OR $nombre_abs[$id_rubrique]>0){
$largeur_rouge = floor(($nombre_vis[$id_rubrique] - $nombre_abs[$id_rubrique]) * $taille / $abs_total);
$largeur_vert = floor($nombre_abs[$id_rubrique] * $taille / $abs_total);
if ($largeur_rouge+$largeur_vert>0){
if ($niveau == 0) {
$couleur="#cccccc";
}
else if ($niveau == 1) {
$couleur="#eeeeee";
}
else {
$couleur="white";
}
$out .= "<table cellpadding='2' cellspacing='0' border='0' width='100%'>";
$out .= "\n<tr style='background-color: $couleur'>";
$out .= "\n<td style='border-bottom: 1px solid #aaaaaa; padding-$spip_lang_left: ".($niveau*20+5)."px;'>";
if ( $largeur_rouge > 2)
$out .= bouton_block_depliable("<a href='" . generer_url_entite($id_rubrique,'rubrique') . "' style='color: black;' title=\"$descriptif\">$titre</a>","incertain", "stats$id_rubrique");
else
$out .= "<div class='verdana1' style='padding-left: 18px; padding-top: 4px; padding-bottom: 3px;'>"
. "<a href='" . generer_url_entite($id_rubrique,'rubrique') . "' style='color: black;' title=\"$descriptif\">$titre</a>"
. "</div>";
$out .= "</td>";
if ($niveau==0 OR 1==1){
$pourcent = round($nombre_vis[$id_rubrique]/$abs_total*1000)/10;
$out .= "\n<td class='verdana1' style='text-align: $spip_lang_right; width: 40px; border-bottom: 1px solid #aaaaaa;'>$pourcent%</td>";
}
else {
$out .= "<td style='width: 10px; border-bottom: 1px solid #aaaaaa;'></td>";
}
$out .= "\n<td align='right' style='border-bottom: 1px solid #aaaaaa; width:" . ($taille+5) ."px'>";
$out .= "\n<table cellpadding='0' cellspacing='0' border='0' width='".($decalage+1+$gauche)."'>";
$out .= "\n<tr>";
if ($gauche > 0) $out .= "<td style='width: " .$gauche."px'></td>";
$out .= "\n<td style='border: 0px; white-space: nowrap;'>";
$out .= "<div style='border: 1px solid #999999; background-color: #dddddd; height: 12px; padding: 0px; margin: 0px;'>";
if ($visites_abs > 0) $out .= "<img src='" . chemin_image('rien.gif') . "' style='vertical-align: top; height: 12px; border: 0px; width: ".$visites_abs."px;' alt= ' '/>";
if ($largeur_rouge>0) $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_cumul' style='vertical-align: top; height: 12px; border: 0px; width: " . $largeur_rouge . "px;' alt=' ' />";
if ($largeur_vert>0) $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_nombre' style='vertical-align: top; width: " . $largeur_vert ."px; height: 12px; border: 0px' alt=' ' />";
$out .= "</div>";
$out .= "</td></tr></table>\n";
$out .= "</td></tr></table>";
}
}
if (isset($largeur_rouge) && ($largeur_rouge > 0)) {
$niveau++;
$out .= debut_block_depliable(false,"stats$id_rubrique");
$out .= enfants_aff($id_rubrique,$largeur_rouge, $taille, $critere, $visites_abs+$gauche);
$out .= fin_block();
$niveau--;
}
$visites_abs = $visites_abs + round($nombre_vis[$id_rubrique]/$abs_total*$taille);
}
return $out;
}
?>

2
prive/squelettes/top/stats_lang.html

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

4
prive/style_prive_plugin_stats.html

@ -96,7 +96,7 @@ table#visites tr.c_recap th {background-color:#[(#GET{foncee}|couleur_foncer)];c
.stats_repartition .couleur_cumul { background: #GET{foncee}; }
.stats_repartition .couleur_nombre { background: #GET{claire}; }
.stats_repartition .couleur_langue { background: #GET{foncee}; }
.stats_lang .couleur_langue { background: #GET{foncee}; }
.stats_lang table p {padding-left:10px;margin:2px 0;}
[(#REM) </style>]

Loading…
Cancel
Save