rapport stage de perfectionnement - application de suivi de temps web2.0 sous symfony framework...

38
:: Rapport du stage technicien :: Elaboré par : Karray Walid Encadré par : Zouari Fourat Classe : IR-41 Validation finale Par : ……………………… Signature : Période : du 12/01/2009 au 06/02/2009 Année Universitaire : 2008/2009 Solution de suivi de temps « TimeIt » REPUBLIQUE TUNISIENNE Ministère de l’Enseignement Supérieur Direction Générale des Etudes Technologiques Institut Supérieur des Etudes technologiques de Djerba Département Informatique

Upload: walid-karray

Post on 27-Jul-2015

7.676 views

Category:

Documents


5 download

DESCRIPTION

C'est mon rapport de stage technicien.Vous pouvez l'exploiter seulement dans vos etudes & recherches!N'hesitez pas a me poser des questions.Merci.

TRANSCRIPT

Page 1: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

:: Rapport du stage technicien ::

Elaboré par : Karray Walid

Encadré par : Zouari Fourat

Classe : IR-41

Validation finale

Par : ………………………

Signature :

Période : du 12/01/2009 au 06/02/2009

Année Universitaire : 2008/2009

Solution de suivi de temps « TimeIt »

REPUBLIQUE TUNISIENNE

Ministère de l’Enseignement Supérieur

Direction Générale des Etudes Technologiques

Institut Supérieur des Etudes technologiques de Djerba

Département Informatique

Page 2: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Sommaire

Remerciement ....................................................................................................4

Introduction .......................................................................................................5

1. Etude de l’organisme ...................................................................................6

1.1. Présentation de l’organisme .......................................................................6

1.2. Organigramme de l'entreprise: ...................................................................7

1.3. Description de la structure concernée par le stage: .........................................7

2. Présentation du thème du stage.....................................................................8

2.1. Champ de l’étude et objet du stage .............................................................8

2.2. Planning prévisionnel du stage.................................................................. 10

3. Infrastructure informatique ......................................................................... 11

3.1. Matériels informatique ............................................................................ 11

3.2. Logiciels utilisés .................................................................................... 12

4. Etude préalable ........................................................................................ 17

4.1. Description de l’existant .......................................................................... 17

4.2. Critique de l’ex istant............................................................................... 20

4.3. Solutions proposées ............................................................................... 21

5. Etude conceptuelle ................................................................................... 22

6. Réalisation .............................................................................................. 24

6.1. 1ère étape: Extraction du projet depuis le dépôt ............................................ 24

6.2. 2ème étape: Configuration de la base de données .......................................... 25

6.3. 3ème étape : Dans la couche Modèle ........................................................... 28

6.4. 4ème étape : Dans la couche Vue ............................................................... 30

6.5. 5ème étape : Dans la couche Contrôleur ....................................................... 32

Page 3: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

6.6. 6ème étape : Le test ................................................................................ 34

6.7. 7ème étape : Mise à jour du dépôt. ............................................................. 35

Conclusion ....................................................................................................... 36

Glossaire ......................................................................................................... 37

Netographie ..................................................................................................... 38

Page 4: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Remerciement

Je tiens à remercier Mr. Zouari Fourat, le chef de projet à TriTUX pour

avoir veillé au bon déroulement de mon stage et pour m'avoir donné les

moyens et l'assistance nécessaire durant mon stage.

Je n’oublie pas aussi ses précieux conseils techniques durant mon

intervention au niveau du projet.

Page 5: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Introduction

Ce stage, d’une durée quatre semaines, a consisté à développer une

solution qui contrôle les droits des utilisateurs dans un projet de suivi de temps

nommé TimeIt.

Ce rapport présente le travail que j’ai effectué lors de mon stage au sein de

TriTUX qui s’est déroulé du 12/01/2009 au 06/02/2009

Je me suis familiarisé avec un environnement technique et un ensemble d’outils de

développement d’applications web sous Linux et une technique de gestion de projet

qui est employée par la communauté Open Source.

L’intervention est avéré très intéressante et très enrichissante pour mon

expérience professionnelle.

Le but de ce rapport n’est pas de faire uniquement une présentation

exhaustive de tous les aspects techniques que j’ai pu apprendre ou approfondir, mais

aussi, de manière synthétique et claire, de faire un tour d’horizon des aspects

techniques et humains auxquels j’ai été confronté.

Je vous expose dans ce rapport en premier lieu une présentation des

entreprises, ensuite, je vous explique les différents aspects de mon travail durant ces

