Modul-Updates mit dem Modifed Standard Modul implementieren

Das Standard-Modul für modified ermöglicht es, einen Update-Button und einen zugehörigen Update-Prozess im Admin-Bereich deines Shops mit minimalem Codeaufwand zu implementieren. Hier sind die Schritte, die du befolgen musst.

1. Modul und Version hinzufügen #

Um mit diesem Feature zu beginnen, gib in deiner Modulklasse die aktuelle Version in SemVer (Semantic Versioning) Schreibweise an. Dies ermöglicht es dem System, die aktuelle Version deines Moduls zu verfolgen.

class mc_my_first_module extends StdModule
{
    public const VERSION = '1.0.0';
    // Weitere Moduldefinitionen und -funktionen...
}

2. Konstruktor anpassen #

Im Konstruktor deines Moduls füge die Methode $this->checkForUpdate(true) hinzu. Das true bewirkt, dass der Update-Button im Admin-Bereich angezeigt wird, wenn ein Update für dein Modul verfügbar ist. Wenn du false verwendest, wird lediglich ein Hinweis auf ein verfügbares Update angezeigt.

class mc_my_first_module extends StdModule
{
    public const VERSION = '1.0.0';

    public function __construct()
    {
        // Weitere Konfigurationen und Funktionen...
        $this->checkForUpdate(true);
    }
    // Weitere Moduldefinitionen und -funktionen...
}

3. Update-Schritte definieren #

In der Methode protected function updateSteps() kannst du festlegen, welche Schritte ausgeführt werden sollen, wenn der Nutzer auf den Update-Button klickt. In dieser Methode kannst du die Hilfsmethoden $this->getVersion() und $this->setVersion() verwenden. Die Methode updateSteps() sollte den Wert StdModule::UPDATE_SUCCESS zurückgeben, wenn das Update erfolgreich abgeschlossen wurde, oder StdModule::UPDATE_NOTHING, wenn kein Update erforderlich ist.

Hier ist ein Beispiel, wie du diese Methode nutzen könntest:

class mc_my_first_module extends StdModule
{
    // Weitere Moduldefinitionen und -funktionen...
    protected function updateSteps()
    {
        $currentVersion = $this->getVersion();
        if (!$currentVersion) {
            $this->setVersion('1.0.0');
            return StdModule::UPDATE_SUCCESS;
        }

        if ($currentVersion === '1.0.0') {
            // Hier führst du die Update-Schritte
            // für Version 1.1.0 durch.
            // ...
            $this->setVersion('1.1.0');
            return StdModule::UPDATE_SUCCESS;
        }

        return StdModule::UPDATE_NOTHING;
    }
    // Weitere Moduldefinitionen und -funktionen...
}

Dieses Vorgehen ermöglicht es dir, Updates für dein Modul effizient zu verwalten und sicherzustellen, dass die neueste Version in deinem Shop korrekt installiert wird. Beachte, dass du die Konstante public const VERSION = '1.0.0' und die Update-Schritte in protected function updateSteps() für jede neue Version deines Moduls gemäß den Änderungen in deinem Modul anpassen und ergänzen musst.

Beispiel #

Hier noch einmal alle nötigen Ändnerungen zusammen in einem Beispiel:

<?php

class mc_my_first_module extends StdModule
{
    public const VERSION = '1.0.0';

    public function __construct()
    {
        // Weitere Konfigurationen und Funktionen...
        $this->checkForUpdate(true);
    }

    // Weitere Moduldefinitionen und -funktionen...

    protected function updateSteps()
    {
        $currentVersion = $this->getVersion();
        if (!$currentVersion) {
            $this->setVersion('1.0.0');
            return StdModule::UPDATE_SUCCESS;
        }

        if ($currentVersion === '1.0.0') {
            // Hier führst du die Update-Schritte
            // für Version 1.1.0 durch.
            // ...
            $this->setVersion('1.1.0');
            return StdModule::UPDATE_SUCCESS;
        }

        return StdModule::UPDATE_NOTHING;
    }
}