Cette présentation a pour but de faire office de boite à outils du developpeur elgg. Pour le moment ce n'est qu'un brouillon n'hèsitez pas à laisser des commentaires si vous pensez qu'il manque quelque chose.
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