Zum Inhalt springen

sr_feuser_register: hook username verwirft angepasste Username beim Speichern

Erstellt am 13. Januar 2013 · Noch keine Antworten

Tags: Frontend-Benutzer, PHP, Frage

mavo ·

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.