quelques semaines et enfin, en conclusion, je résume les apports de ce stage.

Page 6: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude de l’organisme

Page 6 sur 38

1. Etude de l’organisme

1.1. Présentation de l’organisme

TriTUX S.A.R.L. est une SSII Tunisienne née par le regroupement, au sein d'un

réseau professionnel, des compétences provenant de divers horizons et partageant la

même conviction : que les nouvelles technologies de l'information et de la

communication (NTIC) basées sur les logiciels libres, constitueront le choix

fondamental face aux exigences de la société future, société de l'information.

Dynamique, rapide et accompagnant les changements et bouleversements induits

par l'émergence de nouvelles techniques et des nouveaux besoins des usagers,

TriTUX a repensé l'approche des activités liées aux NTIC par l'adaptation du choix

"Open Source " garantissant la sécurité, fiabilité, flexibilité, et surtout, une évolution

quotidienne vers le top de la technologie.

o Domaines d'activité:

Les domaines d’activités de TriTUX s’étendent sur plusieurs disciplines à

savoir :

- Bases de données libres,

- Logiciels libres,

- Développement de solutions avec des outils/ressources libres,

- Annuaires LDAP,

- Messageries mail,

- Messageries courtes (SMS) et Multimédia (MMS),

- Systèmes GNU Linux,

- Supervision et monitoring,

- Réseaux complexes,

- Sécurité et optimisation.

o Références de TriTUX:

TriTUX a développé plusieurs applications, en voici quelques références :

Page 7: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude de l’organisme

Page 7 sur 38

- Assurances BIAT,

- Tunisie Telecom,

- Mobile Services,

- Nouvelair,

- Alva,

- Sameteam,

- PixelJ,

- Attijari Bank,

- Groupe Délice Tunisie.

1.2. Organigramme de l'entreprise:

1.3. Description de la structure concernée par le stage:

Les activités dans l ‘entreprise se diversifient en plusieurs autres secteurs.

Le service développement d’applications web me semble le plus intéressant car il

est évolutif et nécessite de la réflexion et le savoir faire en plus qu’existe une

multitude de secteurs qui dépondent de ce dernier.

Direction Générale

DéveloppeurManager

Service commerciale

Service Développement

Service DesignService

developpement Web

Service documentation

Service Maintenance

Page 8: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Présentation du thème du stage

Page 8 sur 38

2. Présentation du thème du stage

2.1. Champ de l’étude et objet du stage

L’objectif majeur de ce stage est de trouver une solution au système de gestion de

permission des utilisateurs dans un projet de suivi de temps « TimeIt ». Il faut que

cette application différencie les utilisateurs hiérarchiquement de façon qu’il s’y trouve

des utilisateurs plus privilégiées que d’autres dont le but est d’empêcher ou

d’autoriser l’exécution de certaines taches, tel que la création, l’édition, la

suppression et la suspension de l’activité des utilisateurs.

Le schéma ci-dessous explique les huit différentes étapes à suivre durant ce stage.

Page 9: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Présentation du thème du stage

Page 9 sur 38

Se familiariser avec le Framework Symfony

Télécharger la dernière version projet (TimeIt) depuis le dépôt

Comprendre le fonctionnement de l’application

Etudier le problème

Préparer une solution primaire (par des schématisations)

Implémenter la solution dans le projet

Tester

Mettre à jour la version du dépôt

FIGURE 1: LES DIFFERENTES TACHES A EXECUTER (PAR ORDRE)

Page 10: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Présentation du thème du stage

Page 10 sur 38

2.2. Planning prévisionnel du stage

1ére

Semaine

2éme

semaine

3éme

semaine

4éme

semaine

Phase préliminaire

Etude de l’organisme

Documentation

Interventions dans le

projet

Rédaction du rapport

Page 11: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 11 sur 38

3. Infrastructure informatique

3.1. Matériels informatique

TriTUX possède une infrastructure informatique importante qui satisfait

convenablement à ses besoins, offrant à ses employées 8 ordinateurs pour chacun,

dont 5 ordinateurs portables et 3 ordinateurs de bureau en plus d’un serveur central

commun à tous les membres de l’entreprise.

Les ordinateurs :

Marque Processeur Mémoire vive Disque dure

DELL-Dimension 3.6 Ghz 1,5Go 120Go

DELL-Dimension 3.6 Ghz 1,5Go 120Go

DELL-Dimension 3.6 Ghz 1,5Go 120Go

