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() : mixed
- 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() : mixed
- Ajoute un paquet avec une action neutre
- off() : mixed
- Ajoute un paquet à désactiver
- on() : mixed
- 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
$decideur
Instance du décideur
public
Decideur
$decideur
$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' ]) : mixed
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
boolajouter_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>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(array<string|int, 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 : array<string|int, mixed>
-
prefixe => liste de prefixe dont il dépend
- $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
clear()
Remet à zéro les tableaux d'actions
public
clear() : mixed
deverrouiller()
Enlève le verrou
public
deverrouiller() : mixed
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
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
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) : mixed
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) : mixed
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) : mixed
À 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
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
stringprogression()
Retourne le pourcentage de progression des actions
public
progression() : int|float
Return values
int|floatsauver_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
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
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
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