rapport de stage - projet plume · 2014-04-11 · [rapport de stage] lavaux jérémy mise en œuvre...

43
Université Nancy 2 MIAGE – Nancy [RAPPORT DE STAGE] Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INSTITUT DE L’INFORMATION SCIENTIFIQUE ET TECHNIQUE (INIST) Réalisé par LAVAUX Jérémy Année universitaire : 2009/ 2010

Upload: others

Post on 13-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Université Nancy 2 MIAGE – Nancy

[RAPPORT DE STAGE]

Mise en œuvre du logiciel de Statistiques Web PIWIK

Et création d’un greffon PDF

INSTITUT DE L’INFORMATIONSCIENTIFIQUE ET TECHNIQUE (INIST)

Réalisé par LAVAUX Jérémy

Année universitaire : 2009/ 2010

Page 2: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

2

Page 3: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

[RAPPORT DE STAGE]

LAVAUX Jérémy

Mise en œuvre du logiciel de Statistiques Web PIWIK

Et création d’un greffon PDF

INIST -CNRS2, allée du parc de Brabois

54519 VANDOEUVRE-LES-NANCY

• Stage réalisé du 17 mai 2010 au 7 août 2010

• Sous la tutelle de : M. LECHAUDEL Dominique et M. GULLY Stéphane: Ingénieurs du département informatique et de M. NABONNAND Philippe: Professeur à l’université

Année universitaire : 2009 / 2010

Université Nancy 2 MIAGE - Nancy

3

Page 4: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

[TABLE DES MATIERES]1 [REMERCIEMENTS]..................................................................................................52 [INTRODUCTION].................................................................................................... 63 [L’ETABLISSEMENT].................................................................................................. 7

3.1 Présentation...........................................................................................................73.1.1 Localité............................................................................................................73.1.2 Les missions de l’INIST....................................................................................8

3.2 Le Département Informatique...........................................................................93.2.1 Introduction....................................................................................................93.2.2 Les missions du département......................................................................93.2.3 Les services...................................................................................................10

4 [REALISATION DU PROJET]....................................................................................114.1 Le cahier des charges.......................................................................................11

4.1.1 PhpMyVisites.................................................................................................124.1.2 Les documents PDF.....................................................................................144.1.3 Le cahier des charges évolutif..................................................................15

4.2 Mise en place.....................................................................................................154.2.1 Etude de l’application................................................................................154.2.2 Technique de mesure d’audience..........................................................16

4.2.2.1 La notion de 'Tracker'.........................................................................164.2.2.2 La méthode du tracking...................................................................17

4.2.3 Mise en oeuvre.............................................................................................184.2.3.1 Pourquoi Piwik ?..................................................................................184.2.3.2 Installation à l’INIST.............................................................................184.2.3.3 Le site web de test..............................................................................20

4.2.4 Développement du greffon PDF..............................................................214.2.4.1 Contexte et démarche initiale.........................................................214.2.4.2 L’outil d’envoi par mail......................................................................224.2.4.3 Le greffon PDF.....................................................................................24

4.2.4.3.1 Créer un rapport.........................................................................244.2.4.3.2 Gérer la liste des rapports..........................................................264.2.4.3.3 Le rapport généré.......................................................................28

4.2.5 Script d’automatisation..............................................................................294.2.5.1 Introduction.........................................................................................294.2.5.2 Mise en place du script.....................................................................31

5 [CONCLUSION]....................................................................................................336 [GLOSSAIRE]......................................................................................................... 347 [BIBLIOGRAPHIE]..................................................................................................358 [ANNEXES]............................................................................................................ 36

4

Page 5: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

1 [REMERCIEMENTS]

Je tiens tout d’abord à remercier la MIAGE et ses enseignants pour m’avoir permis

d’intégrer une réelle formation en informatique. J’ai pu notamment mettre à profit

mes acquis dans le monde du travail avec ce stage.

Je remercie M. NABONNAND Philippe, mon parrain, pour m’avoir apporté les

conseils et l’aide nécessaire au bon déroulement du stage en lui-même.

Au sein de l’entreprise, je remercie M. LECHAUDEL ainsi que M. GULLY, mes tuteurs,

pour m’avoir d’une part accepté au sein de l’établissement INIST-CNRS et d’autre

part pour le suivi du travail que j’ai réalisé.

En ce qui concerne le déroulement du stage, je voudrais aussi saluer les collègues du

‘Service étude et service en ligne’: M. LANDI Bruno et M. WACH Arnaud qui m’ont

donné des précisions sur le cahier des charges, le fonctionnement interne de l’entre-

prise, et qui m’ont également suivi tout au long de mon travail.

Je tiens également à remercier les membres des autres services du département in-

formatique qui m’ont accompagné dans ce projet : M. COUCHET Pierre et M. TINTA-

NET Cédric. Ils ont répondu à mes appels lors des phases de test de l’application. Je

tenais aussi à les remercier pour leur bonne humeur quotidienne.

Enfin, je remercierai ma famille qui m’a permis de réaliser ces études et ce stage.

Merci pour le soutien apporté.

5

Page 6: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

2 [INTRODUCTION]

La licence MIAGE réalisée à l’UFR Mathématiques et Informatique de Nancy se dé-

roule sur une période de trois ans et permet d’acquérir de solides bases, aussi bien

en informatique qu’en compétences générales. La validation s’effectue à la fin de

l’année scolaire par un stage de douze semaines en entreprise.

J’ai donc choisi de réaliser ce stage dans la fonction publique au sein de l’IN-

IST-CNRS situé à Brabois. J’étais sous la tutelle de M. LECHAUDEL Dominique et M.

GULLY Stéphane, ingénieurs de recherche du département informatique.

Le travail au sein d’un institut public était pour moi une réelle découverte. En effet,

ayant déjà eu l’occasion de travailler durant la saison estivale dans des entreprises

privées, je souhaitais enrichir mes connaissances à travers un organisme tout à fait