IBM-Thinkpad DualCore 1.8Ghz 2Go

IBM -Thinkpad DualCore 1.8Ghz 2Go 100Go

TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go

TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go

TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go

o Le serveur :

Il se compose de 4 blocs :

Bloc n°1 :

- Architecture : PC-Intel

- Fréquence du microprocesseur : 3,6

GHz

- Capacité mémoire vive (RAM) : 3 Go

- Taille du disque dure : 250 Go.

- Domaine : moonfish.tux

FIGURE 2. PHOTO DU SERVEUR

Page 12: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 12 sur 38

- Description : gère tout ce qui est réseaux, internet et firewall.

Bloc n°2 :

- Architecture : PC-Intel

- Fréquence du microprocesseur : 2x1 GHz

- Capacité mémoire vive (RAM) : 3 Go

- Taille du disque dure : 300 Go.

- Domaine : shark.tux

- Description : Machines virtuelles (Plusieurs machines virtuelles ayant

chacun son adresse IP)

Bloc n°3 :

- Architecture : PC-Intel

- Fréquence du microprocesseur : 2x1 GHz

- Capacité mémoire vive (RAM) : 3 Go

- Taille du disque dure : 80 Go.

- Domaine : bluefish.tux

- Description : Gère la messagerie vocale sur un réseau IP, VoIP.

Bloc n°4 :

- Nature : JBOD

- Contrôleur/Connecteurs : SCSI

- Nombre maximal de disques dure : 8

- Disques : 120 Go+120 Go +250Go

- Description : Concaténation de disques durs

3.2. Logiciels utilisés

TriTUX utilise des logiciels libres qui fonctionnement sur la plupart des

distributions GNU/Linux. Les systèmes d’exploitation installés sur les clients sont

Ubuntu-Linux versions 8.04 et 8.10 et Debian 4.0 pour le serveur.

Page 13: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 13 sur 38

Voici une liste des logiciels les plus utilisées par l’entreprise :

Page 14: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 14 sur 38

o Symfony :

Symfony est un Framework MVC « Modèle-Vue-Contrôleur » libre entièrement

écrit en PHP 5. En tant qu’un Framework, il facilite et accélère le développement des

sites et d'applications Internet et Intranet.

FIGURE 3. MODELE MVC

Symfony intègre Proprel qui est lui aussi un Framework de mapping objet-

relationnel « ORM » offrant une technique de programmation informatique qui crée

l'illusion d'une base de données orientée objet à partir d'une base de données

relationnelle en définissant des correspondances entre cette base de données et les

objets du langage utilisé. On pourrait le désigner par « correspondance entre monde

objet et monde relationnel ».

Les fichiers de configuration employés par Symfony sont au format YAML qui est

un langage de sérialisation de données comme XML mais plus humain et facile à

interpréter.

o Apache HTTP Server :

Apache, est un logiciel de serveur HTTP produit par l'Apache Software Foundation.

C'est le serveur HTTP le plus populaire du Web. C'est un logiciel libre avec un type

spécifique de licence, nommée licence Apache.

Page 15: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 15 sur 38

Il est noté que Symfony exige l’activation du module REWRITE du serveur web

Apache, ce module permet aux développeurs d’utiliser un format personnalisable

d’adresses URL qui sont compréhensibles par n’importe quel visiteur et facilite la

tache d’indexation par les moteurs de recherche. Il existe différentes manières pour

activer le module RE_WRITE, la plus simple se fait via la commande « a2enmod

rewrite » dans la console de linux.

o MySQL :

MySQL est un système de gestion de base de données (SGBD). Selon le type

d'application, sa licence est libre ou propriétaire. Il fait partie des logiciels de gestion

de base de données les plus utilisés au monde, autant par le grand public

(applications web principalement) que par des professionnels, au même titre que

Oracle ou Microsoft SQL Server.

o PHP :

PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre

principalement utilisé pour produire des pages Web dynamiques via un serveur

HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété

de façon locale, en exécutant les programmes en ligne de commande. PHP est un

langage impératif disposant depuis la version 5 de fonctionnalités de modèle objet

complètes. En raison de la richesse de sa bibliothèque, on désigne parfois PHP

comme une plate-forme plus qu'un simple langage.

Il est noté que les versions 1.0.x de Symfony nécessite les versions 5.2.x et

supérieurs de PHP.

o Zend Studio for Eclipse 6.1.0 :

Zend Studio for Eclipse (Version 6.1.0) est un IDE pour les applications PHP

