Salve a tutti,
sto creando un componente per personalizzare la registrazione al mio sito joomla.
Ho un errore in particolare che non riesco ad interpretare...
Quadro della situazione: sto cercando di salvare un nuovo utente nella tabella #__user con il seguente codice php richiamato dal file admin/models/user.php -> class ImmobiliaModelUser extends JModel -> function store() :
[praticamente il metodo che viene richiamato al momento della pressione del tasto "salva" da backend]
// 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 = 'Publisher';
}
// set up the "main" user information
$data['name'] = $_POST['name'];
$data['username'] = $_POST['username'];
$data['email'] = $_POST['email'];
$data['password'] = $_POST['password'];
$data['password2'] = $_POST['password2'];
$data['password_clear'] = $_POST['password'];
$data['usertype'] = $_POST['usertype'];
$data['gid'] = $_POST['gid'];
$data['sendEmail'] = 1; // should the user receive system mails?
/* Now we can decide, if the user will need an activation */
$useractivation = 1;
if ($useractivation == 1) { // yeah we want an activation
jimport('joomla.user.helper'); // include libraries/user/helper.php
$data['block'] = 1; // block the User
$data['params'] = 0;
$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'] = 0; // don't block the user
}
$result = $user->bind($data);// now bind the data to the JUser Object, if it not works....
if(!$result){
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...
JError::raiseWarning('', JText::_( $user->getError())); // ...raise an Warning
return false; // if you're in a method/function return false
}
ora da cosa ho notato io la variabile password2 crea problemi, nel senso:
se la passo tramite l'array $data (come da sodice sopra) il bind viene eseguito ma lo script muore al momento del "$user->save()".
se non passo alcuna password il bind ne crea una random e la assegna anche a "password2". Questa volta lo script funziona, nel senso che ho un output e joomla mi gestisce un errore in cui scrive "PASSWORD DO NOT MATCH"...
sono un po' in crisi a riguardo... nessuno è in grado di aiutarmi?