Joomla.it Forum
Non solo Joomla... => Sviluppo => : Antonio77 03 Sep 2015, 23:38:37
-
Ciao,
ho creato un plugin che deve assegnare l'utente appena salvato a dei gruppi nella funzione onUserAfterSave.
Lo faccio così:
$user = JFactory::getUser($user['id']);$user->groups = Array(10);$user->save();
prima e dopo stampo la variabile user e vedo che prima aveva il gruppo 2, dopo ha il gruppo 10.Quando vado nel back-end e vedo l'utente appena creato risulta associato al gruppo 2 (Registred).
Ho provato anche in diverse maniere
JUserHelper::addUserToGroup($user['id'], 10);
JUserHelper::setUserGroups($user['id'], Array(10));
Qualcuno si é trovato in una situazione simile o saprebbe aiutarmi?
Grazie per qualsiasi suggerimento.
-
Ciao
Non so quale sia l'esigenza di creare un plugin per quella funzione dato che è gia possibile da impostazioni modificare il gruppo dei nuovi utenti da registred ad altro gruppo.
-
Ciao tomtomeight,
in realtà il mio plugin verifica esternamente l'autenticazione nell' onUserBeforeSave (e ottiene anche le informazioni sui gruppi),
solo che non riesco a settarglieli nell'onUserBeforeSave perché non é ancora salavto (almeno é così che mi é sembrato di capire),
quindi sto cercando di salvarli nell'onUserAfterSave.
Spero di aver chiarito la situazione.
Grazie.
-
Credo che dovresti agire in before save proprio perché non essendo ancora salvato puoi assegnare il gruppo, aftersave ti trovi col gruppo già assegnato e dovresti riaprire, cambiare e risalvare.
-
http://forum.joomla.org/viewtopic.php?p=1622802
...leggilo tutto
-
Ciao Steganoga,
grazie per il suggerimento,
ho provato come suggerito nel forum a creare una nuova istanza dello user da modificare e poi salvarla ma
non mi funziona ...
ho provato con tutte le varianti descritte dai vari utenti , da ultimo ho provato anche
$newuser = & JFactory::getUser($user['id']);
$newuser->groups = $gruppi;
try{
$newuser->save(true);
}catch (Exception $e)
{
JLog::add(...);
}
infine facendo print_r($newuser) mi stampa l'utente come dovrebbe essere essere ma poi lato back-end il gruppo é sempre Registred (2).
Ci dev'essere qualcos'altro che non va...
-
Ho risolto, il problema che avevo implementato anche onUserBeforeSave, all'interno per una serie di condizioni mi tornava false quindi non venivano salvate le modifiche ...