summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/newnotice.php43
-rw-r--r--actions/profilesettings.php5
-rw-r--r--classes/User.php16
-rw-r--r--lib/default.php2
4 files changed, 46 insertions, 20 deletions
diff --git a/actions/newnotice.php b/actions/newnotice.php
index c014f1781..8591522dc 100644
--- a/actions/newnotice.php
+++ b/actions/newnotice.php
@@ -164,19 +164,6 @@ class NewnoticeAction extends Action
$replyto = 'false';
}
- $lat = $this->trimmed('lat');
- $lon = $this->trimmed('lon');
- $location_id = $this->trimmed('location_id');
- $location_ns = $this->trimmed('location_ns');
-
- if (!empty($lat) && !empty($lon) && empty($location_id)) {
- $location = Location::fromLatLon($lat, $lon);
- if (!empty($location)) {
- $location_id = $location->location_id;
- $location_ns = $location->location_ns;
- }
- }
-
$upload = null;
$upload = MediaFile::fromUpload('attach');
@@ -195,12 +182,30 @@ class NewnoticeAction extends Action
}
}
- $notice = Notice::saveNew($user->id, $content_shortened, 'web',
- array('reply_to' => ($replyto == 'false') ? null : $replyto,
- 'lat' => $lat,
- 'lon' => $lon,
- 'location_id' => $location_id,
- 'location_ns' => $location_ns));
+ $options = array('reply_to' => ($replyto == 'false') ? null : $replyto);
+
+ if ($user->shareLocation()) {
+
+ $lat = $this->trimmed('lat');
+ $lon = $this->trimmed('lon');
+ $location_id = $this->trimmed('location_id');
+ $location_ns = $this->trimmed('location_ns');
+
+ if (!empty($lat) && !empty($lon) && empty($location_id)) {
+ $location = Location::fromLatLon($lat, $lon);
+ if (!empty($location)) {
+ $location_id = $location->location_id;
+ $location_ns = $location->location_ns;
+ }
+ }
+
+ $options['lat'] = $lat;
+ $options['lon'] = $lon;
+ $options['location_id'] = $location_id;
+ $options['location_ns'] = $location_ns;
+ }
+
+ $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options);
if (isset($upload)) {
$upload->attachToNotice($notice);
diff --git a/actions/profilesettings.php b/actions/profilesettings.php
index 359664096..58bf838d7 100644
--- a/actions/profilesettings.php
+++ b/actions/profilesettings.php
@@ -133,6 +133,11 @@ 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');
Event::handle('EndProfileFormData', array($this));
$this->elementStart('li');
$this->input('tags', _('Tags'),
diff --git a/classes/User.php b/classes/User.php
index 6708d95b6..2bcb7c2a0 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -996,4 +996,20 @@ class User extends Memcached_DataObject
return $ids;
}
+
+ function shareLocation()
+ {
+ $share = true;
+
+ $prefs = User_location_prefs::staticGet('user_id', $this->id);
+
+ if (empty($prefs)) {
+ $share = common_config('location', 'share');
+ } else {
+ $share = $prefs->share_location;
+ $prefs->free();
+ }
+
+ return $share;
+ }
}
diff --git a/lib/default.php b/lib/default.php
index 42d4623b1..b5eda7b2c 100644
--- a/lib/default.php
+++ b/lib/default.php
@@ -226,7 +226,7 @@ $default =
'message' =>
array('contentlimit' => null),
'location' =>
- array('namespace' => 1), // 1 = geonames, 2 = Yahoo Where on Earth
+ array(),
'omb' =>
array('timeout' => 5), // HTTP request timeout in seconds when contacting remote hosts for OMB updates
'logincommand' =>