it-swarm.com.de

Das Ändern der Benutzergruppe in onUserBeforeSave des Benutzerprofil-Plugins funktioniert nicht

Ich habe folgenden Code in onUserBeforeSave des Benutzerprofil-Plugins (plugins/user/profile/profile.php) hinzugefügt:

    if ($isnew)
    {
        if (!strcasecmp($data['role'], 'group0'))
        {
            $data['groups'] = array(10);
        }
        elseif (!strcasecmp($data['role'], 'group1'))
        {
            $data['groups'] = array(11);
        }

        JFactory::getApplication()->enqueueMessage(print_r($user, true));
        JFactory::getApplication()->enqueueMessage(print_r($data, true));       
    }

Die Ergebnisse von print_r zeigen, dass die $ -Daten erfolgreich geändert wurden, aber am Ende der neue Benutzer der Datenbank hinzugefügt wurde, die sich noch in der alten Gruppe befindet, die "Registriert" ist.

Ich bin nicht sicher, was der Grund dafür ist. Und wie kann ich überschreibende Standardbenutzergruppen erreichen. Vielen Dank!

2
Rob L

Sie können Benutzerdaten im Ereignis onUserBeforeSave und onUserAfterSave nicht bearbeiten. Dies ist nur eine Kopie dessen, was gespeichert wird/wurde. Es wäre besser:

  • benutze onUserAfterSave event
  • benutzerobjekt nach dem Speichern abrufen $user = JFactory::getUser($user_id) wobei $user_id die ID eines Benutzers ist, den Sie ändern möchten
  • ändere Benutzergruppen wie diese $user->groups = Array($new_user_group)
  • benutzer speichern $user->save()
2
Artur Stępień