Dsao_Hash_User Klassenreferenz

Hash-Klasse, die auf Einträgen der Tabelle 'user_hash' basiert. Mehr ...

Klassendiagramm für Dsao_Hash_User:

Dsao_Hash

Aufstellung aller Elemente

Öffentliche Methoden

 __get ($parameter)
 Wrapper für Getter-Methode des URI.
 __set ($parameter, $value)
 Wrapper für Setter-Methode des URI.
 deleteDuplicates ()
 Löscht alle Duplikate.
 deleteRow ()
 Löscht Tabellenzeile.
 getUri ()
 Gibt URI zurück.
 hasDuplicates ()
 Prüft, ob bereits Einträge mit dem gleichen Aktions-Hash für diesen Benutzer existieren.
 isValid ($parametersNames=true, $recheck=false)
 Prüft die Gültigkeit der Daten aus dem URI.
 insert ()
 Fügt Hash in Tabelle ein.

Öffentliche, statische Methoden

static factory ($hash=null, $uri= '', array $parameters=array(), $length=32)
 Konstruktor.
static fromText ($text=null, $uri= '', array $parameters=array(), $length=32)
 Einen Hash aus Klartext bilden.

Geschützte Methoden

 __construct ($hash=null, $length=32, array $parameters=array(), $uri= '')
 Erzeugt neuen Hash.
 _findRow ($again=false)
 Versucht Tabellenzeile des aktuelles Hashes zu finden.

Geschützte Attribute

 $_row = null
 Zend_Db_Table_Row, Datensatz des Hashes aus Tabelle.
 $_uri = null
 Dsao_Uri_Http, aufgerufener URI.


Ausführliche Beschreibung

Hash-Klasse, die auf Einträgen der Tabelle 'user_hash' basiert.

Repräsentiert einen um einen Aktion-Hash und Benutzer-ID erweiterten Hash, der eine Zeile der Tabelle 'user_hash' darstellt.

Autor:
DSAo-Md

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

Version:
SVN: $Id: User.php 518 2009-09-02 18:34:53Z saviola777 $

Definiert in Zeile 12 der Datei User.php.


Beschreibung der Konstruktoren und Destruktoren

Dsao_Hash_User::__construct ( hash = null,
length = 32,
array $  parameters = array(),
uri = '' 
) [protected]

Erzeugt neuen Hash.

Der Parameter $uri erwartet den URI entweder in Form eines

  • Strings
  • Arrays (siehe Dsao_Uri_Http:: setParameters())
  • Dsao_Uri_Http-Objekts

Parameter:
$hash string, Hash
$length int, Länge des Hashes
$parameters array, Parameter
$uri Dsao_Uri_Http|string, URI
Rückgabe:
void

Definiert in Zeile 39 der Datei User.php.

00040   {
00041     // Falls Objekt übergeben wurde
00042     if (is_object($uri))
00043     {
00044       $this->_uri = $uri;
00045       $this->_uri->setParameters($parameters, true);
00046     }
00047     // Ansonsten wurde String übergeben
00048     else
00049     {
00050       $this->_uri = new Dsao_Uri_Http($uri, $parameters);
00051     }
00052 
00053     // Falls Hash noch null ist
00054     if (null === $hash)
00055     {
00056       $hash = $this->_uri->hash;
00057     }
00058 
00059 
00060     parent::__construct($hash, $length);
00061   }


Dokumentation der Elementfunktionen

Dsao_Hash_User::__get ( parameter  ) 

Wrapper für Getter-Methode des URI.

Parameter:
$parameter string, Parameter
Rückgabe:
mixed, Wert des Parameters

Definiert in Zeile 69 der Datei User.php.

00070   {
00071     return $this->_uri->__get($parameter);
00072   }

Dsao_Hash_User::__set ( parameter,
value 
)

Wrapper für Setter-Methode des URI.

Parameter:
$parameter string, Parametername
$value mixed, Wert
Rückgabe:
void

Definiert in Zeile 81 der Datei User.php.

Benutzt Dsao_Hash::isReadOnly().

00082   {
00083     // Falls Objekt schreibgeschützt ist
00084     $this->isReadOnly(true);
00085 
00086 
00087     return $this->_uri->__set($parameter, $value);
00088   }

Dsao_Hash_User::_findRow ( again = false  )  [protected]

Versucht Tabellenzeile des aktuelles Hashes zu finden.

Parameter:
$again bool, ob in jedem Fall noch einmal gesucht werden soll
Rückgabe:
void

Definiert in Zeile 96 der Datei User.php.

