Dépendances du plugin

Dans Elgg 1.8, un système de dépendances de plugin a été introduit pour empêcher l’utilisation de plugins sur des systèmes incompatibles.

Aperçu

Le système de dépendances est contrôlé par le fichier manifest.xml d’un plugin. Les auteurs de plugins peuvent spécifier qu’un plugin :

  • Nécessite certaines versions de Elgg, de plugins Elgg, d’extensions PHP et de paramètres PHP.

  • Suggère certaines versions de Elgg, de plugins Elgg, d’extensions PHP et de paramètres PHP.

  • Conflits avec certaines versions de Elgg ou de plugins Elgg.

  • Fournit l’équivalent d’un autre plugin Elgg ou d’une extension PHP.

Le système de dépendance utilise les quatre verbes ci-dessus (requires, suggests, conflicts, and provides) comme éléments parents pour indiquer quel type de dépendance est décrite par ses enfants. Toutes les dépendances ont un format similaire avec des options similaires :

<verb>
   <type>type</type>
   <noun>value</noun>
   <noun2>value2</noun2>
</verb>

Note

type est toujours requis

Verbes

À l’exception des provides, tous les verbes utilisent les mêmes six types avec des effets différents, et les options de type sont les mêmes parmi les verbes. provides ne prend en charge que plugin et php_extension.

Requiert

L’utilisation d’une dépendance requires signifie que le plugin ne peut pas être activé à moins que la dépendance ne soit exactement remplie.

Pré-requis obligatoire : elgg_release

Chaque plugin doit avoir au moins une exigence : la version d’Elgg pour laquelle le plugin est développé. Ceci est spécifié par l’API Elgg release (1.8). La comparaison par défaut est >=, mais vous pouvez spécifier votre propre comparaison en passant l’élément <comparison>.

Utiliser elgg_release :

<requires>
   <type>elgg_release</type>
   <version>1.8</version>
</requires>

Suggère

Les dépendances suggests signifient que l’auteur du plugin suggère une configuration système spécifique, mais qui n’est pas indispensable pour utiliser le plugin. Les suggestions peuvent également être un autre plugin qui pourrait interagir, étendre, ou être étendu par ce plugin, mais n’est pas nécessaire pour qu’il fonctionne.

Suggère un autre plugin :

<suggests>
   <type>plugin</type>
   <name>twitter_api</name>
   <version>1.0</version>
</suggests>

Suggère un paramètres PHP spécifique :

<suggests>
   <type>php_ini</type>
   <name>memory_limit</name>
   <value>64M</value>
   <comparison>ge</comparison>
</suggests>

Est en conflit avec

Les dépendances conflicts signifient que le plugin ne peut pas être utilisé avec une configuration système spécifique.

Conflit avec n’importe quelle version du plugin profile :

<conflicts>
   <type>plugin</type>
   <name>profile</name>
</conflicts>

Conflit avec une version spécifique de Elgg :

<conflicts>
   <type>elgg_release</type>
   <version>1.8</version>
   <comparison>==</comparison>
</conflicts>

Fournit

Les dépendances provdes indiquent à Elgg que ce plugin fournit la fonctionnalité d’un autre plugin ou d’une extension PHP. Contrairement aux autres verbes, il ne prend en charge que deux types : plugin et php_extension.

Le but de ceci est de fournir des API interchangeables implémentées par différents plugins. Par exemple, le plugin twitter_services fournit une API qui permet à d’autres plugins de tweeter au nom de l’utilisateur via curl et OAuth. Un auteur de plugin pourrait écrire un plugin compatible pour les serveurs qui n’utilisent pas curl mais des flux de sockets, et spécifier qu’il fournit twitter_services. Tous les plugins qui suggèrent ou requièrent twitter_services peuvent ainsi savoir qu’ils peuvent fonctionner.

<provides>
   <type>plugin</type>
   <name>twitter_services</name>
   <version>1.8</version>
</provides>

Note

Tous les plugins se fournissent eux-même sous la forme de leur ID de plugin (nom d’annuaire), dans la version définie dans leur fichier manifest.

Types

Chaque verbe de dépendance a un élément <type> obligatoire qui doit être l’une des six valeurs suivantes :

  1. elgg_release - La version d’Elgg (3.0)

  2. plugin - Un plugin Elgg

  3. priority - Une priorité de chargement de plugin

  4. php_extension - Une extension PHP

  5. php_ini - Un paramètrs PHP

  6. php_version - Une version PHP

