Author: esj@rezo.net
Date: 2010-01-07 22:58:24 +0100 (jeu, 07 jan 2010)
New Revision: 14842
Log:
Si un plugin ne parvient pas à s'installer, ne pas prétendre qu'il l'est. En plus ça évite de calculer 2 fois la même chose. Le report en 2.1 n'est pas trivial car le code a pas mal bougé.
ce commit confond la liste des plugins actifs
$GLOBALS['meta']['plugin']
(plugin activé, ajouté au path, fichiers fonctions et options branchés)
et la liste des plugins actifs ET installés
$GLOBALS['meta']['plugin_installes']
(plugin qui ont une procédure d'installation qui a reussi et qui a installé des fichier, une table, des modifs sql etc ...)
On ne calculait donc pas 2 fois la même chose.
Le problème que tu soulèves est de savoir si un plugin qui a une procédure d'installation qui échoue doit être activé ou non. Jusqu'ici il l'était malgré l'echec. On peut toujours en discuter.
Mais ici, on declare "installé" aussi les plugins qui n'ont pas de procédure d'installation. Ce qui est sous jacent est la possibilité de le "désinstaller", c'est à dire de nettoyer la base et de le désactiver, ce qui va être proposé à tort sur tous les plugin.
Cédric
Le 7 janv. 2010 à 22:58, esj@rezo.net a écrit :
Author: esj@rezo.net
Date: 2010-01-07 22:58:24 +0100 (jeu, 07 jan 2010)
New Revision: 14842
Log:
Si un plugin ne parvient pas à s'installer, ne pas prétendre qu'il l'est. En plus ça évite de calculer 2 fois la même chose. Le report en 2.1 n'est pas trivial car le code a pas mal bougé.
Le 7 janv. 2010 à 23:18, cedric.morin@yterium.com a écrit :
hello,
ce commit confond la liste des plugins actifs
$GLOBALS['meta']['plugin']
(plugin activé, ajouté au path, fichiers fonctions et options branchés)
Il ne me semble pas avoir fait cette confusion, as-tu un scénario où les chose ont effectivement changé ?
Mon pb est que le plugin Association m'envoyait des palanquées d'erreurs SQL et finalement ne permettait même pas l'affichage
du tableau d'activation. Maintenant c'est le cas.
Avant :
Meta plugin
a:11:{s:3:"CFG";a:4:{s:3:"nom";s:90:"<multi>
[fr]cfg: moteur de configuration
[de]cfg: Konfigurationsmotor
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:3:"cfg";s:7:"version";s:6:"1.13.0";}s:6:"NOSPAM";a:4:{s:3:"nom";s:6:"NoSPAM";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"nospam";s:7:"version";s:3:"0.6";}s:6:"OPENID";a:4:{s:3:"nom";s:78:"<multi>
[fr]Authentification OpenID
[en]OpenID Authentication
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"openid";s:7:"version";s:5:"1.0.0";}s:6:"SLOGAN";a:4:{s:3:"nom";s:6:"SLOGAN";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"slogan";s:7:"version";s:3:"2.0";}s:10:"SPIP_BONUX";a:4:{s:3:"nom";s:14:"SPIP Bonux 2.0";s:4:"etat";s:6:"stable";s:3:"dir";s:12:"spip-bonux-2";s:7:"version";s:5:"1.8.7";}s:9:"ZENGARDEN";a:4:{s:3:"nom";s:10:"Zen-Garden";s:4:"etat";s:4:"test";s:3:"dir";s:10:"zen-garden";s:7:"version";s:5:"1.0.1";}s:1:"Z";a:4:{s:3:"nom";s:29:"Squelettes Z pour SPIP (Zpip)";s:4:"etat";s:6:"stable";s:3:"dir";s:4:"zpip";s:7:"version";s:5:"1.2.1";}s:12:"COMPOSITIONS";a:4:{s:3:"nom";s:12:"Compositions";s:4:"etat";s:6:"stable";s:3:"dir";s:12:"compositions";s:7:"version";s:5:"1.0.0";}s:5:"FORUM";a:4:{s:3:"nom";s:25:"Interface pour les forums";s:4:"etat";s:6:"stable";s:3:"dir";s:5:"forum";s:7:"version";s:3:"0.1";}s:7:"GESTDOC";a:4:{s:3:"nom";s:229:"<multi>[fr]Mediathèque
[it]Gestione dei documenti
[es]Gestión de los documentos
[ar]مكتبة المستندات
[en]Media library
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:17:"gestion_documents";s:7:"version";s:3:"1.1";}s:5:"MENUS";a:4:{s:3:"nom";s:5:"Menus";s:4:"etat";s:4:"test";s:3:"dir";s:5:"menus";s:7:"version";s:3:"0.8";}}
Meta plugin_installes
a:4:{i:0;s:6:"openid";i:1;s:12:"compositions";i:2;s:17:"gestion_documents";i:3;s:5:"menus";}
---------
Après :
Meta plugin
a:11:{s:3:"CFG";a:4:{s:3:"nom";s:90:"<multi>
[fr]cfg: moteur de configuration
[de]cfg: Konfigurationsmotor
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:3:"cfg";s:7:"version";s:6:"1.13.0";}s:6:"NOSPAM";a:4:{s:3:"nom";s:6:"NoSPAM";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"nospam";s:7:"version";s:3:"0.6";}s:6:"OPENID";a:4:{s:3:"nom";s:78:"<multi>
[fr]Authentification OpenID
[en]OpenID Authentication
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"openid";s:7:"version";s:5:"1.0.0";}s:6:"SLOGAN";a:4:{s:3:"nom";s:6:"SLOGAN";s:4:"etat";s:6:"stable";s:3:"dir";s:6:"slogan";s:7:"version";s:3:"2.0";}s:10:"SPIP_BONUX";a:4:{s:3:"nom";s:14:"SPIP Bonux 2.0";s:4:"etat";s:6:"stable";s:3:"dir";s:12:"spip-bonux-2";s:7:"version";s:5:"1.8.7";}s:9:"ZENGARDEN";a:4:{s:3:"nom";s:10:"Zen-Garden";s:4:"etat";s:4:"test";s:3:"dir";s:10:"zen-garden";s:7:"version";s:5:"1.0.1";}s:1:"Z";a:4:{s:3:"nom";s:29:"Squelettes Z pour SPIP (Zpip)";s:4:"etat";s:6:"stable";s:3:"dir";s:4:"zpip";s:7:"version";s:5:"1.2.1";}s:12:"COMPOSITIONS";a:4:{s:3:"nom";s:12:"Compositions";s:4:"etat";s:6:"stable";s:3:"dir";s:12:"compositions";s:7:"version";s:5:"1.0.0";}s:5:"FORUM";a:4:{s:3:"nom";s:25:"Interface pour les forums";s:4:"etat";s:6:"stable";s:3:"dir";s:5:"forum";s:7:"version";s:3:"0.1";}s:7:"GESTDOC";a:4:{s:3:"nom";s:229:"<multi>[fr]Mediathèque
[it]Gestione dei documenti
[es]Gestión de los documentos
[ar]مكتبة المستندات
[en]Media library
</multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:17:"gestion_documents";s:7:"version";s:3:"1.1";}s:5:"MENUS";a:4:{s:3:"nom";s:5:"Menus";s:4:"etat";s:4:"test";s:3:"dir";s:5:"menus";s:7:"version";s:3:"0.8";}}
Meta plugin_installes
a:11:{s:3:"CFG";s:3:"cfg";s:6:"NOSPAM";s:6:"nospam";s:6:"OPENID";s:6:"openid";s:6:"SLOGAN";s:6:"slogan";s:10:"SPIP_BONUX";s:12:"spip-bonux-2";s:9:"ZENGARDEN";s:10:"zen-garden";s:1:"Z";s:4:"zpip";s:12:"COMPOSITIONS";s:12:"compositions";s:5:"FORUM";s:5:"forum";s:7:"GESTDOC";s:17:"gestion_documents";s:5:"MENUS";s:5:"menus";}
Le 7 janv. 2010 à 23:27, Emmanuel Saint-James a écrit :
Le 7 janv. 2010 à 23:18, cedric.morin@yterium.com a écrit :
hello,
ce commit confond la liste des plugins actifs
$GLOBALS['meta']['plugin']
(plugin activé, ajouté au path, fichiers fonctions et options branchés)
Il ne me semble pas avoir fait cette confusion, as-tu un scénario où les chose ont effectivement changé ?
Mon pb est que le plugin Association m'envoyait des palanquées d'erreurs SQL et finalement ne permettait même pas l'affichage
du tableau d'activation. Maintenant c'est le cas.
Le 7 janv. 2010 à 23:39, cedric.morin@yterium.com a écrit :
Sur la meme install, avant et après le up :
...
Houla, ça aurait été bien de commenter ça qq part.
14843 devrait arranger ça si j'ai enfin bien compris.
Mais outre le désagrément que je mentionnais, je persiste dans l'affirmation qu'on appelait 2 fois liste_chemin_plugin_actif ce qui était idiot.
Le 7 janv. 2010 à 23:51, Emmanuel Saint-James a écrit :
Le 7 janv. 2010 à 23:39, cedric.morin@yterium.com a écrit :
Sur la meme install, avant et après le up :
...
Houla, ça aurait été bien de commenter ça qq part.
14843 devrait arranger ça si j'ai enfin bien compris.
Mais outre le désagrément que je mentionnais, je persiste dans l'affirmation qu'on appelait 2 fois liste_chemin_plugin_actif ce qui était idiot.
oui je te le concède.
Il y a néanmoins une incohérence dans ta modif :
si une procédure d'instal echoue, tu retire le plugin de la liste des plugins actifs au moment de l'affichage.
Le plugin n'apparait plus actif dans la liste, mais dans les faits, il l'est encore (cf les fichier tmp/cache/charger_*.php).
Si on revalide le formulaire, cela le desactive bien, in fine.
Mais du coup on a un état incertain, où l'information donnée au webmestre est erronée.
Le 7 janv. 2010 à 23:18, cedric.morin@yterium.com a écrit :
ce commit confond la liste des plugins actifs
$GLOBALS['meta']['plugin']
(plugin activé, ajouté au path, fichiers fonctions et options branchés)
et la liste des plugins actifs ET installés
$GLOBALS['meta']['plugin_installes']
(plugin qui ont une procédure d'installation qui a reussi et qui a installé des fichier, une table, des modifs sql etc ...)
On ne calculait donc pas 2 fois la même chose.
Le problème que tu soulèves est de savoir si un plugin qui a une procédure d'installation qui échoue doit être activé ou non. Jusqu'ici il l'était malgré l'echec. On peut toujours en discuter.
Il me semblerait effectivement normal qu'il ne soit pas activé, sinon l'utilisateur ne comprendra pas que ça ne marche pas comme attendu.
Mais ici, on declare "installé" aussi les plugins qui n'ont pas de procédure d'installation. Ce qui est sous jacent est la possibilité de le "désinstaller", c'est à dire de nettoyer la base et de le désactiver, ce qui va être proposé à tort sur tous les plugin.
J'avoue que j'oublie parfois de regarder si un plugin a l'icône de désinstallation, et je me retrouve avec des tables et données qui ne me servent plus, sans avoir gardé le plugin qui permet de les retirer proprement.
Ne serait-il pas plus simple, en tout cas pour l'utilisateur, de détecter la désactivation, et automatiquement proposer aussi la désinstallation si une fonction le permettant est disponible ?
Le 7 janv. 2010 à 23:18, cedric.morin@yterium.com a écrit :
ce commit confond la liste des plugins actifs
$GLOBALS['meta']['plugin']
(plugin activé, ajouté au path, fichiers fonctions et options branchés)
et la liste des plugins actifs ET installés
$GLOBALS['meta']['plugin_installes']
(plugin qui ont une procédure d'installation qui a reussi et qui a installé des fichier, une table, des modifs sql etc ...)
On ne calculait donc pas 2 fois la même chose.
Le problème que tu soulèves est de savoir si un plugin qui a une procédure d'installation qui échoue doit être activé ou non. Jusqu'ici il l'était malgré l'echec. On peut toujours en discuter.
Il me semblerait effectivement normal qu'il ne soit pas activé, sinon l'utilisateur ne comprendra pas que ça ne marche pas comme attendu.
Oui, ou au moins avoir un gros avertissement "L'installation a échoué".
Desactiver le plugin à ce stade est plus compliqué car cela oblige à rejouer le hit, donc faire une redirection, ce qui est trop tard puisqu'on a commencé l'affichage à l'écran.
Mais ici, on declare "installé" aussi les plugins qui n'ont pas de procédure d'installation. Ce qui est sous jacent est la possibilité de le "désinstaller", c'est à dire de nettoyer la base et de le désactiver, ce qui va être proposé à tort sur tous les plugin.
J'avoue que j'oublie parfois de regarder si un plugin a l'icône de désinstallation, et je me retrouve avec des tables et données qui ne me servent plus, sans avoir gardé le plugin qui permet de les retirer proprement.
Ne serait-il pas plus simple, en tout cas pour l'utilisateur, de détecter la désactivation, et automatiquement proposer aussi la désinstallation si une fonction le permettant est disponible ?
Toute cette interface est à refaire, c'est un sujet de reflexion en cours.