•  » Plugins
  •  » [Plugin] Gestion des paramètres

#1 2007-05-12 12:20:37

rub
Former Piwigo Team
Lille
2005-08-26
5239

[Plugin] Gestion des paramètres

Extrait de http://forum.phpwebgallery.net/viewtopi … 974#p59974

rub a écrit:

flipflip a écrit:

Les plugins n'ont normalement plus besoin d'utiliser le fichier config_local.inc.php, ils peuvent avoir leurs propres configuration. J'ai utilisé le système data.dat en exemple sur mon wiki : http://flipflip.ovh.org/wiki/doku.php?id=plugin . C'est facil à mettre en place et à comprendre. Pour les paramètres par défaut soit tu utilise un fichier data.dat préconfigurer alors tu le gère depuis l'appel du menu d'administration.

En fait, après réflexion et mise en place de plugin, je ne pense pas que le fichier data.dat soit une bonne solution car il y a 1 chance sur 2 que lors de la mise à jour d'une version e PWG le fichier soit supprimé (mais c'est vrai que c'est simple à implémenter).

Mieux vaut taper dans la table #conf, c'est simple en plus avec le install & desinstall.
Pour ne pas avoir trop de paramètre, on peut aussi avoir une seule ligne dans $conf avec les valeurs stockés dans un champs serialize!

Je pense aussi que pour la 1.8 on devrait offrir de base, des fonctions de lecture/écriture/suppression de paramètre pour les plugins et donc pas forcement dans #conf.

C'est un peu HS mais on peut ouvrir un topic sur ca si nécessaire ;-)

Eric a écrit:

rub a écrit:

Mieux vaut taper dans la table #conf, c'est simple en plus avec le install & desinstall.

Euh... Là, je suis un peu satellisé... Allo, Houston ? Je crois qu'on a un problème ;-)

Plus sérieusement, je ne connais pas cette méthode de "taper dans la table #conf. On peut expliquer, svp ? Cà m'aiderai surement pour le plugin.

Fait un tour sur le plugin RV Maps & Earth, il doit faire comme ca.

Des que j'ai le temps, je te donne un exemple plus parlant (mais pas trop le temps en ce moment)!

Hors ligne

#2 2007-05-12 13:05:53

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: [Plugin] Gestion des paramètres

oui oui je confirme deja avant avec le MOD google map on faisait ca aussi on stocker les valeurs de la config googlemap dans la table phpwebgallery_config


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#3 2007-05-12 15:30:33

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

Re: [Plugin] Gestion des paramètres

Ok, compris.

Au lieu d'utiliser un fichier de config, on créé des valeurs supplémentaires dans la table phpwebgallery_config. En préfixant les champs, il suffit alors de faire un select sur cette table avec le préfix comme condition pour récupérer les valeurs et faire un update pour enregistrer les modifications.

Je vais voir mettre çà en place sur mes plugins.

Hors ligne

#4 2007-05-12 15:32:52

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

Eric a écrit:

Ok, compris.

Au lieu d'utiliser un fichier de config, on créé des valeurs supplémentaires dans la table phpwebgallery_config. En préfixant les champs, il suffit alors de faire un select sur cette table avec le préfix comme condition pour récupérer les valeurs et faire un update pour enregistrer les modifications.

Je vais voir mettre çà en place sur mes plugins.

C'est ca!

Mais le select n'est pas obligatoire car toutes les valeurs dans la table #_config sont lues.
Reste l'insert d'installation, le update de mise à jour et le delete de la déinstallation à faire!

Hors ligne

#5 2007-05-12 15:40:41

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

Re: [Plugin] Gestion des paramètres

Mais si l'on souhaite que les valeurs soient modifiables par l'administrateur (comportement du plugin par exemple), il faudrait afficher ces valeur dans un formulaire.

Si la table #_config est lue en permanence, peut-on faire afficher les valeurs sans requète en BDD ?

Hors ligne

#6 2007-05-12 15:50:14

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

Eric a écrit:

Mais si l'on souhaite que les valeurs soient modifiables par l'administrateur (comportement du plugin par exemple), il faudrait afficher ces valeur dans un formulaire.

Oui!

Eric a écrit:

Si la table #_config est lue en permanence, peut-on faire afficher les valeurs sans requète en BDD ?

Oui, en fait la requête a été faite dans le moteur de PWG!

Hors ligne

#7 2007-05-12 16:02:49

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

Re: [Plugin] Gestion des paramètres

Ok, merci rub pour ces infos.

Je tente le coup pour le plugin Register_PunBB.

Hors ligne

#8 2007-05-12 16:13:58

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: [Plugin] Gestion des paramètres

vas y Eric vas y Eric vas y !!!

comme ca je m en inspire pour mon pugin phpBB  ;o)


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#9 2007-05-12 16:17:57

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

Code:

<?php
function plugin_install()
{
  $q = '
INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
  VALUES
  ("gmaps_api_key","","Google Maps API key")
;';
  pwg_query($q);
}

function plugin_uninstall()
{
  $q = '
DELETE FROM '.CONFIG_TABLE.' WHERE param="gmaps_api_key" LIMIT 1';
  pwg_query( $q );
}

?>

en reprenant le plugin de rvelices, le fichier maintain.inc.php pour l'installation et la désinstallation

