Fichier ecrire/inc/plugin.php

Gestion de l'activation des plugins

Source

Proposer une amélioration

Liste des constantes

Liste des fonctions

boolean actualise_plugins_actifs( boolean $pipe_recherche = false )

Paramètres

  1. boolean $pipe_recherche = false

    ?

Retour

  • boolean

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

Package

Proposer une amélioration
void ecrire_fichier_php( string $nom , string $contenu , string $comment = '' )

Paramètres

  1. string $nom

    Chemin du fichier

  2. string $contenu

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

  3. string $comment = ''

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

Package

Proposer une amélioration
boolean ecrire_plugin_actifs( string | array<mixed,string> $plugin , boolean $pipe_recherche = false , string $operation = 'raz' )

Paramètres

  1. string | array<mixed,string> $plugin

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

  2. boolean $pipe_recherche = false

    ?

  3. string $operation = '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 : ?

Retour

  • boolean

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

Package

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)
Proposer une amélioration
array fast_find_plugin_dirs( string $dir , integer $max_prof = 100 )

Paramètres

  1. string $dir

    Chemin du répertoire dont on souhaite retourner les sous répertoires

  2. integer $max_prof = 100

    Profondeur maximale des sous répertoires

Retour

  • array

    Liste complète des répeertoires

Utilisé par

Package

Proposer une amélioration

Vérifie le ou les chemins relatifs transmis pour vérifier qu'ils contiennent un plugin.xml ou un paquet.xml. Les chemins valides sont retournés.

string | array<mixed,string> is_plugin_dir( string | array<mixed,string> $dir , string | null $dir_plugins = null )

Paramètres

  1. string | array<mixed,string> $dir

    Chemin (relatif à $dir_plugins), ou liste de chemins à tester

  2. string | null $dir_plugins = null
    • string : Chemin de répertoire (relatif à la _DIR_RACINE), départ des chemin(s) à tester
    • null (par défaut) : utilise le chemin _DIR_PLUGINS

Retour

  • string | array<mixed,string>
    • string : Le chemin accepté (c'était un plugin)
    • '' : ce n'était pas un chemin valide
    • array : Ensemble des chemins acceptés (si $dir était array)

Package

Proposer une amélioration

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

array liste_chemin_plugin( array $liste , string $dir_plugins = _DIR_PLUGINS )

Paramètres

  1. array $liste
  2. string $dir_plugins = _DIR_PLUGINS

Retour

  • array

Package

Proposer une amélioration
array liste_chemin_plugin_actifs( string $dir_plugins = _DIR_PLUGINS )

Paramètres

  1. string $dir_plugins = _DIR_PLUGINS

    Chemin du répertoire de plugins

Retour

  • array

Package

Proposer une amélioration

Lecture des sous repertoire plugin existants

array liste_plugin_files( string | null $dir_plugins = null )

Paramètres

  1. string | null $dir_plugins = null
    • string : Chemin (relatif à la racine du site) du répertoire à analyser.
    • null : utilise le chemin _DIR_PLUGINS.

Retour

  • array

Exemples

    • liste_plugin_files()
    • liste_plugin_files(_DIR_PLUGINS_DIST)
    • liste_plugin_files(_DIR_PLUGINS_SUPPL)

Package

Proposer une amélioration

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.

array pipeline_matrice_precompile( array $plugin_valides , array $ordre , string $pipe_recherche )

Paramètres

  1. array $plugin_valides

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

  2. array $ordre

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

  3. string $pipe_recherche

Retour

  • array

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

Package

Proposer une amélioration

Crée le fichier d'exécution des pipelines dont le chemin est défini par _CACHE_PIPELINES

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 (plugin.xml ou 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.

void pipeline_precompile( array $prepend_code = array() )

Paramètres

  1. array $prepend_code = array()

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

Package

Proposer une amélioration
void plugin_controler_lib( $lib , $url )

Paramètres

  1. $lib
  2. $url

Utilisé par

Package

Proposer une amélioration
\string. plugin_controler_necessite( $liste , $nom , $intervalle , $balise )

Paramètres

  1. $liste

    Liste de description des plugins

  2. $nom

    Le plugin donc on cherche la presence

  3. $intervalle

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

  4. $balise

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

Retour

  • \string.

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

Utilisé par

Package

Proposer une amélioration
string | array plugin_donne_erreurs( boolean $raw = false , boolean $raz = true )

Paramètres

  1. boolean $raw = false
    • true : pour obtenir le tableau brut des erreurs
    • false : Code HTML
  2. boolean $raz = true
    • true pour effacer la meta qui stocke les erreurs.

Retour

  • string | array
    • Liste des erreurs ou code HTML des erreurs

Package

Proposer une amélioration
boolean plugin_est_installe( string $plug_path )

Paramètres

  1. string $plug_path

    Chemin du plugin

Retour

  • boolean

    true si le plugin est actif, false sinon

Package

Proposer une amélioration

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)

void plugin_fixer_procure( array & $liste , array & $infos )

Paramètres

  1. array & $liste
  2. array & $infos

Utilisé par

Package

Proposer une amélioration

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.

void plugin_installes_meta( )

Package

Proposer une amélioration
string plugin_message_incompatibilite( string $intervalle , string $version , string $nom , string $balise )

Paramètres

  1. string $intervalle

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

  2. string $version

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

  3. string $nom

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

  4. string $balise

    Le type de balise utilisé (necessite ou utilise)

Retour

  • string

    Le message d'erreur.

Package

Proposer une amélioration

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

array plugin_necessite( array $n , array $liste , $balise = 'necessite' )

Paramètres

  1. array $n

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

  2. array $liste

    Tableau des plugins présents

  3. $balise = 'necessite'

Retour

  • array

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

Utilisé par

Package

Proposer une amélioration

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 _UPDATEDmd5$nom), signalant une modification de ces menus

