]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/finishaddopenid.php
add instructions to remotesubscribe
[quix0rs-gnu-social.git] / actions / finishaddopenid.php
index 9ba3189b33fdeff3bd9492eb39b6dae27ccf0063..b1dce14747153b8c8104bf9dd8940c54292dd210 100644 (file)
@@ -55,22 +55,42 @@ class FinishaddopenidAction extends Action {
                        if ($sreg_resp) {
                                $sreg = $sreg_resp->contents();
                        }
-                       
+
                        $cur =& common_current_user();
-                       common_debug('cur = ' .print_r($cur, TRUE), __FILE__);
-                       $result = oid_link_user($cur->id, $display, $canonical);
+                       $other = oid_get_user($canonical);
+                       
+                       if ($other) {
+                               if ($other->id == $cur->id) {
+                                       $this->message(_t('You already have this OpenID!'));
+                               } else {
+                                       $this->message(_t('Someone else already has this OpenID.'));
+                               }
+                               return;
+                       }
+
+                       # start a transaction
+                       
+                       $cur->query('BEGIN');
+                       
+                       $result = oid_link_user($cur->id, $canonical, $display);
                        
                        if (!$result) {
                                $this->message(_t('Error connecting user.'));
                                return;
                        }
                        if ($sreg) {
-                               if (!$this->update_user($cur, $sreg)) {
+                               if (!oid_update_user($cur, $sreg)) {
                                        $this->message(_t('Error updating profile'));
                                        return;
                                }
                        }
+                       
                        # success!
+                       
+                       $cur->query('COMMIT');
+
+                       oid_set_last($display);
+                       
                        common_redirect(common_local_url('openidsettings'));
                }
        }
@@ -80,55 +100,4 @@ class FinishaddopenidAction extends Action {
                common_element('p', NULL, $msg);
                common_show_footer();
        }
-
-       function get_user($canonical) {
-               $user = NULL;
-               $oid = User_openid::staticGet('canonical', $canonical);
-               if ($oid) {
-                       $user = User::staticGet('id', $oid->user_id);
-               }
-               return $user;
-       }
-
-       function update_user(&$user, $sreg) {
-
-               $profile =& $user->getProfile();
-
-               $orig_profile = clone($profile);
-
-               if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
-                       $profile->fullname = $sreg['fullname'];
-               }
-
-               if ($sreg['country']) {
-                       if ($sreg['postcode']) {
-                               # XXX: use postcode to get city and region
-                               # XXX: also, store postcode somewhere -- it's valuable!
-                               $profile->location = $sreg['postcode'] . ', ' . $sreg['country'];
-                       } else {
-                               $profile->location = $sreg['country'];
-                       }
-               }
-
-               # XXX save language if it's passed
-               # XXX save timezone if it's passed
-
-               if (!$profile->update($orig_profile)) {
-                       common_server_error(_t('Error saving the profile.'));
-                       return false;
-               }
-
-               $orig_user = clone($user);
-
-               if ($sreg['email'] && Validate::email($sreg['email'], true)) {
-                       $user->email = $sreg['email'];
-               }
-
-               if (!$user->update($orig_user)) {
-                       common_server_error(_t('Error saving the user.'));
-                       return false;
-               }
-               
-               return true;
-       }
 }