Benutzt Dsao_Hash::getHash() und Dsao_Registry::getTable().

Wird benutzt von isValid().

00097   {
00098     // Falls schon geprüft wurde und nicht nochmal geprüft werden soll
00099     if (null !== $this->_row && !$again)
00100     {
00101       return;
00102     }
00103 
00104     // Falls keine Hash-ID vorhanden ist
00105     if (!$this->_uri->idHash)
00106     {
00107       $this->_row = Dsao_Registry::getTable('user_hash')->select()
00108         ->where('idUser = ?', $this->_uri->idUser)
00109         ->where('hash = ?', $this->getHash())->fetchRow();
00110 
00111       // Falls Zeile gefunden wurde
00112       if ($this->_row)
00113       {
00114         $this->_uri->idHash = $this->_row->id;
00115       }
00116     }
00117     else
00118     {
00119       $this->_row = Dsao_Registry::getTable('user_hash')
00120         ->find($this->_uri->idHash)->current();
00121     }
00122   }

Dsao_Hash_User::deleteDuplicates (  ) 

Löscht alle Duplikate.

Duplikate sind Einträge mit gleicher Benutzer-ID und gleichem Aktions-Hash.

Rückgabe:
Dsao_Hash_User, fließendes Interface

Definiert in Zeile 132 der Datei User.php.

Benutzt Dsao_Registry::get(), Dsao_Registry::getTable() und isValid().

00133   {
00134     // Falls Objekt nicht gültig
00135     if (!$this->isValid(null))
00136     {
00137       throw new Dsao_Exception('dsao_hash_user_object_invalid');
00138     }
00139 
00140     // Where-Klausel
00141     $sqlWhere = 'idUser = '. (int) $this->_row->idUser.' AND '.
00142       Dsao_Registry::get('db')->quoteInto
00143         ('hashAction = ?', $this->_row->hashAction).' AND '.
00144       'id != '. (int) $this->_row->id;
00145 
00146     // Löschen
00147     Dsao_Registry::getTable('user_hash')->delete($sqlWhere);
00148 
00149     return $this;
00150   }

Dsao_Hash_User::deleteRow (  ) 

Löscht Tabellenzeile.

Rückgabe:
Dsao_Hash_User, fließendes Interface

Definiert in Zeile 157 der Datei User.php.

Benutzt isValid().

Wird benutzt von Dsao_Model_User_Register::activateUser().

00158   {
00159     // Falls Zeile vorhanden, löschen
00160     if ($this->isValid(null))
00161     {
00162       $this->_row->delete();
00163       $this->_row = null;
00164     }
00165 
00166     return $this;
00167   }

static Dsao_Hash_User::factory ( hash = null,
uri = '',
array $  parameters = array(),
length = 32 
) [static]

Konstruktor.

Parameter:
$hash string, Hash
$uri Dsao_Uri_Http|string, URI
$parameters array, Parameter des URI
$length int, Länge des Hashes
Rückgabe:
void

Definiert in Zeile 178 der Datei User.php.

Wird benutzt von Dsao_Model_User_Login::_cookieRegenerate(), User_RegisterController::activateAction(), Dsao_Model_User_Login::cookieLogin(), Dsao_Model_User_Register::insertUser(), isValid() und User_LoginController::passwordAction().

00179   {
00180     // Objekt zurück geben
00181     return new self($hash, $length, $parameters, $uri);
00182   }

static Dsao_Hash_User::fromText ( text = null,
uri = '',
array $  parameters = array(),
length = 32 
) [static]

Einen Hash aus Klartext bilden.

Parameter:
$text string, Klartext
$uri Dsao_Uri_Http|string, URI
$parameters array, Parameter
$length int, Länge des Hashes
Rückgabe:
Dsao_Hash_User, Hash-Objekt

Definiert in Zeile 193 der Datei User.php.

Wird benutzt von insert().

00194   {
00195     $hash = new self(null, $length, $parameters, $uri);
00196 
00197     $hash->_generateHash($text);
00198 
00199     return $hash;
00200   }

Dsao_Hash_User::getUri (  ) 

Gibt URI zurück.

Rückgabe:
Dsao_Uri_Http, URI

Definiert in Zeile 207 der Datei User.php.

Wird benutzt von Dsao_Model_User_Register::_sendActivationMail() und Dsao_Model_User_Register::activateUser().

00208   {
00209     return $this->_uri;
00210   }

Dsao_Hash_User::hasDuplicates (  ) 

Prüft, ob bereits Einträge mit dem gleichen Aktions-Hash für diesen Benutzer existieren.

