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 :
elgg_release - La version d’Elgg (3.0)
plugin - Un plugin Elgg
priority - Une priorité de chargement de plugin
php_extension - Une extension PHP
php_ini - Un paramètrs PHP
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 >
et <
. 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>