SlideShare une entreprise Scribd logo
1  sur  11
Développer sur




Brice Gaillard - http://www.bricegaillard.com
Le dataModel

Elgg s’interface à la base données grâce aux classes
ElggEntity

Il n’est pas recommandé de toucher directement à
la base de données

Il est possible d’étendre les objets ElggEntity grâce
aux métadatas et aux annotations
Le dataModel


      ElggEntity
                      {         Global Unique ID (GUID)
                                Owner GUID
                                Site GUID
                                Access ID
                                Subtype



ElggObject       ElggUser          ElggSite          ElggGroup

Ex: blog post,   Décrit les        Décrit chaque      Décrit des
bookmark, ...    utilisateurs     instance de elgg     groupes
Architecture d’un plugin
       myplugin

         start.php
          actions
              save.php
          languages
              fr.php
          views
                  default
                       myplugin
                            css.php
                            myview.php
Squelette d’un fichier start.php
 function myplugin_init() {

     // Load system configuration
     global $CONFIG;

     // Load the language file
     register_translations($CONFIG->pluginspath . "myplugin/languages/");

     // Extend system CSS with our own styles, which are defined in the myplugin/css view
     extend_view('css','myplugin/css');

     // Register a page handler, so we can have nice URLs
     register_page_handler('myplugin','myplugin_page_handler');
 }

 function myplugin_page_handler($page) {
    include(dirname(__FILE__) . "/index.php");
 }

 register_elgg_event_handler('init','system','myplugin_init');

 // Register actions
 global $CONFIG;
 register_action("myplugin/add",false,$CONFIG->pluginspath . "myplugin/actions/add.php");
Les vues

Elgg dispose de sets d’interfaces appelés view type
Exemples de view type :
 •HTML standard
 •RSS
 •HTML optimisé pour l’iPhone
 •...
Le view type par défaut est default
Il y a deux façons de changer le view type :
 •En le spécifiant dans l’url (ex: http://your-elgg-site.domain/pg/your/
 site/page/?view=rss)
 •En appelant la fonction set_input (ex: set_input(‘view’, ‘iphone’)
 dans votre plugin de détection de navigateur)
Comment utiliser une vue ?


Les vues sont stocker dans le répertoire views/default/ à la
racine de elgg et dans chaque plugin

Pour afficher une vue il faut utiliser la fonction elgg_view
ex: echo elgg_view(‘input/text’, array(‘internalname’ => ‘username’));


Il est possible d’étendre une vue grâce à la fonction extend_view
ex: extend_view(‘css’, ‘my/custom/css’);
Comment passer des variables à une vue ?


Les variables sont passées en paramètre de la fonction elgg_view
ex: echo elgg_view(‘input/text’, array(‘internalname’ => ‘username’));


Elles sont ensuite accessibles dans la vue via le tableau $vars
Ex: $vars[‘internalname’] retournera ‘username’


Certaines variables sont accessibles depuis n’importe quelle vue :
  •$vars[‘url’] : contient l’url du site
  •$vars[‘user’] : contient l’objet de l’utilisateur authentifié
  •$vars[‘config’] : contient la configuration normalement accessible depuis la
  variable globale $CONFIG
Les actions
Les actions sont un moyen d’interagir avec l’utilisateur :
  •L’authentification
  •L’insertion, la modification ou la suppression de données
Les actions sont accessible via l’url :
http://monsite.domain/action/monplugin/monaction
Les actions sont déclarées dans start.php du plugin
ex: register_action(‘monplugin/monaction’, false, $CONFIG->pluginspath .
‘monplugin/actions/monfichieraction.php’);

Fonctions utiles :
  •get_input() - Récupère les arguments passés via la méthode GET ou POST
  •forward() - Redirige vers l’url de la page passé en argument
  •system_message() - Affiche un message de confirmation
  •register_error() - Affiche un message d’erreur
Contrôle d’accès


Un contrôle d’accès est définis pour chaque entité (Access ID)

3 types de contrôles d’accès sont définis par défaut :
 •0 - Seul le créateur peut accéder à l’entité
 •1 - Seul les utilisateurs authentifiés peuvent accéder à l’entité
 •2 - Tout le monde peut accéder à l’entité

Autres fonctions permettant le contrôle d’accès :
 •isloggedin()
 •isadminloggedin()
 •gatekeeper()
 •admin_gatekeeper()
Liens utiles




                 •http://docs.elgg.org/wiki/Main_Page
                 •http://reference.elgg.org/




Brice Gaillard - http://www.bricegaillard.com

Contenu connexe

Tendances

Php mysql cours
Php mysql coursPhp mysql cours
Php mysql courszan
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
การบันทึกและการออกจากโปรแกรม
การบันทึกและการออกจากโปรแกรมการบันทึกและการออกจากโปรแกรม
การบันทึกและการออกจากโปรแกรมเทวัญ ภูพานทอง
 
Html5 2
Html5 2Html5 2
Html5 2TECOS
 

Tendances (8)

Apprenez le jQuery
Apprenez le jQueryApprenez le jQuery
Apprenez le jQuery
 
JQuery
JQueryJQuery
JQuery
 
Php mysql cours
Php mysql coursPhp mysql cours
Php mysql cours
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
การบันทึกและการออกจากโปรแกรม
การบันทึกและการออกจากโปรแกรมการบันทึกและการออกจากโปรแกรม
การบันทึกและการออกจากโปรแกรม
 
Revista cy sdic2010
Revista cy sdic2010Revista cy sdic2010
Revista cy sdic2010
 
Html5 2
Html5 2Html5 2
Html5 2
 

En vedette

Introduction to ELGG, the Open Source Social Network Platform
Introduction to ELGG, the Open Source Social Network PlatformIntroduction to ELGG, the Open Source Social Network Platform
Introduction to ELGG, the Open Source Social Network PlatformMobicules Technologies
 
Tongo.asia - L'assurance communication
Tongo.asia - L'assurance communicationTongo.asia - L'assurance communication
Tongo.asia - L'assurance communicationBrice Gaillard
 
L'art des déchets (chiffres remaniés)
L'art des déchets (chiffres remaniés)L'art des déchets (chiffres remaniés)
L'art des déchets (chiffres remaniés)Brice Gaillard
 
Tongo.asia - How we are going to break the language barrier
Tongo.asia - How we are going to break the language barrierTongo.asia - How we are going to break the language barrier
Tongo.asia - How we are going to break the language barrierBrice Gaillard
 
Cross Border Selling: Breaking the Language Barrier with Automated Translation
Cross Border Selling: Breaking the Language Barrier with Automated TranslationCross Border Selling: Breaking the Language Barrier with Automated Translation
Cross Border Selling: Breaking the Language Barrier with Automated Translationkantanmt
 
How to Build Your Own Social Network with Elgg?
How to Build Your Own Social Network with Elgg?How to Build Your Own Social Network with Elgg?
How to Build Your Own Social Network with Elgg?Jaakko Naakka
 
Hieber - Language Endangerment & Nationalism
Hieber - Language Endangerment & NationalismHieber - Language Endangerment & Nationalism
Hieber - Language Endangerment & NationalismDaniel Hieber
 

En vedette (8)

Introduction to ELGG, the Open Source Social Network Platform
Introduction to ELGG, the Open Source Social Network PlatformIntroduction to ELGG, the Open Source Social Network Platform
Introduction to ELGG, the Open Source Social Network Platform
 
Tongo.asia - L'assurance communication
Tongo.asia - L'assurance communicationTongo.asia - L'assurance communication
Tongo.asia - L'assurance communication
 
L'art des déchets (chiffres remaniés)
L'art des déchets (chiffres remaniés)L'art des déchets (chiffres remaniés)
L'art des déchets (chiffres remaniés)
 
Tongo.asia - How we are going to break the language barrier
Tongo.asia - How we are going to break the language barrierTongo.asia - How we are going to break the language barrier
Tongo.asia - How we are going to break the language barrier
 
Tongo.Asia
Tongo.AsiaTongo.Asia
Tongo.Asia
 
Cross Border Selling: Breaking the Language Barrier with Automated Translation
Cross Border Selling: Breaking the Language Barrier with Automated TranslationCross Border Selling: Breaking the Language Barrier with Automated Translation
Cross Border Selling: Breaking the Language Barrier with Automated Translation
 
How to Build Your Own Social Network with Elgg?
How to Build Your Own Social Network with Elgg?How to Build Your Own Social Network with Elgg?
How to Build Your Own Social Network with Elgg?
 
Hieber - Language Endangerment & Nationalism
Hieber - Language Endangerment & NationalismHieber - Language Endangerment & Nationalism
Hieber - Language Endangerment & Nationalism
 

Similaire à Draft - Developper Sur Elgg

Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJSVISEO
 
Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Netvibes
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Comment traduire ses bases de données sans douleur
Comment traduire ses bases de données sans douleurComment traduire ses bases de données sans douleur
Comment traduire ses bases de données sans douleurDavid Paccoud
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Engineor
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docxVincentBweka
 
Atelier WordPress: Création d’extension WordPress
Atelier WordPress: Création d’extension WordPressAtelier WordPress: Création d’extension WordPress
Atelier WordPress: Création d’extension WordPressIZZA Samir
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Introduction à Sinatra
Introduction à SinatraIntroduction à Sinatra
Introduction à SinatraRémi Prévost
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en goAbdoul Kader Sarambe
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2dhugomallet
 
Dévelopement extensions WordPress
Dévelopement extensions WordPressDévelopement extensions WordPress
Dévelopement extensions WordPressIZZA Samir
 

Similaire à Draft - Developper Sur Elgg (20)

Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJS
 
Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007Atelier autour de UWA à ParisWeb 2007
Atelier autour de UWA à ParisWeb 2007
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Comment traduire ses bases de données sans douleur
Comment traduire ses bases de données sans douleurComment traduire ses bases de données sans douleur
Comment traduire ses bases de données sans douleur
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
démonstration code source site web ecole.docx
démonstration code source site web ecole.docxdémonstration code source site web ecole.docx
démonstration code source site web ecole.docx
 
Atelier WordPress: Création d’extension WordPress
Atelier WordPress: Création d’extension WordPressAtelier WordPress: Création d’extension WordPress
Atelier WordPress: Création d’extension WordPress
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Introduction à Sinatra
Introduction à SinatraIntroduction à Sinatra
Introduction à Sinatra
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Living Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptxLiving Documentation (TDD, BDD).pptx
Living Documentation (TDD, BDD).pptx
 
Cours yeoman backbone box2d
Cours yeoman backbone box2dCours yeoman backbone box2d
Cours yeoman backbone box2d
 
Dévelopement extensions WordPress
Dévelopement extensions WordPressDévelopement extensions WordPress
Dévelopement extensions WordPress
 

Draft - Developper Sur Elgg

  • 1. Développer sur Brice Gaillard - http://www.bricegaillard.com
  • 2. Le dataModel Elgg s’interface à la base données grâce aux classes ElggEntity Il n’est pas recommandé de toucher directement à la base de données Il est possible d’étendre les objets ElggEntity grâce aux métadatas et aux annotations
  • 3. Le dataModel ElggEntity { Global Unique ID (GUID) Owner GUID Site GUID Access ID Subtype ElggObject ElggUser ElggSite ElggGroup Ex: blog post, Décrit les Décrit chaque Décrit des bookmark, ... utilisateurs instance de elgg groupes
  • 4. Architecture d’un plugin myplugin start.php actions save.php languages fr.php views default myplugin css.php myview.php
  • 5. Squelette d’un fichier start.php function myplugin_init() { // Load system configuration global $CONFIG; // Load the language file register_translations($CONFIG->pluginspath . "myplugin/languages/"); // Extend system CSS with our own styles, which are defined in the myplugin/css view extend_view('css','myplugin/css'); // Register a page handler, so we can have nice URLs register_page_handler('myplugin','myplugin_page_handler'); } function myplugin_page_handler($page) { include(dirname(__FILE__) . "/index.php"); } register_elgg_event_handler('init','system','myplugin_init'); // Register actions global $CONFIG; register_action("myplugin/add",false,$CONFIG->pluginspath . "myplugin/actions/add.php");
  • 6. Les vues Elgg dispose de sets d’interfaces appelés view type Exemples de view type : •HTML standard •RSS •HTML optimisé pour l’iPhone •... Le view type par défaut est default Il y a deux façons de changer le view type : •En le spécifiant dans l’url (ex: http://your-elgg-site.domain/pg/your/ site/page/?view=rss) •En appelant la fonction set_input (ex: set_input(‘view’, ‘iphone’) dans votre plugin de détection de navigateur)
  • 7. Comment utiliser une vue ? Les vues sont stocker dans le répertoire views/default/ à la racine de elgg et dans chaque plugin Pour afficher une vue il faut utiliser la fonction elgg_view ex: echo elgg_view(‘input/text’, array(‘internalname’ => ‘username’)); Il est possible d’étendre une vue grâce à la fonction extend_view ex: extend_view(‘css’, ‘my/custom/css’);
  • 8. Comment passer des variables à une vue ? Les variables sont passées en paramètre de la fonction elgg_view ex: echo elgg_view(‘input/text’, array(‘internalname’ => ‘username’)); Elles sont ensuite accessibles dans la vue via le tableau $vars Ex: $vars[‘internalname’] retournera ‘username’ Certaines variables sont accessibles depuis n’importe quelle vue : •$vars[‘url’] : contient l’url du site •$vars[‘user’] : contient l’objet de l’utilisateur authentifié •$vars[‘config’] : contient la configuration normalement accessible depuis la variable globale $CONFIG
  • 9. Les actions Les actions sont un moyen d’interagir avec l’utilisateur : •L’authentification •L’insertion, la modification ou la suppression de données Les actions sont accessible via l’url : http://monsite.domain/action/monplugin/monaction Les actions sont déclarées dans start.php du plugin ex: register_action(‘monplugin/monaction’, false, $CONFIG->pluginspath . ‘monplugin/actions/monfichieraction.php’); Fonctions utiles : •get_input() - Récupère les arguments passés via la méthode GET ou POST •forward() - Redirige vers l’url de la page passé en argument •system_message() - Affiche un message de confirmation •register_error() - Affiche un message d’erreur
  • 10. Contrôle d’accès Un contrôle d’accès est définis pour chaque entité (Access ID) 3 types de contrôles d’accès sont définis par défaut : •0 - Seul le créateur peut accéder à l’entité •1 - Seul les utilisateurs authentifiés peuvent accéder à l’entité •2 - Tout le monde peut accéder à l’entité Autres fonctions permettant le contrôle d’accès : •isloggedin() •isadminloggedin() •gatekeeper() •admin_gatekeeper()
  • 11. Liens utiles •http://docs.elgg.org/wiki/Main_Page •http://reference.elgg.org/ Brice Gaillard - http://www.bricegaillard.com