Documentation du code de SPIP et de ses plugins

SVP

Actionneur
in package

L'actionneur calcule l'ordre des actions, permet de les stocker dans un fichier cache et de les effectuer.

Table of Contents

Properties

$decideur  : Decideur
Instance du décideur
$done  : array<string|int, mixed>
Liste des actions faites Liste de description courtes des paquets + index 'todo' indiquant l'action
$end  : array<string|int, mixed>
Liste des actions à faire
$err  : array<string|int, mixed>
Liste des erreurs
$lock  : array<string|int, mixed>
Verrou.
$log  : bool
Loguer les différents éléments
$middle  : array<string|int, mixed>
Actions en cours d'analyse
$start  : array<string|int, mixed>
Liste des actions à faire
$svp_off  : bool
SVP (ce plugin) est-il à désactiver dans une des actions ?
$work  : array<string|int, mixed>
Actions en cours Description courte du paquet + index 'todo' indiquant l'action

Methods

__construct()  : mixed
Constructeur
activer_plugin_dossier()  : void
Activer un plugin
actualiser_plugin_interessants()  : mixed
Actualiser les plugins intéressants
add_lib()  : bool
Ajoute une librairie à installer
ajouter_actions()  : mixed
Ajoute les actions à faire dans l'actionneur
ajouter_plugin_interessants_meta()  : mixed
Ajoute un plugin dans les plugins intéressants
calculer_necessites_complets()  : array<string|int, mixed>
Complète les infos des paquets actionnés pour qu'ils contiennent en plus de leurs 'necessite' directs, tous les nécessite des plugins dont ils dépendent, si ceux ci sont aussi actionnés.
calculer_necessites_complets_rec()  : array<string|int, mixed>
Fonction récursive pour calculer la liste de tous les préfixes de plugins nécessités par un autre.
choisir_teleporteur()  : string
Teste s'il est possible d'utiliser un téléporteur particulier, sinon retourne le nom du téléporteur par défaut
clear()  : mixed
Remet à zéro les tableaux d'actions
deverrouiller()  : mixed
Enlève le verrou
do_action()  : mixed
Effectue l'action en attente.
do_get()  : bool
Télécharger un paquet
do_getlib()  : bool
Installer une librairie
do_geton()  : bool
Attraper et activer un paquet
do_install()  : bool
Lancer l'installation d'un paquet
do_kill()  : bool
Effacer les fichiers d'un paquet
do_off()  : bool
Désactiver un paquet
do_on()  : bool
Activer un paquet
do_stop()  : bool
Désinstaller un paquet
do_up()  : bool|array<string|int, mixed>
Mettre à jour un paquet
do_upon()  : bool
Mettre à jour et activer un paquet
err()  : mixed
Ajoute une erreur
est_verrouille()  : bool
Teste l'existance d'un verrou par un auteur ?
get_actions()  : mixed
Lit le fichier cache de la liste des actions et verrou
get_paquet_id()  : bool|array<string|int, mixed>
Télécharge un paquet
installer_plugin()  : bool
Lancer l'installation d'un plugin
log()  : mixed
Ajoute un log
nettoyer_actions()  : mixed
Nettoyage des actions et verrou
neutre()  : void
Ajoute un paquet avec une action neutre
off()  : void
Ajoute un paquet à désactiver
on()  : void
Ajoute un paquet à activer
one_action()  : bool|array<string|int, mixed>
Effectue une des actions qui reste à faire.
ordonner_actions()  : mixed
Ordonne les actions demandées
presenter_actions()  : string
Retourne un bilan, texte HTML, des actions qui ont été faites
presenter_derniere_action()  : string
Retourne le texte qui présente la dernière action qui vient d'être réalisée
progression()  : int|float
Retourne le pourcentage de progression des actions
sauver_actions()  : mixed
Sauvegarde en fichier cache la liste des actions et le verrou
tester_repertoire_destination_ancien_format()  : bool
Teste si un répertoire du plugin auto, contenant un plugin est dans un ancien format auto/prefixe/ (qui doit alors être supprimé) ou dans un format normal auto/prefixe/vx.y.z
tester_repertoire_plugins_auto()  : bool
Teste que le répertoire plugins auto existe et que l'on peut ecrire dedans !
tester_si_svp_desactive()  : bool
Teste si le plugin SVP (celui-ci donc) a été désinstallé / désactivé dans les actions réalisées
verrouiller()  : mixed
Pose un verrou

Properties

$done

Liste des actions faites Liste de description courtes des paquets + index 'todo' indiquant l'action

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