issu de Zend Studio et de la plate-forme Eclipse. Zend Studio for Eclipse offre des

fonctionnalités d'édition de code, de débogage, de refactoring et le support des tests

unitaires.

Page 16: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Infrastructure informatique

Page 16 sur 38

o Subversion :

Subversion (en abrégé svn) est un système de gestion de versions, distribué sous

licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient

volontairement sur les mêmes concepts (notamment sur le principe du dépôt

centralisé et unique) et considèrent que le modèle de CVS est le bon, et que seule

son implémentation est en cause.

o PostgreSQL8.3:

PostgreSQL est un système de gestion de base de données relationnelle et objet

(SGBDRO). C'est un outil libre disponible selon les termes d'une licence de type BSD.

Ce système est concurrent d'autres systèmes de gestion de base de données,

qu'ils soient libres (comme MySQL et Firebird), ou propriétaires (comme Oracle,

Sybase, DB2 et Microsoft SQL Server). Comme les projets libres Apache et Linux,

PostgreSQL n'est pas contrôlé par une seule entreprise, mais est fondé sur une

communauté mondiale de développeurs et d'entreprises.

o Trac 0.10.3:

Trac est un système Open Source de gestion complète de projet par

Internet/Intranet procurant une interface de contrôle de version de « subversion ».

o Firefox :

Mozilla Firefox est un navigateur Web gratuit, développé et distribué par la Mozilla

Foundation aidée de centaines de bénévoles grâce aux méthodes de développement

Open Source et à la liberté du code source.

Page 17: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude préalable

Page 17 sur 38

4. Etude préalable

4.1. Description de l’existant

Il s’agit d ’un logiciel de suivi de temps nommé TimeIt désigné pour un centre

appel, permettant de comptabiliser le temps consommé par un employé pour une

activité donnée.

Cette solution permet aux responsables du centre d’appel de consulter l’historique

d’activités des employés et de comptabiliser le temps de production brut pour chacun

d’entre eux pour une date ou une période au choix.

TimeIt permet en plus de calculer le temps consommé par un employé dans des

activités de natures différentes tel que :

en état de production,

en pause de déjeuner,

en attente faute de pannes techniques,

en formation,

en réunion…etc.

L’application TimeIt est conçu pour fonctionner en mode client/serveur puisque

elle est destinée pour une utilisation simultanée par plusieurs utilisateurs « l es

employés du centre d’appel », en plus il est fréquent que plusieurs requêtes seront

envoyés simultanément. TimeIt est une application web dynamique utilisant un

SGBD fonctionnant en mode client/serveur.

o Description du champ d’étude :

Le champ d’étude est concentré sur les droits d’utilisateurs (permissions).

TimeIt ne peut être exécutée qu’après avoir s’identifier. Pour que chaque

utilisateur puisse s’identifiée indépendamment elle offre aux utilisateurs autorisées la

possibilité de créer plusieurs comptes.

Il peut exister plusieurs types de comptes:

Page 18: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude préalable

Page 18 sur 38

- Des comptes d’utilisateurs simples,

- Des comptes des superviseurs,

- Des comptes d’administrateurs,

- Des comptes dont leurs privilèges sont au choix.

Pour différencier les utilisateurs les uns aux autres il faudra que chaque utilisateur

appartienne à un groupe ayant un certain niveau hiérarchique et que chaque groupe

ait une ou plusieurs permissions (voir la figure n°4).

La création d’un nouveau compte d’utilisateur est une procédure très fréquente.

Elle est gérée par les supérieurs de l’entreprise pour chaque recrutement d’un nouvel

employé.

Pour créer un nouveau compte il faut donner le nom complet de l’employée, un

login, un mot de passe, l’affecter à un groupe puis valider (voir la figure n° 5).

Permission Groupe

Possède

Avoir

Id

#groupe_parent

nom

*

1

1,n

1,n

Id

nom

FIGURE 4. MODELE ENTITEE-ASSIOCIATION (SIMPLIFIE)

Page 19: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude préalable

Page 19 sur 38

FIGURE 5. CREATION D'UN NOUVEAU COMPTE D'UTILISATEUR

Les groupes sont hiérarchisés de façon que :

Au sommet on trouve le groupe Administrateur.

Au dessous on trouve les groupes fils qu’eux-mêmes peuvent être parent

et ainsi de suite.

Admin

Groupe X

Groupe Z

Groupe R

Groupe U

Groupe Y

Groupe V Groupe W

FIGURE 6. HIERARCHIE DES GROUPES