Rückgabe:
bool, Ob Duplikate vorhanden sind

Definiert in Zeile 218 der Datei User.php.

Benutzt Dsao_Registry::getTable() und Dsao_Hash::isReadOnly().

00219   {
00220     // Falls Hash nicht gültig
00221     $this->isReadOnly(true);
00222 
00223     // SELECT-Statement
00224     return (bool) Dsao_Registry::getTable('user_hash')->select(true)
00225       ->reset(Zend_Db_Select::COLUMNS)
00226       ->columns(new Zend_Db_Expr('COUNT(*) AS duplicates'))
00227       ->where('idUser = ?', (int) $this->_row->idUser)
00228       ->where('hashAction = ?', $this->_row->hashAction)
00229       ->where('id != ?', $this->_row->id)
00230       ->fetchRow()->duplicates;
00231   }

Dsao_Hash_User::insert (  ) 

Fügt Hash in Tabelle ein.

Rückgabe:
Dsao_Hash_Entry, fließendes Interface

Definiert in Zeile 297 der Datei User.php.

Benutzt fromText(), Dsao_Hash::getHash(), Dsao_Registry::getTable() und isValid().

00298   {
00299     // Falls Zeile vorhanden
00300     if ($this->isValid(null))
00301     {
00302       throw new Dsao_Exception('dsao_hash_user_hash_inserted');
00303     }
00304 
00305     // Falls keine Benutzer-ID vorhanden
00306     if (!$this->_uri->idUser)
00307     {
00308       throw new Dsao_Exception('dsao_hash_user_id_missing');
00309     }
00310 
00311     // Hash hinzufügen
00312     $this->_uri->hash = $this->getHash();
00313 
00314     // Hash der Aktion
00315     $hashAction = parent::fromText($this->_uri->
00316       getUriString(array(true, 'hash', 'idHash')), null, $this->_length);
00317 
00318     // Daten
00319     $data = array(
00320       'idUser'      => (int) $this->_uri->idUser,
00321       'hash'        => $this->getHash(),
00322       'hashAction'  => $hashAction->getHash(),
00323       );
00324 
00325     $this->_uri->idHash = Dsao_Registry::getTable('user_hash')->insert($data);
00326 
00327     return $this;
00328   }

Dsao_Hash_User::isValid ( parametersNames = true,
recheck = false 
)

Prüft die Gültigkeit der Daten aus dem URI.

Die Methode lädt einen Hash aus der Datenbank und vergleicht ihn mit den in der URI übergebenen Daten.

Parameter:
$parametersNames array|bool Welche Parameter bei der Prüfung des Aktions-Hashes herangezeogen werden sollen; wird null übergeben, so wird lediglich die Zeile geladen und zurückgegeben
$recheck bool, ob Tabellenzeile neu geladen werden soll
Rückgabe:
bool, Gültigkeit

Definiert in Zeile 245 der Datei User.php.

Benutzt _findRow() und factory().

Wird benutzt von Dsao_Model_User_Register::activateUser(), deleteDuplicates(), deleteRow() und insert().

00246   {
00247     // Falls entweder neu geprüft werden soll oder noch nicht geprüft wurde
00248     if ($recheck || null === $this->_row)
00249     {
00250       $this->_findRow();
00251     }
00252 
00253     // Falls keine Zeile gefunden, abbrechen
00254     if (!$this->_row || null === $parametersNames)
00255     {
00256       return $this->_row;
00257     }
00258 
00259     // Ggf. Parameterliste in Array umwandeln
00260     if (!is_array($parametersNames))
00261     {
00262       $parametersNames = array($parametersNames);
00263     }
00264 
00265     // Leerer Array -> false
00266     if (empty($parametersNames))
00267     {
00268       $parametersNames = array(false);
00269     }
00270     // Ansonsten prüfen, ob als erster Parameter true übergeben wurde
00271     else if ($parametersNames[0] === true)
00272     {
00273       $parametersNames = array_merge($parametersNames,
00274         array('hash', 'idHash'));
00275     }
00276 
00277     // Falls Benutzer-ID nicht übereinstimmt
00278     if ($this->_row->idUser != $this->_uri->idUser
00279         // oder Hash nicht übereinstimmt
00280         || !parent::factory($this->_row->hash)->compareTo($this)
00281         // oder Hash der Aktion nicht stimmt
00282         || !parent::factory($this->_row->hashAction)->compareTo
00283             (parent::fromText($this->_uri
00284               ->getUriString($parametersNames))))
00285     {
00286       return false;
00287     }
00288 
00289     return true;
00290   }


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

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