r15672 - branches/spip-2.1/ecrire/base branches/spip-2.1/ecrire/inc spip/ecrire/base spip/ecrire/inc

Author: esj@rezo.net
Date: 2010-05-08 20:46:05 +0200 (sam, 08 mai 2010)
New Revision: 15672

Log:
Table des metas et procédure de mise à jour: généralisation.

La fonctionnalité [14862] introduite en retard dans SPIP 2.1 par [15624] permettant aux plugins d'utiliser la fonction {{{maj_while}}} pour leur propre mise à jour avait deux lacunes.

La première était d'arrêter tout le processus en cas de problème, alors que pour un plugin c'est un blocage rarement légitime. La fonction {{{maj_while}}} retourne donc à présent un résultat (vide si ok, infos si echec), et c'est l'appelant qui décide d'arrêter les frais ou pas. Testé sur une grosse mise à jour 1.9.2 -> 2.1.0dev sans pb apparent.

L'autre lacune concernait une confusion possible sur la meta à utiliser pour assurer la reprise sur interruption. C'était assez théorique, mais de fil en aiguille, on se retrouve avec une fonctionnalité encore plus générale: les fonctions {{{ecrire_meta effacer_meta lire_metas inc_meta_dist}}} s'appliquent sur éventuellement d'autres tables que spip_meta, en gérant un cache pour chacune. Cette fonctionnalité permet en particulier à chaque plugin d'avoir sa table des meta, ce qui facilite la sauvegarde de tout ce qui le concerne, et fournit un accès a priori bien plus rapide que l'avalanche d'objets et de tableaux que CFG alloue à chaque appel de lire_config.

Utilissation:
{{{
// creer sa table identique a spip_meta:
sql_create('spip_MONPLUGIN_metas',
    $tables_auxiliaires['spip_meta']['field'],
    $tables_auxiliaires['spip_meta']['key'],
    false, false)) {

// dans son mes_options.php:
# reprendre la fonction deja chargee par inc_version:
$inc_meta = charger_fonction('meta', 'inc');
# charger dans la globale $MONPLUGIN_metas la table ou son cache
$inc_meta('spip_MONPLUGIN_metas');
}}}

Modified:
   branches/spip-2.1/ecrire/base/upgrade.php
   branches/spip-2.1/ecrire/inc/meta.php
   spip/ecrire/base/upgrade.php
   spip/ecrire/inc/meta.php

Details: http://trac.rezo.net/trac/spip/changeset/15672