Documentation du code de SPIP et de ses plugins

SPIP

plugin.php

SPIP, Système de publication pour l'internet

Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James

Ce programme est un logiciel libre distribué sous licence GNU/GPL.

Table of Contents

Constants

_DIR_PLUGINS_AUTO  = \SpipLeague\Component\Kernel\app()->relative()->getPluginsDir() . 'auto/'
_EXTRAIRE_INTERVALLE  = ',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,'
Regexp d'extraction des informations d'un intervalle de compatibilité

Functions

liste_plugin_files()  : array<string|int, string>
Retourne la description de chaque plugin présent dans un répertoire
plugin_version_compatible()  : bool
Teste si le numéro de version d'un plugin est dans un intervalle donné.
liste_plugin_valides()  : array<string|int, mixed>
Construire la liste des infos strictement necessaires aux plugins à activer afin de les mémoriser dans une meta pas trop grosse
plugin_valide_resume()  : string|array<string|int, mixed>
Ne retenir un plugin que s'il est valide et dans leur plus recente version compatible avec la version presente de SPIP
plugin_fixer_procure()  : void
Compléter la liste des plugins avec les éventuels procure
liste_chemin_plugin()  : array<string|int, mixed>
Extrait les chemins d'une liste de plugin
liste_chemin_plugin_actifs()  : array<string|int, mixed>
Liste les chemins vers les plugins actifs du dossier fourni en argument a partir d'une liste d'elelements construits par plugin_valide_resume
plugin_trier()  : array<string|int, mixed>
Trier les plugins en vériant leur dépendances (qui doivent être présentes)
plugins_erreurs()  : void
Collecte les erreurs de dépendances des plugins dans la meta `plugin_erreur_activation`
plugin_donne_erreurs()  : string|array<string|int, mixed>
Retourne les erreurs d'activation des plugins, au format html ou brut
plugin_necessite()  : array<string|int, mixed>
Teste des dépendances
plugin_controler_necessite()  : string
Vérifie qu'une dépendance (plugin) est bien présente.
plugin_message_incompatibilite()  : string
plugin_controler_lib()  : mixed
actualise_plugins_actifs()  : bool
Calcule la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs
ecrire_plugin_actifs()  : bool
Calcule ou modifie la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs
plugins_precompile_chemin()  : void
Écrit le fichier de déclaration des chemins (path) des plugins actifs
plugins_precompile_xxxtions()  : void
Écrit les fichiers de chargement des fichiers d'options et de fonctions des plugins
plugin_ongletbouton()  : string
Compile les entrées d'un menu et retourne le code php d'exécution
plugins_amorcer_plugins_actifs()  : void
Chargement des plugins actifs dans le path de SPIP et exécution de fichiers d'options des plugins
pipeline_matrice_precompile()  : array<string|int, mixed>
Crée la liste des filtres à traverser pour chaque pipeline
pipeline_precompile()  : mixed
Précompilation des pipelines
plugin_est_installe()  : bool
Indique si un chemin de plugin fait parti des plugins activés sur le site
plugin_installes_meta()  : void
Parcours les plugins activés et appelle leurs fonctions d'installation si elles existent.
ecrire_fichier_php()  : void
Écrit un fichier PHP

Constants

_DIR_PLUGINS_AUTO

public mixed _DIR_PLUGINS_AUTO = \SpipLeague\Component\Kernel\app()->relative()->getPluginsDir() . 'auto/'

_EXTRAIRE_INTERVALLE

Regexp d'extraction des informations d'un intervalle de compatibilité

public mixed _EXTRAIRE_INTERVALLE = ',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,'

Functions

liste_plugin_files()

Retourne la description de chaque plugin présent dans un répertoire

liste_plugin_files([string|null $dir_plugins = null ]) : array<string|int, string>

Lecture des sous repertoire plugin existants

Parameters
$dir_plugins : string|null = null

Chemin (relatif à la racine du site) du répertoire à analyser. Ou utilise le chemin _DIR_PLUGINS.

