You are on page 1of 25

Rapport de stage

Clment MOYSAN

Licence Professionnelle Rseaux et Tlcommunications


Option Web Dveloppeur

Tuteur en entreprise :
Laurent DUBOIS

Anne universitaire : 2008/2009

Tuteur universitaire :
Harold TRANOIS

Rapport de stage

Sommaire
I. Introduction .............................................................................. 3
II. Prsentation du contexte de stage ............................................ 4
A. Prsentation de lentreprise MEDIASMART .......................................................... 4
1.

Prsentation de lentreprise ........................................................................................ 4

2.

Solutions techniques ................................................................................................... 6

3.

Les rfrences .............................................................................................................. 6

B. Enonc du sujet de stage ...................................................................................... 7

III. Prsentation technique des diffrents travaux .......................... 7


A. Prsentation du Framework utilis : Symfony ...................................................... 7
1.

Prsentation gnrale ................................................................................................. 7

2.

Prsentation technique du Framework....................................................................... 8

B. Site web laccompagnement international : TRUCLUC.................................... 12


1.

Analyse du projet ....................................................................................................... 12

2.

Dveloppement du site ............................................................................................. 13

C. Site web de lassociation contre lenlvement parental international : ALEPI ... 17


1.

Analyse du projet ....................................................................................................... 17

2.

Dveloppement du site ............................................................................................. 19

IV. Conclusion .............................................................................. 24


V. Glossaire ................................................................................. 25
VI. Liens utiles .............................................................................. 25

Rapport de stage

I.

Introduction

Dans le cadre de la validation de la licence professionnelle rseaux et


tlcommunications option Web Dveloppeur dveloppement de site intranet
extranet, un stage de 18 semaines (Du 9 mars au 10 juillet) dans une entreprise ma
t demand. Ce stage a t ralis dans lentreprise MEDIASMART, qui est une
entreprise de Web dveloppement qui ralise ou dite des sites.

Cette entreprise est base sur Paris mais jai effectu mon stage sur SaintQuentin tout en tant en communication avec lagence.

Ce stage ma permis de mettre en uvre mes connaissances vues tout au


long de lanne mais aussi celles des annes prcdentes. Il ma permis aussi
dapprendre tout en mettant en application un nouveau Framework base sur le
langage PHP, le Framework sappelle Symfony. Pendant cette priode, jai
commenc par dvelopper un site dit classique (statique et dynamique avec
gestion dun back-office) et jai fini le stage par un deuxime projet plus compliqu
avec la gestion des utilisateurs ou encore avec des fonctionnalits plus complexe.

Pour commencer, dans ce rapport vous aurez une synthse du contexte


professionnel, mais aussi un petit rsum sur les projets raliss durant le stage.

Ensuite vous aurez une partie plus technique. Je commencerai par vous
prsenter la partie analyse des projets, ensuite le dveloppement des projets avec
lexplication des diffrents problmes rencontrs, et je terminerai par une petite
conclusion de chaque projet.

Enfin pour terminer ce rapport, je vous ferai une petite conclusion de ce stage,
avec un bilan personnel sr comment jai ressenti le stage.

Rapport de stage
II.

Prsentation du contexte de stage


A.

Prsentation de lentreprise MEDIASMART


1.

Prsentation de lentreprise
a)

Prsentation gnrale

MEDIASMART (http://www.mediasmart.fr/) est une entreprise qui ralise plusieurs mtiers :

Audit et Conseil
Web Design
Ingnierie Web
E marketing et rfrencement

Cette entreprise est base dans le onzime arrondissement de Paris.


b)

Historique et organigramme de lentreprise

MEDIASMART a t cre dbut 2004. Cest une SSII (socit de services en ingnierie
informatique) qui avait comme activit principale le dveloppement dapplication web. De 2004
2008 lentreprise a eu une croissance importante de son activit principale. Et en 2009, elle a donn
un coup dacclrateur en ouvrant son capital un partenaire financier (Laurent DUBOIS) et en
faisant appel des oprations de croissance externe en amont et en aval (Socit de e-marketing et
un studio graphique).
Au jour daujourdhui, MEDIASMART a cet organigramme suivant :

Deux directeurs conseils qui dlivrent des prconisations ergonomiques et


fonctionnelles concourants latteinte des objectifs fixs.
Un directeur technique qui tudie les objectifs et les contraintes techniques et
budgtaires demands par le client.
Trois chefs de projets qui sont l pour faire la passerelle entre le bon droulement du
dveloppement des applications web (Ralisation du cahier des charges, Rpartition
des tches que ca soit dans le dveloppement, en graphisme ou en marketing,
Vrification du site avant dploiement sur un serveur, ) et le client qui a demand
cette application. Un seul chef de projet gre un projet dun client.
c)

Les activits de MEDIASMART

Audit et conseil :
MEDIASMART est lcoute de ce que souhaite le client. Le directeur conseil nhsite pas
apporter ses ides dans le projet, et donc conseille le client pour une meilleure ralisation du projet
dans un meilleur investissement. Suite cela ils laborent ensemble le cahier des charges, le
document des spcifications fonctionnelles et techniques, puis les gabarits fonctionnels (navigation et
tude ergonomique). Aprs la ralisation du site, MEDIASMART font des tests fonctionnels et de
performances avant de le proposer au client.

Rapport de stage

