Hello,
J'ai commencé à plancher à nouveau sur la gestion des dépendances entre
plugins.
En pratique, si un plugin foo a besoin que le plugin "bar" soit installé,
il faut définir dans les propriétés du plugin foo :
$this->registerModule(
/* Name */ "Foo",
/* Description*/ "Foo plugin for Dotclear",
/* Author */ "Bob Dylan",
/* Version */ '1.0',
array(
'permissions' => 'usage,contentadmin',
'requires' => array('bar')
)
);
Si le plugin a en plus besoin du plugin "boo" en version 2.0 :
$this->registerModule(
/* Name */ "Foo",
/* Description*/ "Foo plugin for Dotclear",
/* Author */ "Bob Dylan",
/* Version */ '1.0',
array(
'permissions' => 'usage,contentadmin',
'requires' => array('bar', array('boo','2.0'))
)
);
En clair, la propriété "requires" prend comme valeur un tableau d'entrées :
* Soit le nom du module requis
* Soit un tableau (nom, version min) du module requis
Pour des raisons de performance, les tests de dépendances sont faits
uniquement à l'accueil de l'admin, et sur la page plugins.php. Si un plugin
a des dépendances non remplies, il est désactivé, et un avertissement est
affiché.
Ensuite, sur la page plugins.php :
* pour chaque plugin actif, s'il d'autres plugins en sont dépendants, une
information dans la description du plugin est affichée : "Si vous
désactivez ou désinstallez ce plugin, les plugins suivants seront
désactivés : foo, bar"
* pour chaque plugin inactif :
* si certaines de ses dépendances sont manquantes, la case "activer"
n'est pas affichée, et une information du type "Ce plugin nécessite
l'installation des plugins suivants : foo, bar"
* si certains de ses dépendances sont désactivées, alors on affiche "si
vous activez ce plugin, alors les plugins suivants seront aussi activés :
foo, bar".
Il faut ensuite que je regarde les dépendances de thèmes.
--
Bruno