Bonjour,
Je suis en train de faire un plugin pour importer des données dans un composant (EzRealty) et je dois créer des utilisateurs Joomla (s'ils n'existent pas). Mon script doit donc pouvoir créer plusieurs comptes joomla.
Une des solutions serait de prendre une image de la base de données (en faisant un export) de créer un utilisateur de prendre une autre image de la base et de comparer pour voir ce qu'il faut modifier dans les tables. Mais comme j'avais déjà tenté cette manip et que je n'arrivais pas à me connecter avec les utilisateurs ainsi créés, j'ai cherché une autre solution et j'ai trouvé : http://stackoverflow.com/questions/1...ithin-a-script
J'ai donc une fonction :
Que j'appelle ainsi :
L'utilisateur ainsi créé (une fois activé) peut être utilisé pour se connecter.
Par contre, seul le premier compte est créé.
Si je fais reload de la page, ça me créé le deuxième compte (trouvé dans le fichier).
Quelqu'un aurait-il une idée pour que tous les comptes qui doivent être créés puissent l'être en une seule exécution du plugin ?
Merci d'avance.
Je suis en train de faire un plugin pour importer des données dans un composant (EzRealty) et je dois créer des utilisateurs Joomla (s'ils n'existent pas). Mon script doit donc pouvoir créer plusieurs comptes joomla.
Une des solutions serait de prendre une image de la base de données (en faisant un export) de créer un utilisateur de prendre une autre image de la base et de comparer pour voir ce qu'il faut modifier dans les tables. Mais comme j'avais déjà tenté cette manip et que je n'arrivais pas à me connecter avec les utilisateurs ainsi créés, j'ai cherché une autre solution et j'ai trouvé : http://stackoverflow.com/questions/1...ithin-a-script
J'ai donc une fonction :
Code PHP:
function register_user ($firstname, $lastname, $email, $password)
{
echo "<br>register : ".$firstname." ".$lastname;
// $firstname = $email; // generate $firstname
// $lastname = ''; // generate $lastname
$username = $email; // username is the same as email
/*
I handle this code as if it is a snippet of a method or function!!
First set up some variables/objects */
// get the ACL
$acl =& JFactory::getACL();
/* get the com_user params */
jimport('joomla.application.component.helper'); // include libraries/application/component/helper.php
$usersParams = &JComponentHelper::getParams( 'com_users' ); // load the Params
// "generate" a new JUser Object
$user = JFactory::getUser(0); // it's important to set the "0" otherwise your admin user information will be loaded
$data = array(); // array for all user settings
// get the default usertype
$usertype = $usersParams->get( 'new_usertype' );
if (!$usertype)
{
$usertype = 'Registered';
}
// set up the "main" user information
//original logic of name creation
$data['name'] = $firstname.' '.$lastname; // add first- and lastname
//$data['name'] = $firstname.$lastname; // add first- and lastname
$data['username'] = $username; // add username
$data['email'] = $email; // add email
$data['gid'] = $acl->get_group_id( '', $usertype, 'ARO' ); // generate the gid from the usertype
/* no need to add the usertype, it will be generated automaticaly from the gid */
$data['password'] = $password; // set the password
$data['password2'] = $password; // confirm the password
$data['sendEmail'] = 1; // should the user receive system mails?
/* Now we can decide, if the user will need an activation */
$useractivation = $usersParams->get( 'useractivation' ); // in this example, we load the config-setting
if ($useractivation == 1)
{ // yeah we want an activation
jimport('joomla.user.helper'); // include libraries/user/helper.php
$data['block'] = 1; // block the User
$data['activation'] =JUtility::getHash( JUserHelper::genRandomPassword() ); // set activation hash (don't forget to send an activation email)
}
else
{ // no we need no activation
$data['block'] = 1; // don't block the user
}
echo "<br>user->bind : data :<pre>";
print_r($data);
echo "</pre>";
if (!$user->bind($data))
{ // now bind the data to the JUser Object, if it not works....
echo "<br>user->bind error";
JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning
return false; // if you're in a method/function return false
}
if (!$user->save())
{ // if the user is NOT saved...
echo "<br>user->save error";
JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning
return false; // if you're in a method/function return false
}
echo "<br>user creation OK";
return $user; // else return the new JUser object
}
Code PHP:
$new_user=$this->register_user($firstname, $lastname, $email, $password);
Par contre, seul le premier compte est créé.
Si je fais reload de la page, ça me créé le deuxième compte (trouvé dans le fichier).
Quelqu'un aurait-il une idée pour que tous les comptes qui doivent être créés puissent l'être en une seule exécution du plugin ?
Merci d'avance.
Commentaire