Page 20: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude préalable

Page 20 sur 38

4.2. Critique de l’existant

TimeIt est en phase de test « Beta », nécessitant encore quelques corrections

pour passer à la version stable 1.0. L’une des nécessitées urgentes est lié avec la

gestion des utilisateurs et la restriction des actions.

o Tâches demandés:

Lors de l'édition ou création d’un nouveau compte d’utilisateur:

- Ne pas affecter un utilisateur à un groupe plus haut que le

groupe au quel appartient l'acteur (C’est le point qui sera

traiter dans ce rapport).

- Ne pas éditer des utilisateurs équivalents ou supérieurs

hiérarchiquement

Lors de la suppression d’un utilisateur:

- Ne pas effacer un utilisateur équivalent ou supérieur

hiérarchiquement

Il est noté que l’assignation des tâches est dirigée par le chef de projet, utilisant

une technique de collaboration employée par la communauté Open Source, l’une des

applications répondant à cette technique est nommée Trac.

Pour utiliser Trac il faut avoir un accès au serveur de l’entreprise et un compte

d’accès propre à ce dernier. L’accès se fait via l’adresse

http://dev.shark.tux/tridev/timeit (voir la figure n°7).

Page 21: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude préalable

Page 21 sur 38

FIGURE 7. GESTION DU PROJET TIMEIT SOUS TRAC

4.3. Solutions proposées

Comme une bonne solution, on a décidé que chaque groupe aura un poids

définissant son niveau hiérarchique de façon que le groupe le plus haut

hiérarchiquement et celui ayant le poids le plus faible.

Le contrôle de la permission d’utilisateurs s’effectue par la comparaison des poids

des groupes aux qu’ils appartiennent les utilisateurs.

Page 22: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude conceptuelle

Page 22 sur 38

5. Etude conceptuelle

D’après le modèle entité association (voir la figure n°4) et le schéma hiérarchique

des groupes (voir la figure n°6), on interprète que chaque utilisateur est affecté à un

seul groupe et que chaque groupe possède un seul groupe parent, définit par la clé

étrangère qui réfère à la clé primaire de la même entité « Groupe », cette relation

résulte un arbre (hiérarchique) de groupes.

o Idées proposées :

On doit savoir au début le niveau du groupe de l’utilisateur connecté par

rapport à un autre. Cette idée se traduit par l’ajout d’un nouvel attribut

« poids » de type entier dans l’entité « Groupe » (voir la figure n°8) qui

va nous permettre de savoir à quel niveau appartient le groupe.

En allant du bas en haut le poids s’affaiblit et vice-versa. L’administrateur

ne possédant pas de parent aura le poids 0 (voir la figure n°9).

Permission Groupe

Possède

Avoir

Id

#groupe_parent

nom

poids

*

1

1,n

Id

nom

1,n

FIGURE 8. MODELE ENTITE ASSOCIATION APRES AJOUT DE L'ATTRIBUT POIDSS

Page 23: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Etude conceptuelle

Page 23 sur 38

FIGURE 9.HIERARCHIE DES GROUPES AVEC LES DIFFERENTS NIVAUX

L’interdiction d’affectation de l’utilisateur à créer à un groupe interdit se fait

par l’élimination des groupes les plus hauts hiérarchiquement de la liste de

sélection du groupe.

Pour que TimeIt soit une application sécurisée on ajoute un contrôle au

niveau de l’action.

Page 24: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 24 sur 38

6. Réalisation

Pour clarifier les différentes procédures, on a réparti l’exécution en 7 étapes :

6.1. 1ère étape: Extraction du projet depuis le dépôt

L’extraction de la dernière version de la source de l’application TimeIt se fait via

l’outil subversion-client et plus précisément en utilisant la commande « svn » avec

l’option checkout « co » -1er paramètre (voir la figure ci-dessous).

FIGURE 10. EXTRACTION DU PROJET TIMEIT DEPUIS LE DEPOT

http://dev.shark.tux/svn/tritux/timeit/trunk - le 2ème paramètre

représente l’emplacement la dernière version du projet sur le serveur.

timeit –le 3ème paramètre, représente la destination qui sera le chemin

relatif du projet dans la machine locale (copie de travail).

Après l’extraction « checkout » le dossier racine du projet renfermera une dizaine

de répertoires, cette structure est définit par le Framework Symfony.

Page 25: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 25 sur 38

Figure 11. Structure du projet

6.2. 2ème étape: Configuration de la base de données