Ingnierie web :
MEDIASMART est avant tout une entreprise qui dveloppe des sites. Avant de commencer
dvelopper elle fait lanalyse du cahier des charges. Aprs lecture de ce document, elle numre les
spcifications techniques du site, elle en fait une architecture pour aprs faire une modlisation dune
base de donnes. Aprs cela sous un environnement LAMP, elle commence le projet en faisant
lintgration HTML/CSS du site, avec des interfaces riches (FLASH, AJAX, ) et avec une ergonomie
riche. Leur dveloppement se fait laide de PHP5 orient objet. Pour cela les dveloppeurs utilisent
principalement des Framework. Ils utilisent aussi des solutions open-sources de rfrence comme
Magento (utile pour les sites de-commerce) ou encore Typo3 (systme de gestion de contenu libre).
Pour stocker les donnes, MEDIASMART matrise les principales bases de donnes (MySQL, Oracle,
PostGreSQL). Aprs avoir fait les tests unitaires et fonctionnels (dbogage du site), ils mettent en
ligne le site tout en grant lhbergement.
Webdesign :
MEDIASMART soccupe de faire la cration de charte graphique web, et de cration de pages
types. Elle peut faire aussi les animations sur les sites, comme faire un bandeau flash, des animations
3D. Et enfin elle peut aussi faire de lE Marketing comme des bannires ou encarts publicitaires,
ralisation de newsletter,
E marketing / rfrencement :
MEDIASMART dtermine des expressions de recherche, ralise et intgre des prconisations
dans les pages du site, suit le positionnement du site, mais aussi des concurrents. Tout cela pour un
rfrencement naturel. Elle fait aussi du rfrencement commercial en mettant en place des liens
sponsoriss tout en faisant un suivi. Pour ce qui est du E marketing, elle ralise des campagnes de
mailing, elle fait du marketing viral qui est une forme de publicit la diffusion de laquelle le
consommateur contribue.
Maintenance :
MEDIASMART ralise trois types de maintenance :

Maintenance prventive : elle fait des supervisions serveurs, des supervisions


applicatives (permet de connatre la disponibilit des machines en termes de services)
et fait des tests sur lenvironnement de production.
Maintenance corrective : Elle fait des corrections de bug.
Maintenance volutive : Elle ralise une volution des interfaces et fonctionnelles. Et
peut aussi raliser une mise jour de versions.

Formation :
MEDIASMART propose ses services dans la formation de dveloppeur. Elle propose
diffrentes formations :

Sur le dveloppement en environnement LAMP (ensemble de logiciels libres


permettant de construire des serveurs de sites Web).
Sur le dveloppement en PHP5 orient objet avec laide du Framework Symfony.
Sur la solution e-commerce de Magento.
Sur la solution de gestion de contenu de Typo3.
Sur le rfrencement naturel.

Rapport de stage

Elle peut aussi former des webmasters sur Magento et Typo3. Et enfin elle propose une
formation a destinations des services marketing et commerciaux.

2.

Solutions techniques

MEDIASMART utilise pour raliser bien les projets diffrents outils, diffrents systmes et
diffrentes solutions de dveloppement.
Pour ce qui des outils utiliss en dveloppement, MEDISAMART utilise deux Frameworks qui
sont dvelopps en PHP5, qui utilise le modle MVC (Modle Vue Contrleur) :

Symfony : Cest un Framework dvelopp par une web Agency (appele Sensio). Pour avoir
plus de dtails sur ce Framework, je fais une description de cet outil dans la partie
Prsentation du Framework utilis : Symfony .
Zend Framework : De mme que Symfony, cest un Framework dvelopp par la socit
Zend, il a t ralis dans le but de simplifier le dveloppement tout en respectant les bonnes
pratiques.

Pour ce qui est des systmes utiliss, il y a Mac et linux pour ce qui des systmes dexploitation.
Pour permettre de raliser le site en local, MEDIASMART utilise lenvironnement LAMP/XAMP, enfin il
y a des serveurs mis en place pour permettre de tester les sites dvelopps sur les diffrents
navigateurs. Pour ce qui est de la gestion des donnes, les dveloppeurs utilisent gnralement
MySQL comme systme de gestion de base de donnes.
Enfin, ils utilisent diffrentes solutions dOpen Source, comme Magento ou Os-commerce pour le
dveloppement et la gestion dun site e-commerce. Et ils utilisent Joomla et Typo3 comme systme de
gestion de contenu (appel aussi CMS).

3.

Les rfrences

Enfin pour finir sur la prsentation de lentreprise, MEDISAMART a beaucoup de rfrences


en termes de clients. Ils ont tous types de client. Les demandes peuvent venir dune ville/rgion, ou
dune association (exemple : Association lenlvement parentale international => ALEPI) en passant
par des petites entreprises, style PME (entreprise votresommelier.com), et en finissant par des grands
noms, comme des grands centres commerciaux.
Voici quelques clients de MEDIASMART :

Rapport de stage
B.

Enonc du sujet de stage

Etude et ralisation de sites dynamique dites vitrine, dun site communautaires et si assez de
temps dun site E-Commerce. Les sites seront raliss en PHP/HTML laide du Framework
Symfony. Ces sites seront gnralement accompagns dune base de donnes, et le systme de
gestion de base de donnes choisis et MySQL.
Si le site E-Commerce est dvelopp, il sera dvelopp laide du CMS Magento.

III.

Prsentation technique des diffrents travaux


A.

Prsentation du Framework utilis : Symfony


1.

Prsentation gnrale

Symfony est un Framework MVC libre crit en PHP 5. Le projet a t lanc en 2005 par une
web agency franaise, Sensio. Au dbut ctait pour ces propres besoins et ensuite elle a souhait le
faire partager toute la communaut de dveloppeur PHP. En tant que Framework, il facilite et
acclre le dveloppement de sites et dapplications Internet et Intranet. Symfony propose de
nombreuses fonctionnalits :
-

Avec le modle MVC, cela permet de programmer en trois couches, et donc cela facilite la
maintenance et lvolution du code.
Performances optimises et un systme de cache pour garantir des temps de rponse
optimums.
Une gestion dURL rewriting performant, qui permet de formater lURL dune page
indpendamment de sa position dans larborescence fonctionnelle.
Un gnrateur de back office, qui permet aux clients de faire la gestion de son site sans
rentrer dans le code directement. Un dmarreur de module, cest dire de faire le lien
entre le programme dvelopper et la base de donnes. Avec laide dune ligne
commande, un module ou le back office peut tre gnr.
Symfony est multi langue, donc il y a un support pour la mise en place de
linternationalisation de son application web.
Le support du JavaScript, ainsi que de lAJAX. Par exemple des fonctions en PHP on t
cre pour pouvoir dvelopper en PHP et que cela doit tre interprter en AJAX.
Une architecture facilite, qui permet dinsrer facilement des plug-ins, mais aussi de
crer son propre plug-in.

Le Framework a de nombreux avantages par rapport dautre. Le code est dcoupl, la


