Documentation du code de SPIP et de ses plugins

SVP

Decideur
in package

Le décideur calcule les actions qui doivent être faites en fonction de ce qui est demandé et des différentes dépendances des plugins.

Table of Contents

Properties

$ask  : array<string|int, mixed>
Toutes les actions à faire demandées (ce que l'on demande à l'origine)
$changes  : array<string|int, mixed>
Toutes les actions à faire consécutives aux dépendances
$end  : array<string|int, mixed>
Plugins actifs à la fin des modifications effectuées
$err  : array<string|int, mixed>
Liste des erreurs
$erreur_sur_maj_introuvable  : bool
Générer une erreur si on demande une mise à jour d'un plugin alors qu'on ne la connait pas.
$invalides  : array<string|int, mixed>
Tous les plugins invalidés (suite a des dependances introuvables, mauvaise version de SPIP...)
$log  : bool
Loguer les différents éléments
$off  : array<string|int, mixed>
Tous les plugins à arrêter (désactiver ou désinstaller)
$ok  : bool
État de santé (absence d'erreur)
$procure  : array<string|int, mixed>
Plugins procure par SPIP
$start  : array<string|int, mixed>
Plugins actifs en cours avant toute modification
$todo  : array<string|int, mixed>
Toutes les actions à faire demandées et consécutives aux dépendances

Methods

__construct()  : mixed
Constructeur
actionner()  : bool
Ajoute les actions demandées au décideur
add()  : mixed
Indique qu'un paquet passe à on (on l'active)
annule_change()  : mixed
Annule une action (automatique) qui finalement était réellement demandée.
ask()  : mixed
Ajouter une action/paquet à la liste des demandées
change()  : mixed
Ajouter une action/paquet à la liste des changements en plus par rapport à la demande initiale
chercher_plugin_compatible()  : bool|array<string|int, mixed>
Vérifie qu'un plugin existe pour un préfixe et une version donnée
chercher_plugin_recent()  : bool|array<string|int, mixed>
Vérifie qu'un plugin plus récent existe pour un préfixe et une version donnée
en_erreur()  : bool|array<string|int, mixed>
Teste si une erreur est présente sur un paquet (via son identifiant)
erreur()  : mixed
Ajoute une erreur sur un paquet
est_attente_id()  : bool
Teste si un paquet (via son identifiant) est en attente
est_presente_lib()  : bool
Teste qu'une librairie (via son nom) est déjà présente
infos_courtes()  : array<string|int, mixed>
Récupérer les infos utiles des paquet
infos_courtes_id()  : array<string|int, mixed>
Retourne le tableau de description d'un paquet (via son identifiant)
invalider()  : mixed
Invalide un plugin (il est introuvable, ne correspond pas à notre version de SPIP...)
liste_plugins_actifs()  : mixed
Liste des plugins déjà actifs
liste_plugins_procure()  : array<string|int, mixed>
Liste des plugins procurés par SPIP
log()  : mixed
Écrit un log
off()  : mixed
Indique qu'un paquet passe à off (on le désactive ou désinstalle)
presenter_actions()  : array<string|int, mixed>
Retourne un tableau des différentes actions qui seront faites
presenter_erreur_dependance()  : mixed
Retourne le texte d'erreur adapté à une dépendance donnée
remove()  : mixed
Retire un paquet de la liste des paquets à activer
sera_actif()  : bool
Teste qu'un paquet (via son préfixe) sera actif directement ou par l'intermediaire d'un procure
sera_actif_id()  : bool
Teste qu'un paquet (via son identifiant) sera actif
sera_invalide()  : bool
Teste qu'un paquet (via son préfixe) est déclaré invalide
sera_off()  : bool
Teste qu'un paquet (via son préfixe) sera passé off (désactivé ou désinstallé)
sera_off_id()  : bool
Teste qu'un paquet (via son identifiant) sera passé off (désactivé ou désinstallé)
start()  : mixed
Initialise les listes de plugins pour le calcul de dépendances
todo()  : mixed
Ajouter une action/paquet à la liste de toutes les actions à faire
verifier_dependances()  : bool
Vérifier (et activer) les dépendances
verifier_dependances_plugin()  : bool
Pour une description de paquet donnée, vérifie sa validité.

Properties

$ask

Toutes les actions à faire demandées (ce que l'on demande à l'origine)

