Browse Source
Le calcul des données de visites, et son moyen de les récupérer en CSV est modifié.
Le calcul des données de visites, et son moyen de les récupérer en CSV est modifié.
## Sur le calcul : On génère un tableau en deux parties : - une entrée "meta" contient des informations sur les caractéristiques des données calculées / envoyées. Notamment, on retourne l'objet, l'id_objet, la durée et l'unité de la durée qui était désiré. On transmet également des informations calculées en conséquence, tel que la date de début et fin des données désirées (start_date, end_date), et la date de la première donnée dans cette plage (first_date). Enfin une clé 'columns' indique les colonnes et labels des colonnes associés retournées. - une entrée "data" contient un tableau des données retournées ; (notamment la date et le nombre de visite associées). Le tableau de données ne retourne plus les dates manquantes : s'il n'y a pas de visite pour une des journées, cette date sera vide. Cela simplifie grandement les calculs ici (mais cela les reporte(ra) côté javascript) ## Sur l'obtention des données : - On ne passe plus par le système "transmettre", mais par des squelettes à la racine (statistiques.csv.html et statistiques.json.html) qui vérifient soit une autorisation, soit une authentification faible (ce qu'il y avait avant justement). Cette authentification faible peut servir à des crons (je suppose) pour collecter régulièrement les données. Le fichier CSV retourne le même contenu qu'avant (au dates manquantes près), mais le fichier JSON quant à lui retourne l'ensemble du tableau calculé (meta et data donc).pull/4/head
5 changed files with 145 additions and 95 deletions
-
182inc/stats_visites_to_array.php
-
10prive/transmettre/statistiques.html
-
22statistiques.csv.html
-
19statistiques.json.html
-
7statistiques.json_fonctions.php
@ -1,10 +0,0 @@ |
|||
<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:>,<:statistiques:info_visites|trim{':'}|trim:> |
|||
<BOUCLE_statsj(DATA){source stats_visites,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> |
@ -0,0 +1,22 @@ |
|||
<?php |
|||
include_spip('inc/autoriser'); |
|||
if ( |
|||
autoriser('voirstats') |
|||
or ( |
|||
$id_auteur = intval(#ENV{id,0}) |
|||
and autoriser('ecrire', '', '', $id_auteur) |
|||
and [(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})] |
|||
) |
|||
) { |
|||
?> |
|||
#CACHE{0} |
|||
#HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET} |
|||
#HTTP_HEADER{Content-Disposition: attachment; filename=statistiques_#ENV{objet}_#ENV{id_objet}_#ENV{duree,90}.csv} |
|||
<B_statsj><:date|trim{':'}|trim:>,<:statistiques:info_visites|trim{':'}|trim:> |
|||
<BOUCLE_statsj(DATA){source stats_visites,jour,#ENV{duree},#ENV{objet},#ENV{id_objet}}{datapath data}>[(#VALEUR{date}|affdate{'Y-m-d'})],[(#VALEUR{visites})] |
|||
</BOUCLE_statsj> |
|||
<?php |
|||
} else { |
|||
include_spip('inc/minipres'); |
|||
echo minipres(); |
|||
}?> |
@ -0,0 +1,19 @@ |
|||
<?php |
|||
include_spip('inc/autoriser'); |
|||
if ( |
|||
autoriser('voirstats') |
|||
or ( |
|||
$id_auteur = intval(#ENV{id,0}) |
|||
and autoriser('ecrire', '', '', $id_auteur) |
|||
and [(#ENV{id,0}|securiser_acces{#ENV{cle}, voirstats, #ENV{op}, #ENV{args}}|?{1,0})] |
|||
) |
|||
) { |
|||
?> |
|||
#CACHE{0} |
|||
#HTTP_HEADER{Content-Type: text/javascript; charset=#CHARSET} |
|||
[(#ENV{unite,jour}|transmettre_statistiques_json{#ENV{duree},#ENV{objet},#ENV{id_objet}})] |
|||
<?php |
|||
} else { |
|||
include_spip('inc/minipres'); |
|||
echo minipres(); |
|||
}?> |
@ -0,0 +1,7 @@ |
|||
<?php |
|||
|
|||
function transmettre_statistiques_json(string $unite, ?int $duree = null, ?string $objet = null, ?int $id_objet = null) { |
|||
$visites = charger_fonction('stats_visites_to_array', 'inc'); |
|||
$stats = $visites($unite, $duree, $objet, $id_objet); |
|||
return json_encode($stats, JSON_PRETTY_PRINT); |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue