Gelöst Hook für Plugindeinstallation

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo allerseits,

ich konnte in der Liste der Hooks keinen finden (und auch nicht via Forumssuche), der feuert, wenn man ein Plugin deinstallieren möchte. Gibt's da etwas, was ich übersehen habe oder irgendeine Art Work-Around?


Gruß,
Johnny
 

NETZdinge.de

Sehr aktives Mitglied
7. April 2010
2.665
420
Da gibt es einen Eintrag in der Info.xml...

<uninstall>datei.php</uninstall> Auf gleicher Ebene wie <install>

datei.php muss im Verzeichnis „uninstall“ in /Version/xxx/ liegen...
 
  • Gefällt mir
Reaktionen: JohnnyMcDoogle

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo René,

ich wusste, ich hab's schon mal irgendwo gesehen, wahrscheinlich in irgendeiner info.xml eines Plugins. Schade, dass es nur auf der Fehler-Codes Seite in den Docs dokumentiert ist, sonst nicht. Ich hätte es beim Plugin-Aufbau erwartet. Vielen Dank, René (+1)! 🙂


Gruß,
Johnny
 
Zuletzt bearbeitet:

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo noch mal,

eine kleine Frage noch. Du meintest, im Falle der Deinstallierung wird eine PHP-Datei angestoßen:

HTML:
<jtlshop3plugin>
    <Install>
        <Version nr="100">
            <CreateDate>2019-03-25</CreateDate>
            <SQL>100.sql</SQL>
        </Version>
    </Install>
    <Uninstall>uninstall.php</Uninstall>
</jtlshop3plugin>

Du weißt nicht zufällig, ob bei einer Installation nicht auch eine PHP-Datei getriggert werden kann, oder nur die 100.sql (um im Beispiel zu bleiben).


Gruß,
Johnny
 

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo,

vielen Dank für Deine Antwort. Ist das denn derzeit (v4.06.20) schon im Einsatz? Ich hätte angenommen, das kommt erst mit v5...



Gruß,
Johnny
 

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo,

leider habe ich keinen Output in den Logs... Any ideas?


PHP:
<?php

declare(strict_types=1);

namespace Plugin\foo;

use JTL\Events\Dispatcher;
use JTL\Plugin\Bootstrapper;
use Jtllog;

/**
 * Class Bootstrap
 * @package Plugin\jtl_google_shopping2
 */
class Bootstrap extends Bootstrapper
{
    /**
     * @inheritDoc
     */
    public function installed()
    {
        parent::installed();
        Jtllog::writeLog('installed');
    }

    /**
     * @inheritDoc
     */
    public function uninstalled(bool $deleteData = true)
    {
        parent::uninstalled();
        Jtllog::writeLog('uninstalled');
    }

    /**
     * @inheritDoc
     */
    public function boot(Dispatcher $dispatcher)
    {
        parent::boot($dispatcher);
        Jtllog::writeLog('boot');
    }
}

Vielen Dank bis jetzt.


Gruß,
Johnny
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Ich bin gerade nur am tab,
Dein namespace sollte die Plugin ID sein
Ich glaube für das use ist es noch zu früh.
 

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Hallo,

der Namespace war natürlich nur ein Beispiel. Ich stelle im Laufe des Tages ein kleines "Basis-Repo" zur Verfügung (JTL-Shop v4.06.20 & Minimal-Plugin). Ich würde mich sehr freuen, wenn eine(r) drüber schauen könnte.


Gruß,
Johnny
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.700
Berlin
Firma
css-umsetzung
Wie kommst du eigentlich immer auf v4.06.20 , wir sind aktuell bei 4.06.14 oder habe ich etwas verpasst?
 

JohnnyMcDoogle

Aktives Mitglied
14. Mai 2019
27
2
Gestern war's zu spät und heute hatte ich noch kein Kaffee... Keine Ahnung, Du hast völlig Recht! Ich meinte natürlich die ganze Zeit v4.06.14. Man, man, man. 😵
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
347
Halle (Saale)
Achtung: du hast offensichtlich das für den kommenden Shop5 geschrieben jtl_google_shopping2 als Vorlage für dein Plugin genommen.
Das wird im Shop4 so nicht funktionieren, da die Schnittstelle dort abweicht. Im Shop4 müsste das eher so aussehen (Achtung: die Datei muss bootstrap.php (klein geschrieben) heißen und im versionierten Plugin-Verzeichnis liegen):

Code:
<?php

namespace kannst_du_dir_aussuchen;

use EventDispatcher;

/**
 * Class Bootstrap
 */
class Bootstrap extends \AbstractPlugin
{

    /**
     * @param EventDispatcher $dispatcher
     */
    public function boot(EventDispatcher $dispatcher)
    {
        parent::boot($dispatcher);
        $dispatcher->listen('shop.hook.' . HOOK_ARTIKEL_CLASS_FUELLEARTIKEL, function($a) {
            // do something
        });
    }

    /**
     *
     */
    public function installed()
    {
        parent::installed();
    }

    /**
     *
     */
    public function uninstalled()
    {
        parent::uninstalled();
    }

    /**
     *
     */
    public function enabled()
    {
        parent::enabled();
    }

    /**
     *
     */
    public function disabled()
    {
        parent::disabled();
    }
}
 
  • Gefällt mir
Reaktionen: JohnnyMcDoogle

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Ich habe das Problem, dass die Function uninstalled nicht funktioniert
Code:
 public function uninstalled()
    {
        parent::uninstalled();
    }
 

Conny

Sehr aktives Mitglied
7. September 2009
571
61
Habe mein Problem gefunden. Hatte die XML Version höher als 100 in der info.xml und deswegen wurde die Funktion in der pluginverwaltung_inc.php nicht mehr ausgeführt.
 

Ähnliche Themen