Matomo/Fonctionnement
Cette partie plus technique a pour but de fournir une présentation du fonctionnement de l'application Piwik. Cette partie sera utile aux curieux et aux personnes désireuses de modifier Piwik selon leur besoin, pour par exemple ajouter de nouvelles fonctionnalités. Il est conseillé de contacter l'auteur avant d'essayer de programmer quelconque nouveauté, afin de discuter avec l'équipe de développement (qui a une très bonne connaissance de l'ensemble de l'application) de la meilleure solution technique à utiliser.
Arborescence et fichiers.
Vous trouverez ci-dessous une rapide description des fichiers et répertoires de Piwik. Cela permettra aux personnes désirant personnaliser Piwik d’avoir une vision globale de l’architecture de l’application.
Architecture des tables de la base de données.
Lors de l’installation ou de l’ajout d’un nouveau site, 6 tables sont créées dans la base Mysql configurée 
Table phpmv.
Dans cette table sont stockées toutes les informations sur le visiteur (voir tableau ci-dessus pour détails) qui seront ensuite retraitées lors de l’archivage. Chaque nouvelle visite est accompagnée d’un nouvel enregistrement dans cette table. Si le visiteur est connu, on update ’ttime’, ’pv_fin’ et ’nb_pv’.
Chaque champ est optimisé au maximum; les enregistrements et sélections dans cette table doivent être le plus rapide possible, car plusieurs requêtes sont effectuées pour chaque page vue (par le fichier Piwik.php).
Table phpmv_pv.
Lorsqu’une page est visitée pour la première fois pour un jour donné, un nouvel enregistrement a lieu dans la table phpmv pv. Si la page a déjà été visitée pour la date donnée, on update nb.
Table phpmv_suivi.
À chaque page vue, si le suivi page1 - page2 est enregistré dans la table pour la date donnée, on update nb. Si le suivi n’a pas encore été fait par un visiteur, on l’insère dans la table avec nb valant 1.
Tables archives (phpmv_a*).
La table des archives des mois et semaines présentent un champ supplémentaire : ’date_fin’ qui indique la date de fin de la période archivée ; cela permet de savoir s'il est utile de recalculer les archivages pour les périodes temporaires.
Dans les tables d’archivage sont stockées toutes les statistiques pré-calculées. Chaque champ est ensuite sélectionné puis affiché dans les pages de consultation des statistiques. Les champs de type ’text’, ’mediumtext’ et ’longtext’ sont des tableaux php sérialisés. Les autres champs sont des valeurs numériques.
En version 1.1, les champs ’pv debut’, ’pv fin’, ’hit pv’ et ’suivi’ sont passés au type LONGTEXT. La mise à jour est automatique lors de l’installation.
Valide XHTML 1.1 CSS.
L’évolution du HTML vers le XHTML est la conséquence de nouvelles attentes, les aspects d'accessibilité, la multiplication des supports de lecture et les habitudes de programmation de plus en plus basées sur des pages construites dynamiquement. Le HTML pose de problèmes pour ces pratiques, car la structure est très rigide, le contenu et la mise en forme étant mélangés. Avec le XHTML, les données sont séparées de la mise en forme qui sera assurée en fonction du support par des feuilles de style CSS. Le XHTML est basé sur le XML qui est un langage de description des données, toutes les balises de présentation du HTML sont donc devenus obsolètes. Un autre gros avantage du formatage des données est d’avoir des pages beaucoup plus légères et un traitement amélioré par les navigateurs et au final une navigation plus confortable pour les internautes et une maintenance facilitée pour les programmeurs.
Pour Piwik l’avantage est de pouvoir personnaliser facilement la présentation en ne modifiant que les feuille de styles. Tous les navigateurs récents sont maintenant supportés (IE >= 5, Mozilla et ses dérivés, Opera 7, Konqueror 3), mais le rendu avec les anciens navigateurs comme Netscape 4.X est très sommaire. Si vous disposez d'un de ces navigateurs avec lesquels la consultation des statistiques de Piwik ne vous est pas possible, nous vous recommandons vivement l'utilisation du splendide navigateur Firefox, qui est très stable, rapide, puissant et complet. C'est le nouveau-né de la famille Mozilla, qui se compare aisément en termes de fonctionnalités avec Internet Explorer (il le surpasse même dans la quasi totalité des domaines). Pour le télécharger, visitez le site http://www.mozilla.org/products/firefox/ : bon surf !
Librairie graphique.
Les graphiques de Piwik sont générés grâce à la puissante librairie JPGraph (http://www.aditus.nu/jpgraph/) distribuée sous license QPL. Il faut bien noter la différence de licences, ce qui explique que JPGraph ne soit pas directement inclue à l’application, il est nécessaire de laisser les fichiers distincts avec la notice de la license QPL en haut de chaque fichier jpgraph*.php.
Les graphiques disponibles dans Piwik sont de plusieurs types :
Les graphiques ne sont pas stockés sur le serveur mais recalculés à chaque consultation. Dans une prochaine version, les possibilités de cache permises par JPGraph seront certainement utilisées, ce qui limitera les ressources serveur utilisées lors de la génération des graphiques.
Sécurité générale.
La sécurité dans Piwik est un domaine sur lequel l'équipe de développement travaille constamment. Piwik utilise le procédé des sessions php pour la connexion, procédé inviolable et entièrement sécurisé. Le mot de passe pour accéder à l'administration est codé dans le fichier de configuration. De nombreux tests sont réalisés afin d'empêcher toute tentative de hacking via Piwik (SQL Injection ou Cross Site Scripting).
Néanmoins il convient de respecter les règles suivantes afin de minimiser les problèmes :
Il est évident de plus qu'il ne faut pas éditer les fichiers de Piwik sans être sûr de soi, afin de ne pas créer d'éventuelles failles de sécurité ou autre.
En respectant ces quelques règles, vous n'aurez presque aucune possibilité de vous faire pirater votre serveur, nous vous conseillons donc de les suivre précisément (si vous en avez les possibilités).
Ajouter un moteur de recherche.
Vous pourrez rencontrer, dans les statistiques de la rubrique « Affluents », des arrivées par des sites Internet qui n'en sont pas réellement : certains peuvent en effet être des moteurs de recherche qui ne sont pas reconnus comme tel par Piwik. Pour corriger ce problème, il vous suffit d'ajouter ce moteur dans la liste des moteurs gérés par Piwik, en éditant le fichier /core/datas/searchEngines.php et en créant une nouvelle ligne contenant le nom, l'adresse Internet du moteur, et la variable qui contient les mots clés lorsque vous effectuez une recherche. Pour connaitre cette variable, effectuez vous-même une recherche sur le moteur que vous souhaitez ajouter à la liste, et observez l'URL de la page où sont affichés les résultats. Par ex pour Google, en cherchant « Piwik », la page sera de la forme http://www.google.fr/search?q=Piwik. Il peut y avoir de nombreuses autres variables mais relevez seulement celle contenant le mot clé recherché. La ligne du fichier moteurs.php sera de la forme :
 "www.google.fr" => array("Google", "q"),
Si vous ajoutez ainsi des moteurs de recherche, merci de prévenir l'équipe de développement afin qu'ils soient directement intégrés à la prochaine version.
Calendrier interactif.
Le calendrier interactif permet de sélectionner une date d’étude pour les statistiques rapidement et intuitivement. Une liste déroulante propose le choix entre tous les mois depuis l’installation de Piwik. Lors d’un changement de mois, le type de période d’analyse (jour, semaine ou mois) est conservé. Les jours de la période d’analyse sont de couleur orange. Les autres jours analysables sont de couleur bleu. Les jours non analysables sont grisés. Le jour considéré comme premier jour d'installation de Piwik est la date contenu dans le premier champ de la table « phpmv » (avec id=1) ; ce champ n'est jamais supprimé car il permet d'avoir connaissance du premier jour d'installation de Piwik sur le serveur. Si vous l'avez supprimé par mégarde, éditez le premier champ de votre table « phpmv » et remplacez la valeur du id par 0 et la valeur de la date par la date du premier jour de votre installation (respectez bien la norme MySQL : aaaa-mm-dd).
Gestion de plusieurs sites.
La gestion de plusieurs sites dans Piwik est gérée de manière très simple. À la création d’un nouveau site à auditer, des nouvelles tables sont créées (avec le numéro du site suivant le préfixe) sur le serveur configuré, dans la base MySQL configurée. Ensuite, seul le nom des tables change dans les requêtes MySQL d’affichage, d’archivage, etc. Le reste de l'application reste inchangé.
Échelle de couleur pour la mappemonde.
L'échelle de couleur pour la mappemonde n'est à notre sens pas encore optimale, dans le sens où nous pensons qu'elle pourrait être plus précise (plus de nuances de couleurs ? Des couleurs plus distinctes ? Ou au contraire une teinte plus unie mais progressive ?).
Quoi qu'il en soit, il vous suffit d'éditer l'image de la barre de couleurs, et les nouvelles couleurs seront automatiquement prises en compte sur la mappemonde. Il est par contre nécessaire de garder les mêmes dimensions pour l'image de la barre.
Si vous arrivez à un résultat concluant, n'hésitez pas à nous faire part de l'image !
Logos Piwik.
Tous les logos disponibles à l'affichage sur les pages des sites audités sont des logos soumis par les utilisateurs de Piwik ! L'idéal serait de toujours enrichir cette base de données de logos afin que chacun trouve le logo qui sied parfaitement à l'esprit graphique de son site Internet.
N'hésitez donc pas à soumettre vos créations de logos à l'équipe de développement ! (Sur les forums officiels par exemple)