Tags
example
  • liste_plugin_files()
  • liste_plugin_files(_DIR_PLUGINS_DIST)
  • liste_plugin_files(_DIR_PLUGINS_SUPPL)
uses
fast_find_plugin_dirs()
uses
plugins_get_infos_dist()
used-by
affiche_les_plugins_verrouilles()
used-by
liste_plugin_valides()
Return values
array<string|int, string>

plugin_version_compatible()

Teste si le numéro de version d'un plugin est dans un intervalle donné.

plugin_version_compatible(string $intervalle, string $version[, string $avec_quoi = '' ]) : bool

Cette fonction peut être volontairement trompée (phase de développement) : voir commentaire infra sur l'utilisation de la constante _DEV_VERSION_SPIP_COMPAT

Parameters
$intervalle : string

Un intervalle entre 2 versions. ex: [2.0.0-dev;2.1.*]

$version : string

Un numéro de version. ex: 3.1.99]

$avec_quoi : string = ''

Ce avec quoi est testée la compatibilité. par défaut ('') avec un plugin (cas des 'necessite'), parfois ('spip') avec SPIP.

Tags
uses
spip_version_compare()
used-by
plugin_valide_resume()
used-by
plugin_trier()
used-by
plugin_controler_necessite()
used-by
plugins_precompile_chemin()
Return values
bool

True si dans l'intervalle, false sinon.

liste_plugin_valides()

Construire la liste des infos strictement necessaires aux plugins à activer afin de les mémoriser dans une meta pas trop grosse

liste_plugin_valides(array<string|int, mixed> $liste_plug[, bool $force = false ]) : array<string|int, mixed>
Parameters
$liste_plug : array<string|int, mixed>
$force : bool = false
Tags
uses
liste_plugin_files()
uses
plugins_get_infos_dist()
uses
plugin_valide_resume()
uses
plugin_fixer_procure()
Return values
array<string|int, mixed>

plugin_valide_resume()

Ne retenir un plugin que s'il est valide et dans leur plus recente version compatible avec la version presente de SPIP

plugin_valide_resume(array<string|int, mixed> &$liste, string $plug, array<string|int, mixed> $infos, string $dir_type) : string|array<string|int, mixed>
Parameters
$liste : array<string|int, mixed>
$plug : string
$infos : array<string|int, mixed>
$dir_type : string
Tags
uses
plugin_version_compatible()
uses
spip_version_compare()
used-by
liste_plugin_valides()
Return values
string|array<string|int, mixed>

prefixe dans $liste si on a accepte le plugin ou description short si on ne le retient pas (pour memorisation dans une table des erreurs)

plugin_fixer_procure()

Compléter la liste des plugins avec les éventuels procure

plugin_fixer_procure(array<string|int, mixed> &$liste, array<string|int, mixed> &$infos) : void

