]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/User.php
Introduced common_location_shared() to check if location sharing is always,
[quix0rs-gnu-social.git] / classes / User.php
index cbe923fc0eddb711a9573e4565c5a904ce61b521..c232b2b12f307c8c2ee2e0d60cc069a3746612f4 100644 (file)
@@ -207,7 +207,7 @@ class User extends Managed_DataObject
      * @return  User object
      * @throws  Exception on failure
      */
-    static function register(array $fields) {
+    static function register(array $fields, $accept_email_fail=false) {
 
         // MAGICALLY put fields into current scope
 
@@ -371,8 +371,15 @@ class User extends Managed_DataObject
 
             $profile->query('COMMIT');
 
-            if (!empty($email) && !$user->email) {
-                mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
+            if (!empty($email) && !empty($user->email)) {
+                try {
+                    mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
+                } catch (EmailException $e) {
+                    common_log(LOG_ERR, "Could not send user registration email for user id=={$user->id}: {$e->getMessage()}");
+                    if (!$accept_email_fail) {
+                        throw $e;
+                    }
+                }
             }
 
             // Welcome message
@@ -1017,8 +1024,16 @@ class User extends Managed_DataObject
         $orig = clone($this);
         $this->password = common_munge_password($password, $this->getProfile());
 
+        if ($this->validate() !== true) {
+            // TRANS: Form validation error on page where to change password.
+            throw new ServerException(_('Error saving user; invalid.'));
+        }
+
         if (!$this->update($orig)) {
-            throw new ServerException("Error updating user '{$nickname}'.");
+            common_log_db_error($this, 'UPDATE', __FILE__);
+            // TRANS: Server error displayed on page where to change password when password change
+            // TRANS: could not be made because of a server error.
+            throw new ServerException(_('Cannot save new password.'));
         }
     }