]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
let users set location prefs from profile form
authorEvan Prodromou <evan@status.net>
Mon, 28 Dec 2009 22:44:05 +0000 (14:44 -0800)
committerEvan Prodromou <evan@status.net>
Mon, 28 Dec 2009 23:59:09 +0000 (15:59 -0800)
actions/profilesettings.php

index 58bf838d76b550309c6b60cfc999354605d2e32f..7db86a6c81d80f23fdb9d1b75df848a097304342 100644 (file)
@@ -133,11 +133,13 @@ class ProfilesettingsAction extends AccountSettingsAction
                          ($this->arg('location')) ? $this->arg('location') : $profile->location,
                          _('Where you are, like "City, State (or Region), Country"'));
             $this->elementEnd('li');
-            $this->elementStart('li');
-            $this->checkbox('sharelocation', _('Share my current location when posting notices'),
-                            ($this->arg('sharelocation')) ?
-                            $this->arg('sharelocation') : $user->shareLocation());
-            $this->elementEnd('li');
+            if (common_config('location', 'share') == 'user') {
+                $this->elementStart('li');
+                $this->checkbox('sharelocation', _('Share my current location when posting notices'),
+                                ($this->arg('sharelocation')) ?
+                                $this->arg('sharelocation') : $user->shareLocation());
+                $this->elementEnd('li');
+            }
             Event::handle('EndProfileFormData', array($this));
             $this->elementStart('li');
             $this->input('tags', _('Tags'),
@@ -323,6 +325,37 @@ class ProfilesettingsAction extends AccountSettingsAction
 
             $profile->profileurl = common_profile_url($nickname);
 
+            if (common_config('location', 'share') == 'user') {
+
+                $exists = false;
+
+                $prefs = User_location_prefs::staticGet('user_id', $user->id);
+
+                if (empty($prefs)) {
+                    $prefs = new User_location_prefs();
+
+                    $prefs->user_id = $user->id;
+                    $prefs->created = common_sql_now();
+                } else {
+                    $exists = true;
+                    $orig = clone($prefs);
+                }
+
+                $prefs->share_location = $this->boolean('sharelocation');
+
+                if ($exists) {
+                    $result = $prefs->update($orig);
+                } else {
+                    $result = $prefs->insert();
+                }
+
+                if ($result === false) {
+                    common_log_db_error($prefs, ($exists) ? 'UPDATE' : 'INSERT', __FILE__);
+                    $this->serverError(_('Couldn\'t save location prefs.'));
+                    return;
+                }
+            }
+
             common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__);
             common_debug('New profile: ' . common_log_objstring($profile), __FILE__);