$end

Liste des actions à faire

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

Liste de description courtes des paquets + index 'todo' indiquant l'action

$err

Liste des erreurs

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

Liste des erreurs

$lock

Verrou.

public array<string|int, mixed> $lock = ['id_auteur' => 0, 'time' => '']

Le verrou est posé au moment de passer à l'action.

Index 'id_auteur' : Identifiant de l'auteur ayant déclenché des actions Indix 'time' : timestamp de l'heure de déclenchement de l'action

$log

Loguer les différents éléments

public bool $log = \false

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

$middle

Actions en cours d'analyse

public array<string|int, mixed> $middle = ['off' => [], 'lib' => [], 'on' => [], 'neutre' => []]

Lorsqu'on ajoute les actions à faire, elles sont réordonnées et classées dans ces quatre sous-tableaux

Chaque sous-tableau est composé d'une description courte du paquet auquel est ajouté dans l'index 'todo' le type d'action à faire.

Index 'off' : les paquets à désactiver (ordre inverse des dépendances) Index 'lib' : les librairies à installer Index 'on' : les paquets à activer (ordre des dépendances) Index 'neutre' : autres actions dont l'ordre a peu d'importance.

$start

Liste des actions à faire

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

Tableau identifiant du paquet => type d'action

$svp_off

SVP (ce plugin) est-il à désactiver dans une des actions ?

public bool $svp_off = \false

Dans ce cas, on tente de le désactiver après d'autres plugins à désactiver sinon l'ensemble des actions suivantes échoueraient.

false si SVP n'est pas à désactiver, true sinon

$work

Actions en cours Description courte du paquet + index 'todo' indiquant l'action

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

Methods

__construct()

Constructeur

public __construct() : mixed

Détermine si les logs sont activés et instancie un décideur.

activer_plugin_dossier()

Activer un plugin

public activer_plugin_dossier(string $dossier, array<string|int, mixed> $i[, string $constante = '_DIR_PLUGINS' ]) : void
Parameters
$dossier : string

Chemin du répertoire du plugin

$i : array<string|int, mixed>

Description en BDD du paquet - row SQL (tableau clé => valeur)

$constante : string = '_DIR_PLUGINS'

Constante indiquant le chemin de base du plugin (_DIR_PLUGINS, _DIR_PLUGINS_SUPPL, _DIR_PLUGINS_DIST)

actualiser_plugin_interessants()

Actualiser les plugins intéressants

public actualiser_plugin_interessants() : mixed

Décrémente chaque score de plugin présent dans la méta 'plugins_interessants' et signifiant que ces plugins ont été utilisés récemment.

Les plugins atteignant un score de zéro sont évacués ce la liste.

add_lib()

Ajoute une librairie à installer

public add_lib(string $nom, string $source) : bool

Ajoute l'action de télécharger une librairie, si la libraire n'est pas déjà présente et si le répertoire de librairie est écrivable.

Parameters
$nom : string

Nom de la librairie

$source : string

URL pour obtenir la librairie

Return values
bool

ajouter_actions()

Ajoute les actions à faire dans l'actionneur

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

Tableau des actions à faire (identifiant de paquet => type d'action)

ajouter_plugin_interessants_meta()

Ajoute un plugin dans les plugins intéressants

public ajouter_plugin_interessants_meta(string $dir) : mixed

Initialise à 30 le score du plugin indiqué par le chemin transmis, dans la liste des plugins intéressants.

Parameters
$dir : string

Chemin du répertoire du plugin

calculer_necessites_complets()

Complète les infos des paquets actionnés pour qu'ils contiennent en plus de leurs 'necessite' directs, tous les nécessite des plugins dont ils dépendent, si ceux ci sont aussi actionnés.

public calculer_necessites_complets(array<string|int, mixed> $infos) : array<string|int, mixed>

Ie: si A indique dépendre de B, et B de C, la clé 'dp' (dépendances prefixes). indiquera les préfixes des plugins B et C

On ne s'occupe pas des versions de compatibilité ici

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

(identifiant => description courte du plugin)

Return values
array<string|int, mixed>

$infos

calculer_necessites_complets_rec()

Fonction récursive pour calculer la liste de tous les préfixes de plugins nécessités par un autre.

public calculer_necessites_complets_rec(mixed $necessites[, bool $profondeur = 0 ]) : array<string|int, mixed>

Avec une liste fermée connue d'avance des possibilités de plugins (ceux qui seront actionnés)

Parameters
$necessites : mixed
$profondeur : bool = 0
Return values
array<string|int, mixed>

prefixe => liste de prefixe dont il dépend

choisir_teleporteur()

Teste s'il est possible d'utiliser un téléporteur particulier, sinon retourne le nom du téléporteur par défaut

public choisir_teleporteur(string $teleporteur, string $src_archive[, string $defaut = 'http' ]) : string
Parameters
$teleporteur : string

Téléporteur VCS à tester

$src_archive : string

Nom ou chemin git de l’archive

$defaut : string = 'http'

Téléporteur par défaut

Return values
string

Nom du téléporteur à utiliser

do_action()

Effectue l'action en attente.

public do_action() : mixed

Appelle une methode do_{todo} de l'Actionneur où todo est le type d'action à faire.

Place dans la clé 'done' de description courte du paquet le résultat de l'action (un booléen indiquant si elle s'est bien déroulée).

