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
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
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