Le projet qu’on vient de l’extraire du dépôt, contient déjà la structure de la base

de données. Cette structure est enregistrée dans le fichier

timeit/config/schema.yml. En plus quelques données basiques telles que les

groupes, les utilisateurs et les activités de base sont enregistrées dans plusieurs

fichiers au format YAML sous le répertoire timeit/data/fixtures

Ces données existent statiquement dans des fichiers mais pas encore pour notre

SGBD « MySQL ».

Avant de procéder à la création de la base de données il faut tout d’abord

consulter le contenu du fichier de configuration de la base de données de notre

projet. Le fichier timeit/config/propel.ini qui contient tout les paramètres de la

base de données à créer (voir la figure ci-dessous).

Page 26: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 26 sur 38

On distingue les informations suivantes :

1. timeit : Nom de l’utilisateur

2. tiadmin : Mot de passe

3. localhost : Nom de l’hôte

4. timeit : Nom de la base de données

Configuration du nom de l’hôte :

localhost est déjà le nom d’hôte par défaut de notre machine.

La création d’un nouvel utilisateur et une base vide nécessite l’outil

MySQL CLI pour la console de Linux. La figure ci-dessous explique cette

procédure.

1 2 3 4

FIGURE 12. CONTENU DU FICHIER DE CONFIGURATION DE LA BD

Page 27: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 27 sur 38

FIGURE 13. CREATION DE LA BASE DE DONNEES ET LE NOUVEL UTILISATEUR

Connexion en tant que timeit et vérification de l’existence de la base de

données récemment crée. (Voir la figure n°14)

FIGURE 14. VERIFICATION DE L 'EXISTENCE DE LA BASE POUR LE NOUVEL UTILISATEUR

Pour le moment on a définit un nouvel utilisateur ayant tout les privilèges pour

exploiter sa nouvelle base de donnée. Cette base ne possède pas encore des tables

(pas de structure).

Page 28: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 28 sur 38

Maintenant il nous reste qu’a : générer les modèles, donner une structure à notre

base et l’alimenté par des données.

Symfony offre une option qui effectue ces trois taches d’une façon automatique.

FIGURE 15. GENERATION DES MODELES, STRUCTURATION DE LA BASE DE DONNEES ET CHARGEMENT DES DONNEES

Maintenant notre base de données possède une structure en plus qu’elle contienne

des données primaires. On peut maintenant lancer l’application pour vérifier le bon

fonctionnement via l’adresse http://localhost/projects/unstable/timeit/web. (Une

page d’authentification doit s’afficher).

6.3. 3ème étape : Dans la couche Modèle

o Ajout de l’attribut poids « weight » dans la table Groupe « sf_guard_group » :

Comme on l’a déjà mentionné précédemment il faut tout d’abord modifier la table

Groupe nommé « sf_guard_group » dans notre projet, et ceci en ajoutant un

attribut poids « weight » de type entier. Pour l’implémenter dans notre projet on

ouvre le fichier timeit/config/sfGuardPlugin_schema.custom.yml qui contient

le squelette de la table Groupe et Utilisateur écris au format YAML, et on ajoute

ensuite le nouvel attribut « weight » Comme le montre (la figure n° 16)

FIGURE 16. AJOUT DE L 'ATTRIBUT "WEIGHT"

o Surcharge de la méthode « save » de la classe mère « PluginsfGuardGroup » :

Avant de penser à surcharger la méthode save() de la classe

PluginsfGuardGroup, il faut tout d’abord penser à la façon dont la quelle la valeur

de « weight » sera attribuée lors de la création d’un nouveau groupe, es-ce que c’est

manuellement ou automatiquement ?

Page 29: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 29 sur 38

Le cas le plus simple et de choisir le premier choix, mais faut-il chercher à chaque

fois le niveau hiérarchique du groupe parent puis l’incrémenter par un pour créer le

nouveau groupe ? Que se passe-il si un utilisateur assigne au poids une valeur

quelconque ?

Donc la manière la plus propre et d’automatiser cette opération juste au moment

de la création du nouveau groupe.

On sait bien que Symfony intègre Propel qui traduit tout ce qui est modèle

relationnelle en modèle objet. Propel a déjà traduit l’entité Groupe

« PluginsfGuardGroup» en une classe et ses attributs en attributs de classe, cette

classe possède en plus des propriétés telque « getweight() »,

« getParentGroup() » et des méthodes tel que « save() », « delete() »…

Propel offre deux classes pour chaque table ; une qui est mère

