Fichier ecrire/base/upgrade.php

Mise à jour de la base de données

Source

Proposer une amélioration

Liste des constantes

Liste des fonctions

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.

void base_upgrade_dist( string $titre = '' , string $reprise = '' )

Paramètres

  1. string $titre = ''
  2. string $reprise = ''

    Inutilisé

Retour

  • void

Package

Proposer une amélioration

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/

array | boolean maj_base( integer $version_cible , string $redirect = '' )

Paramètres

  1. integer $version_cible
  2. string $redirect = ''

Retour

  • array | boolean

Utilisé par

Package

Proposer une amélioration
void maj_debut_page( string $installee , string $meta , string $table )

Paramètres

  1. string $installee
  2. string $meta
  3. string $table

Retour

  • void

Utilisé par

Package

Proposer une amélioration

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.

void maj_plugin( string $nom_meta_base_version , string $version_cible , array $maj , string $table_meta = 'meta' )

Paramètres

  1. string $nom_meta_base_version

    Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP

  2. string $version_cible

    Version du schéma de données dans le plugin (déclaré dans paquet.xml)

  3. array $maj

    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)'))
            )
  4. string $table_meta = 'meta'

    Nom de la table meta (sans le prefixe spip_) dans laquelle trouver la meta $nom_meta_base_version

Retour

  • void

Utilise

Package

Proposer une amélioration

À 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 :

  1. le numero de version courant (numéro de version 1.2.3 ou entier)
  2. le numero de version à atteindre (numéro de version 1.2.3 ou entier)
  3. le tableau des instructions de mise à jour à exécuter Pour profiter du mécanisme de reprise sur interruption il faut de plus
  4. le nom de la meta permettant de retrouver tout ca
  5. 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.

array maj_while( string $installee , string $cible , array $maj , string $meta = '' , string $table = 'meta' , string $redirect = '' , boolean $debut_page = false )

Paramètres

  1. string $installee
  2. string $cible
  3. array $maj
  4. string $meta = ''
  5. string $table = 'meta'
  6. string $redirect = ''
  7. boolean $debut_page = false

Retour

  • array
    • tableau (étape, sous-étape) en cas d'échec,
    • tableau vide sinon.

Utilisé par

Package

Proposer une amélioration

si pas de redirect fourni, on redirige vers exec=upgrade pour finir ce qui doit être une mise à jour SPIP

void relance_maj( string $meta , string $table , string $redirect = '' )

Paramètres

  1. string $meta
  2. string $table
  3. string $redirect = ''

Retour

  • void

Package

Proposer une amélioration

Alter crée une copie temporaire d'une table, c'est lourd.

integer serie_alter( string $serie , array $q = array() , string $meta = '' , string $table = 'meta' , string $redirect = '' )

Paramètres

  1. string $serie

    numero de version upgrade

  2. array $q = array()

    tableau des operations pour cette version

  3. string $meta = ''

    nom de la meta qui contient le numero de version

  4. string $table = 'meta'

    nom de la table meta

  5. string $redirect = ''

    url de redirection en cas d'interruption

Retour

  • integer

Utilise

Utilisé par

Package

Proposer une amélioration

Dépréciées

void maj_version( float $version , boolean $test = true )

Paramètres

  1. float $version
  2. boolean $test = true

Retour

  • void

Voir également

Package

Deprecated

  • Utiliser maj_plugin() ou la globale maj pour le core.
Proposer une amélioration

Fonction utilisé par les vieilles mises à jour de SPIP, à appeler dans le tableau $maj quand on rajoute des types MIME. Remplacé actuellement par le plugin Medias.

void upgrade_types_documents( )

Exemples

  •     $GLOBALS['maj'][1953] = array(array('upgrade_types_documents'));

Package

Deprecated

  • Utiliser directement creer_base_types_doc() du plugin Medias
Proposer une amélioration
boolean upgrade_vers( float $version , float $version_installee , integer $version_cible )

Paramètres

  1. float $version
  2. float $version_installee
  3. integer $version_cible

Retour

  • boolean

    true si la mise à jour doit se réaliser

Voir également

Package

Deprecated

  • Utiliser maj_plugin() ou la globale maj pour le core.
Proposer une amélioration