configuration en cascade de ces modules permet de personnaliser facilement de nombreux
paramtres. La documentation est complte et elle est mis jour assez rgulirement, seul
inconvnient cest quelle est complte en anglais, et commence juste sinternationaliser.
Lapprentissage du Framework est facilit, avec deux bons tutoriaux en anglais, des livres, une API
riche

Rapport de stage
2.

Prsentation technique du Framework


a)

Installation et structure dun projet dvelopp avec Symfony

Symfony peut sinstaller de diffrentes faons, il y a linstallation via la bibliothque PEAR,


mais je vais vous parler de linstallation de Symfony avec larchive directement tlchargs sur le site
officiel de Symfony (http://www.symfony-project.org/).
Pour commencer il faut crer un rpertoire pour enregistrer les fichiers de ton application web.
Dans ce rpertoire il faut ensuite crer un rpertoire pour stocker les fichiers de la librairie du
Framework Symfony. Exemple :

Ensuite on rcupre les fichiers de larchive tlchargs prcdemment, et on les met dans le
dossier cre (dans cet exemple, cest le dossier vendor). Suite cela, les dveloppeurs du
Framework, on cre un fichier en PHP, qui permet de tester si la configuration du PC ou du serveur
est correct. Ce fichier est excutable en ligne de commande, et il se nomme :
check_configuration.php.
Si aprs lexcution du script, aucune erreur nest retourne, on peut vrifier que Symfony est
bien install en lanant cette commande :

Enfin, on peut commencer crer un projet. Dans Symfony les diffrentes applications
partagent le mme modle de donnes et sont regroupes par projet. En gnral, on a besoin dun
frontend, pour le front office, et dun backend, pour le back office. Alors pour crer son projet, il y a la
commande Symfony : generate:project qui gnre la structure par dfaut des rpertoires et cre les
fichiers ncessaires.
La structure dun projet cr laide de Symfony :

Rpertoire
apps/
cache/
config/
lib/
log/
plugins/
test/
web/

Description
Contient les applications du projet
Les fichiers en cache
Les fichiers de configuration du projet
Les librairies et classes du projet
Les fichiers de log du projet
Les plugins installs
Les tests unitaires et fonctionnels
Le rpertoire racine web (fichier css, js, )

Rapport de stage

Pour continuer dans son projet, il faut crer ces applications, la commande qui permet de faire
cela est generate:app. Voici un exemple de ligne de commande que lon peut crire :

Comme pour la commande pour crer un projet, cette commande gnre une structure par dfaut
dans le rpertoire apps/frontend :
Rpertoire
config/
lib/
modules/
templates/

Description
Les fichiers de configuration de lapplication
Les librairies et classes de lapplication
Le code de lapplication
Les gabarits principaux

Pour que le projet soit accessible partir dun navigateur web, il ne faut pas oubli de
configurer soit Apache directement, ou un VirtualHost. Pour la configuration, il faut mettre :

b)

Construction dune base de donnes dans un projet

Donc tout dabord, on peut utiliser soit MySQL, PostGreSQL, ou encore Oracle. Pour le
rapport, on va utiliser le systme de gestion de base de donnes MySQL. Alors avant dutiliser les
commandes Symfony, il faut crer une base de donnes en ligne de commande ou laide dune
interface qui gre la base. Ensuite il nous faut indiquer Symfony quelle base utiliser pour le projet :

Le premier argument correspond au DSN PDO (voir dfinition dans le glossaire), le deuxime
est le nom dutilisateur et le troisime le mot de passe pour la base de donnes.

Rapport de stage

Aprs la liaison entre le projet et la base, il faut maintenant crer les tables, et les contraintes
pour la base de donnes. Pour cela on va utiliser des fichiers crit en YAML qui est un langage utilis
par lORM doctrine. Voici un extrait dun fichier pour crer les tables, crit en YAML :

Aprs la cration du fichier schema.yml, La commande doctrine:build-sql gnre les


dclarations SQL dans le rpertoire data/sql, optimises pour le moteur de base de donnes. Pour
maintenant insrer les tables, il faut excuter cette ligne de commande :

Pour finir, la commande Symfony doctrine:build-model gnre les fichiers PHP qui seront
utiliss pour interagir avec la base de donnes dans le rpertoire lib/model.
On peut grer aussi linsertion de donnes initiaux ou de donnes pour tester son application,
on cre un fichier YAML pour chaque table utilis :

Puis pour les insrer dans la base de donnes, il faut utiliser : doctrine:data-load.
c)

Cration dun module pour une application

Depuis le dbut de lexplication du Framework, on a beaucoup utilis les lignes de commande


mais maintenant nous allons voir comment faire pour crer des pages web qui vont interagir avec la
base de donnes. Pour cela, un projet est constitu de plusieurs applications, qui chacune dentre elle
est faite de module. Un module contient diffrents fichiers PHP qui reprsente une fonctionnalit dune
application du projet. Symfony est capable de gnrer automatiquement pour un modle un module
qui fournit des fonctionnalits basiques (crer, modifier, supprimer, ).

10

Rapport de stage

La commande doctrine:generate-module permet de gnrer le module job dans lapplication


frontend sur le modle JobeetJob. Voici la structure dun module :

Rpertoire
actions/
templates/

Description
Les actions du module
Les gabarits du module
d)

Quelques commandes utiles pour un dveloppeur en Symfony

Pour gnrer un back office par dfaut pour la gestion de son site web :

Pour grer ladministration dun module cr dans une autre application :

Pour vider le cache du projet :

Pour rinstaller une base de donnes en une ligne de commande :

Pour installer un plug-in dans un projet :

Pour dployer le projet sur un serveur mutualis :

11

Rapport de stage
B.

Site web laccompagnement international : TRUCLUC


1.

Analyse du projet

