Neu Registrierung wann abfragen

Conny

Sehr aktives Mitglied
7. September 2009
548
60
Hi,

ich bin noch Anfängerin was die Programmierung von Plugins angeht.
Mein Plugin funktioniert und jetzt wollte ich noch eine kleine Registrierung schreiben.
Mir stellt sich aber die Frage, wann rufe ich meine Lizenz Function auf???
Schön wäre es:
- einmalig bei der Plugin Installierung
- einmalig bei der Plugin Deinstallierung
- über die Cron Funktikon von JTL einmal am Tag

kann ich das irgendwie umsetzen ?

LG Conny
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
518
Halle
Hallo Conny,
für Aktionen bei Installation / Deinstallation bietet der Shop-4.06 den Bootstrapping-Mechanismus an. Die Methoden installed bzw. uninstalled des Bootstrappers werden genau bei diesen Events getriggert und du könntest deine Lizenz-Funktion dort aufrufen.
Für Cron-gesteuerte aufrufe gibt es Möglichkeiten über den HOOK_LASTJOBS_HOLEJOBS welcher bei jedem Wawi-Abgleich aufgerufen wird oder direkt mittels HOOK_JOBQUEUE_INC_BEHIND_SWITCH, der bei jedem Aufruf der Job-Queue getriggert wird. Da beide Hooks jedoch unregelmässig aufgerufen werden, ist eine exakte Zeitsteuerung darüber nicht möglich.
 

Conny

Sehr aktives Mitglied
7. September 2009
548
60
Hallo @FPrüfer, danke erst mal für die tolle Unterstützung. Denke das ist genau das was ich gesucht habe.
Leider verstehe ich nicht ganz wie die Bootstrap.php eingebunden wird.

In der Doku steht:
Zentraler Einstiegspunkt des Bootstrappers ist die Datei Bootstrap.php im Hauptverzeichnis eines Plugins.
In dieser Datei muss die Klasse Bootstrap, im namespaces des Plugins, angelegt werden und diese muss das Interface JTL\Plugin\BootstrapperInterface implementieren.

Die Datei habe ich wie im Beispiel im Root vom Plugin angelegt.
Wo genau muss ich diese jetzt registrieren.
Gibt es evtl. ein Beispiel Plugin
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
518
Halle
Die Datei habe ich wie im Beispiel im Root vom Plugin angelegt.
Für Shop4 gilt hier als Root das jeweilige Versionsverzeichnis. Also z.B. /includes/plugins/dein_plugin/version/100/bootstrap.php
Auch gilt für Shop4 noch bootstrap.php statt Bootstrap.php. Die Doku ist an der Stelle leider nur für Shop5 ausgelegt...

Wo genau muss ich diese jetzt registrieren.
Registrieren musst du das nicht. Wenn diese Datei bei der Installation vorhanden ist, erkennt der Installer das Plugin als Bootstraper-Plugin und bindet die Klasse automatisch ein.
Das Plugin JTL Double-Opt-In ist bspw. ein Bootstraper-Plugin. Dort kannst du dir eine Implementation anschauen.
 

Conny

Sehr aktives Mitglied
7. September 2009
548
60
Hallo @FPrüfer,

ich habe noch ein kleines Problem,
die Funktionen installed, enable, disable funktionieren.
Aber leider greift bei mir die uninstalled Routine nicht.
Hast du da eine Idee?

PHP:
<?php
/**
 * Interface BootstrapperInterface
 * @copyright   2020
 */
 
namespace dino_shopauskunft;

use AbstractPlugin;
//use EventDispatcher;
use Plugin;
use Shop;
//use StringHandler;

/**
 * Class Bootstrap
 * @package dino_shopauskunft
 */
class Bootstrap extends AbstractPlugin
{
    
    /**
     * @param Dispatcher $dispatcher
     */
    //    public function boot(Dispatcher $dispatcher);
 
    /**
     * @return mixed
     */
    public function installed()
    {       
        global $Einstellungen;

        $oPlugin = $this->getPlugin();        
   
        // Einstellungen einlesen
        $Einstellungen = array_merge($Einstellungen, Shop::getSettings([CONF_GLOBAL,CONF_EMAILS]));

        // Shop Registrierung
        $param  = "http://xxxxxxxxxxxxxxxxx.de/lizenz.php?do=append";
        $param .= "&shop_name=".urlencode($Einstellungen['global']['global_shopname']);
        $param .= "&shop_url=".urlencode($_SERVER['SERVER_NAME']);
        $param .= "&shop_mail=".urlencode($Einstellungen['emails']['email_master_absender']);
        $param .= "&plugin_name=".urlencode("Dino Shopauskunft");
        $param .= "&ver=".urlencode($oPlugin->nVersion);
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $param);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        $content = trim(curl_exec($ch));
        curl_close($ch);
    }
    

    /**
     * @param bool $deleteData
     * @return mixed
     */
    public function uninstalled()
    {
        $param  = "?do=delete";
        $param .= "&shop_url=".urlencode($_SERVER['SERVER_NAME']);
        $param .= "&plugin_name=".urlencode("Dino Shopauskunft");
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,"http://xxxxxxxxxxxxxxxxxxx/lizenz.php".$param);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $server_output = curl_exec($ch);
        curl_close ($ch);
    }

    /**
     * @return mixed
     */
    public function enabled()
    {
        $param  = "?do=enable";
        $param .= "&shop_url=".urlencode($_SERVER['SERVER_NAME']);
        $param .= "&plugin_name=".urlencode("Dino Shopauskunft");
        print '<pre>' . htmlspecialchars(print_r(get_defined_vars(), true)) . '</pre>';
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,"http://xxxxxxxxxxxxxxxxxx/lizenz.php".$param);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $server_output = curl_exec($ch);
        curl_close ($ch);
   }

    /**
     * @return mixed
     */
    public function disabled()
    {
        $param  = "?do=disable";
        $param .= "&shop_url=".urlencode($_SERVER['SERVER_NAME']);
        $param .= "&plugin_name=".urlencode("Dino Shopauskunft");
  
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,"http://xxxxxxxxxxxxxxxxx/lizenz.php".$param);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $server_output = curl_exec($ch);
        curl_close ($ch);
    }
    
    /**
     * @return Plugin
     */
    public function getPlugin()
    {
        if (version_compare(Shop::getVersion(), '405', 'gt')) {
            return parent::getPlugin();
        }

        return Plugin::getPluginById('dino_shopauskunft');
    }
}
 

Conny

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