Freunde einladen -> Redirect auf Startseite

Wir nutzen die Funtion “Freunde einladen” in Oxid 6. Leider werden Gäste nach Aufruf von https://www.oxid-demo.de/index.php?cl=invite auf die Startseite geleitet und nicht zum Account-Login. Das kann man im Demoshop nachvollziehen. Gibt es hier eine Lösung, in der Art das der Besucher auf den Account-Login geleitet wird und anschliessend zum Formular “Freunde einladen”?

was steht denn im Log?

Das Log schaut so aus:

[2019-10-01 20:28:55] OXID Logger.ERROR: Function ‘getAccountDeletionStatus’ does not exist or is not accessible! (OxidEsales\Eshop\Application\Controller\InviteController)
["[object] (OxidEsales\Eshop\Core\Exception\SystemComponentException(code: 0): Function ‘getAccountDeletionStatus’ does not exist or is not accessible! (OxidEsales\Eshop\Application\Controller\InviteController)\n at XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/Base.php:76)\n[stacktrace]
n#0 XXXXXent/source/tmp/smarty/c94db455527c286b688f236be269abcb^%%6A^6AC^6AC2183D%%login_account.tpl.php(10): OxidEsales\EshopCommunity\Core\Base->__call(‘getAccountDelet…’, Array)
n#1 XXXXXent/vendor/smarty/smarty/libs/Smarty.class.php(1876): include(’/home/www/peuge…’)
n#2 XXXXXent/source/tmp/smarty/c94db455527c286b688f236be269abcb^%%F8^F80^F80C2DE4%%login.tpl.php(11): Smarty->_smarty_include(Array)
n#3 XXXXXent/vendor/smarty/smarty/libs/Smarty.class.php(1270): include(’/home/www/peuge…’)
n#4 XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(488): Smarty->fetch(‘page/account/lo…’, ‘ox|0|0|1|0|ssl’)
n#5 XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(344): OxidEsales\EshopCommunity\Core\ShopControl->_render(Object(OxidEsales\Eshop\Application\Controller\InviteController))
n#6 XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(276): OxidEsales\EshopCommunity\Core\ShopControl->formOutput(Object(OxidEsales\Eshop\Application\Controller\InviteController))
n#7 XXXXXent/source/modules/dgcollection/Modul/dgCollection_oxShopControl.php(53): OxidEsales\EshopCommunity\Core\ShopControl->_process(‘OxidEsales\\Esho…’, NULL, NULL, NULL)
n#8 XXXXXent/source/modules/oe/statistics/core/oestatisticsoxshopcontrol.php(48): dgModule\dgCollectionModul\Modul\dgCollection_oxShopControl->_process(‘OxidEsales\\Esho…’, NULL, NULL, NULL)
n#9 XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(137): oeStatisticsOxShopControl->_process(‘OxidEsales\\Esho…’, NULL, NULL, NULL)
n#10 XXXXXent/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(26): OxidEsales\EshopCommunity\Core\ShopControl->start()
n#11 XXXXXent/source/index.php(15): OxidEsales\EshopCommunity\Core\Oxid::run()\n#12 {main}\n"]

Die Funktion ist datenschutzrechtlich problematisch, weil das Shopsystem keine Mails an Leute schicken darf ohne deren ausdrückliche Einwilligung.

Als Alternative könnte man das Formular durch einen mailto-Link ersetzen. Die Mail kann man vorausfüllen, so daß es für den User sogar bequemer ist als ein Formular. Die Mail wird dann vom Client des Users gesendet und der Shop ist nicht mehr involviert.

<a href="mailto:[email protected]?subject=Hier%20steht%20der%20Betreff&amp;body=Hallo%20Max,%0D%0A%0D%0Ahier%20steht%20die%20Nachricht.">E-Mail mit Betreff und vorbereiteter Nachricht schreiben</a>

@andoreen:

Nur um es auszuschließen: Ich bekomme in meinem Demo-Shop nur dann die Weiterleitung auf die Startseite, wenn ich im Backend die Einladungs-Funktion deaktiviert habe. Ist sie aktiv sehe ich bei uns die Einladungsseite …

@Mario_Lorenz Einladungen sind aktiv.

@andoreen: Das ist wirklich merkwürdig. Im InviteController ist die Methode getAccountDeletionStatus wirklich nicht drin. Die Fehlermeldung ist korrekt. Die Methode steckt aber im Controller AccountController.
Was beide Controller gemeinsam haben ist, das wenn der User noch nicht angemeldet ist, sie auf das gleiche Template “page/account/login.tpl” zurückfallen. Das wiederum enthält das Template “form/login_account.tpl” in dem sich der Aufruf $oView->getAccountDeletionStatus() befindet.

Was mich wundert ist, das die oView->XYZ Methodenaufrufe auch im Controller bzw. seinen ererbten Methoden enthalten sein müssen. Sind sie meiner Meinung nach beim InviteController aber nicht. D.h. bei mir müsste auch der Fehler auftreten. Tut er aber nicht. Ich bekomme keine Weiterleitung auf die Startseite, sobald die Einladungen aktiv sind.

Ich kann den Fehler im Moment nicht nachbilden.

Diesen Fehler haben wir immer wieder mal, unabhängig vom cl=invite Fehler. Der wurde hier im Forum schon einmal von jemand anderen angesprochen. Eine Lösung gibt es dafür noch nicht.