public array<string|int, mixed> $ask = []

Tableau ('identifiant' => tableau de description)

$changes

Toutes les actions à faire consécutives aux dépendances

public array<string|int, mixed> $changes = []

C'est à dire les actions à faire en plus de celles demandées.

Tableau ('identifiant' => tableau de description)

$end

Plugins actifs à la fin des modifications effectuées

public array<string|int, mixed> $end = ['i' => [], 'p' => []]

Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description

$err

Liste des erreurs

public array<string|int, mixed> $err = []

Tableau ('identifiant' => liste des erreurs)

$erreur_sur_maj_introuvable

Générer une erreur si on demande une mise à jour d'un plugin alors qu'on ne la connait pas.

public bool $erreur_sur_maj_introuvable = \true

$invalides

Tous les plugins invalidés (suite a des dependances introuvables, mauvaise version de SPIP...)

public array<string|int, mixed> $invalides = []

Tableau ('PREFIXE' => tableau de description)

$log

Loguer les différents éléments

public bool $log = \false

Sa valeur sera initialisée par la configuration 'mode_log_verbeux' de SVP

$off

Tous les plugins à arrêter (désactiver ou désinstaller)

public array<string|int, mixed> $off = []

Tableau ('PREFIXE' => tableau de description)

$ok

État de santé (absence d'erreur)

public bool $ok = \true

Le résultat true permettra d'effectuer toutes les actions. Passe à false dès qu'une erreur est présente !

$procure

Plugins procure par SPIP

public array<string|int, mixed> $procure = []

Tableau ('PREFIXE' => numéro de version)

$start

Plugins actifs en cours avant toute modification

public array<string|int, mixed> $start = ['i' => [], 'p' => []]

Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description

$todo

Toutes les actions à faire demandées et consécutives aux dépendances

public array<string|int, mixed> $todo = []

Tableau ('identifiant' => tableau de description)

Methods

__construct()

Constructeur

public __construct() : mixed

Initialise la propriété $log en fonction de la configuration

actionner()

Ajoute les actions demandées au décideur

public actionner([array<string|int, mixed> $todo = null ]) : bool

Chaque action est analysée et elles sont redispatchées dans différents tableaux via les méthodes :

  • ask : ce qui est demandé (ils y vont tous)
  • todo : ce qui est à faire (ils y vont tous aussi)
  • add : les plugins activés,
  • off : les plugins désactivés

La fonction peut lever des erreurs sur les actions tel que :

  • Paquet demandé inconnu
  • Mise à jour introuvable
  • Paquet à désactiver mais qui n'est pas actif
Parameters
$todo : array<string|int, mixed> = null

Ce qui est demandé de faire Tableau identifiant du paquet => type d'action (on, off, up...)

Return values
bool

False en cas d'erreur, true sinon

add()

Indique qu'un paquet passe à on (on l'active)

public add(array<string|int, mixed> $info) : mixed
Parameters
$info : array<string|int, mixed>

Description du paquet

annule_change()

Annule une action (automatique) qui finalement était réellement demandée.

public annule_change(array<string|int, mixed> $info) : mixed

Par exemple, une mise à 'off' de paquet entraîne d'autres mises à 'off' des paquets qui en dépendent. Si une action sur un des paquets dépendants était aussi demandée, il faut annuler l'action automatique.

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

Description du paquet concerné

ask()

Ajouter une action/paquet à la liste des demandées

public ask(array<string|int, mixed> $info, string $quoi) : mixed

L'ajoute aussi à la liste de toutes les actions !

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

Description du paquet concerné

$quoi : string

Type d'action (on, off, kill, upon...)

change()

Ajouter une action/paquet à la liste des changements en plus par rapport à la demande initiale

public change(array<string|int, mixed> $info, string $quoi) : mixed

L'ajoute aussi à la liste de toutes les actions !

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

Description du paquet concerné

$quoi : string

Type d'action (on, off, kill, upon...)

chercher_plugin_compatible()

Vérifie qu'un plugin existe pour un préfixe et une version donnée

public chercher_plugin_compatible(string $prefixe, string $version) : bool|array<string|int, mixed>
Parameters
$prefixe : string

Préfixe du plugin

$version : string

Compatibilité à comparer, exemple '[1.0;]'

Return values
bool|array<string|int, mixed>