différent. L’envie de découvrir un autre environnement, un climat social et d’autres

objectifs ont également su orienter mon choix. Enfin, le sujet était en adéquation

avec mes attentes puisque je souhaitais travailler sur un projet liant étude et déve-

loppement.

Mon rapport de stage présentera donc mes douze semaines de stage au sein de

l’organisme. Je commencerai par une présentation de l’établissement ainsi que les

conditions de travail. Puis, je développerai le projet qui m’a été confié et les moyens

utilisés pour parvenir à mes fins. Enfin, je dresserai un bilan de l’ensemble des

connaissances apportées par ce stage autant sur le plan personnel que profession-

nel.

6

Page 7: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

3 [L’ETABLISSEMENT]

3.1 Présentation

3.1.1 Localité

L’INIST-CNRS se trouve au numéro 2 de l’avenue du Parc de Brabois. Située à

quelques kilomètres de Nancy, sa situation offre de nombreux avantages. En effet, la

proximité de l’établissement avec le tram ou encore l’autoroute facilite l’accès des

employés à leur lieu de travail. Les nombreux restaurants ainsi que la cantine interne

permettent également aux salariés de se restaurer.

Figure 1 : Plan d’accès à l’institut de l’information scientifique et technique (INIST).

7

Page 8: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

3.1.2 Les missions de l’INIST

L’INIST est une unité de production et de service du CNRS. Avant de présenter

l’institut il convient donc de faire une brève présentation du CNRS.

Le Centre national de la recherche scientifique (CNRS) est un organisme public de

recherche. Cet établissement public à caractère scientifique et technologique est

placé sous la tutelle du Ministère de l'Enseignement supérieur et de la Recherche.

Avec plus de 32 000 personnes (dont 26 000 statutaires - 11 600 chercheurs et 14 400

ingénieurs, techniciens et administratifs), un budget 2010 de plus de 3 milliards d'eu-

ros, une implantation sur l'ensemble du territoire national, le CNRS exerce son activité

dans tous les champs de la connaissance, en s'appuyant sur plus de 1200 unités de

recherche et de service.

L'INIST est en charge de la collecte, du traitement et de la diffusion de l’Information

Scientifique et Technique auprès des chercheurs publics et privés, français et étran-

gers. Pour cela, l'INIST s’appuie sur l’une des plus importantes collections de publica-

tions scientifiques d’Europe.

L'INIST a pour but de faciliter l'accès aux résultats issus des différents champs de la re-

cherche mondiale. Pour cela, l’établissement propose tout une gamme de services

de recherche d'information:

• La fourniture de documents (environ 6000 clients)

• Un outil de vente par correspondance (VPC) ‘Refdoc’ 250 000 visites par

mois. (annexe 1)

• Des bases de données bibliographiques (18 millions de références)

• Des portails d'information permettant l'accès mutualisé à des ressources nu-

mériques.

8

Page 9: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

3.2 Le Département Informatique

3.2.1 Introduction

Le département informatique est appelé DSI (département des systèmes

d’informations). Il représente un des sept départements qui composent l’INIST. Le

responsable du département est M. Laurent SAUDER.

Figure 2 : Les départements de l’INIST

3.2.2 Les missions du département

Le DSI est le garant de la cohésion du système d’information de l’unité. Ses missions

sont multiples:

Assurer la mise en place de solutions permettant de supporter la

production des différents départements utilisateurs

Maintenir les chaines informatiques de production

Faire évoluer le système afin de s’adapter aux besoins

Prendre en charge la veille technologique pour adapter la stratégie

informatique en conséquence

9

Page 10: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

3.2.3 Les services

Afin de mener à bien ses missions, le département informatique est divisé en services.

Figure 3 : Les services du DSI

Les services du département exercent dans leurs domaines de compétences:

+ Exploitation maintient la production (logiciels)

+ Serveurs et Réseaux anticipe les évolutions techniques

+ Bureautique gère les installations matérielles, le service messagerie

+ Chaine documentaire gère les besoins applicatifs internes

+ Service en ligne Développement et support d’application Web

L’ensemble du stage a été réalisé au sein du Service en ligne, composé de neuf

personnes, sous la tutelle de M. LECHAUDEL Dominique et de M. GULLY Stéphane,

tous deux exerçants en tant qu’ingénieurs de développement.

10

Page 11: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4 [REALISATION DU PROJET]

4.1 Le cahier des charges

Pour débuter le stage et bien comprendre son environnement, une visite des locaux

fut organisée par M. LECHAUDEL. Celle-ci incluait bien évidemment la présentation

du poste de travail où le stage serait effectué. Ce poste disposait d'un PC sous Win-

dows XP et se situait dans la même pièce que celui de M. LECHAUDEL, M. LANDI et

M. WACH qui se proposèrent pour fournir quelques indications relatives au fonction-

nement de la machine ainsi que du département informatique.

Suite à cela, un cahier des charges plutôt général fut établi. Afin de les étudier, les

logiciels libres de statistiques web PhpMyVisites et Piwik ont été présentés par M.

LECHAUDEL et M. GULLY puis quelques objectifs principaux ont été fixés. Le projet

pouvait en réalité se décomposer en deux grosses parties. Dans un premier temps, la

mission fut de mettre en œuvre le logiciel Piwik. Celui-ci devait permettre de

remplacer à terme le logiciel existant PhpMyVisites arrivant en fin de vie.

Dans un deuxième temps, il a fallu étudier et réaliser un prototype de greffon PDF.

Ce greffon devait permettre, à l’image de ce qui existe dans PhpMyVisites,

d’exporter des données statistiques au format PDF.

Enfin, l’objectif final était d’intégrer le greffon PDF dans le code source officiel du

logiciel Piwik.

11

Page 12: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.1.1 PhpMyVisites

Grâce aux informations présentées sur le logiciel PhpMyVisites, l’étude de l’existant a

pu débuter. A l’heure actuelle, deux cent sites sont hébergés au sein de l’Inist. Afin