« PluginsfGuardGroup » ayant les différents attributs, propriétés et méthodes et une

autre classe fille « sfGuardGroup » qui l’hérite et n’ayant aucune implémentation.

C’est dans la classe fille où on va implémenter la méthode save() qui existe déjà

dans la classe mère, cette dernier permette l’enregistrement des données d’un

nouveau groupe dans la base de donnée.

Pour automatiser cette procédure comme on l’a déjà mentionner précédemment il

faudra donc redéfinir notre propre méthode save(). En langage d’objet cette

technique s’appelle surcharge.

Page 30: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 30 sur 38

FIGURE 17.SURCHARGE DE LA METHODE SAVE()

o Mise à jour des modèles et la base de données:

Une fois qu’on a enregistré les modifications, on doit obligatoirement mettre à

jours la structure et les données de notre base de données, ce qui va ajouter le

nouvel attribut « weight » à la table sfGuardGroup comportant une valeur qui

répond au poids du groupe correspondant

FIGURE 18.GENERATION DES MODELES, STRUCTURATION DE LA BASE DE DONNEES ET CHARGEMENT DES DONNEES

6.4. 4ème étape : Dans la couche Vue

o Implémentation d’un comparateur de poids getCompareWeight():

Il est très pratique d’implémenter une solution par la quelle notre application

connaitra le niveau hiérarchique d’un groupe par rapport à un autre.

On distingue par conséquence 3 états:

Page 31: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 31 sur 38

- Poids de X < Poids de Y X est parent de Y : désigné par la

valeur 0

- Poids de X = Poids de Y X et Y sont frères : désigné par la

valeur 1

- Poids de X > Poids de Y X est fils de Y : désigné par la valeur

2

Cette solution est très simple à implémenter en plus qu’elle sera employée dans

toutes les situations où on veut contrôler un utilisateur. On aura donc plusieurs

appels à cette méthode. Symfony recommande l’implémentation des méthodes

fréquemment appelées dans le fichier timeit/lib/myTools.class.php.

FIGURE 19. IMPLEMENTATION DE LA METHODE GETCOMPAREWEIGHT()

o Modification de la liste de choix des groupes:

Si on pose cette question : Est-il logique qu’un simple employé créa un compte

d’un superviseur ou d’administrateur? Sûrement que ça n’a aucun sens !

La meilleur méthode est de limiter la liste de choix des groupes selon le poids du

groupe au qu’il appartient l’acteur. Par exemple : L’utilisateur Alpha dont le poids de

son groupe est 2 aura le droit de créer des utilisateurs ayant le même poids que sont

groupe ou plus, veut dire les groupes dont le poids est 2, 3, 4,5… et ainsi de suite.

Les groupes ayant les poids 0 et 1 ne doivent pas être affichés.

Page 32: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 32 sur 38

6.5. 5ème étape : Dans la couche Contrôleur

o Ajout de contrôle dans la méthode executeCreate() :

La méthode executeCreate() de la couche contrôle représente la logique de

l’opération d’ajout d’un nouvel utilisateur dans la base de donnée, et ce qu’on vient

de faire dans l’étape précédente représente un contrôle au niveau de l ’interface.

La base de donnée prend compte du nouvel utilisateur juste après la validation de

ses informations ; tel que son, le mot de passe et l’identificateur du groupe au qu’il

appartient. On vient précédemment d’implémenter une solution éliminant de la liste

de choix les groupes ayant un niveau hiérarchique plus haut que ce lui de l’acteur.

On se pose cette question : A quoi sert un deuxième test dans la couche

contrôleur tant que la liste des groupes comporte uniquement ceux qui sont

autorisées ? Tout simplement c’est une raison de sécurité.

Le diagramme ci-dessous expliquera la logique de ce contrôle.

Page 33: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 33 sur 38

Si validation

du formulaire

Page : Erreur 404 BD

TimeIt

Poids de l’acteur

<=

Poids de

l’utilisateur à créer

Vrai

Vrai

Page : Liste des tous les utilisateurs

Faux

Page : Edit (user)

Faux

Contrôle

Afficher

Afficher

Afficher

FIGURE 20.ORDINOGRAMME « EXECUTECREATE() »

Page 34: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 34 sur 38

La figure 30 montre la modification apportée à la méthode executeCreate(). Les

lignes de 32 à 36 représentent le contrôle.

FIGURE 21. AJOUT DU CONTROLE AU NIVEAU DU CODE

6.6. 6ème étape : Le test

Cette étape est vue la plus importante malgré qu’on a fini les implémentations,

