upgrade.php
SPIP, Système de publication pour l'internet
Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
Ce programme est un logiciel libre distribué sous licence GNU/GPL.
Table of Contents
Constants
- _TIME_OUT = $time + _UPGRADE_TIME_OUT
- Définir le timeout qui peut-être utilisé dans les fonctions de mises à jour qui durent trop longtemps
- _UPGRADE_TIME_OUT = 20
- Durée en secondes pour relancer les scripts de mises à jour, x secondes avant que la durée d'exécution du script provoque un timeout
Functions
- base_upgrade_dist() : mixed
- Programme de mise à jour des tables SQL lors d'un changement de version.
- maj_base() : array<string|int, mixed>|bool
- Mise à jour de base de SPIP
- maj_plugin() : mixed
- Mise à jour d'un plugin de SPIP
- relance_maj() : mixed
- Relancer le hit de mise à jour avant timeout
- maj_debut_page() : mixed
- Initialiser la page pour l'affichage des progrès de l'upgrade uniquement si la page n'a pas déjà été initilalisée
- maj_while() : array<string|int, mixed>
- Gestion des mises à jour de SPIP et des plugins
- serie_alter() : int
- Appliquer une serie de changements qui risquent de partir en timeout
- upgrade_test() : bool
- Vérifie qu'il est possible d'ajouter une colonne à une table SQL
Constants
_TIME_OUT
Définir le timeout qui peut-être utilisé dans les fonctions de mises à jour qui durent trop longtemps
public
int
_TIME_OUT
= $time + _UPGRADE_TIME_OUT
À utiliser tel que : if (time() >= _TIME_OUT)
_UPGRADE_TIME_OUT
Durée en secondes pour relancer les scripts de mises à jour, x secondes avant que la durée d'exécution du script provoque un timeout
public
int
_UPGRADE_TIME_OUT
= 20
Functions
base_upgrade_dist()
Programme de mise à jour des tables SQL lors d'un changement de version.
base_upgrade_dist([string $titre = '' ][, string $reprise = '' ]) : mixed
L'entrée dans cette fonction est reservée aux mises à jour de SPIP coeur.
Marche aussi pour les plugins en appelant directement la fonction maj_plugin
Pour que ceux-ci profitent aussi de la reprise sur interruption,
ils doivent simplement indiquer leur numero de version installée dans une meta
et fournir le tableau $maj
à la fonction maj_plugin
.
La reprise sur timeout se fait alors par la page admin_plugin et jamais par ici.
Parameters
- $titre : string = ''
- $reprise : string = ''
-
Inutilisé
Tags
maj_base()
Mise à jour de base de SPIP
maj_base([int $version_cible = 0 ][, string $redirect = '' ][, mixed $debut_page = true ]) : array<string|int, mixed>|bool
Exécute toutes les fonctions de mises à jour de SPIP nécessaires,
en fonction de la meta version_installee
indiquant le numéro de
schéma actuel de la base de données.
Les fonctions de mises à jour se trouvent dans ecrire/maj/
Parameters
- $version_cible : int = 0
- $redirect : string = ''
- $debut_page : mixed = true
Tags
Return values
array<string|int, mixed>|boolmaj_plugin()
Mise à jour d'un plugin de SPIP
maj_plugin(string $nom_meta_base_version, string $version_cible, array<string|int, mixed> $maj[, string $table_meta = 'meta' ]) : mixed
Fonction appelée par la fonction de mise à jour d'un plugin. On lui fournit un tableau de fonctions élementaires dont l'indice est la version.
Parameters
- $nom_meta_base_version : string
-
Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
- $version_cible : string
-
Version du schéma de données dans le plugin (déclaré dans paquet.xml)
- $maj : array<string|int, mixed>
-
Tableau d'actions à faire à l'installation (clé
create
) et pour chaque version intermédiaire entre la version actuelle du schéma du plugin dans SPIP et la version du schéma déclaré dans le plugin (ex. clé1.1.0
).Chaque valeur est un tableau contenant une liste de fonctions à exécuter, cette liste étant elle-même un tableau avec premier paramètre le nom de la fonction et les suivant les paramètres à lui passer
Exemple :
``` array( 'create' => array( array('maj_tables', array('spip_rubriques', 'spip_articles')), array('creer_base)), '1.1.0' => array( array('sql_alter', 'TABLE spip_articles ADD INDEX truc (truc)')) ) ```
- $table_meta : string = 'meta'
-
Nom de la table meta (sans le prefixe spip_) dans laquelle trouver la meta $nom_meta_base_version
Tags
relance_maj()
Relancer le hit de mise à jour avant timeout
relance_maj(string $meta, string $table[, string $redirect = '' ]) : mixed
si pas de redirect fourni, on redirige vers exec=upgrade
pour finir
ce qui doit être une mise à jour SPIP
Parameters
- $meta : string
- $table : string
- $redirect : string = ''
Tags
maj_debut_page()
Initialiser la page pour l'affichage des progrès de l'upgrade uniquement si la page n'a pas déjà été initilalisée
maj_debut_page(string $installee, string $meta, string $table) : mixed
Parameters
- $installee : string
- $meta : string
- $table : string
maj_while()
Gestion des mises à jour de SPIP et des plugins
maj_while(string $installee, string $cible, array<string|int, mixed> $maj[, string $meta = '' ][, string $table = 'meta' ][, string $redirect = '' ][, bool $debut_page = false ]) : array<string|int, mixed>
À partir des versions > 1.926 (i.e SPIP > 1.9.2), cette fonction gere les MAJ.
Se relancer soi-même pour éviter l'interruption pendant une operation SQL (qu'on espère pas trop longue chacune) évidemment en ecrivant dans la meta à quel numero on en est.
Cette fonction peut servir aux plugins qui doivent donner comme arguments :
- le numero de version courant (numéro de version 1.2.3 ou entier)
- le numero de version à atteindre (numéro de version 1.2.3 ou entier)
- le tableau des instructions de mise à jour à exécuter Pour profiter du mécanisme de reprise sur interruption il faut de plus
- le nom de la meta permettant de retrouver tout ca
- la table des meta ou elle se trouve (
$table_prefix . '_meta'
par défaut) (cf début de fichier)
les fonctions sql_xx
appelées lors des mises à jour sont supposées
atomiques et ne sont pas relancées en cas de timeout, mais les fonctions
spécifiques sont relancées jusqu'à ce qu'elles finissent.
Elles doivent donc s'assurer de progresser à chaque reprise.
Parameters
- $installee : string
- $cible : string
- $maj : array<string|int, mixed>
- $meta : string = ''
- $table : string = 'meta'
- $redirect : string = ''
- $debut_page : bool = false
Tags
Return values
array<string|int, mixed> —- tableau (étape, sous-étape) en cas d'échec,
- tableau vide sinon.
serie_alter()
Appliquer une serie de changements qui risquent de partir en timeout
serie_alter(string $serie[, array<string|int, mixed> $q = [] ][, string $meta = '' ][, string $table = 'meta' ][, string $redirect = '' ]) : int
Alter crée une copie temporaire d'une table, c'est lourd.
Parameters
- $serie : string
-
numero de version upgrade
- $q : array<string|int, mixed> = []
-
tableau des operations pour cette version
- $meta : string = ''
-
nom de la meta qui contient le numero de version
- $table : string = 'meta'
-
nom de la table meta
- $redirect : string = ''
-
url de redirection en cas d'interruption
Tags
Return values
intupgrade_test()
Vérifie qu'il est possible d'ajouter une colonne à une table SQL
upgrade_test() : bool
Tags
Return values
bool —True si possible.