de mesurer l’audience de ces sites, plusieurs logiciels statistiques sont utilisés. On

recense une cinquantaine de sites suivis par PhpMyVisites, moins d’une vingtaine sur

Google Analytics et une dizaine sur l’outil AWStats.

Figure 4 : Exemple de statistiques sous PhpMyVisites

12

Page 13: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Pour étudier la mise en œuvre de Piwik, il fallait avant tout, comprendre son

fonctionnement et ses apports par rapport à PhpMyVisites. Suite à une faille de

sécurité du logiciel PhpMyVisites, l’équipe de développeur du logiciel libre a décidé

de cesser le développement et a souhaité repartir sur des bases plus solides. C’est le

point de départ du développement du nouveau logiciel Piwik qui reprend la même

équipe de développement que PhpMyVisites. Le leader du développement

Matthieu AUBRY est français.

Figure 4 : Exemple de statistiques sous Piwik

Nous verrons plus en détails la mise en œuvre de Piwik au sein de l’INIST dans la

partie 4.2.

13

Page 14: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

La deuxième partie concernait la réalisation d’un greffon PDF permettant de

reproduire les fonctionnalités d’export des données en PDF présentes sur

PhpMyVisites dans Piwik. A l’heure actuelle Piwik est en phase de développement ce

qui explique que certaines fonctionnalités soient manquantes. La version utilisée lors

du développement était la 0.6

4.1.2 Les documents PDF

De manière périodique, à l’aide d’un script sur un serveur, les documents PDF sont

générés à partir de requêtes http sur PhpMyVisites. Ces documents PDF sont

sauvegardés sur le serveur et les utilisateurs intéressés peuvent venir les consulter par

le biais de l’intranet de l’INIST.

Figure 5 : Intranet de l’Inist où les PDF sont consultables

14

Page 15: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.1.3 Le cahier des charges évolutif

M. LECHAUDEL et M. GULLY ont également précisé que le cahier des charges serait

amené à se compléter afin de répondre parfaitement aux besoins. C’est en effet ce

qu’il s’est passé puisqu’au fil du temps, des précisions et des contraintes sont venues

s’ajouter. L’ensemble des modifications effectuées seront signalées au chapitre sui-

vant. De nouvelles fonctionnalités sont concernées par ces changements.

4.2 Mise en place

Après avoir pris connaissance des objectifs du stage, la mise en œuvre de l’applica-

tion sur PC a débuté.

L’application a été développée à l’aide de l’environnement serveur ‘LampServer’

offrant de fait la possibilité d’utiliser les dernières versions de PHP, MySQL et Php-

myadmin.

Piwik utilise le langage PHP ainsi que le framework Zend, le langage PHP s’est donc

imposé dans le développement du greffon. Ceci était d’autant plus intéressant qu’il

permettait d’approfondir les connaissances vues à la MIAGE.

4.2.1 Etude de l’application

Comme avant chaque développement, il a fallu procéder à une étude préalable.

Après avoir réfléchi sur les différents objectifs fixés, une analyse du logiciel Piwik a

commencé.

15

Page 16: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Piwik est un logiciel libre permettant de mesurer l’audience des sites web. Cela per-

met notamment d’évaluer le succès d’un site web, réussir à cibler l’intérêt des utilisa-

teurs ou encore suivre la fréquence d’utilisation d’un site web.

4.2.2 Technique de mesure d’audience

4.2.2.1 La notion de 'Tracker'

Il existe au sein de l’INIST deux méthodes pour mesurer l’audience. D’une part la

technique dite des « fichiers de logs » (annexe 2) qui ne sera pas abordée dans ce

rapport mais qui est employée par le logiciel AWStats et d’autre part la méthode du

tracker utilisée par PhpMyVisites, Piwik et Google Analytics.

Cette dernière consiste en l’insertion d’un morceau de code JavaScript appelé

‘tracker’ dans toutes les pages du site web à étudier. Pour des raisons pratiques (opti-

misation du chargement des pages), ce tracker est généralement inclus dans le

pied-de-page du site.

Figure 6 : Exemple de tracker Javascript

Pour chaque site à analyser, un nouveau tracker est généré par Piwik. C’est ce code

qui va permettre de générer les données dans la base de données par la méthode

dite du tracking.

16

Page 17: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.2.2 La méthode du tracking

Voici ci-dessous un schéma explicatif permettant de résumer le processus.

Figure 7 : méthode du tracking

Un utilisateur se connecte au site web à auditer, son navigateur récupère le tracker

JavaScript inclus dans le pied-de-page du site. Une fois obtenu, le code JavaScript

s’exécute et enregistre un certain nombre d’informations liées à l’utilisateur dans la

base de données. Comme le tracker est présent sur toutes les pages du site, l’en-

semble des informations relatives à la navigation sur le site par l’utilisateur est enregis-

tré.

Ce sont ces informations qui permettront de générer des statistiques et qui seront af-

fichées dans les différents modules de l’interface de Piwik. Voici quelques exemples

d’informations stockées dans la base: mots clés, moteurs de recherche…

Figure 8 : Exemples de statistiques

17

Page 18: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.3 Mise en oeuvre

4.2.3.1 Pourquoi Piwik ?

Piwik est le successeur direct de PhpMyVisites. Il reprend la même équipe de déve-

loppement et s’appuie sur une nouvelle interface totalement personnalisable qui uti-

lise le principe de widgets semblable à celui présent dans Igoogle ou encore Net-

vibe. En effet en quelques clics la disposition des éléments sur la page peut être en-

tièrement modifiée. Piwik est également une alternative open source à Google Ana-

lytics et offre la possibilité d’héberger les données sur votre propre serveur. Enfin,

c’est un logiciel libre qui bénéficie d’une communauté active de développeurs.

Piwik connaît cependant quelques limites. Comme les données sont hébergées sur

votre propre serveur, lorsque le site connaît un fort trafic, cela nécessite des moyens

