en SPIP 2.0.10 SVN [14860] mutualisé (aucun autre plugin que Palette) l'appel d'un #INCLURE sur un fichier sans {fond = XXX} semble retourner une erreur si il n'y a pas de dossier /squelettes dans le SPIP.
Exemple:
- sur un SPIP "nu", activation du plugin palette + installation de farbtastic dans /lib
- l'appel de la page spip.php?page=palette.js donne l'erreur "<b>Warning</b>: join() [<a href='function.join'>function.join</a>]: Bad arguments. in <b>..._MUTU_/ecrire/inc/flock.php</b> on line <b>70</b><br />"
Dans le fichier /plugins/palette/palette.js.html c'est
[(#INCLURE{lib/farbtastic_1_3_1/farbtastic.js})]
qui fait planter PHP et en trifouillant un peu on s'aperçoit que c'est le find_in_path() chargé de trouver le fichier farbtastic.js qui retourne
/lib/farbtastic_1_3_1/farbtastic.js (chemin erroné qui provoque l'erreur)
alors que si il existe un répertoire /squelettes dans le SPIP, le chemin retourné est
lib/farbtastic_1_3_1/farbtastic.js (du coup pas d'erreur)
Le "/" plantogène est généré par ligne 634 de la fonction _chemin() de /ecrire/inc/utils.php :
array_unshift($path_full, ($d[0] == '/' ? '' : _DIR_RACINE) . $d . '/');
Cette erreur n'apparait pas sur un SPIP non-mutualisé
En première approximation le patch ci-dessous/ci-joint semble régler le problème... mais comme find_in_path() et ses fonctions liées sont un truc utilisé dans une kyrielle d'endroits du code, je ne suis pas certain que ça n'ait pas des effets secondaires non-désirés!
Index: utils.php
utils.php.patch (590 Bytes)