Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 20. März 2019 11:33

andrea
hat von CMS/ms gehört
Registriert: 03. Dezember 2014
Beiträge: 12

FEU abgelaufene user automatisch löschen

Hallo smile

also ich habe eine Frage zum FrontendUser-Modul, ist es hier möglich Benutzer, nachdem diese abgelaufen sind automatisch zu löschen?
Wenn ja, dann wäre die nächste Frage wie?

Derzeit werden diese ja nur als abgelaufen markiert und der Benutzer müsste manuell entfernt werden, was jedoch nicht gewünscht wird.

Danke im Voraus und beste Grüße,
andrea

Offline

#2 24. März 2019 13:35

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FEU abgelaufene user automatisch löschen

Wenn FEU keine Option dafür bietet, gäbe es da evtl. noch die Ereignisverwaltung. Aber bevor ich da jetzt ins Detail gehe, von welcher Version reden wir denn hier?


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 27. März 2019 10:14

andrea
hat von CMS/ms gehört
Registriert: 03. Dezember 2014
Beiträge: 12

Re: FEU abgelaufene user automatisch löschen

es würde sich um die Version 2.12.6 vom FrontEndUser unter CMSMS 2.2.8 handeln, was vielleicht noch von Bedeutung sein könnte, die Installation läuft derzeit unter PHP 5.6, da wir hier Probleme mit einem anderen Modul haben

Offline

#4 08. April 2019 10:24

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FEU abgelaufene user automatisch löschen

Leider bietet das Modul keine Möglichkeit, sich beim Ablauf eines Users irgendwo "einzuklinken" um die Löschung selber automatisch vorzunehmen.
Was man aber evtl. versuchen könnte, wäre ein eigenes Script zu schreiben, welches regelmäßig ausgeführt wird. Das prüft dann in Intervallen, ob es abgelaufene Konten gibt und löscht diese.
Das könnte man vielleicht über den CMSJobManager lösen. Damit hab ich mich aber noch nicht beschäftigt. Hab auch noch keine brauchbare Dokumentation dazu gefunden.
Nach meinem bisherigen Verständnis sollte man eigene "Jobs" definieren können, die in einem bestimmten Intervall ausgeführt werden. D.h. man könnt z.B. einmal pro Woche prüfen/löschen.
(Sonntag Nacht z.B. - am besten immer dann, wenn so wenig wie möglich User online sind)
Je nachdem wie häufig es vorkommt, dass Userkonten ablaufen bzw. wie viel Wert man auf eine stets aktuelle Nutzerzahl legt.

Man könnte es evtl. auch mit einem Plugin im Template lösen, das würde aber dann bei jedem Seitenaufruf ausgeführt werden. Das wäre die einfachste aber nicht unbedingt performanteste Lösung.

CMSJobManager steht zumindest schonmal auf meiner ToDo-Liste ;-)


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 08. April 2019 12:31

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: FEU abgelaufene user automatisch löschen

Ein Plugin könnte z.B. so aussehen:

<?php
function smarty_function_feu_delete_expired( $params , &$template )
{
	# get FEU module
	if(!$feusers = &cms_utils::get_module('FrontEndUsers'))
		return;
	
	#timespan in seconds (1 Month: 1h = 3600s ; 1d = 24h ; 31d = 1Month -> 3600 * 24 * 31)
	$timespan = 3600 * 24 * 31;

	#feusers api has no function to get expired users only
	$db    = cmsms()->GetDb();
	$query = "SELECT id FROM " . cms_db_prefix() . "module_feusers_users WHERE expires < " . $db->DbTimeStamp( time() - $timespan );
	$users = $db->GetArray( $query );
	foreach( $users as $user )
		$feusers->DeleteUserFull( $user['id'] );
}
?>

Unter "/assets/plugins/function.feu_delete_expired.php" (CMSms 2) bzw. "/plugins/function.feu_delete_expired.php" (CMSms 1.12) speichern und dann z.B. im FrontendUsers Login Template ganz unten so aufrufen:

Somit wird es nur dann ausgeführt, wenn auch das Login-Formular angezeigt wird.

Oder man kopiert sich den Code (ohne "function") und macht daraus einen UDT, den man dann selber in eigenen Intervallen im Backend ausführen kann.

EDIT:

Wenn man bei "$db->DbTimeStamp( time() )" ein bischen rechnet, kann man auch nur solche User löschen, die erst seit einer bestimmten Zeitdauer abgelaufen sind. In diesem Beispiel seit einem Monat.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline