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
        mixed
    _TIME_OUT
    = $time + _UPGRADE_TIME_OUT
        À utiliser tel que : if (time() >= _TIME_OUT)
Tags
_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
        mixed
    _UPGRADE_TIME_OUT
    = 20
    
    
    
    Tags
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.