matériels importants. L’archivage des données peut également prendre un temps

conséquent. Actuellement la version en place est la 0.6. La sortie d’une version in-

cluant toutes les fonctionnalités est prévue dans une version ultérieure 1.0. Du fait de

sa croissance, le logiciel a vu s’imposer l’anglais comme langue par défaut dans

tout le processus lié au développement ou à la documentation au détriment du

français présent sur PhpMyVisites. Cependant le logiciel propose une interface dispo-

nible dans plus de 30 langues incluant le français.

4.2.3.2 Installation à l’INIST

Suite à cette étude sur le logiciel, il a fallu procéder à son installation au sein de l’éta-

blissement. Pour se faire, une installation d’une machine virtuelle Debian (annexe 3)

a été réalisée sur le poste. Cette machine virtuelle est utilisée par les développeurs à

l'INIST et permet de disposer en local d'un environnement de développement sem-

blable à l’environnement définitif que l'on retrouve sur les machines de production.

L’objectif était d’éviter tout désagrément lié à l’environnement lors de la mise en

production réelle du logiciel.

18

Page 19: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Sur cette machine virtuelle, un environnement applicatif a été créé à l’aide d’un ou-

til libre dénommé PKGI.

Figure 9 : Environnement applicatif (PKGI + LAMP)

PKGI permet de déployer rapidement sur un même serveur des applications indé-

pendantes utilisant chacune un ou plusieurs modules proposés par PKGI. Pour les be-

soins du développement, les modules php, apache, mysql, phpmyadmin, crontab

ont été utilisés.

Une fois l’environnement créé, un site web de test a été réalisé afin d’appréhender

la méthode du tracking et d’étudier quelques statistiques fournies par Piwik. Suite à la

création du site, des tracker JavaScript ont été insérés et une demande de consulta-

tion du site a été effectuée par courriel au personnel de la DSI. Ceci avait pour but

de vérifier en condition réelle le bon fonctionnement des trackers.

19

Page 20: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.3.3 Le site web de test

Un site web avec trois pages a donc été réalisé. Sur ce site on trouve quelques

images et des descriptions de l’INIST, PhpMyVisites et Piwik. Quelques liens per-

mettent par la même occasion aux utilisateurs de se documenter sur Piwik et même

d’essayer la ‘démo’ ou de télécharger le logiciel.

Figure 10 : Aperçu du site web de test

Suite au bon fonctionnement du ‘suivi’ du site web de test et dans une optique de

mise en production, le logiciel Piwik a été déployé sur un serveur de pré-production

du nom de ‘IDA’. Dans le même temps, un tracker a été mis en place sur le WIKI de

l’INIST afin de l’auditer. La partie relative au développement du greffon PDF a

ensuite pu débuter.

20

Page 21: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.4 Développement du greffon PDF

4.2.4.1 Contexte et démarche initiale

Au sein de l’INIST, il existe un module d’export PDF sur PhpMyVisites permettant

d’exploiter les données générées par le logiciel. Comme Piwik est encore en phase

de développement, cette fonctionnalité n’apparaissait pas comme une priorité

pour les développeurs du logiciel mais était nécessaire pour l’INIST. L'objectif était

donc de réaliser un prototype de greffon et de l’intégrer si possible dans le code

source officiel de Piwik afin de faciliter les futures maintenances logicielles

Pour ce faire, il a fallu suivre une certaine démarche. La première étape fut de

prendre contact avec le leader du développement de Piwik M. AUBRY Matthieu,

ancien étudiant de l’Institut National des Sciences Appliquées (INSA) de LYON. Suite

à cela, une première approche avec le code a débuté. Piwik est basé sur le Zend

Framework lui permettant ainsi de disposer d'un cadre et de briques logiciels éprou-

vés et reconnus par la communauté de développeurs PHP. Piwik par son architec-

ture permet le développement de greffons qui sont des bouts de code indépen-

dants qui permettent d'étendre les fonctionnalités du logiciel. Le greffon PDF a été

développé en suivant cette philosophie.

Dans le même temps, une inscription à la zone des développeurs à été réalisée ainsi

qu’au WIKI de PIWIK afin de suivre l’avancement d’une manière générale du logi-

ciel. Le développement de ce greffon était un objectif prévu par Piwik après la sortie

de la version 1.0 et dans la zone des développeurs un ticket concernant ce greffon

avait été réalisé. Sur ce ticket, une première version en développement avait déjà

été proposée. Cette version a donc été récupérée pour appréhender l’état actuel

des choses. L’occasion s’est également présentée de prendre contact avec le

contributeur du fichier. Le contact s’est fait en anglais puisque la personne ayant dé-

veloppé ce greffon fait partie d’une entreprise de développement de logiciels infor-

matiques Conlabz Gbmh située en Allemagne.

21

Page 22: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Suite à la prise de contact avec M. Nuzil, développeur au sein de cette entreprise al-

lemande, des tests sur la première version du greffon ont été effectués. Il se trouve

que le greffon n’était pas fonctionnel et ne possédait pas d’interface, seule une

structure générale du document PDF avait été réalisée.

4.2.4.2 L’outil d’envoi par mail

Avant d’attaquer la réalisation en tant que tel du greffon PDF, M. AUBRY a proposé

de créer un outil permettant d’envoyer les rapports PDF générés par mail. Ses argu-

ments étaient que l’outil serait dans un premier temps plus simple à réaliser, la dé-

couverte des principes de codage de Piwik serait plus aisée et enfin que cet outil se-

rait générique et réutilisé ultérieurement par d’autres fonctions proposées dans Piwik.

En parallèle, M. Schneider chef de l’entreprise allemande a ouvert des droits d’ac-

cès sur le dépôt subversion hébergeant le greffon PDF afin de pouvoir travailler en

collaboration sur le code source. Ceci a permis de prendre en main le logiciel libre

TortoiseSVN qui est une interface graphique permettant de travailler simplement

avec les dépôts subversion.