Hors ligne

#10 2007-05-12 16:22:08

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

et pour la mise à jour du paramètre:

Code:

if ( isset($_POST['submit']) )
{
  $query = '
UPDATE '.CONFIG_TABLE.'
  SET value="'.$_POST['gmaps_api_key'].'"
  WHERE param="gmaps_api_key"
  LIMIT 1';
  pwg_query($query);
  list($conf['gmaps_api_key']) = array_from_query('SELECT value FROM '.CONFIG_TABLE.' WHERE param="gmaps_api_key"', 'value');
}

admin_config.php

Le plugin de rvelices est cas d'école complet (paramètre, config, onglet, etc...) mais un peu compliqué car c'est un plugin bigmaousse!

Je dois finir le plugin PhpMyVisites qui lui ne fait rien (ou presque) et donc sera plus simple à comprendre!

Hors ligne

#11 2007-05-12 16:59:09

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

Re: [Plugin] Gestion des paramètres

Pour l'installation / désinstallation du plugin, c'est bon.

Par contre, j'ai 12 paramètres dans la table #_config à éditer et modifier le cas échéant. J'ai vu que dans le plugin de rvelices, il récupérait les valeurs de la table dans un array. On édite les valeurs ainsi remontées dans le template puis on fait un update de la table par un submit.

Problème : Il me faut faire un SELECT pour chaque paramètre de la table #_config et sérialiser les données dans un tableau... Je repousse petit à petit les limites de mes compétences / connaissances en php.

Hors ligne

#12 2007-05-12 17:03:30

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

Eric a écrit:

Pour l'installation / désinstallation du plugin, c'est bon.

Par contre, j'ai 12 paramètres dans la table #_config à éditer et modifier le cas échéant. J'ai vu que dans le plugin de rvelices, il récupérait les valeurs de la table dans un array. On édite les valeurs ainsi remontées dans le template puis on fait un update de la table par un submit.

Problème : Il me faut faire un SELECT pour chaque paramètre de la table #_config et sérialiser les données dans un tableau... Je repousse petit à petit les limites de mes compétences / connaissances en php.

En reprenant ce qui a été fait dans la NBM:

Code:

      // Reload conf with new values
      load_conf_from_db('param like \'nbm\\_%\'');

Tu recharges les paramètres avec cette fonction.
load_conf_from_db() recharge tout.
load_conf_from_db('param like \'nbm\\_%\'') recharge avec le where en paramètre par exemple ici tous les paramètres nbm_%

Hors ligne

#13 2007-05-12 17:04:43

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: [Plugin] Gestion des paramètres

Bout de code complet de la NBM:

Code:

    if (isset($_POST['param_submit']) and !is_adviser())
    {
      $updated_param_count = 0;
      // Update param
      $result = pwg_query('select param, value from '.CONFIG_TABLE.' where param like \'nbm\\_%\'');
      while ($nbm_user = mysql_fetch_array($result))
      {
        if (isset($_POST[$nbm_user['param']]))
        {
          $value = $_POST[$nbm_user['param']];

          $query = '
update
'.CONFIG_TABLE.'
set
  value = \''. str_replace("\'", "''", $value).'\'
where
  param = \''.$nbm_user['param'].'\';';
          pwg_query($query);
          $updated_param_count += 1;
        }
      }
    
      array_push($page['infos'],
        l10n_dec('nbm_updated_param_count', 'nbm_updated_params_count',
          $updated_param_count));

      // Reload conf with new values
      load_conf_from_db('param like \'nbm\\_%\'');
    }
  }
  case 'subscribe' :
  {
    if (!is_adviser())
    {
      if (isset($_POST['falsify']) and isset($_POST['cat_true']))
      {
        $check_key_treated = unsubscribe_notification_by_mail(true, $_POST['cat_true']);
        do_timeout_treatment('cat_true', $check_key_treated);
      }
      else
      if (isset($_POST['trueify']) and isset($_POST['cat_false']))
      {
        $check_key_treated = subscribe_notification_by_mail(true, $_POST['cat_false']);
        do_timeout_treatment('cat_false', $check_key_treated);
      }
    }

Hors ligne

#14 2007-05-12 17:48:50

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

Re: [Plugin] Gestion des paramètres

Je suis vraiment pas doué :(

Mais je persiste ! Il y a quelque chose que je ne comprend pas dans le code de rvelices : A quoi sert ceci ?

Code:

list($conf['gmaps_api_key']) = array_from_query('SELECT value FROM '.CONFIG_TABLE.' WHERE param="gmaps_api_key"', 'value');

Hors ligne

#15 2007-05-12 18:20:31

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

Re: [Plugin] Gestion des paramètres

Bingo !

Cette fois, c'est bon pour la gestion des paramètres. Les données sont bien récupérées de la table et mises à jour après modification. Une journée de boulot juste pour la partie admin du plugin... Pas super productif !

Pour le reste, je rebascule dans le topic d'origine sur le Plugin Register_PunBB sauf si je rencontre encore des soucis avec la gestion des paramètres. Au quel cas, je reposterai ici.

Milles mercis rub !

Hors ligne

  •  » Plugins
  •  » [Plugin] Gestion des paramètres

Pied de page des forums

Propulsé par FluxBB

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