•  » Plugins
  •  » [Résolu] [Dev] Mise à jour de config sur activation de plugin

#1 2010-04-02 22:19:10

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

[Résolu] [Dev] Mise à jour de config sur activation de plugin

Bonsoir à tous,

Je suis, entre autres, sur le portage de mes plugins vers la future 2.1. Une fois n'est pas coutume, je suis à nouveau en galère sur la dernière touche à apporter avant de proposer une nouvelle version. Et j'ai encore besoin des lumières des pros en php :-/

Cette fois, cela concerne la mise à jour de données de configuration (stockées dans la table #_config) lorsqu'on active un plugin. Dans mon cas, les données sont sérialisées et je souhaite ajouter de nouvelles valeurs à la série existante. Par exemple, sur le cas concret suivant:

- Le plugin est installé mais pas activé
- La table #_config comporte une entrée avec param="mon_plugin", value="a:2:{i:0;s:4:"val1";i:1;s:4:"val2";}", comment="Config de mon plugin"
- A l'activation du plugin, une mise à jour de l'entrée doit se faire pour obtenir, au final, value="a:3:{i:0;s:4:"val1";i:1;s:4:"val2";i:2;s:4:"val3";}"

Je ne peux pas utiliser la variable de config $maconfig['mon_plugin'] car elle n'est pas initialisée à ce stade. J'ai donc pensé qu'une requête du style:

Code:

    $query = '
SELECT value
  FROM '.CONFIG_TABLE.'
WHERE param = "mon_plugin"
;';

  $result = pwg_query($query);
  $conf_mon_plugin = pwg_db_fetch_assoc($result);

Me permettrait de récupérer la chaine linéarisée pour la délinéariser et ajouter les nouvelles données ainsi:

Code:

  $mon_plugin = unserialize($conf_mon_plugin);

    $newconf_mon_plugin = array (
            $mon_plugin[0],
            $mon_plugin[1],
            'val3',
         );

Et réinjecter le tout dans la base de données en re-sérialisant.

Mais çà ne fonctionne pas et je recommence à m'arracher les cheveux. 'Vais finir par être chauve à force... Soit j'ai des erreurs "unserialize() expects parameter 1 to be string, array given in..." soit "unserialize() expects parameter 1 to be string, resource given in..." et je ne comprends pas pourquoi ni comment résoudre.

La charité, mes bons messieurs-dames, pour un pauvre ère dans le besoin ;-)

Hors ligne

#2 2010-04-02 22:39:52

nicolas
Former Piwigo Team
2004-12-30
1566

Re: [Résolu] [Dev] Mise à jour de config sur activation de plugin

$conf_mon_plugin est un tableau même si tu ne ramènes qu'un seul champ dans ta requête.
Donc c'est sur $conf_mon_plugin['value'] que tu dois appliquer unserialize().


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#3 2010-04-02 22:51:54

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: [Résolu] [Dev] Mise à jour de config sur activation de plugin

$mon_plugin = unserialize($conf_mon_plugin);
$mon_plugin[] ='val3';
$conf_mon_plugin = serialize($mon_plugin);

?


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#4 2010-04-02 22:53:13

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [Résolu] [Dev] Mise à jour de config sur activation de plugin

J'ai vu un truc comme ça dans le themeconf.inc.php de P@t pour son MontblancXL.


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#5 2010-04-02 23:14:31

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: [Résolu] [Dev] Mise à jour de config sur activation de plugin

nicolas a écrit:

$conf_mon_plugin est un tableau même si tu ne ramènes qu'un seul champ dans ta requête.
Donc c'est sur $conf_mon_plugin['value'] que tu dois appliquer unserialize().

Ok... C'est net, sans bavure... En fait, la bavure, c'est encore moi :-/
Mais quelle truffe, je suis! Cà fait trois jours (soirées) que je galère là dessus et je n'ai pas vu que je ne donnais pas un tableau pour unserialize().

Merci Nicolas !

grum a écrit:

$mon_plugin = unserialize($conf_mon_plugin);
$mon_plugin[] ='val3';
$conf_mon_plugin = serialize($mon_plugin);

?

Merci aussi à toi, grum. Effectivement, c'est beaucoup plus direct que ma première approche pour ajouter les valeurs. 8-)



Le pauvre ère est moins pauvre grâce à vous et, surtout, il se couchera peut-être un peu moins bête ce soir. Je crois que c'est d'ailleurs ce que je vais faire (me coucher) d'ici un peu moins de pas longtemps ;-)

Hors ligne

  •  » Plugins
  •  » [Résolu] [Dev] Mise à jour de config sur activation de plugin

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2025 · Contact