Suite à cela, le développement de l’outil d’envoi par mail a pu débuter. De manière

native, cet envoi devait se faire en utilisant la fonction mail de php mais devait pou-

voir également être configurable pour une utilisation avancée. Dans cette configu-

ration avancée, M. AUBRY a proposé de prendre en charge un système complet

d’envoi par protocole SMTP.

Au départ, la configuration mail était enregistrée dans une table de la base de don-

nées. Après discussion avec M. AUBRY celui-ci a proposé d’enregistrer ces informa-

tions dans un fichier de configuration, cela permettant à la fois de supprimer une

table de la base mais également de pouvoir réutiliser ces informations avec les prin-

cipes de codage standard de Piwik.

22

Page 23: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Figure 10 : Interface des paramètres E-mail

Dans la dernière version de Piwik incluant cet outil, ces paramètres sont accessibles

et modifiables dans les paramètres généraux de Piwik au lieu d’un onglet spécifique

‘paramètres E-mail’ mis en place au début du développement.

Figure 11 : Structure des paramètres dans le fichier de configuration

23

Page 24: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.4.3 Le greffon PDF

L’ensemble du développement du greffon PDF a été réalisé en collaboration avec

M. Nuzil (annexe 4) à l’aide du SVN de son entreprise mis à notre disposition. Tout au

long des échanges de mails, le dialogue s’est fait intégralement en anglais. Le pro-

cessus de développement a été réalisé comme suit :

Une version bêta a été réalisée et soumise à Matthieu AUBRY afin qu’il puisse passer

en revue le code. Suite à cela une liste de modifications a été demandée sur le gref-

fon. Il s’est ensuite mis en place un système d’échange : une fois la version conte-

nant les modifications, cette dernière était à nouveau soumise au leader de Piwik qui

nous renvoyait une liste de choses à modifier ou à ajouter au code. Ce système a

permis à la fois d’obtenir un code robuste puisque relu par l’équipe de développe-

ment de Piwik et également en accord avec les principes de fonctionnement et de

codage du logiciel. Un exemple de révision de code par Matthieu AUBRY est fourni

en annexe 5.

L’objectif de se greffon était donc de fournir à l’utilisateur du logiciel, une interface à

la fois complète et simple d’utilisation lui permettant de créer un rapport PDF person-

nalisable. Le greffon a subi différentes améliorations au cours du développement et

seul le résultat final sera présenté dans ce rapport.

4.2.4.3.1 Créer un rapport

Comme son nom l’indique, un premier module devait permettre à l’utilisateur dans

un premier temps de pouvoir créer son propre rapport. Afin de rendre personnali -

sable le document PDF généré, différentes options ont été ajoutées à l’interface.

24

Page 25: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Il a fallu bien entendu permettre à l’utilisateur dans un premier temps de choisir les in-

formations à inclure dans le rapport. Ceci est géré par un système de cases à co-

cher. Un champ texte permet également à l’utilisateur d’entrer une courte descrip-

tion qui sera affichée sur la première page du rapport PDF généré. Enfin l’interface

propose également à l’utilisateur de saisir une liste d’adresses mail auxquelles sera

envoyé le rapport. Vers la fin du développement du greffon, M. AUBRY a également

apporté une contribution en paramétrant l’envoi périodique (journalier, hebdoma-

daire, mensuel) d’email. Cet outil se retrouve également dans l’interface

d’ajout/création d’un rapport.

Figure 12 : Interface de création des rapports PDF

25

Page 26: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

L’ensemble des informations liées à l’ajout sont directement enregistrées dans une

table ‘piwik_pdf’ de la base Piwik.

Figure 13 : Table piwik_pdf

4.2.4.3.2 Gérer la liste des rapports

Une fois créés, les rapports sont présentés, à l’image de ce qui se fait dans le greffon

‘Objectif’ de Piwik, sous forme de liste.

Figure 14 : Interface de gestion des rapports PDF

Dans cette liste, différentes options sont disponibles.

- Télécharger le PDF : cela va faire appel à la fonction ‘generatePDF’ de l’API

du greffon PDF et le navigateur va ouvrir une fenêtre offrant la possibilité d’ouvrir le

PDF ou de l’enregistrer sur le disque.

26

Page 27: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Il est important de préciser que le rapport est généré pour un site donné, pour la

date et la période du calendrier Piwik. Au début du développement la date et la

période ne tenaient pas compte de ce calendrier et pour être cohérent avec Piwik,

Matthieu AUBRY a demandé de prendre en considération ce calendrier.

Figure 15 : Calendrier Piwik

- Editer le PDF : lorsque l’utilisateur choisit cette option, le navigateur ré-affiche

le menu d’ajout/création d’un rapport complété avec les informations stockées

dans la base relatives au rapport à modifier. Toute modification du formulaire don-

nera lieu à une mise à jour de l’enregistrement concerné.

- Supprimer le PDF : l’utilisateur peut également supprimer un rapport. Une fe-

nêtre de confirmation lui permet alors de valider son choix ou de l’annuler dans le

cas contraire. La valeur du champ ‘deleted’ passe alors à 1 dans la base.

Un point important précisé par le leader Piwik était de réutiliser le code existant au

maximum et surtout de coller avec le design déjà présent sur les autres greffons Piwik

(couleurs, mise en forme).

Au départ toutes les requêtes d’édition et suppression passaient par le protocole

http. Pour des questions d’optimisation du temps de chargement et de cohérence

avec les autres greffons, l’utilisation d’Ajax (Asynchronous JavaScript and XML) s’est

imposée.

27

Page 28: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Ajax, outil de développement de pages web dynamiques, a également permis de

réutiliser le système de gestion d’erreurs propre à Piwik au lieu d’afficher celles-ci

dans une page blanche.

Figure 16 : Exemple d’erreur générée par Piwik

4.2.4.3.3 Le rapport généré

Un exemple complet du rapport PDF généré sera fourni en document complémen-