mais qui assure son bon fonctionnement et la stabilité ? Il faut certainement exécuter

une série de test pour s’assurer ?

Si on s’identifie en tant qu’un superviseur on va constater que lors de la création

d’un nouveau compte d’utilisateur ; la liste de choix ne contient que les groupes dont

leur niveau hiérarchique est égal et inférieure au groupe à lequel on appartient ( voir

la figure n°22 ), ceci prouve que la modification subite au niveau couche vue a bien

jouée son rôle,

Il est aussi nécessaire de réaliser un test avancé pour être sûr que le contrôle

ajouté dans la couche contrôleur ne présentant aucun problème.

Malheureusement ce test ne fera pas objet de ce rapport pour la raison qu’il

nécessite trop de proèdres pour qu’on puisse le traiter. Il se présente par une

technique utilisée par les pirates pour attaquer certains sites web.

Page 35: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Réalisation

Page 35 sur 38

FIGURE 22.AJOUT D'UN NOUVEAU UTILISATEUR

o

6.7. 7ème étape : Mise à jour du dépôt.

Il nous reste maintenant qu’a mettre à jour la version du dépôt (qui existe sur le

serveur) pour que tout les participants à ce projet peuvent voir les changements et

les améliorées.

La commande svn commit transfère au serveur uniquement les fichiers qui ont

subits des modifications. Tous les développeurs peuvent actualiser leur copie de

travail via la commande svn up.

Figure 23. Mettre à jour la version du dépôt

Page 36: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Conclusion

Ce stage au sein de TriTUX m’a fait découvrir la vie professionnelle dans une

entreprise ayant une importante clientèle au niveau de la taille. L’esprit de la

collaboration de la communauté Open Source y est très présent, et l’aspect de la

technicité et de perfectionnisme apparaît dans chaque tâche.

Cette période de quatre semaines, bien que m’ayant peu apporté au niveau

enrichissement de connaissances techniques et scientifiques, m’a permis de

développer une méthodologie rigoureuse et efficace pour pouvoir participer au

développement du projet TimeIt. J’ai pris conscience de l’importance du savoir-être

(être dynamique, être motivé…) et des relations humaines seules capables des faire

avancer les choses.

Page 37: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

Glossaire

BSD: Berkel ey Sof tware Dis tribu tion

CLI: Command Line Interface

CVS: Concurrent Versions System

GNU: Gnu 's Not Unix

HTML: HyperTex t Markup Language

HTTP: Hyper text T ransfer Pro to col

IDE: Integrated Developm en t Environm ent

JBOD: Just a Bunch O f Di sks

LDAP: Lightweight Dir ector y Access Pro tocol

MMS: Mul timedia Messaging Servi ce

MVC: Model V i ew Controll er

NTIC : Nouvelles Technologies de l ’Inform ati on et de l a

Communication

ORM: Object Relational Mapping

PHP: Hyper tex t Pr epro cessor

SGBD : Systèm e de Gestion de Base de données

SGBDRO : Systèm e de Gestion de Bases de Données Obj ets

SMS: Shor t Message Servi ce

SQL: Str uctured Query Language

SSII : Soci été de Servi ce et d ’Ingéni eri e de l ’Inform ati que

SVN: SubVer sio N

VoIP: Voi ce Over IP

XML: eX tensibl e Markup Language

Page 38: Rapport stage de perfectionnement - Application de suivi de temps Web2.0 sous Symfony Framework & propel ORM

YAML: Yaml A in’ t Markup Language

Netographie

http://fr.wikipedia.org/wiki/Symfony Symfony Wikipedia 22 février 2009

http://fr.wikipedia.org/wiki/Apache_(logiciel) Apache http Server

Wikipedia 20 février 2009

http://fr.wikipedia.org/wiki/Mysql MySQL Wikipedia 24 février 2009

http://fr.wikipedia.org/wiki/Php PHP:Hypertext

Preprocessor

Wikipedia 26 février

2009

http://fr.wikipedia.org/wiki/Zend_(informatique) Zend (informatique)

Wikipedia 6 février 2009

http://fr.wikipedia.org/wiki/Subversion Subversion Wikipedia 7 février 2009

http://fr.wikipedia.org/wiki/PostgreSQL PostgreSQL Wikipedia 26 février

2009

http://fr.wikipedia.org/wiki/trac Trac Wikipedia 1 janvier

2009

http://fr.wikipedia.org/wiki/Firefox Mozilla Firefox Wikipedia 21 février 2009