Annonce

  •  » Plugins
  •  » ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

#1 2007-08-18 03:16:19

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

ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Salut aux plugger !!!

voila un message pour tirer une sonnet d'alarme ...

on a tous commis une petite erreur de stratégie sur nos plugin, qui partait d'un bon sentiment mais qui finalement se retourne contre nous :

on teste si la config du plugin est bonne au chargement du plugin et si NON on fait in include de maintain.inc.php ...
donc on redéclare les fonctions d'install et desinstall
puis on re déclenche une installation du plugin !

bon idée sauf que si déjà 2 plugin on eu leur config abimées alors le 2eme plugin va faire une erreur lors de la redéclaration de plugin_install

et idem si on a un plugin a nous qui se reinstalle et que derriere l'admin veut istaller un nouveau plugin !!!


donc il faut supprimer cette partie du code main d'apres moi


sont concernés les plugins :

bbcode
ComOnIndex
MostCommented
Smilies Support

et mes plugin si vous n'avez pas mis les dernieres versions !

a+


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

#2 2007-08-18 10:52:08

sakkhho
Membre
Paris
2007-04-02
1836

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

C'est vrai que c'est assez genant !

Ce qui est bizarre c'est que le pb apparait chez moi que si j'ai smilies suppport d'activer.


faudrait remonter l'info ds chaque fil des plugins pour que les auteurs corrigent.

Dernière modification par sakkhho (2007-08-18 11:06:13)


Piwigo 2.3.5

Hors ligne

#3 2007-08-18 11:25:44

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

moi pas de problème : sinon comme solution, il vaudrait mieux faire une copie de la fonction install et la renommer.

Hors ligne

#4 2007-08-18 11:41:01

sakkhho
Membre
Paris
2007-04-02
1836

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

flop, installe smilies support et essai de désactiver ComOnIndex ...


Piwigo 2.3.5

Hors ligne

#5 2007-08-18 11:59:47

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

c'est bien parce que c'est toi ^^

Hors ligne

#6 2007-08-18 12:10:13

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

ha ouais ^^ la jolie page blanche !!

Ps : et pourtant ça désactive bien ?!

Dernière modification par flop25 (2007-08-18 12:13:10)

Hors ligne

#7 2007-08-18 12:16:11

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

flop25 a écrit:

moi pas de problème : sinon comme solution, il vaudrait mieux faire une copie de la fonction install et la renommer.

Mieux !! utiliser les class comme préconisé dans le wiki et utiliser par certain (notamment moi-même ds adult_content)

Hors ligne

#8 2007-08-18 12:29:54

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Ah oui, je n'avais pas prévu ca...
On peut éventuellement rajouter un !function_exists pour le cas ou 2 plugins necessitent un rappel à la fonction install...
Ainsi, le 2e plugin se réinstallera au 2e chargement, c'est pas bien grave.... puisque dans le code de vérification, j'avais rajouté justement un $conf['plugin'] = xxx

Exemple pour ComOnindex:

Code:

// Vérification de la config, si pas bon -> reinstallation
if ((!isset($conf['comonindex'])) or (substr_count($conf['comonindex'] , ',') != 7)) {
   $conf['comonindex'] = '5,on,,,20,norm,default,';
   if (!function_exists('plugin_install')) {
      include_once( COMONINDEX_PATH . 'maintain.inc.php');
      plugin_install();
   }
}

Ca vous va?

Dernière modification par P@t (2007-08-18 12:34:47)


P@t

Hors ligne

#9 2007-08-18 12:37:49

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

ça peut certainement marché, mais c'est du pansement : la class et la copie de la fonction install dans cette class est plus propre

Hors ligne

#10 2007-08-18 12:57:15

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Hum... ca me parait bien lourd de devoir redéfinir la fonction install...
Je préfère perso le pensement, vu que de toute facon, l'appel à la fonction plugin_install est déjà un pensement qui est la vraiment au cas ou... et pour que 2 plugins l'appellent, c'est vraiment extrement rare....

Tu proposerais quoi exactement comme code flop?

Dernière modification par P@t (2007-08-18 12:58:10)


P@t

Hors ligne

#11 2007-08-18 13:43:37

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

l'utilisation de class :

dans main.inc

include_once(dirname(__FILE__).'/class.inc.php');

add_event_handler([...]

$[nom_du_plug] = new[nom_de_la_class_du_plug]($plugin_name, [toute les var nécessaire au plug...]
set_plugin_data($[nom_du_plug]->plugin_name, [remplissage de toute les var nécessaire au plug...]

dans class.inc.php

class [nom_de_la_class_du_plug]
{
  var $plugin_name, [reprise de toute les var nécessaire au plug...]
 
  function init()
  {
[reprise de l'install]
  }

  function bidon()
  {
    $this->init();//appel de la function init()

  }

}

Hors ligne

#12 2007-08-18 15:58:16

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Hum... ayant appris le php il y a à peine 2 mois, je ne maitrise pas encore bien les class...
Va quand meme falloir que je m'y mette un de ces 4.

Mais ca me parait quand meme bien lourd pour ca...
Je vais garder ma première solution pour mes plugins ComOnIndex et MostCommented

Dernière modification par P@t (2007-08-18 16:07:45)


P@t

Hors ligne

#13 2007-08-18 17:35:15

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

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

je confirme ... c est l utilisation de class qu il faut ...

d ailleurs je me souvient des premieres verisons de mais plugins etaitent avec des class ... et un petit gars m a dit :

bahhh pourquoi tu mets dans des class c est bien trop lourd ... et moi hopp j ai retiré les classes  ;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

#14 2007-08-18 18:07:42

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Je ne vois pas qui peut etre ce petit gars... ;-)

Mais je ne comprends toujours pas l'interet de la class puisqu'il faudra de toute facon redefinir une fonction identique à la fonction plugin_install dans la class, non?
Donc à ce moment la, autant créer directement une fonction identique à la fonction plugin_install dans un fichier functions.inc.php... Ou alors, créer une fonction spécifique pour l'installation de chaque plugin, et qui sera appelée au debut du main.inc.php si la config est incorrecte, ET par la fameuse fonction plugin_install... la encore, la class est inutile.

Exemple pour ComOnIndex:

Dans un fichier functions.inc.php

function comonindex_install ()
{
    --- code d'installation ---
}


Dans le fichier maintain.inc.php

include_once( dirname(__FILE__) . '/functions.inc.php' );

function plugin_install ()
{
    comonindex_install ();
}


Dans le fichier main.inc.php

if ((!isset($conf['comonindex'])) or (substr_count($conf['comonindex'] , ',') != 7)) {
     $conf['comonindex'] = '5,on,,,20,norm,default,';
     include_once( dirname(__FILE__) . '/functions.inc.php');
         comonindex_install();
}

Dites-moi si je me trompe, car les class, c'est pas (encore!) mon truc...

Dernière modification par P@t (2007-08-18 18:28:52)


P@t

Hors ligne

#15 2007-08-18 19:16:21

flop25
Équipe Piwigo
2006-07-06
6544

Re: ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

ça c'est mieux que ton pansement !

ça je suis d'acc : les class restant tout de même une solution, chacun ses préférences ^^

Hors ligne

  •  » Plugins
  •  » ATTENTION ne pas redéclarer plugin_install dans le main.inc.php

Pied de page des forums

Propulsé par FluxBB

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