Hallo zusammen,
ich benutzte sr_feuser_register (3.0.1) mit Typo3 4.7.7. Dabei habe ich einen Hook eingerichtet, der den Usernamen aus Vornamen.Nachnamen zusammensetzt. Auf der Preview Seite wird der Username entsprechen richtig angezeigt und auch im Form entsprechend im $recordArray['username'] richtig anzeigt.
Im Schritt wo angezeigt wird, dass eine Email zu bestätigen sei, wird der Standardusername (also der ohne Hook) angezeigt und der User auch damit angelegt.
Der Hook:
public function registrationProcess_beforeConfirmCreate (&$recordArray, &$controlDataObj) {
// in the case of this hook, the record array is passed by reference
// in this example hook, we generate a username based on the first and last names of the user
$cmdKey = $controlDataObj->getCmdKey();
$theTable = $controlDataObj->getTable();
if ($controlDataObj->getFeUserData('preview') && $controlDataObj->conf[$cmdKey . '.']['generateUsername']) {
$firstName = trim($recordArray['first_name']);
$lastName = trim($recordArray['last_name']);
$name = trim($recordArray['name']);
// Gross-Kleinschreibung korrigieren
//$firstName = tx_srfeuserregister_hooksHandler::title_case($firstName);
//$lastName = tx_srfeuserregister_hooksHandler::title_case($lastName);
$recordArray['first_name'] = $firstName;
$recordArray['last_name'] = $lastName;
$recordArray['name'] = $firstName.' '.$lastName;
// Sicherheitsabfragen
if ((!$firstName || !$lastName) && $name) {
$nameArray = t3lib_div::trimExplode(' ', $name);
$firstName = ($firstName ? $firstName : $nameArray[0]);
$lastName = ($lastName ? $lastName : $nameArray[1]);
}
//$username = substr(strtolower($firstName), 0, 5).'.'.substr(strtolower($lastName), 0, 5);
$username = str_replace(' ','',strtolower($firstName)).'.'.str_replace(' ','',strtolower($lastName));
$recordArray['username'] = $username;
$DBrows = $GLOBALS['TSFE']->sys_page->getRecordsByField($theTable, 'username', $username , 'LIMIT 1');
$counter = 0;
while($DBrows) {
$counter = $counter + 1;
$DBrows =
$GLOBALS['TSFE']->sys_page->getRecordsByField(
$theTable,
'username',
$recordArray['username'] . $counter, 'LIMIT 1'
);
}
if ($counter) {
header('Location: /main/error/registration.html');
}
}
}
Kann jemand das Problem bestätigen und hat ne Lösung dafür. Ich habe die Extension von ner 2.x auf 3.0.1 upgedatet.