do_get()

Télécharger un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

do_getlib()

Installer une librairie

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

Description courte du paquet (une librairie ici)

Return values
bool

false si erreur, true sinon

do_geton()

Attraper et activer un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon.

do_install()

Lancer l'installation d'un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

do_kill()

Effacer les fichiers d'un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

do_off()

Désactiver un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

do_on()

Activer un paquet

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

Soit il est là... soit il est à télécharger...

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

Description courte du paquet

Return values
bool

false si erreur, true sinon.

do_stop()

Désinstaller un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

do_up()

Mettre à jour un paquet

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

Description courte du paquet

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

false si erreur, description courte du nouveau plugin sinon.

do_upon()

Mettre à jour et activer un paquet

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

err()

Ajoute une erreur

public err(string $erreur) : mixed

Ajoute une erreur à la liste des erreurs présentées au moment de traiter les actions.

Parameters
$erreur : string

Le texte de l'erreur

est_verrouille()

Teste l'existance d'un verrou par un auteur ?

public est_verrouille([int|string $id_auteur = '' ]) : bool

Si un id_auteur est transmis, teste que c'est cet auteur précis qui a posé le verrou.

Parameters
$id_auteur : int|string = ''

Identifiant de l'auteur, ou vide

Tags
see
Actionneur::verrouiller()
Return values
bool

true si un verrou est là, false sinon

get_actions()

Lit le fichier cache de la liste des actions et verrou

public get_actions() : mixed

Restaure les informations contenues dans le fichier de cache et écrites avec la méthode sauver_actions().

Tags
see
Actionneur::sauver_actions()

get_paquet_id()

Télécharge un paquet

public get_paquet_id(int|array<string|int, mixed> $id_or_row[, string $dest_ancien = '' ]) : bool|array<string|int, mixed>

Supprime les fichiers obsolètes (si présents)

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

Identifiant du paquet ou description ligne SQL du paquet

$dest_ancien : string = ''

Chemin vers l'ancien répertoire (pour les mises à jour par VCS)

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

False si erreur. Tableau de 2 index sinon :

  • dir : Chemin du paquet téléchargé depuis la racine
  • dossier : Chemin du paquet téléchargé, depuis _DIR_PLUGINS

installer_plugin()

Lancer l'installation d'un plugin

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

Description courte du paquet

Return values
bool

false si erreur, true sinon

log()

Ajoute un log

public log(mixed $quoi) : mixed

Ajoute un log si la propriété $log l'autorise;

Parameters
$quoi : mixed

La chose à logguer (souvent un texte)

nettoyer_actions()

Nettoyage des actions et verrou

public nettoyer_actions() : mixed

Remet tout à zéro pour pouvoir repartir d'un bon pied.

neutre()

Ajoute un paquet avec une action neutre

public neutre(array<string|int, mixed> $info, string $action) : void

Ces actions seront traitées en dernier, et peu importe leur ordre car elles n'entrent pas en conflit avec des dépendances.

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

Description du paquet

$action : string

Action à réaliser (kill, get, up (sur plugin inactif))

off()

Ajoute un paquet à désactiver

public off(array<string|int, mixed> $info, string $action) : void

Ces actions seront traitées en premier.

À chaque fois qu'un nouveau paquet arrive ici, on le compare avec ceux déjà présents pour savoir si on doit le traiter avant ou après un des paquets à désactiver déjà présent.

Si le paquet est une dépendance d'un autre plugin, il faut le mettre après (pour désactiver avant celui qui en dépend).

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

Description du paquet

$action : string

Action à réaliser (kill, get, up (sur plugin inactif))

on()

Ajoute un paquet à activer

public on(array<string|int, mixed> $info, string $action) : void