Ce projet est le premier avoir t fait pendant le stage aprs avoir pass un bon mois
apprendre faire un site avec le Framework Symfony. Ce projet nous a permis de mettre en
application ce quon a vu dans le tutoriel tout en personnalisant en fonction du cahier des charges que
lon a eu. Sur ce projet on tait trois stagiaires avoir travaill dessus. Les deux autres taient
Thomas DELATTRE et Charles-Antoine LIVET. Pour commencer ce projet on a mis 4 semaines le
raliser, corriger les bugs daffichage avec les diffrents navigateurs, et corriger les petits soucis lors
de sa mise en ligne.
Ce projet consiste raliser un site daide laccompagnement linternational, c'est--dire
aider des personnes qui souhaitent aller ltranger pour proposer ou vendre ces services. Le but de
ce site est de permettre, aux personnes qui sont intresses, daller ltranger, davoir les meilleures
informations possibles pour bien organiser leur voyage sans faire appel une entreprise qui propose
la mme chose. Ce site comporte de nombreuses fonctionnalits comme un agenda mis en ligne, ou
encore des nombreuses pages dinformations sur laccompagnement linternational. Ce site ne
demande pas beaucoup de comptences en Symfony, mais demande surtout de lorganisation dans
la ralisation du modle conceptuel de donnes, car notre tuteur nous a demand dadministrer
pratiquement toutes les pages du site web.
Pour commencer, nayant peu de connaissance dans le domaine du graphisme des gabarits
des pages, on nous a demand de rechercher des Template sur un le site de Template Monster
(http://www.templatemonster.com). Aprs avoir cherch chacun de son cot, on a trouv un
Template qui correspondait ce que voulait notre tuteur, et qui correspondait bien au thme du site
web.
Aprs avoir lu le cahier des charges, sur les diffrentes fonctionnalits avoir sur le site, on a
commenc tablir le schma pour la base de donnes. Comme dit prcdemment, le premier
souhait tait que pratiquement tous les textes des pages soient administrables. Pour tout ce qui des
informations pour laccompagnement, il devait avoir 6 catgories. Le titre et le rsum de chacune des
catgories devaient tre modifiables, et dans chacune des catgories on avait des sous catgories qui
devaient tre modifiables aussi. Chaque sous catgorie avait son titre et son contenu pour le dtail.
Pour cela on a fait une table catgorie et une table sous catgorie qui avait lid de la catgorie
comme cl trangre.
Ensuite le second souhait est davoir un mini agenda mis en place sur le site, avec diffrents
types dvnements afficher. Pour chaque vnement, il y avait la priode, un titre, un rsum et le
dtail de lvnement. Si lvnement tait encore dactualit, il y avait la possibilit de se prinscrire
cet vnement.
Enfin le dernier souhait tait davoir la possibilit de grer des publicits avec plusieurs
formats possible (horizontale, verticale par exemple), sur diffrentes pages.
Pour finir, il y a aussi des fonctionnalits dites basiques dans un site web qui a t demand,
comme la gestion dun formulaire de contact, ou encore la gestion de linscription la newsletter.

12

Rapport de stage
2.

Dveloppement du site
a)

La mise en place des catgories et des sous catgories

Comme dit dans lanalyse du projet, le site porte essentiellement sur linformation
laccompagnement. Donc pour que cela soit plus clair sur le site, on a fait cela sur plusieurs pages,
donc on a divis cela en catgorie et en sous catgorie.
En sachant quon avait six catgories, on a dcid de faire cela dans un menu horizontale, et
pour les sous catgories, en ne sachant pas le nombre de sous catgories possible, on a dcid de
mettre en sous menus des catgories. Cela permet davoir la possibilit daccder aux deux sur les
diffrentes pages du site. Pour grer les sous catgories avec les catgories, on a dcid de stocker
les deux sparment dans des tableaux, ensuite en parcourant les deux tableaux on teste si lid de la
catgorie dans les deux tableaux est identique, si oui on affiche le sous menu.
Voici un extrait du code pour afficher le menu avec un sous-menu qui se trouve dans
apps/frontend/layout/_menu.php :

Pour ce qui est de lappel des informations ncessaires pour le menu dans la base de
donnes, les appels sont simples il suffit juste de faire une requte du style : SELECT * FROM
sousCategorie ;
Pour ce qui est du contenu des pages avec les informations demandes, on a utilis un
systme daffichage en onglet. C'est--dire que lorsque lon clique sur une catgorie ou une sous
catgorie, cela affiche les informations avec au dessus un menu en onglet avec les sous catgories
correspondantes la catgorie choisie. Quand on clique directement sur la catgorie, et non sur une
sous catgorie, on affiche la sous catgorie choisi par dfaut par ladministrateur du site.
Exemple daffichage dun menu en onglet :

13

Rapport de stage

Linterprtation du menu surlev par rapport aux autres est en faite la rcupration du nom
de longlet courant dans lurl que lon compare longlet parcouru et auquel on applique la
modification par rapport aux autres.
Pour finir cette partie, ladministration des catgories et des sous catgories est simple. On ne
peut pas ajouter de catgorie ni en supprimer, linverse des sous catgories. Par contre on peut
modifier les catgories ou les sous catgories. Enfin pour rendre par dfaut une sous catgorie dans
une catgorie, il suffit de cliquer sur un lien pour rendre longlet par dfaut au contraire des autres.
b)

La mise en place de lagenda

