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

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 fichierstart.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 disposede 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 unevue ? 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 desvariables à 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 actionssont 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ôled’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