taire (un exemple partiel est fourni en annexe 6). Toute la mise en forme du docu-

ment était gérée au départ par la librairie FPDF. L’avantage de cette dernière était

sa petite taille. Cependant, des problèmes liés à l’encodage UTF-8 des caractères

ont orienté nos choix par la suite vers une autre librairie pdf du nom de TCPDF. Cette

dernière était plus complète mais aussi plus volumineuse (environ 25Mo). La version

de Piwik à télécharger devait être d’une taille optimale et il a donc fallu ne conser-

ver que les fichiers nécessaires de la librairie pdf.

Le logo PIWIK est affiché sur la première page du rapport généré. Un outil permet-

tant de personnaliser ce logo a été réalisé mais n’a pas été retenu pour le moment

sur la version finale du PDF faute de savoir si le logo devait être global au logiciel Pi -

wik ou par site.

28

Page 29: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Figure 17 : outil de personnalisation du logo

Le rapport offre également une certaine flexibilité puisque M. AUBRY a demandé de

réaliser un rapport dont certaines caractéristiques telles que la police, les couleurs

pouvaient être personnalisables.

Dans la version définitive du greffon, le rapport généré n’inclut pas de graphiques.

Ceci s’explique par plusieurs raisons, la première étant que l’objectif de ce stage

était de réaliser un premier prototype de greffon reprenant principalement la mise

en forme de tableaux, la deuxième étant également le fait que la priorité de Piwik

était avant tout de pouvoir intégrer un greffon stable au code source officiel avant

la sortie de la version 1.0 de Piwik. Selon M. AUBRY il fallait préférer « créer un docu-

ment PDF exempt de bugs avant d’y inclure la partie graphique ». Ceci fait donc

partie d’une des modifications futures à apporter au document.

A la fin du développement, une partie du temps à été consacrée à la traduction

complète du greffon en français.

4.2.5 Script d’automatisation

4.2.5.1 Introduction

Une fois le développement du greffon PDF bien avancé, un nouvel objectif est venu

s’ajouter au cahier des charges. M. GULLY et M. LECHAUDEL ont proposé de réaliser,

à l’image de ce qui existait déjà sur PhpMyVisites, un script d’automatisation pour la

génération des rapports PDF.

29

Page 30: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

L’objectif du script existant étant chaque mois d’obtenir des rapports afin de pouvoir

les exploiter. Un script shell est donc mis en place afin d’effectuer cette tâche réglée

par le biais d’une crontab, mécanisme permettant de déclencher le script de ma-

nière périodique.

L’objectif a donc été dans un premier temps de récupérer le script et d’analyser son

fonctionnement. Celui-ci construit une requête en fonction des paramètres que l’uti-

lisateur lui passe en options et en arguments. Cette requête http est ensuite envoyée

au serveur où est stockée la base de PhpMyVisites par la commande WGET. L’éxe-

cution de cette requête permet de générer le rapport PDF et de le stocker dans un

répertoire prévu à cet effet. Ce répertoire sert ensuite à alimenter l’intranet de l’INIST,

endroit à partir duquel les utilisateurs pourront consulter les rapports périodiques.

Figure 18 : Intranet où les rapports sont consultables

30

Page 31: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

4.2.5.2 Mise en place du script

Afin de reproduire les fonctionnalités du script de PhpMyVisites, il a fallu adapter le

code afin que celui-ci soit compatible avec Piwik. Dans un premier temps, le même

protocole a été testé et le script utilisait le même système d’accès pour générer le

rapport PDF. La force de Piwik est qu’il offre une API extrêmement bien structurée. M.

GULLY a proposé de réaliser un appel à cet API directement afin d’éviter de passer

par le serveur et par conséquent permettre de supprimer des couches réseaux in-

utiles. Le script final qui automatise la génération permet donc de passer directe-

ment par l’API Piwik et n’utilise plus la commande WGET.

Figure 19 : Schéma explicatif du fonctionnement

31

Page 32: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Le schéma précèdent permet de comprendre un peu mieux le fonctionnement gé-

néral du script. Celui-ci peut être déclenché de deux façons. De manière automa-

tique par le biais de la crontab : tous les mois le script va générer dans un répertoire

précis le rapport, ou alors de manière manuelle par un utilisateur souhaitant faire une

demande d’un rapport particulier. Dans les deux cas, le script effectue une requête

à l’API Piwik. Piwik déclenche l’appel à la fonction getReport qui avec les para-

mètres reçus va générer le PDF. Le script va ensuite créer les sous-répertoires

/nom_du_site/période/ correspondants au fichier dans le www/pdf/ et finir par co-

pier le fichier PDF.

Lors d’une utilisation manuelle, M. GULLY a proposé de personnaliser ce script en pro-

posant différents arguments et options tels que la période, la date, les sites pour les-

quels on souhaite générer les rapports et également l’endroit où ceux-ci doivent être

enregistrés.

Le script peut donc être exécuté avec un ensemble de paramètres. Si celui-ci est

lancé sans arguments, cela équivaut à la génération automatique et mensuelle ef-

fectuée par la crontab.

Afin d’orienter l’utilisateur dans l’utilisation du script (options, arguments), un

« helper », menu d’aide dans la console, a été réalisé à l’aide de la librairie

Console_CommandLine (composant de la librairie PEAR).

Figure 20 : « Helper » du script d’automatisation

32

Page 33: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

5 [CONCLUSION]Ce stage m’a permis de découvrir le monde du travail au sein d’un institut

scientifique public. J’ai ainsi pu mettre en pratique bon nombre de connaissances

de la MIAGE afin de mener à bien mon projet.

Le travail comportait une première étude de mise en place du logiciel et une

seconde partie relative au développement lors duquel j'ai utilisé différents langages

de programmation (PHP, CSS, JavaScript, HTML). J'ai également été amené à mettre

en pratique les acquis de la MIAGE notamment en SQL et en UNIX afin de gérer les

interactions avec la base de données de Piwik et d’écrire le script d’automatisation.

