Prüfen ob ein bestimmter user gerade eingeloggt ist

Hi Forum,

wie der Titel schon sagt, möchte ich überprüfen ob ein bestimmter User (Kunde - nicht Backend / Admin) gerade im Shop eingeloggt ist. Es geht darum Emails aus einem Plugin per Cronjob zu verschicken. Wenn der User gerade eingeloggt ist soll keine Mail an ihn versendet werden. Versucht habe ich es mit:

Shopware()->Modules()->Admin()->sCheckUser();

Damit komme ich an dieser stelle nicht weiter… ich bräuchte eher sowas wie:

Shopware()->Modules()->Admin()->sCheckUser();

Eine andere Überlegung war das “lastlogin” feld aus der Tabele s_user abzufragen und mit zeitlichem Versatz zu arbeite, das ist mir aber eigentlich zu ungenau. Jemand einen Tip / Hinweis Idee? 

Grüße,

 

Sieh dir mal das Backend-Widget “Besucher Online” an. Da muss ja auch so was ähnliches gemacht werden.

1 Like

Danke für den Hinweis, da wird auch mit dem Timestamp gearbeitet allerdings aus der Tabell: “s_statistics_currentusers”.

Hier die (für meine Zwecke angepasste) Abfrage falls noch mal jemand vor dem Problem steht:

$loggedInUsers = Shopware()->Container()->get('db')->fetchAll("
                 SELECT 
                 userID,
                 remoteaddr
                 FROM s_statistics_currentusers
                 WHERE userID != 0
                 AND time > DATE_SUB(NOW(), INTERVAL 5 MINUTE)
                 GROUP BY userID
                 ");

Grüße,

1 Like

Hallo so-dsgn,

ich habe ein ähnliches Problem, möchte den Formular ausfüllenden User

mit userId mitschicken. 

Hast du vielleicht einen Hinweis/ Lösung für mich?

gruß, Andreas 

@AndreasP‍

Glaub das simpelste wäre hier drauf zu subscriben: shopware/Forms.php at 5.1 · shopware/shopware · GitHub

Mail Template eine Variable ergänzen wie {$sUser}, beim Event Call den Mail Inhalt holen und via str_replace den Text austauschen und zurück speichern