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; | ||||
|  | ||||
|             try { | ||||
| @@ -235,11 +229,15 @@ class ApiStatusesUpdateAction extends ApiAuthAction | ||||
|  | ||||
|             $options = array('reply_to' => $reply_to); | ||||
|  | ||||
|             if (!empty($location)) { | ||||
|                 $options['lat'] = $location->lat; | ||||
|                 $options['lon'] = $location->lon; | ||||
|                 $options['location_id'] = $location->location_id; | ||||
|                 $options['location_ns'] = $location->location_ns; | ||||
|             if ($this->user->shareLocation()) { | ||||
|  | ||||
|                 $locOptions = Notice::locationOptions($this->lat, | ||||
|                                                       $this->lon, | ||||
|                                                       null, | ||||
|                                                       null, | ||||
|                                                       $this->user->getProfile()); | ||||
|  | ||||
|                 $options = array_merge($options, $locOptions); | ||||
|             } | ||||
|  | ||||
|             $this->notice = | ||||
|   | ||||
| @@ -186,23 +186,13 @@ class NewnoticeAction extends Action | ||||
|  | ||||
|         if ($user->shareLocation()) { | ||||
|  | ||||
|             $lat = $this->trimmed('lat'); | ||||
|             $lon = $this->trimmed('lon'); | ||||
|             $location_id = $this->trimmed('location_id'); | ||||
|             $location_ns = $this->trimmed('location_ns'); | ||||
|             $locOptions = Notice::locationOptions($this->trimmed('lat'), | ||||
|                                                   $this->trimmed('lon'), | ||||
|                                                   $this->trimmed('location_id'), | ||||
|                                                   $this->trimmed('location_ns'), | ||||
|                                                   $user->getProfile()); | ||||
|  | ||||
|             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; | ||||
|             $options = array_merge($options, $locOptions); | ||||
|         } | ||||
|  | ||||
|         $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options); | ||||
|   | ||||
| @@ -289,21 +289,11 @@ class Notice extends Memcached_DataObject | ||||
|         if (!empty($lat) && !empty($lon)) { | ||||
|             $notice->lat = $lat; | ||||
|             $notice->lon = $lon; | ||||
|             $notice->location_id = $location_id; | ||||
|             $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 (!empty($location_ns) && !empty($location_id)) { | ||||
|             $notice->location_id = $location_id; | ||||
|             $notice->location_ns = $location_ns; | ||||
|         } | ||||
|  | ||||
|         if (Event::handle('StartNoticeSave', array(&$notice))) { | ||||
| @@ -1429,4 +1419,47 @@ class Notice extends Memcached_DataObject | ||||
|  | ||||
|         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