Du point de vue du travail réalisé, je suis très satisfait car l’ensemble des objectifs

décrits ont été réalisés. L’outil a été testé, validé par l’INIST et, suite à cela va être mis

en production. Du coté de Piwik, la satisfaction est totale puisque le greffon a été

intégré au code source officiel depuis sa version 0.7 le 29 juillet 2010. C'est d'autant

plus gratifiant que mon travail est aujourd'hui téléchargé à hauteur de 200 fois par

jours par l'ensemble des utilisateurs de Piwik .

Du coté relationnel, tout s’est déroulé pour le mieux. En effet l’équipe m’a

rapidement intégré au sein du service. L’ensemble des échanges s’est réalisé dans

de très bonnes conditions, les personnes étant réellement prêtes à me renseigner et

m’aider à tout instant.

Au cours de ces douze semaines, j’ai également eu l’occasion de participer à une

journée PLUME à Lyon au cours de laquelle j’ai pu en apprendre davantage sur les

logiciels libres. Suite à cela, j’ai également apporté ma contribution en étant le

rédacteur principal d’une fiche PLUME relative au logiciel libre PIWIK.

Ce stage aura donc été très enrichissant autant sur le plan personnel que

professionnel. J’aimerais cependant poursuivre mes études en m’orientant vers un

Master 2 au sein de la MIAGE qui m’ouvrirait les portes du métier de chef de projet

informatique.

33

Page 34: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

6 [GLOSSAIRE]• PHP: « Hypertext Preprocessor ». C’est un langage interprété qui s’exécute

coté serveur. Il est utilisé pour réaliser des pages web dynamiques sur un ser-

veur HTTP.

• CSS: « Cascading Style Sheets ». Ce sont des fichiers qui permettent d’assurer

la mise en page des éléments HTML.

• SQL: « Structured Query Language ». C’est un langage informatique qui per-

met de manipuler des données contenues dans des bases.

• AJAX: « Asynchronous JavaScript and XML ». Solution informatique libre pour le

développement de pages dynamiques et d'applications Web.

• JavaScript: C’est un langage de programmation de scripts principalement uti-

lisé dans les pages web interactives

• Crontab: C'est le nom du programme sous Unix qui permet d'éditer des tables

de configuration du programme cron. Par extension, on appelle souvent cron

toute application lancée à horaire fixe.

• Framework: kit de composants logiciels structurels, qui définissent les fonda-

tions ainsi que les grandes lignes de l'organisation

• SMTP: « Simple Mail Transfer Protocol ». C’est un protocole de communication

utilisé pour transférer le courrier électronique vers les serveurs de messagerie

électronique.

• SVN: « subversion ». Les développeurs utilisent Subversion pour maintenir les

versions actuelles et historiques de fichiers tels que le code source, la docu-

mentation.

34

Page 35: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

7 [BIBLIOGRAPHIE]

http://www.manuelphp.com/ http://fr2.php.net/ Informations sur toutes les

fonctions relatives à PHP

http://www.cfmfrance.com/ http://www.commentcamarche.net/ Forums d’aide PHP+ SQLhttp://www.developpez.net/forums/

http://piwik.org/http://dev.piwik.org/trac Toutes les informations http://dev.piwik.org/svn/ sur Piwik

http://dev.mysql.com/ Informations relatives à MySQL

http://tortoisesvn.net Outil permettant d’utiliser les commandes SVN

http://www.z-f.fr Tout sur le Zend frameworkhttp://www.smarty.net/ et le moteur de template

Smarty

http://www.projet-plume.org/ Elaboration de la fiche PLUME

http://www.pkgi.net/ Création rapide d'environnements applicatifs sous Debian

35

Page 36: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

8 [ANNEXES]Annexe 1: Le projet Refdoc en images

36

Page 37: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Annexe 2: La méthode des fichiers de log

37

Page 38: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Annexe 3: machine virtuelle Debian installée en local

38

