
Öffentliche Methoden | |
| editProfile (Zend_Controller_Request_Http $request, Dsao_User $user) | |
| Bearbeitung des Profils. | |
Geschützte Methoden | |
| _editEmailAddress () | |
| Ändern der E-Mail-Adresse. | |
| _editPassword () | |
| Ändern des Passworts. | |
| _editUserData () | |
| Ändern der Benutzerdaten. | |
Geschützte Attribute | |
| $_request = null | |
| Zend_Controller_Request_Http, Objekt mit Formulardaten. | |
| $_user = null | |
| Dsao_User, Benutzer, dessen Daten geändert werden sollen. | |
Definiert in Zeile 9 der Datei Profile.php.
| Dsao_Model_User_Profile::_editEmailAddress | ( | ) | [protected] |
Ändern der E-Mail-Adresse.
Prüft, ob neue E-Mail-Adresse gültig ist und setzt sie ggf.
Definiert in Zeile 28 der Datei Profile.php.
Benutzt Dsao_Model_Abstract::getLog() und Dsao_Registry::getModel().
Wird benutzt von editProfile().
00029 { 00030 // Falls HTTP-Abfrage oder Benutzer nicht initialisiert, abbrechen 00031 if (!$this->_request || !$this->_user) 00032 { 00033 return false; 00034 } 00035 00036 // Formulardaten initialisieren 00037 $emailAddress = strtolower(trim 00038 ($this->_request->getPost('emailAddress'))); 00039 $emailAddressVerification = strtolower(trim($this->_request->getPost 00040 ('emailAddressVerification'))); 00041 $password = $this->_request->getPost('password'); 00042 00043 // Validator für die E-Mail-Adresse 00044 $validator = new Zend_Validate_EmailAddress(); 00045 00046 // Falls keine E-Mail-Adresse übergeben, oder neue mit bisheriger 00047 // uebereinstimmt 00048 if (!$emailAddress || $emailAddress == $this->_user->emailAddress) 00049 { 00050 $this->getLog()->err(null, __METHOD__); 00051 } 00052 00053 // Falls zweite Eingabe nicht mit der ersten uebereinstimmt 00054 else if ($emailAddress != $emailAddressVerification) 00055 { 00056 $this->getLog()->err('user_register_email_error_nonconform', __METHOD__); 00057 } 00058 00059 // Falls Passwort nicht eingegeben wurde 00060 else if (!$password) 00061 { 00062 $this->getLog()->err 00063 ('user_profile_edit_error_password_missing', __METHOD__); 00064 } 00065 00066 // Falls Passwort falsch, abbrechen 00067 else if (md5($password) != $this->_user->password) 00068 { 00069 $this->getLog()->err('user_profile_edit_error_password_wrong', __METHOD__); 00070 } 00071 00072 // Falls E-Mail-Adresse ungueltig, abbrechen 00073 else if (!$validator->isValid($emailAddress)) 00074 { 00075 $this->getLog()->err('user_register_email_error_invalid', __METHOD__); 00076 } 00077 00078 // Einmaligkeit der E-Mail-Adresse pruefen 00079 else if (Dsao_Registry::getModel('User_Register')->isUniqueEmailAddress($emailAddress)) 00080 { 00081 $this->getLog()->err('user_register_email_error_not_unique', __METHOD__); 00082 } 00083 00084 // Falls Fehler aufgetreten sind 00085 if ($this->getLog()->hasError(__METHOD__)) 00086 { 00087 return false; 00088 } 00089 00090 // Keine Fehler aufgetreten, also E-Mail-Adresse ändern 00091 $this->_user->emailAddress = $emailAddress; 00092 00093 return true; 00094 }
| Dsao_Model_User_Profile::_editPassword | ( | ) | [protected] |
Ändern des Passworts.
Die Methode prueft, ob der Benutzer sowohl das alte, als auch das neue (zwei mal) Passwort korrekt eingegeben hat und aendert es ggf.
Definiert in Zeile 104 der Datei Profile.php.
Benutzt Dsao_Hash::fromText() und Dsao_Model_Abstract::getLog().
Wird benutzt von editProfile().
00105 { 00106 // Falls HTTP-Abfrage oder Benutzer nicht initialisiert, abbrechen 00107 if (!$this->_request || !$this->_user) 00108 { 00109 return false; 00110 } 00111 00112 // Formulardaten initialisieren 00113 $password = $this->_request->getPost('password'); 00114 $passwordNew = $this->_request->getPost('passwordNew'); 00115 $passwordNewVerification = $this->_request->getPost 00116 ('passwordNewVerification'); 00117 00118 // Validator für das Passwort instanziieren 00119 $validator = new Dsao_Validate_Password(); 00120 00121 // Falls neues Passwort nicht uebergeben wurde oder mit bisherigem 00122 // übereinstimmt, abbrechen 00123 if (!$passwordNew || md5($passwordNew) == $this->_user->password) 00124 { 00125 $this->getLog()->err(null, __METHOD__); 00126 } 00127 00128 // Falls zweite Eingabe nicht mit erster uebereinstimmt, abbrechen 00129 else if ($passwordNew != $passwordNewVerification) 00130 { 00131 $this->getLog()->err 00132 ('user_register_password_error_nonconform', __METHOD__); 00133 } 00134 00135 // Falls Passwort nicht eingegeben, abbrechen 00136 else if (!$password) 00137 { 00138 $this->getLog()->err 00139 ('user_profile_edit_error_password_missing', __METHOD__); 00140 } 00141 00142 // Falls Passwort falsch, abbrechen 00143 else if (md5($password) != $this->_user->password) 00144 { 00145 $this->getLog()->err('user_profile_edit_error_password_wrong', __METHOD__); 00146 } 00147 00148 // Falls neues Passwort ungueltig, abbrechen 00149 else if (!$validator->isValid($passwordNew)) 00150 { 00151 $this->getLog()->err('user_register_password_error_invalid', __METHOD__); 00152 } 00153 00154 // Falls Fehler aufgetreten sind, abbrechen 00155 if ($this->getLog()->hasError(__METHOD__)) 00156 { 00157 return false; 00158 } 00159 00160 // Keine Fehler aufgetreten, also Passwort aendern 00161 $this->_user->password = Dsao_Hash_Password::fromText($passwordNew) 00162 ->getHash(); 00163 00164 return true; 00165 }
| Dsao_Model_User_Profile::_editUserData | ( | ) | [protected] |
Ändern der Benutzerdaten.
Prueft, ob Benutzerdaten geaendert wurden und, falls gueltige Werte uebergeben wurden, schreibt diese in das Benutzerobjekt.
Die Methode geht gruppierte Elemente (numerisch, alphanumerisch usw.) durch und filtert / prueft sie auf Gueltigkeit, bevor sie ggf. in das Benutzerobjekt geschrieben werden.
Definiert in Zeile 179 der Datei Profile.php.
Benutzt Dsao_Model_Abstract::underscore().
Wird benutzt von editProfile().
00180 { 00181 // array, Geaenderte Benutzerdaten 00182 $changedCols = array(); 00183 00184 // array, Spalten, in denen Fehler aufgetreten sind 00185 $invalidCols = array(); 00186 00187 // array, Enthaelt alle Arrays fuer die Benutzerdaten 00188 $userDataFilters = array(); 00189 00190 // Zend_Filter_Input, Filter fuer alphanumerische Daten 00191 $userDataFilters['alphanumeric'] = new Dsao_Filter_Input 00192 ( 00193 array // Filter 00194 ( 00195 '*' => 'StringTrim', 00196 ), 00197 null, // Validatoren 00198 array // Daten 00199 ( 00200 'contactAim' => $this->_request->getPost('contactAim'), 00201 'contactSkype' => $this->_request->getPost('contactSkype'), 00202 'layout' => $this->_request->getPost('layout'), 00203 'personalBirthday' => $this->_request->getPost('personalBirthday'), 00204 'personalCity' => $this->_request->getPost('personalCity'), 00205 'personalCountry' => $this->_request->getPost('personalCountry'), 00206 'personalForename' => $this->_request->getPost('personalForename'), 00207 'personalStreet' => $this->_request->getPost('personalStreet'), 00208 'personalSurname' => $this->_request->getPost('personalSurname'), 00209 ) 00210 ); 00211 00212 // Zend_Filter_Input, Filter fuer Benutzerdaten in E-Mail-Adressen-Form 00213 // (MSN, Jabber) 00214 $userDataFilters['emailAddresses'] = new Dsao_Filter_Input 00215 ( 00216 array // Filter 00217 ( 00218 '*' => 'StringTrim', 00219 ), 00220 array // Validatoren 00221 ( 00222 '*' => array 00223 ( 00224 'EmailAddress', 00225 'allowEmpty' => true, 00226 ), 00227 ), 00228 array // Daten 00229 ( 00230 'contactJabber' => $this->_request->getPost('contactJabber'), 00231 'contactMsn' => $this->_request->getPost('contactMsn'), 00232 ) 00233 ); 00234 00235 // Zend_Filter_Input, Filter fuer Benutzereinstellungen, die nur an oder 00236 // aus sein koennen 00237 $userDataFilters['flags'] = new Dsao_Filter_Input 00238 ( 00239 array // Filter 00240 ( 00241 '*' => 'Int', 00242 ), 00243 null, // Validatoren 00244 array // Daten 00245 ( 00246 'javascriptLoadFiles' => $this->_request->getPost 00247 ('javascriptLoadFiles'), 00248 'profileShowContactData' => $this->_request->getPost 00249 ('showContactData'), 00250 'profileShowEmailAddress' => $this->_request->getPost 00251 ('showEmailAddress'), 00252 'profileShowPersonalData' => $this->_request->getPost 00253 ('showPersonalData'), 00254 'scrollMailNotification' => $this->_request->getPost 00255 ('scrollMailNotification'), 00256 ) 00257 ); 00258 00259 // Zend_Filter_Input, Filter fuer numerische Benutzerdaten 00260 $userDataFilters['numeric'] = new Dsao_Filter_Input 00261 ( 00262 array // Filter 00263 ( 00264 '*' => 'StringTrim', 00265 ), 00266 array // Validatoren 00267 ( 00268 '*' => array 00269 ( 00270 'Digits', 00271 'allowEmpty' => true, 00272 ), 00273 ), 00274 array // Daten 00275 ( 00276 'contactIcq' => $this->_request->getPost('contactIcq'), 00277 'personalPostcode' => $this->_request->getPost('personalPostcode'), 00278 ) 00279 ); 00280 00281 // Arrays mit Filtern durchgehen 00282 foreach ($userDataFilters as $userDataFilter) 00283 { 00284 // Falls ungueltige Felder vorhanden 00285 if ($userDataFilter->hasInvalid()) 00286 { 00287 // Ungueltige Felder durchlaufen und Fehlermeldungen ausgeben 00288 foreach ($userDataFilter->getUnknown() as $col => $formValue) 00289 { 00290 $invalidCols[] = self::underscore($col); 00291 } 00292 } 00293 00294 // Benutzerdaten durchgehen 00295 foreach ($userDataFilter->getEscaped() as $col => $formValue) 00296 { 00297 // Falls Wert altem entspricht, zum Naechsten springen 00298 if ($formValue == $this->_user->$col) 00299 { 00300 continue; 00301 } 00302 00303 // Ansonsten Wert in Benutzerobjekt schreiben 00304 $this->_user->$col = $formValue; 00305 00306 // Aktuelle Spalte zu geaenderten Benutzerdaten hinzufuegen 00307 $changedCols[] = $col; 00308 } 00309 } 00310 00311 return array( 00312 'changedCols' => $changedCols, 00313 'invalidCols' => $invalidCols); 00314 }
| Dsao_Model_User_Profile::editProfile | ( | Zend_Controller_Request_Http $ | request, | |
| Dsao_User $ | user | |||
| ) |
Bearbeitung des Profils.
Nimmt eine HTTP-Anfrage und ein Benutzerobjekt entgegen und prüft dann, ob der Benutzer gültige Angaben zur Änderung seines Profils gemacht hat und gibt ggf. einen Array der geänderten Spalten zurück.
| $request | Zend_Controller_Request_Http, HTTP-Anfrage des Benutzers | |
| $user | Dsao_User, Benutzerobjekt |
Definiert in Zeile 327 der Datei Profile.php.
Benutzt _editEmailAddress(), _editPassword(), _editUserData() und Dsao_DataHandler_Abstract::setReadOnly().
00328 { 00329 // Klassenvariablen setzen 00330 $this->_request = $request; 00331 $this->_user = $user->setReadOnly(false); 00332 00333 // array, Geänderte / Fehlerhafte Spalten 00334 $cols = $this->_editUserData(); 00335 00336 // Falls E-Mail-Adresse geändert werden soll 00337 if ($this->_editEmailAddress()) 00338 { 00339 $cols['changedCols'][] = 'emailAddress'; 00340 } 00341 00342 // Falls Passwort geändert werden soll 00343 if ($this->_editPassword()) 00344 { 00345 $cols['changedCols'][] = 'password'; 00346 } 00347 00348 // Falls Benutzerdaten veraendert wurden 00349 if ($cols['changedCols']) 00350 { 00351 // Benutzerdaten in Datenbank aktualisieren 00352 $this->_user->update($cols['changedCols'])->setReserialize(true); 00353 } 00354 00355 // Gültigkeit setzen und wieder als schreibgeschützt markieren 00356 $this->_user->setValid()->setReadOnly(); 00357 00358 // Klassenvariablen wieder zurücksetzen 00359 $this->_request = null; 00360 $this->_user = null; 00361 00362 return $cols; 00363 }
1.5.7.1