diff options
-rw-r--r-- | actions/confirmemail.php | 12 | ||||
-rw-r--r-- | actions/register.php | 8 | ||||
-rw-r--r-- | lib/util.php | 19 |
3 files changed, 35 insertions, 4 deletions
diff --git a/actions/confirmemail.php b/actions/confirmemail.php index 8052452ae..e69cc6fff 100644 --- a/actions/confirmemail.php +++ b/actions/confirmemail.php @@ -47,21 +47,27 @@ class ConfirmemailAction extends Action { $this->client_error(_t('That email address is already confirmed.')); return; } + $cur->query('BEGIN'); + $orig_user = clone($cur); $cur->email = $confirm_email->email; - common_debug('cur email = "' . $cur->email . '"', __FILE__); $result = $cur->update($orig_user); + if (!$result) { - $this->server_error(_t('Error setting email address.')); + common_log_db_error($cur, 'UPDATE', __FILE__); return; } + $result = $confirm_email->delete(); + if (!$result) { - $this->server_error(_t('Error deleting code.')); + common_log_db_error($confirm_email, 'DELETE', __FILE__); return; } + $cur->query('COMMIT'); + common_show_header(_t('Confirm E-mail Address')); common_element('p', NULL, _t('The email address "') . $cur->email . diff --git a/actions/register.php b/actions/register.php index 3ed892e7f..2bb4f12f0 100644 --- a/actions/register.php +++ b/actions/register.php @@ -99,8 +99,10 @@ class RegisterAction extends Action { $profile->created = DB_DataObject_Cast::dateTime(); # current time $id = $profile->insert(); + if (!$id) { - return FALSE; + common_log_db_error($profile, 'INSERT', __FILE__); + return FALSE; } $user = new User(); $user->id = $id; @@ -110,11 +112,14 @@ class RegisterAction extends Action { $user->uri = common_user_uri($user); $result = $user->insert(); + if (!$result) { + common_log_db_error($user, 'INSERT', __FILE__); return FALSE; } if ($email) { + $confirm = new Confirm_email(); $confirm->code = common_good_rand(16); $confirm->user_id = $user->id; @@ -122,6 +127,7 @@ class RegisterAction extends Action { $result = $confirm->insert(); if (!$result) { + common_log_db_error($confirm, 'INSERT', __FILE__); return FALSE; } } diff --git a/lib/util.php b/lib/util.php index ae6752653..11b1bfd5e 100644 --- a/lib/util.php +++ b/lib/util.php @@ -762,6 +762,25 @@ function common_debug($msg, $filename=NULL) { } } +function common_log_db_error($object, $verb, $filename=NULL) { + $objstr = common_log_objstring($ojbect); + $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); + common_log(LOG_ERROR, $last_error->message . '(' . $verb . ' on ' . $objstr . ')', $filename); +} + +function common_log_objstring($object) { + if (is_null($object)) { + return "NULL"; + } + $arr = $object->toArray(); + $fields = array(); + foreach ($arr as $k => $v) { + $fields[] = "$k='$v'"; + } + $ojbstring = $object->tableName() . '[' . implode(',', $fields) . ']'; + return $objstring; +} + function common_valid_http_url($url) { return Validate::uri($url, array('allowed_schemes' => array('http', 'https'))); } |