Pour ce qui est de lagenda, on a dcid, avec laccord du tuteur, de faire un agenda le plus
simple possible, avec la possibilit de faire un tri avec diffrents critres. Ensuite pour laffichage des
diffrents rsultats, il devait avoir 3 vnements par page, nafficher que les informations les plus
importantes (priode, type dvnement, titre de lvnement, le lieu, ainsi que le rsum de
lvnement). Puis il avait la possibilit den savoir plus, avec le dtail de lvnement. Pour cela il
devait cliquer sur un bouton et cela louvrait, laide de la librairie JS Mootools et du plug-in
Shadowbox, dans une fentre pop-up sans recharger la page. Pour la mis en place des diffrents
programmes pour le pop-up, jai d tlcharger sur le site du plug-in Shadowbox
(http://www.shadowbox-js.com) tous les fichiers ncessaires, puis mettre les fichiers JS dans le
rpertoire web/js, et le fichier CSS dans web/css. Le plus gros souci quon a rencontr avec cette
librairie, cest qu un autre endroit du site, la librairie JQuery est appele. Entre ces deux librairies il y
a un conflit, donc pour le rsoudre, il fallait faire :

Ensuite pour ce qui est du tri par critre, on a d faire deux types de tri :

Le tri par type dvnement, c'est--dire lutilisateur a le choix de cocher entre


plusieurs types dvnement.
Le tri par vnement venir ou vnement pass.

Quand lutilisateur va valider ces choix, les rsultats sont stocks dans des sessions. On a
choisi les sessions car comme dit prcdemment, on affiche trois rsultats par page, et donc pour
grer entre les diffrentes pages le tri par critre ctait la manire la plus simple grer. Quand
lutilisateur choisit ces critres, on supprime tout ce quil y a dans les sessions utiliss pour lagenda,
ensuite on met le(s) choix des types dvnements dans une session, et le choix pour lvnement
venir ou pas dans une autre session. Puis aprs avoir fait tout cela, on fait les requtes ncessaires
pour mettre en place les rsultats dans une pagination :

14

Rapport de stage

Enfin, comme dit dans lanalyse du projet, pour chaque vnement venir, lutilisateur peut en
savoir plus sur lvnement, et en plus il a la possibilit de se prinscrire. Dans le pop-up qui va
souvrir, il y a un bouton qui permet denvoyer sur une page avec un formulaire remplir. En haut de
la page pour la prinscription, on peut trouver des informations importantes concernant lvnement,
comme la priode et le titre. Aprs avoir bien rempli le formulaire, cela envoie un message
lutilisateur qui se prinscrit et cela rajoute une ligne dans la base de donnes.
Dans la partie back-office, il y a la gestion des prinscriptions. C'est--dire il affiche toutes les
prinscriptions faites pour chaque vnement prsent. Et pour chaque prinscrit, ladministrateur peut
linscrire dfinitivement lvnement, ou le supprimer de la liste. Pour la gestion de linscription il y a
un champ boolen de la base de donnes, qui se met true quand ladministrateur clique sur le
lien pour inscrire lutilisateur prinscrit. Pour terminer, il y a la possibilit de faire un export CSV de
toutes les prinscriptions faites.
c)

La gestion de la publicit du site

Pour le site, il tait demand de faire une gestion de la publicit pour diffrentes pages. Les
pages concernes sont :
-

La page daccueil (publicit horizontale)


La page des catgories et sous catgories (publicit verticale)
La page contact (publicit verticale)
Lagenda (publicit horizontale)

Il tait aussi demand que pour chaque page il y ait plusieurs publicits, et que lorsque
lutilisateur va cliquer sur la publicit cela doit lemmener vers un autre site.
Pour faire la gestion de la publicit, on a dcid de stocker dans la base de donnes, le titre
de la publicit, sur quelle page il faut lafficher, le nom du fichier, et le lien du site de la publicit.

15

Rapport de stage
Pour la gestion de laffichage, c'est--dire le changement de publicit sans rechargement de
page, on a rcupr un plug-in de la librairie Mootools qui sappelle smoothGallery. Pour linstaller
cest la mme faon que la shadowbox, et en plus cest configurable, comme pour le temps entre les
images.

Pour ce qui est de la gestion de la publicit dans la partie administrable, on affiche par page
de site les publicits dj mis en place avec le lien du site de la publicit et son titre. Comme on a pu
le voir prcdemment, il y a diffrents formats de publicit pour diffrente page, donc quand
ladministrateur va vouloir ajouter ou modifier sa publicit il faut vrifier la hauteur et la largeur de la
publicit :

d)

Autres fonctionnalits du site

Pour finir sur ce projet, je vais vous parler des fonctionnalits dites basiques prsent sur le
site.
Pour commencer il y a un formulaire qui permet de contacter ladministrateur du site, cest
dire la personne qui soccupe de grer laccompagnement linternational. Ce formulaire demande
pas mal dinformation, et donc il y a un script en JavaScript qui permet de vrifier sir les champs
obligatoires sont bien remplis et corrects, aprs cette vrification cela envoi un mail ladministrateur.
Ensuite, il y a la gestion des inscriptions et dsinscriptions la newsletter. Lutilisateur rajoute
son Email, et choisi sil souhaite sinscrire ou se dsinscrire. Toutes ces actions sont faites sans
rechargement de la page, donc laide de lAJAX. Aprs dans le back office, il y a la possibilit
dexporter en CSV tous les inscrits.

16

Rapport de stage
Enfin pour finir, tous les textes, les coordonnes, ldito est modifiable. Pour que
ladministrateur puisse mettre en place sont texte comme il souhaite sans taper une ligne dHTML, on
a utilis un diteur de texte avanc dj cr. Le nom de cet diteur est le fckEditor. Pour le mettre
en place il y a un plug-in dj ralis qui tait en ligne sur le site de Symfony. Donc on tlcharge le
plug-in, on le met en place dans le projet, et on appelle lditeur avanc dans le fichier
lib/form/doctrine/myForm.class.php :

C.
Site web de lassociation contre lenlvement parental
international : ALEPI
1.

Analyse du projet

Pour le deuxime projet, il ma pris un plus de temps car plus de fonctionnalit demande et il
fallait vraiment se perfectionner sur certaine chose dans le Framework Symfony, du genre il fallait que
jtudie en particulier un plug-in qui faisait la gestion dutilisateur avec des groupes dutilisateur. Mon
projet consistait faire une partie extranet sur un site vitrine dune association. Cette association
travail contre lenlvement parental international. Le but du projet est davoir un extranet qui permet
des parents victimes qui ont subi un enlvement de leur enfant par lautre parent, de remplir un
dossier directement en ligne, de remplir les diffrents profils utiles pour la justice, de se faire aider
pour les diffrentes dmarches, par des personnes qualifies qui sont consultants pour lassociation.
Pour commencer, il fallait faire une tude dtaille des diffrents groupes dutilisateur possible
pour le site. Les diffrents groupes sont :

