forked from GNUsocial/gnu-social
		
	Move location-argument-handling code into a single function
Moved the important parts of the location-argument-handling stuff to a single function. Handles defaults and overrides correctly, and easy to use. Changed Web and API channels to use it.
This commit is contained in:
		| @@ -203,12 +203,6 @@ class ApiStatusesUpdateAction extends ApiAuthAction | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             $location = null; |  | ||||||
|  |  | ||||||
|             if (!empty($this->lat) && !empty($this->lon)) { |  | ||||||
|                 $location = Location::fromLatLon($this->lat, $this->lon); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             $upload = null; |             $upload = null; | ||||||
|  |  | ||||||
|             try { |             try { | ||||||
| @@ -235,11 +229,15 @@ class ApiStatusesUpdateAction extends ApiAuthAction | |||||||
|  |  | ||||||
|             $options = array('reply_to' => $reply_to); |             $options = array('reply_to' => $reply_to); | ||||||
|  |  | ||||||
|             if (!empty($location)) { |             if ($this->user->shareLocation()) { | ||||||
|                 $options['lat'] = $location->lat; |  | ||||||
|                 $options['lon'] = $location->lon; |                 $locOptions = Notice::locationOptions($this->lat, | ||||||
|                 $options['location_id'] = $location->location_id; |                                                       $this->lon, | ||||||
|                 $options['location_ns'] = $location->location_ns; |                                                       null, | ||||||
|  |                                                       null, | ||||||
|  |                                                       $this->user->getProfile()); | ||||||
|  |  | ||||||
|  |                 $options = array_merge($options, $locOptions); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             $this->notice = |             $this->notice = | ||||||
|   | |||||||
| @@ -186,23 +186,13 @@ class NewnoticeAction extends Action | |||||||
|  |  | ||||||
|         if ($user->shareLocation()) { |         if ($user->shareLocation()) { | ||||||
|  |  | ||||||
|             $lat = $this->trimmed('lat'); |             $locOptions = Notice::locationOptions($this->trimmed('lat'), | ||||||
|             $lon = $this->trimmed('lon'); |                                                   $this->trimmed('lon'), | ||||||
|             $location_id = $this->trimmed('location_id'); |                                                   $this->trimmed('location_id'), | ||||||
|             $location_ns = $this->trimmed('location_ns'); |                                                   $this->trimmed('location_ns'), | ||||||
|  |                                                   $user->getProfile()); | ||||||
|  |  | ||||||
|             if (!empty($lat) && !empty($lon) && empty($location_id)) { |             $options = array_merge($options, $locOptions); | ||||||
|                 $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); |         $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options); | ||||||
|   | |||||||
| @@ -289,21 +289,11 @@ class Notice extends Memcached_DataObject | |||||||
|         if (!empty($lat) && !empty($lon)) { |         if (!empty($lat) && !empty($lon)) { | ||||||
|             $notice->lat = $lat; |             $notice->lat = $lat; | ||||||
|             $notice->lon = $lon; |             $notice->lon = $lon; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (!empty($location_ns) && !empty($location_id)) { | ||||||
|             $notice->location_id = $location_id; |             $notice->location_id = $location_id; | ||||||
|             $notice->location_ns = $location_ns; |             $notice->location_ns = $location_ns; | ||||||
|         } else if (!empty($location_ns) && !empty($location_id)) { |  | ||||||
|             $location = Location::fromId($location_id, $location_ns); |  | ||||||
|             if (!empty($location)) { |  | ||||||
|                 $notice->lat = $location->lat; |  | ||||||
|                 $notice->lon = $location->lon; |  | ||||||
|                 $notice->location_id = $location_id; |  | ||||||
|                 $notice->location_ns = $location_ns; |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             $notice->lat         = $profile->lat; |  | ||||||
|             $notice->lon         = $profile->lon; |  | ||||||
|             $notice->location_id = $profile->location_id; |  | ||||||
|             $notice->location_ns = $profile->location_ns; |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (Event::handle('StartNoticeSave', array(&$notice))) { |         if (Event::handle('StartNoticeSave', array(&$notice))) { | ||||||
| @@ -1429,4 +1419,47 @@ class Notice extends Memcached_DataObject | |||||||
|  |  | ||||||
|         return $ids; |         return $ids; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     function locationOptions($lat, $lon, $location_id, $location_ns, $profile = null) | ||||||
|  |     { | ||||||
|  |         $options = array(); | ||||||
|  |  | ||||||
|  |         if (!empty($location_id) && !empty($location_ns)) { | ||||||
|  |  | ||||||
|  |             $options['location_id'] = $location_id; | ||||||
|  |             $options['location_ns'] = $location_ns; | ||||||
|  |  | ||||||
|  |             $location = Location::fromId($location_id, $location_ns); | ||||||
|  |  | ||||||
|  |             if (!empty($location)) { | ||||||
|  |                 $options['lat'] = $location->lat; | ||||||
|  |                 $options['lon'] = $location->lon; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } else if (!empty($lat) && !empty($lon)) { | ||||||
|  |  | ||||||
|  |             $options['lat'] = $lat; | ||||||
|  |             $options['lon'] = $lon; | ||||||
|  |  | ||||||
|  |             $location = Location::fromLatLon($lat, $lon); | ||||||
|  |  | ||||||
|  |             if (!empty($location)) { | ||||||
|  |                 $options['location_id'] = $location->location_id; | ||||||
|  |                 $options['location_ns'] = $location->location_ns; | ||||||
|  |             } | ||||||
|  |         } else if (!empty($profile)) { | ||||||
|  |  | ||||||
|  |             if (isset($profile->lat) && isset($profile->lon)) { | ||||||
|  |                 $options['lat'] = $profile->lat; | ||||||
|  |                 $options['lon'] = $profile->lon; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if (isset($profile->location_id) && isset($profile->location_ns)) { | ||||||
|  |                 $options['location_id'] = $profile->location_id; | ||||||
|  |                 $options['location_ns'] = $profile->location_ns; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return $options; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user