Hello,
Quatre choses qui me viennent en tête à la première lecture :
1. Est-ce que ce sera mis en place aussi pour les thèmes. Après tout un
thème peut nécessiter la présence d'un autre thème (parent) ou d'un plugin.
2. Est-ce qu'on peut d'ores-et-déjà envisager une propriété 'optionals'
(pas certain que le nom soit correct), avec des dépendances optionnelles
(exemple un thème qui prend en charge le plugin Gravatar mais qui
fonctionne même si ce dernier n'est pas installé). Cela dit, après avoir
écrit la phrase précédente je me demande si ce n'est pas superflu (cela dit
il y a une feature de ce type côté WP pour les thèmes qui prennent en
charge des plugins optionnels).
3. Tu as prévu un mécanisme pour gérer ou éviter les références circulaires
? Genre A needs B needs C needs A.
4. Est-ce qu'il ne faut pas non plus prévoir une version max (optionnelle)
pour les dépendances ? Ce qui donnerait array('boo','2.0','2.9').
Le 3 février 2015 15:42, Bruno <dsls(a)morefnu.org> a écrit :
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
--
Dev mailing list - Dev(a)list.dotclear.org -
http://ml.dotclear.org/listinfo/dev