## 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).
différents fix avec php-cs-fixers. Fixers appliqués ici :
'encoding', // utf8
'eof_ending', // un saut de ligne en fin de fichier
'elseif', // elseif plutôt que else if
'function_call_space', // espaces sur fonctions
'function_declaration', // espaces sur fonctions
'function_typehint_space', // espaces sur fonctions
'linefeed', // sauts de ligne \n uniquement
'lowercase_constants', // true, false, null en munuscule
'lowercase_keywords', // mots clés PHP en lowercase
'method_argument_space', // espaces sur appels de fonctions
'multiple_use', // use unique sur fonctions anonymes
'newline_after_open_tag', // ouverture de php… et c'est tout sur cette ligne
'operators_spaces', // espaces de part et d'autres des opérateurs binaires
'parenthesis', // pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', // pas de fermeture de php
'short_tag', // tag PHP corrects
'trailing_spaces', // pas d'espace qui traîne en fin de ligne
'visibility', // déclarer 'public / private / protected' sur les méthodes
- qu'une query-string avec ...&path[]=123 ne transforme la variable $path en array ce qui fait exploser le preg_match() 4 lignes plus loin
- qu'une query-string avec ...&host=www.mon-site-de-phishing.com se retrouve en lien direct dans les referers
... et toute autre possibilité de remplacement des variables definies auparavant dans cette fonction
il s'avere que l'affichage des referers est completement delirant dans la version stable, en masquant une partie aleatoire.
on retrouve ici ses referers, qui ont toujours ete en base :)
on utilise une boucle (DATA){source stats,jour|mois,duree,id_article}
pour recuperer le tableau de donnees qu'on met en forme dans le squelette
la page offre deja le zom on/off en ajax
Au passage :
- les moyennes n'ont pas besoin d'être précises à 2 chiffres après la virgule : arrondi
- le mois en cours n'était pas pris en compte dans le graphe mensuel : corrigé
Il y a dans le graph mensuel une différence fondamentale par rapport aux stats de SPIP 2.1 : la période prise en compte est exactement la même que celle des stats journalières alors qu'avant, c'était depuis l'installation du site qu'elles étaient prisent en compte. C'est voulu ?