Installer des librairies externes

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);
    // ...
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 08/12/09

Traductions : English, français