Note

provides ne prend en charge que les types plugin et php_extension.

Chaque type est défini avec un verbe de dépendance comme élément parent. Les éléments d’option supplémentaires sont au même niveau que l’élément du type :

<verb>
   <type>type</type>
   <option_1>value_1</option_1>
   <option_2>value_2</option_2>
</verb>

elgg_release

Ceux-ci concernent l’API et les versions de version d’Elgg et nécessitent l’élément d’option suivant :

  • version - La version de l’API ou de Elgg

L’élément d’option suivant est supporté, mais pas requis :

  • comparison - L’opérateur de comparaison à utiliser. La valeur par défaut est >= si non passée

plugin

Spécifie un plugin Elgg par son ID (nom d’annuaire). Cela nécessite l’élément d’option suivant :

  • name - L’ID du plugin

Les éléments d’option suivants sont pris en charge, mais non requis :

  • version - La version du plugin

  • comparison - L’opérateur de comparaison à utiliser. La valeur par défaut est >= si non passée

priority

Cela nécessite que le plugin soit chargé avant ou après un autre plugin, si ce plugin existe. requires doit être utilisé pour exiger l’existence d’un plugin. Les éléments d’option suivants sont requis :

  • plugin - L’ID du plugin sur lequel appuyer l’ordre de chargement

  • priority - L’ordre de chargement : “before” (avant) ou “after” (après)

php_extension

Ceci vérifie les extensions PHP. L’élément d’option suivant est requis :

  • name - Le nom de l’extension PHP

Les éléments d’option suivants sont pris en charge, mais non requis :

  • version - La version de l’extension

  • comparison - L’opérateur de comparaison à utiliser. La valeur par défaut est ==

Note

Le format des versions des extensions varie largement entre les extensions PHP et n’est parfois même pas défini. Il est habituellement inutile de la vérifier.

php_ini

Ceci vérifie les paramètres PHP. Les éléments d’option suivants sont requis :

  • name - Le nom du paramètres à vérifier

  • value - La valeur du paramètre à laquelle comparer

Les options suivantes sont supportées, mais pas requises :

  • comparison - L’opérateur de comparaison à utiliser. La valeur par défaut est ==

php_version

Ceci vérifie la version de PHP. Les éléments d’option suivants sont requis :

  • version - La version de PHP

L’élément d’option suivant est supporté, mais pas requis :

  • comparison - L’opérateur de comparaison à utiliser. La valeur par défaut est >= si non passée

Opérateurs de comparaison

Les dépendances qui vérifient les versions supportent la passage d’un opérateur personnalisé via l’élément <comparison>.

Les opérateurs de comparaison suivants sont valides :

  • < ou lt

  • <= ou le

  • =, ==, ou eq

  • !=, <>, ou ne

  • > ou gt

  • >= ou ge

Si <comparison> n’est pas passé, ce qui suit est utilisé comme valeurs par défaut, en fonction du type de dépendance :

  • requires->elgg_release : >=

  • requires->plugin: >=

  • requires->php_extension : =

  • requires->php_ini : =

  • tous les conflits : =

Note

Vous devez échapper < et > vers &gt; et &lt;. Pour des comparaisons qui utilisent ces valeurs, il est recommandé que vous utilisiez les chaînes équivalentes à la place !

Exemples rapides

Requiert Elgg 1.8.2 ou supérieur

<requires>
   <type>elgg_release</type>
   <version>1.8.2</version>
</requires>

Requiert que le plugin Groups soit activé

<requires>
   <type>plugin</type>
   <name>groups</name>
</requires>

Requiert d’être placé après le plugin Profile si celui-ci est activé

<requires>
   <type>priority</type>
   <priority>after</priority>
   <plugin>profile</plugin>
</requires>

En conflit avec le plugin The Wire (le Fil)

<conflicts>
   <type>plugin</type>
   <name>thewire</name>
</conflicts>

Requiert au moins 256 Mo de mémoire dans PHP

<requires>
   <type>php_ini</type>
   <name>memory_limit</name>
   <value>256M</value>
   <comparison>ge</comparison>
</requires>

Requiert au moins PHP version 5.3

<requires>
   <type>php_version</type>
   <version>5.3</version>
</requires>

Suggère que le plugin TidyPics soit activé

<suggests>
   <type>plugin</type>
   <name>tidypics</name>
</suggests>