Les parents victime : Ce groupe dutilisateur concerne les utilisateurs qui ont t
victime dun enlvement de leur enfant par leur conjoint ou Ex-conjoint. Pour
appartenir ce groupe, il faut faire une demande dans un formulaire de contact, suite
a cela ladministrateur (dtaill plus loin dans le rapport) lui envoie un lien qui va lui
permettre de remplir un formulaire avec diffrentes informations donner. Aprs avoir
envoy le formulaire, ladministrateur peut voir un dossier qui est en cours de
validation et sil le valide, le parent reoit ces identifiants pour se connecter. Aprs
connexion, il peut remplir son profil, le profil des enfants enlevs, le profil du parent
qui a enlev lenfant, le profil des avocats, la situation maritale et dans quel contexte
sest pass lenlvement. Il peut aussi remplir un dossier que je vous dtaillerai dans
la partie suivante.

17

Rapport de stage

Les consultants : Ce groupe dutilisateur est fait pour les personnes qui
travaillent pour lassociation. C'est--dire des personnes qui travaillent dans la justice,
et qui pourrait aider en termes de loi les parents victimes. Les consultants sont en
faites des chargs de dossiers. Leur inscription cest ladministrateur qui le gre, il doit
rentrer son nom, prnom et son adresse Email. cela va crer un compte et envoi un
mail au consultant concern avec les identifiants. Pour quil soccupe dun dossier
dun parent victime, il faut que ladministrateur lui attribue un dossier. Aprs il aura les
mmes droits quun parent victime pour remplir le dossier. Il peut aussi voir les autres
dossiers en cours mais ne peut rien faire dessus. Il a son profil aussi remplir, et il
peut voir tous les utilisateurs inscrits sur le site.

Les administrateurs : Ce groupe dutilisateur est compos des fondateurs de


lassociation. C'est--dire du prsident, des associs mais aussi dune secrtaire. Le
rle de ladministrateur est de tout grer dans la partie extranet, pour ce qui est de la
gestion du site vitrine il y a le back office de mis en place et donc ce nest pas lui de
le faire. Il gre toutes les inscriptions, que ce soit dun parent victime ou dun
consultant, il gre tous les dossiers, il peut les clturer, les suspendre, les ouvrir. Il
gre tous les utilisateurs, il peut les supprimer, il peut modifier leur profil, il peut mettre
un dossier un consultant. Enfin il a accs toutes les messageries des diffrents
dossiers.

Suite cela, il fallait faire diffrentes fonctionnalits pour les utilisateurs. Pour commencer jai
tudi les dossiers (avec mon tuteur de stage) pour les parents victimes. Donc on a dcid, de
sparer le dossier en quatre :

La partie historique : Cette partie du dossier concerne tous les vnements qui ont pu
se drouler lors de lenlvement de lenfant comme une discussion avec le parent qui
a enlev lenfant.
La partie action : Cette partie du dossier concerne toutes les actions ralises pour le
dossier, les actions peuvent tre envoyes aux consultants par mail, comme par
exemple appel avec lavocat du parent qui a enlev lenfant.
La partie profil : Comme dtaill prcdemment, cest dans cette partie quon remplie
tous les profils utiles pour les papiers.
La partie messagerie : Permet aux utilisateurs concerns par le dossier dchanger
des messages entre eux.

Pour les administrateurs et les consultants, il y a la possibilit de remplir une sorte de bloc
note pour indiquer quest ce quils ont faire. Et quand ils ont raliss leur tche ils peuvent indiquer
quelle a t faite.
Pour finir, dans lanalyse du projet, pour ce qui est de la partie site vitrine du site, et de la
partie back office ce nest pas moi mais les autres stagiaires qui sen sont occups.

18

Rapport de stage
2.

Dveloppement du site
a)

La gestion des utilisateurs

Comme dis dans lanalyse du projet, cette partie ma pris pas mal de temps. Car jai d tudier
fond un plug-in qui gre les utilisateurs. Jai d faire attention que certains utilisateurs nont pas les
droits par rapports dautres utilisateurs. Jai d faire aussi la gestion du changement de mot de
passe et lorsque que lutilisateur perdait son mot de passe. Puis faire aussi la gestion des inscriptions
et suppressions des utilisateurs.
Pour commencer, la gestion des diffrents groupes dutilisateur a t particulirement
complexe. Car en utilisant le plug-in sfDoctrineGuardPlugin, jai d utiliser trois tables pour raliser la
gestion des groupes. Voici un bref schma des trois tables :

sfGuardUser
Id
Username
Password

sfGuardUserGroup
IdUser
idGroup

sfGuardGroup
Id
Name
Description

Alors comme on peut voir sur le schma, dans la table sfGuardUserGroup elle a comme cl
trangre lid de la table sfGuardUser et lid de la table sfGuardGroup. Et les deux champs id sont
des cls primaires de la table.

Ensuite pour grer les droits en fonction en fonction du groupe de lutilisateur, jai d raliser
des tests dans chaque action des modules pour savoir dj sil tait bien connecter avec :

Cette fonction permet de tester si lutilisateur est connect, elle va en faite regard si la
session de lutilisateur nest pas vide. Ensuite je regarde dans quel groupe lutilisateur appartient, le
nom du groupe est comme la fonction isAuhtenticated() cest stock dans la session de lutilisateur :

Pour ce qui est du changement de mot passe, jai d faire plusieurs vrifications avant que
lutilisateur puisse changer. La premire vrification est lancien mot de passe, ensuite le nouveau mot
de passe doit faire plus de 6 caractres, puis la confirmation du nouveau mot de passe et enfin
ladresse mail rentre dans le profil de lutilisateur. Pour toutes ces vrifications jai utilis lAJAX avec
la librairie JQuery. Voici un exemple dappel pour utiliser lAjax en JQuery :

19

Rapport de stage

