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 : 12/03/23

Traductions : English, français, Nederlands