svp_depoter_distant.php
Traitement des dépots distants
Un dépot distant est une liste de paquets que l'on peut télécharger. Cette liste est donnée par un fichier XML que l'on peut relire régulièrement pour actualiser nos informations. Effectivement, chaque paquet (et plugin) décrit est inséré en base de données pour nous faciliter les recherches.
Tags
Table of Contents
Functions
- svp_ajouter_depot() : bool
- Ajout d'un dépot et de son contenu (paquets, plugins) dans la base de données
- svp_supprimer_depot() : bool
- Suppression d'un dépot et de son contenu (paquets, plugins) dans la base de données
- svp_nettoyer_apres_suppression() : bool
- Nettoyer la base de données après la suppression d'un dépot
- svp_actualiser_depot() : bool
- Actualisation des plugins d'un dépot déjà crée
- svp_actualiser_paquets() : bool
- Actualisation de la table des paquets pour le dépot choisi
- svp_inserer_multi() : mixed
- Insertion en masse de plugins ou de paquets.
- svp_completer_plugins_depot() : mixed
- Complète les informations des plugins contenus dans un depot en compilant certaines informations (compatibilités, dates, branches)
- svp_completer_plugins() : bool
- Complète les informations des plugins, d'une liste de plugins donnés, en compilant certaines informations (compatibilités, dates, branches)
- svp_actualiser_url_plugins() : int
- Recrée toutes les URLs propres de plugin
- eclater_plugin_paquet() : array<string|int, mixed>
- Éclate une description de paquet issu du XML du dépot en deux parties, une pour le plugin, l'autre pour le paquet
- svp_corriger_vmax_plugins() : mixed
- Détermine la version max de chaque plugin, c'est à dire la version maxi d'un des paquets qui lui est lié.
Functions
svp_ajouter_depot()
Ajout d'un dépot et de son contenu (paquets, plugins) dans la base de données
svp_ajouter_depot(string $url[, string &$erreur = '' ]) : bool
Si une erreur survient (syntaxe XML incorrecte, pas de plugin dans le dépot), son texte est placé dans le paramètre $erreur
Parameters
- $url : string
-
URL du fichier XML de description du dépot
- $erreur : string = ''
-
Texte d'un éventuel message d'erreur
Tags
Return values
bool —true si le dépot est ajouté correctement, false sinon
svp_supprimer_depot()
Suppression d'un dépot et de son contenu (paquets, plugins) dans la base de données
svp_supprimer_depot(int $id) : bool
Cette suppression entraîne des recalcul comme les versions maximales des plugins téléchargeables qui peuvent changer.
Parameters
- $id : int
-
Identifiant du dépot
Tags
Return values
bool —false si le dépot n'est pas trouvé, true sinon
svp_nettoyer_apres_suppression()
Nettoyer la base de données après la suppression d'un dépot
svp_nettoyer_apres_suppression(int $id_depot, array<string|int, mixed> $vmax) : bool
Supprime
- les liens des plugins avec le dépot (table spip_depots_plugins)
- les plugins dont aucun paquet n'est encore hébergé par un dépot restant (table spip_plugins) Remet à zéro la version maximale des plugins ayant vu leur paquet en version maximale supprimée
Parameters
- $id_depot : int
-
Identifiant du dépot
- $vmax : array<string|int, mixed>
-
Tableau de la version maximale des plugins du dépot supprimé Tableau (id_plugin => version maximale)
Tags
Return values
bool —true toujours.
svp_actualiser_depot()
Actualisation des plugins d'un dépot déjà crée
svp_actualiser_depot(int $id) : bool
Actualise les informations uniquement si la signature du fichier XML de description du dépot a changé
Parameters
- $id : int
-
Identifiant du dépot
Tags
Return values
bool —false si erreur, true sinon
svp_actualiser_paquets()
Actualisation de la table des paquets pour le dépot choisi
svp_actualiser_paquets(int $id_depot, array<string|int, mixed> $paquets, int &$nb_paquets, int &$nb_plugins, int &$nb_autres) : bool
Enlève de la base les paquets du dépots qui ne sont plus présents dans la description du XML. Ajoute ou met à jour les autres.
Parameters
- $id_depot : int
-
Identifiant du dépot
- $paquets : array<string|int, mixed>
-
Tableau des paquets extraits du fichier XML L'index est le nom de l'archive (xxxx.zip) et le contenu est un tableau à deux entrées :
- Index 'plugin' : le tableau des infos du plugin
- Index 'file' : le nom de l'archive .zip
- $nb_paquets : int
-
Nombre de paquets réellement inserés dans la base
- $nb_plugins : int
-
Nombre de plugins parmi les paquets inserés
- $nb_autres : int
-
Nombre de contributions non issues de plugin parmi les paquets inserés
Tags
Return values
bool —false si aucun dépot ou paquets, true sinon
svp_inserer_multi()
Insertion en masse de plugins ou de paquets.
svp_inserer_multi(array<string|int, mixed> &$insert_plugins, array<string|int, mixed> &$insert_paquets, array<string|int, mixed> &$insert_contribs, array<string|int, mixed> &$prefixes) : mixed
Les paquets peuvent de pas avoir d'info "prefixe" (à transformer en id_plugin) lorsqu'ils ne proviennent pas de plugin (squelettes...)
Parameters
- $insert_plugins : array<string|int, mixed>
-
Tableau de description de plugins. Une description est un tableau de couples (colonne sql => valeur) pour l'insertion en base de données.
- $insert_paquets : array<string|int, mixed>
-
Tableau de description de paquets. Une description est un tableau de couples (colonne sql => valeur) pour l'insertion en base de données.
- $insert_contribs : array<string|int, mixed>
-
Tableau de description de paquets (contributions non plugins). Une description est un tableau de couples (colonne sql => valeur) pour l'insertion en base de données.
- $prefixes : array<string|int, mixed>
-
Couples de relation (préfixe de plugin => identifiant de plugin) connues, pour limiter les accès SQL.
Tags
svp_completer_plugins_depot()
Complète les informations des plugins contenus dans un depot en compilant certaines informations (compatibilités, dates, branches)
svp_completer_plugins_depot(int $id_depot) : mixed
Parameters
- $id_depot : int
-
Identifiant du depot à actualiser
Tags
svp_completer_plugins()
Complète les informations des plugins, d'une liste de plugins donnés, en compilant certaines informations (compatibilités, dates, branches)
svp_completer_plugins(array<string|int, mixed> $ids_plugin) : bool
Parameters
- $ids_plugin : array<string|int, mixed>
-
Liste d'identifiants de plugins
Tags
Return values
bool —false si rien à faire, true sinon
svp_actualiser_url_plugins()
Recrée toutes les URLs propres de plugin
svp_actualiser_url_plugins() : int
Supprime toutes les urls de plugin de la table spip_urls puis les régénère.
Tags
Return values
int —Nombre d'URLs de plugin régénérées
eclater_plugin_paquet()
Éclate une description de paquet issu du XML du dépot en deux parties, une pour le plugin, l'autre pour le paquet
eclater_plugin_paquet(array<string|int, mixed> $champs_aplat) : array<string|int, mixed>
Sépare en deux une description de champs désignant un paquet, en extrayant :
- la partie plugin, soit ce qui peut être propre à plusieurs paquets. On trouve dedans le prefixe, nom, slogan, catégorie, tags
- la partie paquet, soit ce qui est propre à ce conteneur là. On trouve dedans entre autres la description, la version, la compatibilité à SPIP, les dépendances, etc...
Parameters
- $champs_aplat : array<string|int, mixed>
-
Couples (clé => valeur) d'un paquet issu de l'analyse XML du dépot
Tags
Return values
array<string|int, mixed> —Tableau de 2 index :
- Index 'plugin' : couples (clé=>valeur) relatives au plugin
- Index 'paquet' : couples (clé=>valeur) spécifiques au paquet
svp_corriger_vmax_plugins()
Détermine la version max de chaque plugin, c'est à dire la version maxi d'un des paquets qui lui est lié.
svp_corriger_vmax_plugins(array<string|int, mixed> $plugins) : mixed
Parameters
- $plugins : array<string|int, mixed>
-
Liste d'identifiant de plugins