• Wenn du hier im Forum ein neues Thema erstellst, sind schon Punkte aufgeführt die du ausfüllen musst. Das dient im Allgemeinen dazu die notwendigen Informationen direkt mit der Frage bereitzustellen.
    Da in letzter Zeit immer wieder gerne das Formular gelöscht wurde und erst nach 3 Seiten Nachfragen die benötigten Infos für eine Hilfe kommen, werde ich nun jede Fragestellung die nicht einmal annähernd das Formular benutzt, sofort in den Sondermüll schicken.
    Füllt einfach die abgefragte Daten aus und alle können euch viel schneller helfen.

XF2.1 Userprofil unvollständig. User "zwingen" zur vervollständigung

Tamara-Jasmin

Bekanntes Mitglied
Lizenzinhaber
Registriert
30. Mai 2018
Beiträge
593
Punkte
88
XF Version
  1. 2.2.10 PL1
XF Instanz
Hosting
PHP-Version
8.9
MySQL/MariaDB
8.033
Provider/Hoster
Artfiles.de
Hallöchen allesamt!

Im laufe der Zeit musste einiges am Userprofil verbessert werden - aber auch erweitert (individuelle Nutzerfelder).
Unsere alten Nutzer haben somit ein unvollständiges Nutzerprofil. Einige Punkte werden somit nicht - oder Falsch angezeigt, was natürlich nicht sein wollte.

Wo es mir aufgefallen ist habe ich die Nutzer angeschrieben, dass sie doch bitte ihr Nutzerprofil aktualisieren.
Keine Reaktion - nicht mal eine Antwort. Das sagt mir ziemlich eindeutig "Du kannst mich mal".

Jetzt suche ich nach einer Möglichkeit, das DIE mal was können - und zwar ihr Benutzerprofil aktualisieren bevor die auch nur einen Buchstaben weiterlesen können.
Soll ja mit den Nutzungsbedingungen so laufen (oder waren es die Datenschutzbestimmungen?). Wenn die den Haken setzen - dann geht es "normal" weiter.
Wüsste jemand, wie man das lösen könnte. Oder kennt jemand ein AddOn was das erledigt?

LG: Tammy
 
Müsstest du dir ein Add-on schreiben lassen, abgesehen davon dass das rechtlich bedenklich ist. Vom moralischen Rede ich erst gar nicht
 
Völlig ungetestet, aber so könnte es gehen:

Ein Event Listener 'checkFields()' für das Event 'dispatcher_post_dispatch'. Das würde dann so aussehen:
PHP:
<?php

namespace Vendor\AddonId;

class Listener
{
    public static function checkFields(\XF\Mvc\Dispatcher $dispatcher, \XF\Mvc\Reply\AbstractReply &$reply, \XF\Mvc\RouteMatch $routeMatch, \XF\Mvc\RouteMatch $originalMatch)
    {
        $app = \XF::app();
        $visitor = \XF::visitor();

        if ($reply->getResponseType() != 'html' ||
            !($app instanceof \XF\Pub\App) ||
            $app->request()->isPost() ||
            $routeMatch->getController() == 'XF:Account' ||
            $routeMatch->getController() == 'XF:Logout' ||
            $routeMatch->getController() == 'XF:AccountConfirmation' ||
            $routeMatch->getController() == 'XF:Register' ||
            $routeMatch->getController() == 'XF:Misc')
        {
            return;
        }

        if ($vistor->user_state != 'valid')
        {
            return;
        }

        $fields = [
            'field1',
            'field2',
            'field3'
        ];

        foreach ($fields as $field)
        {
            if (!$visitor->Profile->custom_fields->getFieldValue($field))
            {
                $reply = new \XF\Mvc\Reply\View(
                    'XF:Account\AccountDetails', 'account_details'
                );

                return;
            }
        }
    }
}
Man kann sicher auch andere Listener nehmen, aber im Prinzip sollte es so funktionieren - Feintuning wird wohl noch notwendig sein. Es wird dann überall (außer den Ausnahmen im ersten "if" block) geprüft ob der User alle in $fields definierten Felder ausgefüllt hat. Wenn das nicht der Fall ist, wird ihm der Inhalt von "account/account-details" (ohne Redirect) angezeigt.
 
Nachdem ich ja nix besseres zu tun habe.. im Anhang das ganze noch als Addon.

Einfach installieren und unter admin.php?options/groups/users/ (ganz unten) die benötigten Benutzerfelder (durch Komma getrennt) eingeben. Das ganze sollte nur für Felder, die unter account/account-details eingegeben werden, genutzt werden.
 

Anhänge

  • Nocte-ForceFields-1.0.0 Alpha.zip
    10,2 KB · Aufrufe: 1
Das ist sogar noch besser wie ich mir vorgestellt habe ;) Danke! Hab schon versucht rauszufinden wo ich das PHP Script eingeben muss ;)
Probiere es gleich aus! Danke!
Rückmeldung kommt ....

LG: Tammy
 
JA !!!!!!!!!!!!!

Genial !!!
Perfekt!

Jetzt muss ich nur noch eine Meldung anzeigen, warum man nun auf der Seite landet - und nicht mehr weg klicken kann ;)

Schreib mir bitte mal per PN Deine PP Adresse ;)

LG: Tammy
 
dazu erstell einfach eine "Notice" und gib unter "Page criteria" als "content template" folgendes ein: "account_details"

Diesen Hinweis sehen dann aber auch User, die bereits alles ausgefüllt haben, wenn sie die "Account details" aufrufen. Muss man halt entsprechend allgemein formulieren.
 
Das hab ich schon getan ;) Aber das "i-tüpfelchen" was das "content_template".
Hatte schon alles durchsucht ob "Kontodetails" irgendwo auftaucht ;)

Du bist echt gut!
Und ich hab wieder EINIGES gelernt heute!

Vergiss bitte die PN nicht! 1000 Dank !!!

LG: Tammy
 
Oha ... jetzt gibt es trotzdem ein Problem!
Alle Gäste können das Forum nicht mehr nutzen, weil da ja keine Daten existieren ;)

Muss das AddOn nochmal deaktivieren.

LG: Tammy
 
Zurück
Oben