Enfin pour ce qui est de linscription des utilisateurs cest ladministrateur qui gre tout. Pour
un parent victime, quand il reoit un mail avec une demande douverture de dossier pour un nouvel
enlvement denfant il rentre lemail et a envoie aux parents victime le lien pour remplir le formulaire
de prinscription, aprs validation du formulaire lutilisateur sera cr.
Pour ce qui est des consultants, cela se passe de la mme faon, le consultant qui souhaite
intgrer lassociation doit remplir un formulaire aprs cela, ladministrateur doit remplir le nom, le
prnom et ladresse mail. Aprs avoir rempli tout ca, cela va crer le pseudo avec la premire lettre du
prnom et le nom du consultant et faire un mot de passe alatoire avec la fonction rand() de PHP et
ladresse email du consultant. Aprs cela envoi des identifiants par mail au consultant concern. Pour
ce qui est des administrateurs cela ce passe de la mme manire quavec les consultants.
Pour finir tous les utilisateurs ont un profil remplir. Dans chaque profil on peut ajouter des
photos didentit (200x200). Les administrateurs et les consultants peuvent voir tous les profils mais
seuls les administrateurs peuvent modifier les profils de tout le monde.

b)

La gestion des dossiers

Pour les dossiers, on va diviser cela en quatre parties. Je vais commencer par vous parler par
la demande douverture de dossier, ensuite je vous expliquerai comment sont faits les historiques du
dossier, les actions du dossier et des profils des diffrentes personnes qui interviennent pour le
dossier.
Pour la prinscription, le parent fait la demande auprs dun formulaire de contact, aprs avoir
bien rempli le formulaire cela va envoyer un mail ladministrateur pour, comme dit prcdemment,
quensuite lui gnre un lien pour remplir un formulaire dtaill avec de nombreuses informations sur
le parent victime, mais aussi sur le ou les enfants enlevs. Le lien que cela va gnrer est un lien avec
un token. C'est--dire le token est une chaine de caractre gnr alatoirement pour viter que tout
le monde ait accs ce formulaire et donc viter des prinscriptions intempestive. Voici un exemple
de lien qui peut tre envoy lutilisateur :
http://www.alepi.com/preInscription/5cd02cc38d726469e01bdcdb9805455424fbb4a6

20

Rapport de stage
Quand le parent va cliquer sur le lien ca va lenvoyer directement sur le formulaire de
prinscription. Je vrifie que le token qui a dans lurl soit le mme qui est dans la base de donnes.
Aprs que le parent est bien rempli le formulaire, tous les champs rentrs vont tre stocks dans la
base de donnes, cela va crer un utilisateur qui appartient au groupe parent victime . Pour ce qui
est de lusername cela va faire comme avec les consultants et les administrateurs (voire plus haut),
mais comme lusername doit tre unique pour viter les doublons, jai cre un petit programme que
temps le pseudo existe je rajoute deux chiffres alatoire derrire le pseudo (Exemple : cmoysan76).

Par contre les identifiants de connexion ne sont pas donns au parent. Cest cre mais il les
recevra que quand le dossier sera valid par un administrateur. Concernant les dossiers en attente de
validation, ladministrateur a trois possibilits :

Accepter le dossier : Cest mettre le dossier en statut En cours et envoyer les


paramtres de connexion au parent.
Demander plus dinformation : Le dossier reste en statut En attente de
validation et cela va ouvrir un champ texte pour que ladministrateur, par mail,
puisse demander aux parents les informations souhaites.
Refuser le dossier : Le dossier va tre supprim, lutilisateur aussi, et envoyer un
mail lutilisateur.

Ensuite dans le dossier il y a les historiques remplir. Les historiques correspondent en faite
tous les vnements qui ont pu se passer pendant louverture du dossier. Sur le site, dans un
historique on retrouve la date ou la priode, le titre de lhistorique, le rsum et si lutilisateur le
souhaite mettre un commentaire cet vnement. Tout historique est modifiable et supprimable. Pour
laffichage de tous les historiques, lutilisateur peut choisir entre 3, 5 ou 10 rsultats par page. Il peut
aussi les trier par du plus rcent au plus ancien ou linverse. Pour ces deux fonctionnalits, jai utilis
la mthode quon a utilis dans le projet prcdent pour afficher les vnements de lagenda (Voire
partie III / B) / 2. / b)) c'est--dire de stocker tous les choix de lutilisateur dans une session. Enfin il y a
la possibilit dexporter tous les historiques dans un document PDF. Pour cela jai d utiliser Zend
Framework pour Zend-Pdf. Pour le mettre dans Symfony cest simple il suffit de le mettre dans le
mme dossier que la librairie de Symfony, et mettre dans le fichier de configuration
projectConfiguration.class.php qui se trouve dans le dossier config/ :

21

Rapport de stage

Puis pour lappeler dans la fonction o lon en a besoin, il faut mettre :

Donc aprs pour ce qui lcriture du document PDF, jai d utiliser la documentation de Zend,
car en faite il faut tout placer par soi-mme. Mais aprs tude ceci sest fait assez facilement.
Pour ce qui est des actions sur le dossier, cest en faite tout ce qui doit tre ou ce qui a t fait
par le parent ou les personnes qui soccupent du dossier. Pour la gestion et laffichage cest la mme
chose quavec les historiques sauf quil ny a pas le champ commentaire, et en faite il peut choisir un
destinataire. Quand il veut ajouter ou modifier une action il a la possibilit denvoyer le dtail de
laction aux destinataires par mail, et lui reoit une copie.
Enfin il y a les diffrents profils dans le dossier, c'est--dire pour que le dossier soit complet il
faut des informations sur diffrentes personnes concernes par lenlvement. Donc on demande au
parent de remplir des informations sur lui, le(s) enfant(s) qui ont t enlev, le parent qui a enlev
lenfant, lavocat du parent, lavocat du parent rapteur , la situation maritale et dans quel contexte
lenfant a t enlev. Toutes ces informations sont ensuite stockes en base et affichs sur diffrentes
pages o le parent peut naviguer avec un menu horizontal mis en place sous chaque profil. Enfin le
consultant ou un administrateur peut lexporter en document PDF.
Pour faciliter la navigation pour les consultants et les administrateurs, sur une page du site on
peut voir des informations sur le dossier sur le parent victime, et deux menus sont mis en place :
Un menu avec la messagerie, les historiques, les actions et les profils. Quand il va
naviguer entre ces diffrentes pages, il pourra changer de pages sans revenir la
page daccueil du dossier avec la mis en place du mme menu sur les diffrentes
pages.
Un menu pour exporter les historiques, les actions, et les profils en document
PDF.

22

Rapport de stage
c)

La gestion de la messagerie