false si pas de plugin plus récent trouvé tableau de description du paquet le plus récent sinon

chercher_plugin_recent()

Vérifie qu'un plugin plus récent existe pour un préfixe et une version donnée

public chercher_plugin_recent(string $prefixe, string $version) : bool|array<string|int, mixed>
Parameters
$prefixe : string

Préfixe du plugin

$version : string

Compatibilité à comparer, exemple '[1.0;]'

Return values
bool|array<string|int, mixed>

false si pas de plugin plus récent trouvé tableau de description du paquet le plus récent sinon

en_erreur()

Teste si une erreur est présente sur un paquet (via son identifiant)

public en_erreur(int $id) : bool|array<string|int, mixed>
Parameters
$id : int

Identifiant de paquet

Return values
bool|array<string|int, mixed>

false si pas d'erreur, tableau des erreurs sinon.

erreur()

Ajoute une erreur sur un paquet

public erreur(int $id[, string $texte = '' ]) : mixed

Passe le flag OK à false : on ne pourra pas faire les actions demandées.

Parameters
$id : int

Identifiant de paquet

$texte : string = ''

Texte de l'erreur

est_attente_id()

Teste si un paquet (via son identifiant) est en attente

public est_attente_id(int $id) : bool

Les plugins en attente ont un statut spécial : à la fois dans la liste des plugins actifs, mais désactivés. Un plugin passe 'en attente' lorsqu'il est actif mais perd accidentellement une dépendance, par exemple si une dépendance est supprimée par FTP. Dès que sa dépendance revient, le plugin se réactive.

L'interface de gestion des plugins de SVP, elle, permet pour ces plugins de les désactiver ou réactiver (retéléchargeant alors la dépendance si possible).

Parameters
$id : int

Identifiant du plugin

Return values
bool

Le plugin est-il en attente ?

est_presente_lib()

Teste qu'une librairie (via son nom) est déjà présente

public est_presente_lib(string $lib) : bool
Parameters
$lib : string

Nom de la librairie

Return values
bool

La librairie est-elle présente ?

infos_courtes()

Récupérer les infos utiles des paquet

public infos_courtes(array<string|int, mixed>|string $condition[, bool $multiple = false ]) : array<string|int, mixed>

Crée un tableau de description pour chaque paquet dans une écriture courte comme index ('i' pour identifiant) tel que :

  • i = identifiant
  • p = prefixe (en majuscule)
  • n = nom du plugin
  • v = version
  • e = etat
  • a = actif
  • du = dépendances utilise
  • dn = dépendances nécessite
  • dl = dépendances librairie
  • procure = prefixes procurés
  • maj = mise à jour

On passe un where ($condition) et on crée deux tableaux, l'un des paquets triés par identifiant, l'autre par prefixe.

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

Condition where

$multiple : bool = false

Si multiple, le tableau par préfixe est un sous-tableau (il peut alors y avoir plusieurs paquets pour un même prefixe, classés par états décroissants)

Return values
array<string|int, mixed>

Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description ou, avec $multiple=true : [p][MOTS][] = tableau de description

infos_courtes_id()

Retourne le tableau de description d'un paquet (via son identifiant)

public infos_courtes_id(int $id) : array<string|int, mixed>
Parameters
$id : int

Identifiant du paquet

Tags
note

Attention, retourne un tableau complexe. La description sera dans : ['i'][$id]

Return values
array<string|int, mixed>

Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description

invalider()

Invalide un plugin (il est introuvable, ne correspond pas à notre version de SPIP...)

public invalider(array<string|int, mixed> $info) : mixed
Parameters
$info : array<string|int, mixed>

Description du paquet concerné

liste_plugins_actifs()

Liste des plugins déjà actifs

public liste_plugins_actifs() : mixed

liste_plugins_procure()

Liste des plugins procurés par SPIP

public liste_plugins_procure() : array<string|int, mixed>

Calcule la liste des plugins que le core de SPIP déclare procurer.

Return values
array<string|int, mixed>

Tableau ('PREFIXE' => version)

log()

Écrit un log

public log(mixed $quoi) : mixed

Écrit un log si la propriété $log l'autorise.

Parameters
$quoi : mixed

La chose à logguer (souvent un texte)

off()

Indique qu'un paquet passe à off (on le désactive ou désinstalle)

