Les plugins peuvent aussi demander à télécharger des librairies externes dont ils dépendent. Cela nécessite plusieurs choses : une déclaration spécifique dans le fichier plugin.xml
, et la présence d’un répertoire /lib
accessible en écriture à la racine de SPIP dans lequel sera téléchargée la librairie (ou mise manuellement).
<necessite id="lib:nom" src="adresse du fichier zip" />
-
nom
indique le nom du dossier décompressé du zip -
src
est l’adresse de l’archive de la librairie, au format .zip
Exemple
Un plugin « loupe photo » utilise une librairie javascript qu’il installe en tant que librairie (fournie en dehors du plugin donc) de cette façon :
<necessite id="lib:tjpzoom" src="http://valid.tjp.hu/tjpzoom/tjpzoom.zip" />
Dans le plugin, il retrouve le nom des fichiers qu’il utilise comme ceci :
$tjp = find_in_path('lib/tjpzoom/tjpzoom.js');
Le plugin « Open ID » utilise aussi une librairie externe au plugin. Il la télécharge de la même façon :
<necessite id="lib:php-openid-2.1.2" src="http://openidenabled.com/files/php-openid/packages/php-openid-2.1.2.zip" />
Et l’utilise ainsi :
// options
if (!defined('_DIR_LIB')) define('_DIR_LIB', _DIR_RACINE . 'lib/');
define('_DIR_OPENID_LIB', _DIR_LIB . 'php-openid-2.1.2/');
// utilisation (c'est plus complexe !)
function init_auth_openid() {
// ...
$cwd = getcwd();
chdir(realpath(_DIR_OPENID_LIB));
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/SReg.php";
chdir($cwd);
// ...
}