PLugin+méthode onActivate et onDeactivate

salut,
existe-t-il un moyen simple de savoir si le plugin est déjà activé ou non car à chaque fois que l'internaute active le plugin (même s'il est déjà activé) via le formulaire, la méthode onActivate est lancée ce qui est génant quand on fait un ajout ou une modif sur un fichier car l'ajout ou la modif est répétée à chaque fois.

Pour éviter ce problème, il faudrait que je rajoute dans la méthode onActivate() une condition qui vérifie si le plugin est déjà activé ou non auquel cas, s'il est déjà activé alors pas d'action à faire.
Cordialement.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Je prends note car c'est un manque fonctionnel. Tu as raison les fonctions ne devrait pas être executé à chaque fois. Je vais regarder tout ça.
    Merci

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Petit complément. Que les fonctions soient exécutées à chaque fois qu'on active ou désactive le plugin ça me semble normal. En revanche si le plugin est déjà actif et que la fonction OnActivate soit exécuté si on active d'autres plugins, là c'est un petit "bug".

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bonsoir stephane,
    merci de te pencher sur mon problème.
    Que les fonctions soient exécutées à chaque fois qu'on active ou désactive le plugin ça me semble normal.
    Je vais essayer de détailler ce que je fais pour que tu vois où est le problème.
    A l'activation du plugin, je fais un ajout de code dans le fichier users.xml (rajout d'un tag xml avec un cdata dedans)
    Maintenant, si je suis distrait et que je relance l'activation du plugin déjà activé, j'ai à nouveau le rajout du code xml dans mon fichier users.xml et c'est là où ça coince. Pour moi, ce comportement est anormal car le plugin est déjà activé donc il ne devrait pas s'activer à nouveau.
    J'ai vu que ton objet plxAdmin, il y avait moyen de savoir si un plugin était activé ou non (propriété activate). N'y aurait-il pas un moyen de créer une condition avec cette propriété lors de l'appel de onActivate et On Deactivate().
    Cordialement.

    PS : si tu le veux, je peux chercher de mon coté une correction à apporter au core de pluxml mais je pense que c'est toi le mieux placé car c'est toi qui connait le mieux le fonctionnement du core.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour memento

    Tout à fait la solution est de tester la propriété activate ($this->aPlugins[$plugName]) des plugins avant l'appel des méthode OnActivate et OnDeactivate dans la classe plxPlugins, fonction saveConfig.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bonsoir stephane,
    cette solution sera-t-elle intégrée dans une prochaine mise à jour car elle concerne les fichiers natifs de pluxml.
    En effet, si je ne trompe pas, dans la classe de mon plugin, je n'ai aucun accès possible à l'instance $plxAdmin donc je ne pourrai pas utiliser cette instruction $plxAdmin->aPlugins[$plugName]
    Cordialement
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui cela sera intégré

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Member
    Hello.

    J'ai un problème similaire, je voudrais savoir si mon plugin est actif avant d'exécuter son hook au niveau de /index.php.
    Comment puis-je faire svp?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @i M@N: Salut. Quel hook ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Member
    Salut Stéphane : )
    Le hook de mon plugin.

    Je l'appelle environ ligne 87 de /index.php :
    [== PHP ==]
    # Hook Plugins
    eval($plxMotor->plxPlugins->callHook('IndexEnd'));
    # mon hook
    $output = $plxShow->callHook('IndexMinify',$output);
    

    J'aimerais tester si mon plugin est activé avant d'appeler mon hook 'IndexMinify'
  • StéphaneStéphane Member, Former PluXml Project Manager
    Si le plugin n'est pas actif, aucun hook est executé. Il n'est donc pas nécessaire de tester si le plugin est actif pour executer ou non un hook

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Member
    justement ... le $output (la valeur de retour de ma fonction) est vide si le plugin est inactif et le server renvoie une page vide.
  • i M@Ni M@N Member
    comme ça c'est môche mais ça fonctionne :
    [== PHP ==]
    # Hook minify
    if ($plxShow->callHook('IndexMinify',$output) != '') {
    $output = $plxShow->callHook('IndexMinify',$output);
    }
    # /Hook minify
    

    Si il y a une façon plus élégante je prends ...
Connectez-vous ou Inscrivez-vous pour répondre.