public off(array<string|int, mixed> $info[, bool $recur = false ]) : mixed
Parameters
$info : array<string|int, mixed>

Description du paquet

$recur : bool = false

Passer à off les plugins qui en dépendent, de façon récursive ?

presenter_actions()

Retourne un tableau des différentes actions qui seront faites

public presenter_actions(string $quoi) : array<string|int, mixed>
Parameters
$quoi : string

Type de demande

  • ask : les actions demandées
  • changes : les actions en plus par rapport à ce qui était demandé
  • todo : toutes les actions
Return values
array<string|int, mixed>

Liste des actions (joliement traduites et expliquées)

presenter_erreur_dependance()

Retourne le texte d'erreur adapté à une dépendance donnée

public presenter_erreur_dependance(mixed $info, mixed $dependance, mixed $intervalle) : mixed
Parameters
$info : mixed
$dependance : mixed
$intervalle : mixed

remove()

Retire un paquet de la liste des paquets à activer

public remove(array<string|int, mixed> $info) : mixed
Parameters
$info : array<string|int, mixed>

Description du paquet concerné

sera_actif()

Teste qu'un paquet (via son préfixe) sera actif directement ou par l'intermediaire d'un procure

public sera_actif(string $prefixe) : bool
Parameters
$prefixe : string

Préfixe du paquet

Return values
bool

Le paquet sera t'il actif ?

sera_actif_id()

Teste qu'un paquet (via son identifiant) sera actif

public sera_actif_id(int $id) : bool
Parameters
$id : int

Identifiant du paquet

Return values
bool

Le paquet sera t'il actif ?

sera_invalide()

Teste qu'un paquet (via son préfixe) est déclaré invalide

public sera_invalide(string $p) : bool
Parameters
$p : string

Prefixe du paquet

Return values
bool

Le paquet est t'il invalide ?

sera_off()

Teste qu'un paquet (via son préfixe) sera passé off (désactivé ou désinstallé)

public sera_off(string $prefixe) : bool
Parameters
$prefixe : string

Prefixe du paquet

Return values
bool

Le paquet sera t'il off ?

sera_off_id()

Teste qu'un paquet (via son identifiant) sera passé off (désactivé ou désinstallé)

public sera_off_id(int $id) : bool
Parameters
$id : int

Identifiant du paquet

Return values
bool

Le paquet sera t'il off ?

start()

Initialise les listes de plugins pour le calcul de dépendances

public start() : mixed

Les propriété $start et $end reçoivent la liste des plugins actifs $procure celle des plugins procurés par le Core

todo()

Ajouter une action/paquet à la liste de toutes les actions à faire

public todo(array<string|int, mixed> $info, string $quoi) : mixed
Parameters
$info : array<string|int, mixed>

Description du paquet concerné

$quoi : string

Type d'action (on, off, kill, upon...)

verifier_dependances()

Vérifier (et activer) les dépendances

public verifier_dependances([array<string|int, mixed> $todo = null ]) : bool
APIYes

Pour chaque plugin qui sera actif, vérifie qu'il respecte ses dépendances.

Si ce n'est pas le cas, le plugin n'est pas activé et le calcul de dépendances se refait sans lui. À un moment on a normalement rapidement une liste de plugins cohérents (au pire on ne boucle que 100 fois maximum - ce qui ne devrait jamais se produire).

Des erreurs sont levées lorsqu'un plugin ne peut honorer son activation à cause d'un problème de dépendance. On peut les récupérer dans la propriété $err.

Parameters
$todo : array<string|int, mixed> = null

Ce qui est demandé de faire Tableau identifiant du paquet => type d'action (on, off, up...)

Return values
bool

False en cas d'erreur, true sinon

verifier_dependances_plugin()

Pour une description de paquet donnée, vérifie sa validité.

public verifier_dependances_plugin(array<string|int, mixed> $info[, int $prof = 0 ]) : bool

Teste la version de SPIP, les librairies nécessitées, ses dépendances (et tente de les trouver et ajouter si elles ne sont pas là)

Lorsqu'une dépendance est activée, on entre en récursion dans cette fonction avec la description de la dépendance

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

Description du paquet

$prof : int = 0

Profondeur de récursion

Return values
bool

false si erreur (dépendance non résolue, incompatibilité...), true sinon


        
On this page

Search results