Pour terminer sur ce projet, je vais vous parler de la mise en place dune mini messagerie.
Cette messagerie a t mise en place dans le but de discuter entre personne qui soccupe dun
dossier. Pour chaque dossier, il y a une messagerie mis en place. Il y a aucune liaison entre les
diffrentes messageries.
Quand un utilisateur va vouloir poster un message, il doit remplir lobjet du message, le
contenu du message et il doit choisir le destinataire du message. Il a aussi la possibilit de rajouter
son message en intgralit dans les actions du dossier en question. Quand il valide son formulaire, le
message est stock dans la base de donnes avec lid du dossier en question, lid de lutilisateur et lid
du destinataire. Juste aprs, cela va crer un nouveau message vide avec le mme objet, lauteur
devient le destinataire, et le destinataire devient lauteur. Cest fait pour que lautre personne puisse
rpondre au premier message. Pour avertir lautre personne ca envoi par mail le message de la
premire personne et en mme temps un lien du mme style que la prinscription c'est--dire avec un
token. Quand il va cliquer sur le lien cela va lui renvoyer soit sur le formulaire pour rpondre et donc
mettre jour le message vide sil est connect, sinon il doit ce connecter et aprs connexion cela lui
renvoie directement sur la bonne page et non sur la page par dfaut lorsque lon se connecte
autrement.
Pour grer cela jai d modifier le plug-in sfGuardDoctrinePlugin de Symfony, et donc jai
cr une fonction quand on se connecte pour la messagerie et une autre autrement. Alors pour tester
si cest la bonne personne je rcupre le token et lid du message quil y a dans lURL. Avec lid du
message je regarde si cest le bon auteur, si oui jaccepte quil rponde aux messages, sinon je
renvoie le formulaire de connexion.

Quand la personne va rpondre aprs avoir rentre ces paramtres didentification, cela refait
la mme chose que lorsqu on poste un nouveau message.
Pour chaque messagerie, jaffiche sur la page tous les messages qui ont t posts, tris par
objet et par date. Chaque message est modifiable ou supprimable par son propritaire,
ladministrateur peut modifier ou supprimer tous les messages.
Pour ladministrateur et les consultants, quand ils vont cliquer dans le menu sur
Messagerie , cela va afficher une page avec les diffrents dossiers avec la date et lauteur du
dernier message post.

23

Rapport de stage
IV.

Conclusion

Pour finir sur le rapport, les deux projets tudis et dvelopps ont permis de
mettre en application ce quon a p voir au dbut du stage. Le site TRUCLUC est un
site plus vitrine que le site ALEPI, qui a demand plus dapprofondissement, plus de
rflexion dans la ralisation de ce projet. Lavantage des deux sites est quils peuvent
tre amliors, il y a la possibilit de rajouter de nouvelles fonctionnalits, doptimiser
le code, Mais le plus gros problme rencontr dans les deux cest lors de la mise
en production il y a eu des soucis que ca soit graphique (problme avec diffrents
navigateurs) ou technique (correction de code en fonction du serveur), donc pas mal
de perte de temps pour des corrections de bugs.

Pour conclure, je vais vous faire mon bilan personnel, le stage ma beaucoup
apport. C'est--dire par rapport mon dernier stage ralis pour la fin de mon
cursus scolaire en DUT informatique pour lIUT de Lens, jai pu travailler en quipe
avec deux autres stagiaires. Cette exprience ma permis apprendre tre
solidaire, aller aider les personnes qui sont en difficults, et me faire aider quand
moi jtais bloqu sur quelque chose. Cela ma permis aussi damliorer mon
autonomie, car durant le stage je nai fait que dapprendre de nouvelle chose, et ds
le dbut jai d apprendre par moi-mme pour pouvoir continuer et dvelopper
pendant mon stage.

Sur le plan technique, jai appris de nouvelle chose mais jai pu aussi mettre
en application ce que lon avait vu pendant toute lanne. Pour mes nouvelles
connaissances, jai pu apprendre une nouvelle faon de dvelopper, mme si cela
ressemble beaucoup au Framework vu pendant lanne, Symfony est encore
diffrent dans son organisation que le Zend Framework. La ressemblance est que
cest dvelopp laide du modle MVC qui est trs utile pour la maintenance ou
une mis jour des sites. Jai pu aussi utiliser Zend Framework car il est possible de
lintgrer dans le Framework de Symfony. Autrement jai pu aussi revoir les bases du
dveloppement de site web, et me perfectionner dans le design dun site web (CSS).
Jai ensuite retravailler laide du dpt SVN, cela ma permis de me perfectionner
dans ce domaine comme avec la configuration dApache. Pour finir jai approfondi
mes comptences dans lutilisation de JavaScript et de lAJAX en utilisant diffrentes
librairies.

24

Rapport de stage

V.

Glossaire

DSN PDO : Le DSN contient les informations ncessaires pour se connecter la base. Et PDO est
un driver qui permet de faire la liaison entre le PHP et le systme de gestion de base de donnes.

MVC : Le Modle-Vue-Contrleur (en abrg MVC, de l'anglais Model-View-Controller) est une


architecture et une mthode de conception qui organise l'interface homme-machine (IHM) d'une
application logicielle.

Framework : un Framework est un ensemble de bibliothques, d'outils et de conventions


permettant le dveloppement d'applications.

PEAR : (pour PHP Extension and Application Repository) est une collection de bibliothques PHP.
C'est aussi une application qui permet de grer les bibliothques (installer ou mettre jour une
bibliothque).

CMS : Un systme de gestion de contenu ou SGC ((en) Content Management Systems ou CMS) est
une famille de logiciels destins la conception et la mise jour dynamique de site web ou
d'application multimdia.

VI.

Liens utiles
http://www.symfony-project.org/ : Site officiel du Framework de Symfony, on y
retrouve des tutoriels, documentation, plug-in, (site en anglais).
http://www.developpez.net/forums/f663/php/bibliothequesframeworks/symfony/ : Communaut de dveloppeurs en Symfony, trs utile
lorsque quon est bloqu sur quelque chose.

http://www.php.net/manual/fr/ : Documentation sur le langage PHP.

25

You might also like