string plugin_ongletbouton( string $nom , array $val )

Paramètres

  1. string $nom

    Nom du type de menu Exemple: boutons_plugins, onglets_plugins

  2. array $val

    Liste des entrées de ce menu

Retour

  • string

    Code php

Package

Proposer une amélioration

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

array plugin_trier( array $infos , array $liste_non_classee )

Paramètres

  1. array $infos

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

  2. array $liste_non_classee

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

Retour

  • array

    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

Package

Proposer une amélioration
string | array plugin_valide_resume( array & $liste , string $plug , array $infos , string $dir_type )

Paramètres

  1. array & $liste
  2. string $plug
  3. array $infos
  4. string $dir_type

Retour

  • string | array

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

Utilisé par

Package

Proposer une amélioration

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

boolean plugin_version_compatible( string $intervalle , string $version , string $avec_quoi = '' )

Paramètres

  1. string $intervalle

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

  2. string $version

    Un numéro de version. ex: 3.1.99]

  3. string $avec_quoi = ''

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

Retour

  • boolean

    True si dans l'intervalle, false sinon.

Package

Proposer une amélioration

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.

void plugins_amorcer_plugins_actifs( )

Package

Proposer une amélioration
void plugins_erreurs( array $liste_non_classee , array $liste , array $infos , $msg = array() )

Paramètres

  1. array $liste_non_classee

    Couples (prefixe => description) des plugins en erreur

  2. array $liste

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

  3. array $infos

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

  4. $msg = array()

Package

Proposer une amélioration

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

void plugins_precompile_chemin( array $plugin_valides , array $ordre )

Paramètres

  1. array $plugin_valides

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

  2. array $ordre

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

Package

Proposer une amélioration

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

void plugins_precompile_xxxtions( array $plugin_valides , array $ordre )

Paramètres

  1. array $plugin_valides

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

  2. array $ordre

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

Package

Proposer une amélioration

Liste des erreurs

GravitéLigneDescription
Erreur 539
  • Name of argument $msg does not match with the DocBlock's name $infos in \plugins_erreurs()
  • Argument $msg is missing from the Docblock of plugins_erreurs
Erreur 625
  • Name of argument $balise does not match with the DocBlock's name $liste in \plugin_necessite()
  • Argument $balise is missing from the Docblock of plugin_necessite
Erreur 686
  • No summary for function \plugin_message_incompatibilite()
Erreur 745
  • No summary for function \plugin_controler_lib()
  • Argument $lib is missing from the Docblock of plugin_controler_lib
  • Argument $url is missing from the Docblock of plugin_controler_lib