From acf562b3ddaa6fbe1727fe301a50f1e9b5f26fd2 Mon Sep 17 00:00:00 2001
From: Evan Prodromou <evan@controlezvous.ca>
Date: Sun, 22 Jun 2008 11:16:11 -0400
Subject: [PATCH] use updateKeys() for updating the user

darcs-hash:20080622151611-34904-1d952df08b5247ab391bb76fd50d7b90498f0c96.gz
---
 actions/confirmemail.php    |  5 ++++-
 actions/profilesettings.php | 26 +++++++++++++++-----------
 classes/User.php            |  4 ++--
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/actions/confirmemail.php b/actions/confirmemail.php
index e69cc6fff8..72b42c2a7b 100644
--- a/actions/confirmemail.php
+++ b/actions/confirmemail.php
@@ -51,11 +51,13 @@ class ConfirmemailAction extends Action {
         $cur->query('BEGIN');
 		
         $orig_user = clone($cur);
+		
         $cur->email = $confirm_email->email;
-        $result = $cur->update($orig_user);
+        $result = $cur->updateKeys($orig_user);
 		
         if (!$result) {
 			common_log_db_error($cur, 'UPDATE', __FILE__);
+            $this->server_error(_t('Couldn\'t update user.'));
             return;
         }
 		
@@ -63,6 +65,7 @@ class ConfirmemailAction extends Action {
 		
         if (!$result) {
 			common_log_db_error($confirm_email, 'DELETE', __FILE__);
+            $this->server_error(_t('Couldn\'t delete email confirmation.'));
             return;
         }
 		
diff --git a/actions/profilesettings.php b/actions/profilesettings.php
index 1b7c75d479..bca86a85f3 100644
--- a/actions/profilesettings.php
+++ b/actions/profilesettings.php
@@ -113,20 +113,23 @@ class ProfilesettingsAction extends SettingsAction {
 		assert(!is_null($user)); # should already be checked
 
 		$user->query('BEGIN');
-		
-		$original = clone($user);
-
-		$user->nickname = $nickname;
 
-		$result = $user->update($original);
-		
-		if (!$result) {
-			common_log_db_error($user, 'UPDATE', __FILE__);
-			common_server_error(_t('Couldnt update user.'));
-			return;
+		if ($user->nickname != $nickname) {
+			
+			$original = clone($user);
+			
+			$user->nickname = $nickname;
+			
+			$result = $user->updateKeys($original);
+			
+			if (!$result) {
+				common_log_db_error($user, 'UPDATE', __FILE__);
+				common_server_error(_t('Couldnt update user.'));
+				return;
+			}
 		}
 
-		if ($email != $original->email) {
+		if ($email != $user->email) {
 			
 			$confirm = new Confirm_email();
 			$confirm->code = common_good_rand(16);
@@ -134,6 +137,7 @@ class ProfilesettingsAction extends SettingsAction {
 			$confirm->email = $email;
 			
 			$result = $confirm->insert();
+			
 			if (!$result) {
 				common_log_db_error($confirm, 'INSERT', __FILE__);
 				common_server_error(_t('Couldnt confirm email.'));
diff --git a/classes/User.php b/classes/User.php
index e8667d6975..94240392ed 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -68,12 +68,12 @@ class User extends DB_DataObject
 		$parts = array();
 		foreach (array('nickname', 'email') as $k) {
 			if ($this->$k != $orig->$k) {
-				$parts[] = $k . '=' . $this->_quote($this->$k);
+				$parts[] = $k . ' = ' . $this->_quote($this->$k);
 			}
 		}
 		if (count($parts) == 0) {
 			# No changes
-			return;
+			return true;
 		}
 		$toupdate = implode(', ', $parts);
 		$qry = 'UPDATE ' . $this->tableName() . ' SET ' . $toupdate . 
-- 
2.39.5