les balises <procure> sont considerées comme des plugins proposés, mais surchargeables (on peut activer un plugin qui procure ça pour l'améliorer, donc avec le même prefixe, qui sera pris en compte si il a une version plus grande)

Parameters
$liste : array<string|int, mixed>
$infos : array<string|int, mixed>
Tags
uses
spip_version_compare()
used-by
liste_plugin_valides()

liste_chemin_plugin()

Extrait les chemins d'une liste de plugin

liste_chemin_plugin(array<string|int, mixed> $liste[, string|null $dir_plugins = null ]) : array<string|int, mixed>

Sélectionne au passage ceux qui sont dans $dir_plugins uniquement si valeur non vide

Parameters
$liste : array<string|int, mixed>
$dir_plugins : string|null = null
Tags
used-by
admin_plug_args()
used-by
liste_chemin_plugin_actifs()
Return values
array<string|int, mixed>

liste_chemin_plugin_actifs()

Liste les chemins vers les plugins actifs du dossier fourni en argument a partir d'une liste d'elelements construits par plugin_valide_resume

liste_chemin_plugin_actifs([string|null $dir_plugins = null ]) : array<string|int, mixed>
Parameters
$dir_plugins : string|null = null

Chemin du répertoire de plugins

Tags
uses
liste_plugin_actifs()
uses
liste_chemin_plugin()
Return values
array<string|int, mixed>

plugin_trier()

Trier les plugins en vériant leur dépendances (qui doivent être présentes)

plugin_trier(array<string|int, mixed> $infos, array<string|int, mixed> $liste_non_classee) : array<string|int, mixed>

Pour tester "utilise", il faut connaître tous les plugins qui seront forcément absents à la fin, car absent de la liste des plugins actifs.

Il faut donc construire une liste ordonnée.

Cette fonction détecte des dépendances circulaires, avec un doute sur un "utilise" qu'on peut ignorer. Mais ne pas insérer silencieusement et risquer un bug sournois latent

Parameters
$infos : array<string|int, mixed>

Répertoire (plugins, plugins-dist, ...) => Couples (prefixes => infos completes) des plugins qu'ils contiennent

$liste_non_classee : array<string|int, mixed>

Couples (prefixe => description) des plugins qu'on souhaite utiliser

Tags
uses
plugin_version_compatible()
Return values
array<string|int, mixed>

Tableau de 3 éléments :

  • $liste : couples (prefixes => description) des plugins valides
  • $ordre : couples (prefixes => infos completes) des plugins triés (les plugins nécessités avant les plugins qui les utilisent)
  • $liste_non_classee : couples (prefixes => description) des plugins qui n'ont pas satisfait leurs dépendances

plugins_erreurs()

Collecte les erreurs de dépendances des plugins dans la meta `plugin_erreur_activation`

plugins_erreurs(array<string|int, mixed> $liste_non_classee, array<string|int, mixed> $liste, array<string|int, mixed> $infos[, array<string|int, mixed> $msg = [] ]) : void
Parameters
$liste_non_classee : array<string|int, mixed>

Couples (prefixe => description) des plugins en erreur

$liste : array<string|int, mixed>

Couples (prefixe => description) des plugins qu'on souhaite utiliser

$infos : array<string|int, mixed>

Répertoire (plugins, plugins-dist, ...) => Couples (prefixes => infos completes) des plugins qu'ils contiennent

$msg : array<string|int, mixed> = []
Tags
uses
plugin_necessite()
uses
plugin_controler_lib()

plugin_donne_erreurs()

Retourne les erreurs d'activation des plugins, au format html ou brut

plugin_donne_erreurs([bool $raw = false ][, bool $raz = true ]) : string|array<string|int, mixed>
Parameters
$raw : bool = false

true:Pour obtenir le tableau brut des erreurs, false : Code HTML

$raz : bool = true

true pour effacer la meta qui stocke les erreurs.

Tags
used-by
admin_plug_args()
Return values
string|array<string|int, mixed>

Liste des erreurs ou code HTML des erreurs

plugin_necessite()

Teste des dépendances

plugin_necessite(array<string|int, mixed> $n, array<string|int, mixed> $liste[, string $balise = 'necessite' ]) : array<string|int, mixed>

Et vérifie que chaque dépendance est présente dans la liste de plugins donnée

Parameters
$n : array<string|int, mixed>

Tableau de dépendances dont on souhaite vérifier leur présence

$liste : array<string|int, mixed>

Tableau des plugins présents

$balise : string = 'necessite'
Tags
uses
plugin_controler_necessite()
used-by
plugins_erreurs()
Return values
array<string|int, mixed>

Tableau des messages d'erreurs reçus. Il sera vide si tout va bien.

plugin_controler_necessite()

Vérifie qu'une dépendance (plugin) est bien présente.

plugin_controler_necessite(array<string|int, mixed> $liste, string $nom, string $intervalle, string $balise) : string
Parameters
$liste : array<string|int, mixed>

Liste de description des plugins

$nom : string

Le plugin donc on cherche la presence

$intervalle : string

L'éventuelle intervalle de compatibilité de la dépendance. ex: [1.1.0;]

$balise : string

Permet de définir si on teste un utilise ou un nécessite

Tags
uses
plugin_version_compatible()
uses
plugin_message_incompatibilite()
used-by
plugin_necessite()
Return values
string

Vide si ok, Message d'erreur lorsque la dépendance est absente.

plugin_message_incompatibilite()

plugin_message_incompatibilite(string $intervalle, string $version, string $nom, string $balise) : string
Parameters
$intervalle : string

L'éventuelle intervalle de compatibilité de la dépendance. ex: [1.1.0;]

$version : string

La version en cours active pour le plugin demandé (ou php ou extension php demandée)

$nom : string

Le plugin (ou php ou extension php) qui est absent

$balise : string

Le type de balise utilisé (necessite ou utilise)

Tags
used-by
plugin_controler_necessite()
Return values
string

Le message d'erreur.

plugin_controler_lib()

plugin_controler_lib(string|Stringable $lib, string $url) : mixed
Parameters
$lib : string|Stringable
$url : string
Tags
used-by
plugins_erreurs()

actualise_plugins_actifs()

Calcule la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs

actualise_plugins_actifs([bool $pipe_recherche = false ]) : bool
Parameters
$pipe_recherche : bool = false
Tags
uses
ecrire_plugin_actifs()
used-by
exec_admin_plugin_dist()
Return values
bool

true si il y a eu des modifications sur la liste des plugins actifs, false sinon

ecrire_plugin_actifs()

Calcule ou modifie la liste des plugins actifs et recompile les fichiers caches qui leurs sont relatifs

ecrire_plugin_actifs(string|array<string|int, string> $plugin[, bool $pipe_recherche = false ][, string $operation = 'raz' ]) : bool
Parameters
$plugin : string|array<string|int, string>

Plugin ou plugins concernés (leur chemin depuis le répertoire plugins)

$pipe_recherche : bool = false
$operation : string = 'raz'
  • raz : recalcule tout
  • ajoute : ajoute le plugin indiqué à la liste des plugins actifs
  • enleve : enleve le plugin indiqué de la liste des plugins actifs
  • force : ?
Tags
note

Les ecrire_meta() doivent en principe aussi initialiser la valeur a vide si elle n'existe pas risque de pb en php5 a cause du typage ou de null (verifier dans la doc php)

used-by
actualise_plugins_actifs()
Return values
bool

true si il y a eu des modifications sur la liste des plugins actifs, false sinon

plugins_precompile_chemin()

Écrit le fichier de déclaration des chemins (path) des plugins actifs

plugins_precompile_chemin(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre) : void

Le fichier créé, une fois exécuté permet à SPIP de rechercher des fichiers dans les répertoires des plugins concernés.

Parameters
$plugin_valides : array<string|int, mixed>

Couples (prefixe => description) des plugins qui seront actifs

$ordre : array<string|int, mixed>

Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances

Tags
see
_chemin()

Utilisé pour déclarer les chemins.

uses
plugin_version_compatible()
uses
ecrire_fichier_php()

plugins_precompile_xxxtions()

Écrit les fichiers de chargement des fichiers d'options et de fonctions des plugins

plugins_precompile_xxxtions(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre) : void

Les onglets et menus déclarés dans le fichier paquet.xml des plugins sont également ajoutés au fichier de fonctions créé.

Parameters
$plugin_valides : array<string|int, mixed>

Couples (prefixe => description) des plugins qui seront actifs

$ordre : array<string|int, mixed>

Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances

Tags
uses
plugin_ongletbouton()
uses
ecrire_fichier_php()

plugin_ongletbouton()

Compile les entrées d'un menu et retourne le code php d'exécution

plugin_ongletbouton(string $nom[, array<string|int, mixed> $val = [] ]) : string

Génère et retourne un code php (pour enregistrement dans un fichier de cache) permettant d'obtenir la liste des entrées de menus, ou des onglets de l'espace privé.

Définit également une constante (UPDATED$nom et UPDATED_md5$nom), signalant une modification de ces menus

Parameters
$nom : string

Nom du type de menu. Exemple: boutons_plugins, onglets_plugins

$val : array<string|int, mixed> = []

Liste des entrées de ce menu

Tags
used-by
plugins_precompile_xxxtions()
Return values
string

Code php

plugins_amorcer_plugins_actifs()

Chargement des plugins actifs dans le path de SPIP et exécution de fichiers d'options des plugins

plugins_amorcer_plugins_actifs() : void

Les fichiers d'options peuvent déclarer des pipelines ou de nouveaux chemins.

La connaissance chemins peut être nécessaire pour la construction du fichier d'exécution des pipelines.

pipeline_matrice_precompile()

Crée la liste des filtres à traverser pour chaque pipeline

pipeline_matrice_precompile(array<string|int, mixed> $plugin_valides, array<string|int, mixed> $ordre, string $pipe_recherche) : array<string|int, mixed>

Complète la globale spip_pipeline des fonctions que doit traverser un pipeline, et la globale spip_matrice des fichiers à charger qui contiennent ces fonctions.

Retourne aussi pour certaines balises présentes dans les paquet.xml (script, style, genie), un code PHP à insérer au début de la chaîne du ou des pipelines associés à cette balise (insert_head, insert_head_css, taches_generales_cron, ...). Ce sont des écritures raccourcies pour des usages fréquents de ces pipelines.

Parameters
$plugin_valides : array<string|int, mixed>

Couples (prefixe => description) des plugins qui seront actifs

$ordre : array<string|int, mixed>

Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances

$pipe_recherche : string
Return values
array<string|int, mixed>

Couples (nom du pipeline => Code PHP à insérer au début du pipeline)

pipeline_precompile()

Précompilation des pipelines

pipeline_precompile([array<string|int, mixed> $prepend_code = [] ]) : mixed

Crée le fichier d'exécution des pipelines dont le chemin est app()->getCacheDir() . 'charger_pipelines.php'

La liste des pipelines est définie par la globale spip_pipeline qui a été remplie soit avec les fichiers d'options, soit avec des descriptions de plugins (paquet.xml) dont celui de SPIP lui-même.

Les fichiers à charger pour accéder aux fonctions qui doivent traverser un pipeline se trouve dans la globale spip_matrice.

Parameters
$prepend_code : array<string|int, mixed> = []

Code PHP à insérer avant le passage dans la chaîne des fonctions d'un pipeline. Couples 'Nom du pipeline' => Code PHP à insérer

Tags
see
pipeline_matrice_precompile()
uses
ecrire_fichier_php()
uses
clear_path_cache()

plugin_est_installe()

Indique si un chemin de plugin fait parti des plugins activés sur le site

plugin_est_installe(string $plug_path) : bool
Parameters
$plug_path : string

Chemin du plugin

Return values
bool

true si le plugin est actif, false sinon

plugin_installes_meta()

Parcours les plugins activés et appelle leurs fonctions d'installation si elles existent.

plugin_installes_meta() : void

Elle ajoute ensuite les plugins qui ont été installés dans la valeur "plugin_installes" de la table meta. Cette meta ne contient que les noms des plugins qui ont une version_base.

Tags
uses
plugins_installer_dist()
used-by
admin_plug_args()

ecrire_fichier_php()

Écrit un fichier PHP

ecrire_fichier_php(string $nom, string $contenu[, string $comment = '' ]) : void
Parameters
$nom : string

Chemin du fichier

$contenu : string

Contenu du fichier (sans les balises ouvrantes et fermantes de PHP)

$comment : string = ''

Commentaire : code écrit en tout début de fichier, après la balise PHP ouvrante

Tags
used-by
plugins_precompile_chemin()
used-by
plugins_precompile_xxxtions()
used-by
pipeline_precompile()

        
On this page

Search results