Plugins

Les plugins doivent fournir un fichier start.php et manifest.xml dans la racine du plugin afin d’être reconnus par Elgg.

start.php

Le fichier start.php initialise le plugin en enregistrant les écouteurs d’événements (event listeners) et les hooks plugin.

elgg-plugin.php

Ce fichier facultatif est lu par Elgg pour configurer divers services et doit renvoyer un tableau s’il est présent. Il ne doit pas être inclus par les plugins et il n’est pas garanti qu’il soit exécuté à un moment donné. Outre les constantes magiques comme __DIR__, sa valeur de retour ne doit pas changer.

Syntaxe

Voici un exemple trivial de configuration des emplacements des vues via la clef views :

<?php

return [
        'views' => [
                'default' => [
                        'file/icon/' => __DIR__ . '/graphics/icons',
                ],
        ],
];

activate.php, deactivate.php

Les fichiers activate.php et deactivate.php contiennent du code procédural qui sera exécuté respectivement lors de l’activation ou de la désactivation du plugin. Utilisez ces fichiers pour effectuer des événements uniques tels qu’enregistrer une note d’information d’administration permanente, enregistrer des sous-types, ou effectuer des opérations de nettoyage lorsque le plugin est désactivé.

manifest.xml

Les plugins Elgg doivent disposer d’un fichier manifest.xml situé dans la racine de chaque plugin.

Le fichier manifest.xml contient des informations sur le plugin lui-même, des exigences pour exécuter le plugin et des informations facultatives, y compris l’endroit où afficher les paramètres du plugin dans la zone d’administration et les API fournies par le plugin.

Syntaxe

Le fichier manifeste est un fichier XML standard en UTF-8. Tout est un enfant de l’élément <plugin_manifest>.

<?xml version="1.0" encoding="UTF-8" ?>
<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">

La syntaxe du manifest est la suivante :

<name>value</name>

De nombreux éléments peuvent contenir des attributs enfants :

<parent_name>
        <child_name>value</child_name>
        <child_name_2>value_2</child_name_2>
</parent_name>

Éléments requis

Tous les plugins doivent définir les éléments suivants dans leurs fichiers manifest :

  • id - Doit être le nom du répertoire du plugin.

  • nom - Le nom d’affichage du plugin.

  • author - Le nom de l’auteur qui a écrit le plugin.

  • version - La version du plugin.

  • description - Une description de ce que le plugin fournit, ses caractéristiques, et d’autres informations pertinentes

  • requires - Chaque plugin doit spécifier la version de Elgg pour laquelle il a été développé. Pour plus d’informations, consultez la page sur les Dépendances d’un plugin.

Éléments disponibles

En plus des éléments requis ci-dessus, les éléments suivants peuvent être utilisés :

  • blurb - Une courte description du plugin.

  • catégorie - La catégorie du plugin. Il est recommandé de suivre les [[Plugin_Guidelines|recommandations pour les plugins]] et d’utiliser l’une des catégories définies. Il peut y avoir plusieurs entrées.

  • conflicts - Spécifie que le plugin est en conflit avec une certaine configuration système.

  • copyright - Les informations sur le droit d’auteur du plugin.

  • license - Informations sur la licence du plugin.

  • provides - Spécifie que ce plugin fournit la même fonctionnalité qu’un autre plugin Elgg ou une extension PHP.

  • capture d’écran - Captures d’écran du plugin. Il peut y avoir plusieurs entrées. Voir l’exemple de syntaxe avancée.

  • suggests - Similaire au système requires, mais n’a pas d’effet si le plugin n’est pas activé. Utilisé pour suggérer d’autres plugins qui interagissent avec ou sont utilisés par le plugin.

  • website - Un lien vers l’adresse web du plugin.

Exemple simple

Ce fichier de manifest est le strict minimum qu’un plugin doit avoir.

<?xml version="1.0" encoding="UTF-8"?>
<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
        <name>Example Manifest</name>
        <author>Elgg</author>
        <version>1.0</version>
        <description>This is a simple example of a manifest file. In this example, there are not screenshots, dependencies, or additional information about the plugin.</description>

        <requires>
                <type>elgg_release</type>
                <version>1.9</version>
        </requires>
</plugin_manifest>

Exemple avancé

Cet exemple utilise tous les éléments disponibles :

<?xml version="1.0" encoding="UTF-8"?>
<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
        <name>Example Manifest</name>
        <author>Brett Profitt</author>
        <version>1.0</version>
        <blurb>This is an example manifest file.</blurb>
        <description>This is a simple example of a manifest file. In this example, there are many options used, including screenshots, dependencies, and additional information about the plugin.</description>
        <website>http://www.elgg.org/</website>
        <copyright>(C) Brett Profitt 2014</copyright>
        <license>GNU Public License version 2</license>

        <category>3rd_party_integration</category>

        <requires>
                <type>elgg_release</type>
                <version>1.9.1</version>
        </requires>

        <!-- The path is relative to the plugin's root. -->
        <screenshot>
                <description>Elgg profile.</description>
                <path>screenshots/profile.png</path>
        </screenshot>

        <provides>
                <type>plugin</type>
                <name>example_plugin</name>
                <version>1.5</version>
        </provides>

        <suggests>
                <type>plugin</type>
                <name>twitter</name>
                <version>1.0</version>
        </suggests>
</plugin_manifest>