À chaque fois qu'un nouveau paquet arrive ici, on le compare avec ceux déjà présents pour savoir si on doit le traiter avant ou après un des paquets à activer déjà présent.

Si le paquet est une dépendance d'un autre plugin, il faut le mettre avant (pour l'activer avant celui qui en dépend).

Si le paquet demande une librairie, celle-ci est ajoutée (les librairies seront téléchargées avant l'activation des plugins, le plugin aura donc sa librairie lorsqu'il sera activé)

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

Description du paquet

$action : string

Action à réaliser (on, upon)

one_action()

Effectue une des actions qui reste à faire.

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

Dépile une des actions à faire s'il n'y en a pas en cours au moment de l'appel et traite cette action

Tags
see
Actionneur::do_action()
Return values
bool|array<string|int, mixed>

False si aucune action à faire, sinon tableau de description courte du paquet + index 'todo' indiquant l'action

ordonner_actions()

Ordonne les actions demandées

public ordonner_actions() : mixed

La fonction définie quelles sont les actions graduellement réalisables. Si un plugin A dépend de B qui dépend de C

  • pour tout ce qui est à installer : ordre des dependances (d'abord C, puis B, puis A)
  • pour tout ce qui est à désinstaller : ordre inverse des dependances. (d'abord A, puis B, puis C)

On commence donc par séparer

  • ce qui est à désinstaller,
  • ce qui est à installer,
  • les actions neutres (get, up sur non actif, kill)

Dans les traitements, on commencera par faire

  • ce qui est à désinstaller (il est possible que certains plugins nécessitent la désinstallation d'autres présents - tel que : 1 seul service d'envoi de mail)
  • puis ce qui est a installer (à commencer par les librairies, puis paquets),
  • puis les actions neutres

presenter_actions()

Retourne un bilan, texte HTML, des actions qui ont été faites

public presenter_actions([bool $fin = false ]) : string

Si c'est un affichage du bilan de fin, et qu'il reste des actions à faire, un lien est proposé pour faire supprimer ces actions restantes et le verrou qui va avec.

Parameters
$fin : bool = false

Est-ce un affichage intermédiaire (false) ou le tout dernier (true).

Return values
string

Bilan des actions au format HTML

presenter_derniere_action()

Retourne le texte qui présente la dernière action qui vient d'être réalisée

public presenter_derniere_action() : string
Return values
string

progression()

Retourne le pourcentage de progression des actions

public progression() : int|float
Return values
int|float

sauver_actions()

Sauvegarde en fichier cache la liste des actions et le verrou

public sauver_actions() : mixed

Crée un tableau contenant les informations principales qui permettront de retrouver ce qui est à faire comme action, ce qui a été fait, les erreurs générées, et le verrouillage.

Le cache peut être lu avec la méthode get_actions()

Tags
see
Actionneur::get_actions()

tester_repertoire_destination_ancien_format()

Teste si un répertoire du plugin auto, contenant un plugin est dans un ancien format auto/prefixe/ (qui doit alors être supprimé) ou dans un format normal auto/prefixe/vx.y.z

public tester_repertoire_destination_ancien_format(string $dir_dans_auto) : bool
Parameters
$dir_dans_auto : string

Chemin du répertoire à tester

Tags
example

$this->tester_repertoire_destination_ancien_format(_DIR_PLUGINS_AUTO . $base);

Return values
bool

true si le répertoire est dans un ancien format

tester_repertoire_plugins_auto()

Teste que le répertoire plugins auto existe et que l'on peut ecrire dedans !

public tester_repertoire_plugins_auto() : bool
Return values
bool

True si on peut écrire dedans, false sinon

tester_si_svp_desactive()

Teste si le plugin SVP (celui-ci donc) a été désinstallé / désactivé dans les actions réalisées

public tester_si_svp_desactive() : bool
Tags
note

On ne peut tester sa désactivation que dans le hit où la désinstallation est réalisée, puisque après, s'il a été désactivé, au prochain hit on ne connaîtra plus ce fichier !

Return values
bool

true si SVP a été désactivé, false sinon

verrouiller()

Pose un verrou

public verrouiller() : mixed

Un verrou permet de garentir qu'une seule exécution d'actions est lancé à la fois, ce qui évite que deux administrateurs puissent demander en même temps des actions qui pourraient s'entrechoquer.

Le verrou est signé par l'id_auteur de l'auteur actuellement identifié.

Le verrou sera sauvegardé en fichier avec la liste des actions

Tags
see
Actionneur::sauver_actions()

        
On this page

Search results