
Öffentliche Methoden | |
| activateUser (Dsao_Hash_User $activationKey) | |
| Versucht, einen Benutzer mit der übergebenen ID zu aktivieren. | |
| getUsernameSuggestions ($username) | |
| Erzeugt zu einem uebergebenen Benutzernamen vier Alternative Vorschlaege. | |
| isUniqueEmailAddress ($emailAddress) | |
| Prüft Einmaligkeit der E-Mail-Adresse. | |
| isUniqueUsername ($username) | |
| Prüft Einmaligkeit des Benutzernames. | |
| insertUser (Dsao_User $user) | |
| Fuegt einen Benutzer in die Datenbank ein. | |
Geschützte Methoden | |
| _init () | |
| Initialisierung des Modells. | |
| _sendActivationMail (Dsao_User $user, Dsao_Hash_User $activationKey) | |
| Versendet eine E-Mail mit dem Aktivierungsschluessel an einen Benutzer. | |
Die Klasse enthaelt alle fuer die Registrierung wichtigen Methoden fuer die Kommunikation mit der Datenbank.
Definiert in Zeile 12 der Datei Register.php.
| Dsao_Model_User_Register::_init | ( | ) | [protected] |
Initialisierung des Modells.
Die Modelle können diese Methode überladen, um Standardtabelle usw. fest zu legen.
Erneute Implementation von Dsao_Model_Abstract.
Definiert in Zeile 14 der Datei Register.php.
Benutzt Dsao_Model_Abstract::_setDefaultTable().
00015 { 00016 $this->_setDefaultTable('user_data'); 00017 }
| Dsao_Model_User_Register::_sendActivationMail | ( | Dsao_User $ | user, | |
| Dsao_Hash_User $ | activationKey | |||
| ) | [protected] |
Versendet eine E-Mail mit dem Aktivierungsschluessel an einen Benutzer.
| $user | Dsao_User, Benutzer, dem Bestaetigungsmail zugeschickt werden soll | |
| $activationKey | Dsao_Hash_User, Aktivierungsschluessel |
Definiert in Zeile 27 der Datei Register.php.
Benutzt Dsao_Model_Abstract::getTranslate(), Dsao_Hash_User::getUri() und Dsao_View_Smarty::sprintf().
Wird benutzt von insertUser().
00028 { 00029 // E-Mail vorbereiten 00030 $content = Dsao_View_Smarty::sprintf 00031 ('user_register_insert_activation_email_content', 00032 array 00033 ( 00034 'activationUri' => $activationKey->getUri() 00035 ->getUriString(true, false, true), 00036 )); 00037 00038 $subject = $this->getTranslate()-> 00039 _('user_register_insert_activation_email_subject'); 00040 00041 $mail = new Dsao_Mail($user, $subject, $content); 00042 00043 // E-Mail versenden 00044 return $mail->send(); 00045 }
| Dsao_Model_User_Register::activateUser | ( | Dsao_Hash_User $ | activationKey | ) |
Versucht, einen Benutzer mit der übergebenen ID zu aktivieren.
| $activationKey | Dsao_Hash_User, Aktivierungsschlüssel |
Definiert in Zeile 53 der Datei Register.php.
Benutzt Dsao_Hash_User::deleteRow(), Dsao_Model_Abstract::getLog(), Dsao_Hash_User::getUri() und Dsao_Hash_User::isValid().
00054 { 00055 // Benuter erstellen 00056 $user = new Dsao_User(array('id' => $activationKey->getUri()->idUser)); 00057 00058 // Falls Benutzer ungültig, abbrechen 00059 if (!$user->refresh()->isSynchronous()) 00060 { 00061 $this->getLog()->err('user_register_activate_error_invalid_id', 00062 __METHOD__); 00063 } 00064 00065 // Falls Benutzer bereits aktiviert, abbrechen 00066 else if ($user->activated) 00067 { 00068 $this->getLog()->err('user_register_activate_error_activated', 00069 __METHOD__); 00070 } 00071 00072 // Falls Aktivierungsschlüssel nicht gültig 00073 else if (!$activationKey->isValid('idUser')) 00074 { 00075 $this->getLog()->err('user_register_activate_error_invalid_key', 00076 __METHOD__); 00077 } 00078 00079 // Keine Fehler 00080 else 00081 { 00082 $user->activated = true; 00083 00084 $user->setValid(true)->update(array('activated')); 00085 00086 // Aktivierungsschlüssel aus Datenbank löschen 00087 $activationKey->deleteRow(); 00088 00089 return true; 00090 } 00091 00092 return false; 00093 }
| Dsao_Model_User_Register::getUsernameSuggestions | ( | $ | username | ) |
Erzeugt zu einem uebergebenen Benutzernamen vier Alternative Vorschlaege.
| $username | string, Benutzername, zu dem Alternativen gefunden werden sollen |
Definiert in Zeile 102 der Datei Register.php.
Benutzt Dsao_Model_Abstract::_getTable().
00103 { 00104 // array, Vorschlaege fuer alternativen Benutzernamen 00105 $usernameSuggestions = new ArrayObject(); 00106 00107 // Nach verfuegbaren Benutzernamen suchen, bei vier gefundenen 00108 // Treffern Schleife verlassen 00109 for ($i = 1; (count($usernameSuggestions) < 4); $i++) 00110 { 00111 // Vorschlaege 00112 $suggestions = array 00113 ( 00114 $username.$i, 00115 $username.'_'.$i, 00116 $i.$username, 00117 $i.'_'.$username, 00118 ); 00119 00120 foreach ($suggestions as $suggestion) 00121 { 00122 // Falls Benutzer noch nicht existiert, Vorschläge ergänzen 00123 if (!$this->_getTable()->select()->where('username = ?', $suggestion)->fetchRow()) 00124 { 00125 $usernameSuggestions->append($suggestion); 00126 } 00127 } 00128 } 00129 00130 return $usernameSuggestions; 00131 }
| Dsao_Model_User_Register::insertUser | ( | Dsao_User $ | user | ) |
Fuegt einen Benutzer in die Datenbank ein.
| $user | Dsao_User, einzutragener Benutzer |
Definiert in Zeile 169 der Datei Register.php.
Benutzt Dsao_Model_Abstract::_getTable(), _sendActivationMail(), Dsao_Hash_User::factory() und Dsao_Model_Abstract::getLog().
00170 { 00171 // Daten fuer Tabellen vorbereiten 00172 $sqlUserData = array 00173 ( 00174 'emailAddress' => $user->emailAddress, 00175 'password' => $user->password, 00176 'username' => $user->username, 00177 ); 00178 00179 // ID zunaechst auf 0 setzten, da noch unbekannt 00180 $sqlUserProfile = array 00181 ( 00182 'id' => 0, 00183 ); 00184 00185 $sqlUserSettings = array 00186 ( 00187 'id' => 0, 00188 ); 00189 00190 // Transaktion starten 00191 $this->_getTable()->getAdapter()->beginTransaction(); 00192 00193 try 00194 { 00195 // Benutzerdaten einfuegen und gleichzeitig ID fuer Datensatz in den 00196 // anderen Tabellen zuweisen 00197 $sqlUserProfile['id'] = $sqlUserSettings['id'] = 00198 $this->_getTable()->insert($sqlUserData); 00199 00200 // Benutzerobjekt aktualisieren, um Aktivierungsmail verschicken zu 00201 // können 00202 $user->setId($sqlUserProfile['id'], false, false); 00203 00204 // Profildaten eintragen 00205 $this->_getTable('user_profile')->insert($sqlUserProfile); 00206 00207 // Einstellungen eintragen 00208 $this->_getTable('user_settings')->insert($sqlUserSettings); 00209 00210 // Aktivierungsschlüssel 00211 $activationKey = Dsao_Hash_User::factory(null, 00212 new Dsao_Uri_Http('/user/register/activate', array( 00213 'idUser' => $user->getId(), 00214 ))); 00215 00216 // Einfügen 00217 $activationKey->insert(); 00218 00219 // Transaktion abschliessen 00220 $this->_getTable()->getAdapter()->commit(); 00221 } 00222 00223 // Falls Fehler aufgetreten sind, Transaktion zuruecksetzen 00224 catch (Zend_Db_Exception $e) 00225 { 00226 $this->_getTable()->getAdapter()->rollback(); 00227 00228 $this->getLog()->err('global_error_mysql_write', __METHOD__); 00229 00230 return false; 00231 } 00232 00233 // Aktivierungsmail verschicken 00234 $this->_sendActivationMail($user, $activationKey); 00235 }
| Dsao_Model_User_Register::isUniqueEmailAddress | ( | $ | emailAddress | ) |
Prüft Einmaligkeit der E-Mail-Adresse.
Gibt zurueck, ob E-Mail-Adresse noch nicht in der DB vorhanden ist.
| $emailAddress | string, E-Mail-Adresse |
Definiert in Zeile 141 der Datei Register.php.
Benutzt Dsao_Model_Abstract::_getTable().
00142 { 00143 // Query erstellen und durchführen 00144 return !(bool) $this->_getTable()->select()->where 00145 ('emailAddress = ?', $emailAddress)->fetchRow(); 00146 }
| Dsao_Model_User_Register::isUniqueUsername | ( | $ | username | ) |
Prüft Einmaligkeit des Benutzernames.
Gibt zurueck, ob Benutzername noch nicht in der DB vorhanden ist.
| $username | string, Benutzername |
Definiert in Zeile 156 der Datei Register.php.
Benutzt Dsao_Model_Abstract::_getTable().
00157 { 00158 // Query erstellen und durchführen 00159 return !(bool) $this->_getTable()->select() 00160 ->where('username = ?', $username)->fetchRow(); 00161 }
1.5.7.1