
Ö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. | |
Repräsentiert einen um einen Aktion-Hash und Benutzer-ID erweiterten Hash, der eine Zeile der Tabelle 'user_hash' darstellt.
Definiert in Zeile 12 der Datei User.php.
| 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
| $hash | string, Hash | |
| $length | int, Länge des Hashes | |
| $parameters | array, Parameter | |
| $uri | Dsao_Uri_Http|string, URI |
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 }
| Dsao_Hash_User::__get | ( | $ | parameter | ) |
| Dsao_Hash_User::__set | ( | $ | parameter, | |
| $ | value | |||
| ) |
Wrapper für Setter-Methode des URI.
| $parameter | string, Parametername | |
| $value | mixed, Wert |
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.
| $again | bool, ob in jedem Fall noch einmal gesucht werden soll |
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.
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.
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.
| $hash | string, Hash | |
| $uri | Dsao_Uri_Http|string, URI | |
| $parameters | array, Parameter des URI | |
| $length | int, Länge des Hashes |
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.
| $text | string, Klartext | |
| $uri | Dsao_Uri_Http|string, URI | |
| $parameters | array, Parameter | |
| $length | int, Länge des Hashes |
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.
Definiert in Zeile 207 der Datei User.php.
Wird benutzt von Dsao_Model_User_Register::_sendActivationMail() und Dsao_Model_User_Register::activateUser().
| Dsao_Hash_User::hasDuplicates | ( | ) |
Prüft, ob bereits Einträge mit dem gleichen Aktions-Hash für diesen Benutzer existieren.
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.
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.
| $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 |
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 }
1.5.7.1