Symfony pour gérer des médias - Prenez vos places …...Symfony Live – 11 et 12 juin 2009 4...
Transcript of Symfony pour gérer des médias - Prenez vos places …...Symfony Live – 11 et 12 juin 2009 4...
Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Symfony pour gérer des médiasXavier Lacot – Clever Age
2 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Plan de la présentation
Le besoin, les solutions existantes
cleverMediaLibraryPlugin Objectifs
Fonctionnalités
Architecture
Démo
TODO et Roadmap
3 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?
Gérer des médias : un besoin récurrent,
des solutions limitées
4 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Le besoin
La plupart des sites « de contenu » nécessite d'afficher des images
de plus en plus de médias sur le web
Applications spécifiques : Galeries Partage de photos etc.
5 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Les solutions Symfony (1/2)
sfMediaLibraryPlugin Symfony 1.1 seulement (à la 1.0)
Pas d'API permettant de contrôler les médias
Propel
sfAssetsLibraryPlugin À la 1.0 (pas de forms)
Pas d'API permettant de contrôler les médias
Faible extensibilité (tout est dans les actions)
Fonctionnalités limitées
Propel
6 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Les solutions Symfony (2/2)
pkMediaPlugin Fortement lié à pkContextCMSPlugin
Logique limitée, formats supportés limités
En chantier
sfGallery2Plugin Ah ah : no comment
7 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?cleverMediaLibraryPlugin
8 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Objectifs
Solution d'entreprise pour gérer des médias Support d'un grand nombre de formats de fichiers :
Images, vidéos
Documents
etc.
Abstraction du stockage API de gestion programmatique des médias Support de métadonnées Recherche, classement, droits d'accès Performance
9 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Formats de fichiers supportés
Images, au sens large (jpg, gif, png, etc.) Plusieurs adapteurs disponibles :
Outils Imagemagick GD
Documents PDF Documents de type Office
OpenOffice (avec par feu intégré, anéfé)
MS Office
Utilise PUNO (PHP ↔ OpenOffice UNO bridge)
Vidéos Ffmpeg / imagemagick
10 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Schéma
Abstraction du système de fichiers - cleverFilesystemPlugin
cleverMediaClasses du modèle
Imagehandlerhandlers
Officehandler
PDFhandler
...
GDAdapteradapters PUNO
AdapterImageMagick
handler...
11 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Abstraction du stockage cleverFileSystemPlugin (1/3)
Ensemble d'adapteurs Disk
FTP
S3
… contributions bienvenues !
API classique : Statistiques : exists / getSize / isDir / isFile
Opérations de dossiers : mkDir / listDir /
Opérations de fichiers : write / unlink / rename / read / copy
12 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Abstraction du stockage cleverFileSystemPlugin (2/3)
Création du système de fichiers :
$fs = cleverFilesystem::getInstance(array( 'type' => 'disk', 'root' => '/path/to/root', 'cache_dir' => '/tmp'));
// filesystem operations$fs->listDir('');
13 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Abstraction du stockage cleverFileSystemPlugin (3/3)
$fs = cleverFilesystem::getInstance('ftp_michel');
app: cleverFilesystemPlugin: filesystems: ftp_michel: cache_dir: /tmp type: ftp host: localhost username: michel password: p4ssw0rd Port: 21 root: ftpserv
ftp://michel:p4ssw0rd@localhost:21/ftpserv/
14 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Utilisation par API
// retrieve a folder$parent = ccMediaFolderPeer::retrieveByPath('meetings/paris');
// Create a folder$folder = new ccMediaFolder();$fields = array( 'name' => 'Symfony Live 2009', 'created_by' => $this->getUser()->getUserId(), 'updated_by' => $this->getUser()->getUserId() 'parent' => $parent);$folder->update($fields);$folder->save();
15 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Utilisation par API
// retrieve a folder$parent = ccMediaFolderPeer::retrieveByPath('meetings/paris');
// Create a file$image = new ccMedia();$fields = array( 'cc_media_folder' => $folder, 'source' => 'http://lacot.org/image.png', 'filename' => 'new_filename.png', 'updated_by' => $this->getUser()->getUserId(), 'created_by' => $this->getUser()->getUserId());$image->update($fields);$image->save();
16 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
tasks
17 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?
Démo
18 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Qu'est-ce qu'un réseau social ?TODO et roadmap
19 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
TODO et feuille de route
Migration vers Doctrine Stabiliser le code Ajouter une notion de « capacities », en fonction des adapteurs fonctionnels
Recherche : à intégrer Améliorer la documentation Permettre à l'administrateur de gérer les headers HTTP des médias
cleverFilesystemPlugin : ajouter des adapteurs Trouver un vrai nom, créer un site, motiver une communauté !
20 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Questions?
21 Symfony Live – 11 et 12 juin 2009Clever Age | Xavier Lacot
Nous contacter
Clever Age :
Agences :
Téléphone :
Web :
Contact commercial :
Contact technique :
37, boulevard des Capucines75002 Paris
Lyon, Bordeaux
+33 1 53 34 66 10
http://www.clever-age.com/