Dsao_Model_User_Register Klassenreferenz

Model-Klasse des Register-Controllers. Mehr ...

Klassendiagramm für Dsao_Model_User_Register:

Dsao_Model_Abstract

Aufstellung aller Elemente

Ö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.


Ausführliche Beschreibung

Model-Klasse des Register-Controllers.

Die Klasse enthaelt alle fuer die Registrierung wichtigen Methoden fuer die Kommunikation mit der Datenbank.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Register.php 512 2009-06-19 08:11:48Z saviola777 $

Definiert in Zeile 12 der Datei Register.php.


Dokumentation der Elementfunktionen

Dsao_Model_User_Register::_init (  )  [protected]

Initialisierung des Modells.

Die Modelle können diese Methode überladen, um Standardtabelle usw. fest zu legen.

Rückgabe:
void

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.

Parameter:
$user Dsao_User, Benutzer, dem Bestaetigungsmail zugeschickt werden soll
$activationKey Dsao_Hash_User, Aktivierungsschluessel
Rückgabe:
bool, ob Versenden erfolgreich war

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.

Parameter:
$activationKey Dsao_Hash_User, Aktivierungsschlüssel
Rückgabe:
bool, ob Aktivierung erfolgreich war

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.

Parameter:
$username string, Benutzername, zu dem Alternativen gefunden werden sollen
Rückgabe:
ArrayObject, Namensvorschlaege

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.

Parameter:
$user Dsao_User, einzutragener Benutzer
Rückgabe:
bool, ob Einfuegen erfolgreich war

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.

Parameter:
$emailAddress string, E-Mail-Adresse
Rückgabe:
bool, ob E-Mail-Adresse einmalig ist

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.

Parameter:
$username string, Benutzername
Rückgabe:
bool, ob Benutzername einmalig ist

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   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:13 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1