Page 39: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Annexe 4: Répartition des tâches suite à une révision de code de M. AUBRY (Ceci est un extrait d'une révision)

– En bleu le travail réalisé par M. Nuzil, en rouge celui réalisé par mes soins

* in PDF logo should be aligned on the left, instead of centered

* logo upload, when there is a problem, just fails with a message on white page... it should instead be displayed with the standard error message on the screen (catch the exception in controller and set error message)

* add PNG to list of supported files (and of course, refactor list of allowed filetypes to not have different list in help message and in the code...)

* if I upload test.jpg, it is renamed as logo.png... of course same file extension should be kept http://thedailywtf.com/Articles/Pipe-Up.aspx ;)

* Smtp: can you preselect "no" by default (after removing useSmtp=no)

* Generate should open PDF in a new window

* After creating a new template, window redirects to open the PDF. Instead page should redirect to the list of templates, and user can decide to view it, or send by emails, etc.

* Form add new template: please reuse same style as Add a new goal (style used already for listing templates). For example, items are in a table, the Add a new PDF Report link hides when clicked and displays the form, etc.

* Can you add a simple "PDF" menu in the top bar instead of main menu? This can now be done with hooks (see other plugins top menu)

* you introduce a new Form checking mechanism.... why?? please please reuse what is already available: other forms are submitted as ajax, then the API checks the parameters, and if one is empty (eg. the name) it throws an exception with the message being displayed in red at the top. Please look at Goal plugin for an example. The form should work this way and reuse the code (which will make your life easier, and very important will be consistent across Piwik)

* Clicking on the label report name doesn't check the checkbox

* in report list, don't display group names when groups are empty

* instead of using this mechanism &action=callPdfApiAction&call=getReport, instead just call the correct method directly from the UI. These proxy mechanisms are generally not a good idea when they can be easily avoided. in this case, as said above, because your code will call api directly, youll have to remove it anyway.

* the Send PDF to field is empty for super user, you can read email from config file

* Send PDF by email: also here the request should be submitted by Ajax, the Loading... displayed, so that all errors and feedback messages are automatically displayed on screen. For example in my case the mail server doesn't work, when I click Send I get a white page error with only back button. By using ajax request and the piwikHelper js functions, this problem is solved. Note that the UI can call directly an APi method (rather than calling the controller), for example, API->sendReportByEmail($idSite, $reportId, for example.).

39

Page 40: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Annexe 5: Révision du code par M. AUBRY (Ce document sur 2 pages est une des révisions effectuée par M. AUBRY suite à notre envoi d'une deuxième version bêta du greffon)In the submitted version, I wasn't able to generate a PDF with reports (list of reports didn't display). I'll still do a code review:

• remove postLoad() from code • change Piwik_Menu::add to Piwik_AddMenu and move to addMenu() method • in trunk, Piwik::prefixTable doesn't exist anymore, it was deprecated for

Piwik_Common::prefixTable (I updated code to pass the install) • logo.png in root is still the old logo, but logo was displaying fine in the PDF first page

(only page that was generated) • PDFRenderer.php, file_exists('./plugins/Pdfex should use PIWIK_INCLUDE_PATH

instead of relative path. Also, filename should be in a variable and not copied twice. Same for pdf->Output('./plugins/Pdfexpor in API.php and all other places

• in /libs/, are all files necessary to build the PDF (other files can be removed, like date.js?)? Other css js files used can be moved to templates/

• Also, I assume that external libs files are unmodified? we can move then to piwik/libs/ when we integrate.

• API.php. Comments are not always useful ("Get Full PDF report", @access public is not necessary as the functions are public, etc.)

• in the API.php files, you should not use Piwik_Common::getRequestVar. Instead, all parameters are in the function methods and are automatically passed to the function by the Piwik front controller. Check other API.php files for examples.

• getReport function is the same as getFullWebsiteReport, so getFullWebsiteReport should be renamed in getReport

• idem for createTemplate and savetemplate, deteteTemplate and deleteReportTemplate (btw delete is spelled wrong)

• some code indendation is different in API.php • I don't really understand the $useForApi parameter • because the methods are a bit long, I would recommend putting all SQL requests in

small methods. Also uppercase all SQL keywords (AND, WHERE, SELECT etc.) • days should not be hardcoded in english. Instead you can use translations from the

translation files. Use Piwik_Date->getLocalized('%longDay%') • do not do Date operations when it is possible to use Piwik_ helpers. To get the day-7,

you can use Piwik_Date::subDay(7) • in savetemplate(), the function does a HTTP referer. The API are functions that can be

called from HTTP, json, etc. They can 'do stuff' and return data, but they can't set cookies or other http headers. Instead the calling function should do the redirect.

• The code starting line 399 to 430 should be refactored in Piwik_Mail class, in the constructor or when send() is called. You can create these methods in Piwik_Mail and submit a patch to the file in the same .zip as the plugin.

• there are 'echo', var_dump etc. in various files that should be removed (throw exception instead when it makes sense) For example when I tried to generate the pdf the message Please contact your administrator to configurate the SMTP server and port in 'PDF export Settings' was echoed to the screen.

• your API class extends the controller class...? but it should not extend anything. so you couldn't use $this

40

Page 41: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

• Controller.php • you write period=yesterday but yesterday is a 'date' value. • date=today. but is it this used? I think date and period should always be set so need for

default maybe? • if/else and other code should be consistent with piwik code (if else on different lines as

the brackets). Check out coding standards • as said in other review, you can't write "Piwik_Query("SET NAMES 'utf8'"); ". Other

plugins like SiteManager record UTF data as site name, so this can work without the set names (piwik might support other DB soon, on top of mysql)

• in various methods, code is not refactored and copied pasted. same code should never appear twice, eg. $data[$k]['filename'] = "./plugins/Pdfexport/reports/".$template['date_from']."-".$template['date_period']."_".$template['site_id'].".pdf"; if (file_exists('./plugins/Pdfexport/reports/'.$template['date_from'].'-'.$template['date_period'].'_'.$template['site_id'].".pdf"))

• the configurate() method is very long. You can split it in smaller methods (one for email configure, other for reports)

• is it expected that you write TRUNCATE TABLE in the controller? • why do you manually write stuff in the config files? the mail configuration will be in

config/global.ini.php so you can submit a patch to this file, and directly reuse Piwik_Config methods to update the config file..

• you can use the SitesManager/API.php file to see a good example of an API class

• UI • for ajax requests, showing errors and showing success messages, you can reuse

existing code. See example on how to do ajax request in the Goal plugin, when you create edit/delete goals. see plugins/Goals/templates/add_edit_goal.tpl

• for non ajax requests ( If the form is submitted and refreshes the page) you can see an example in the CoreAdminHome controller (simple clean example). See also the templates.

• for the table, can you reuse styles of the Goal table? see plugins/Goals/templates/list_goal_edit.tpl

• all CSS should be set as css classes and you can create a css file for all UI screens • in the UI, either you talk in Ajax to the API directly. Or you must submit the form to

the controller actions that will then, in the controller code, call the API. You can't however submit a form to the API directly.

• remove page.tpl • HTML in PdfConfig.tpl has caps letter but we write HTML without caps • idem the css should be refactored • you create one html TABLE per line of settings... instead do simply like the General

Settings screen: plugins/CoreAdminHome/templates/generalSettings.tpl it will be shorter code and be consistent with other screens

• none of this template code was displaying in my browser though: I just see the SMTP settings form

41

Page 42: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

Annexe 6: Exemple de Pdf généréA noter, chaque tableau est généré sur une nouvelle page du PDF. Pour un

gain de place, dans ce rapport, ils ont été regroupés sur la même page.

42

Page 43: RAPPORT DE STAGE - projet PLUME · 2014-04-11 · [RAPPORT DE STAGE] LAVAUX Jérémy Mise en œuvre du logiciel de Statistiques Web PIWIK Et création d’un greffon PDF INIST -CNRS

43