Valider a6012c93 rédigé par esj's avatar esj
Parcourir les fichiers

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');
}}}
parent 82b4b83d
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter