- Timestamp:
- 05/18/2017 05:54:12 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/api.wordpress.org/public_html/events/1.0/index.php
r5497 r5499 23 23 $location_args = parse_request(); 24 24 $location = get_location( $location_args ); 25 $response = build_response( $location );25 $response = build_response( $location, $location_args ); 26 26 27 27 send_response( $response, $ttl ); … … 99 99 * 100 100 * @param array $location 101 * @param array $location_args 101 102 * 102 103 * @return array 103 104 */ 104 function build_response( $location ) {105 function build_response( $location, $location_args ) { 105 106 $events = array(); 106 107 … … 125 126 $events = get_events( $event_args ); 126 127 127 if ( empty( $location['description'] ) || ( isset( $location['internal'] ) && $location['internal'] ) ) { 128 $location = rebuild_location_from_event_source( $events ); 129 } 130 } 131 132 if ( false === $location ) { 128 /* 129 * There are two conditions which can cause a location to not have a description: 130 * 1) When the request only passed latitude/longtude coordinates. We don't lookup 131 * a location here because it's too expensive. See r5497. 132 * 2) When the location was determined by geolocating the IP. We don't return the 133 * location here because it would violate the ip2location EULA. See r5491. 134 * 135 * For WP 4.8-beta1 those conditions were handled by setting "fuzzy" locations 136 * instead; the location of the first upcoming event was used, since it will be 137 * within driving distance of the location that was geolocated. 138 * 139 * After beta1 was released, though, there was a lot of feedback about the locations 140 * being too inaccurate, so we're going to try a different approach for beta2. See 141 * #40702-core. 142 * 143 * @todo Update the user-agent strings if 40702-geoip.2.diff doesn't make it into beta2 144 * @todo Remove this back-compat code after beta2 has been out for a few days 145 */ 146 $use_fuzzy_locations = false !== strpos( $_SERVER['HTTP_USER_AGENT'], '4.7' ) || false !== strpos( $_SERVER['HTTP_USER_AGENT'], '4.8-beta1' ); 147 if ( $use_fuzzy_locations ) { 148 if ( empty( $location['description'] ) || ( isset( $location['internal'] ) && $location['internal'] ) ) { 149 $location = rebuild_location_from_event_source( $events ); 150 } 151 } elseif ( isset( $location['internal'] ) && $location['internal'] ) { 152 // Let the client know that a location was successfully determined based on their IP 153 $location = array( 'ip' => $location_args['ip'] ); 154 } 155 } else { 133 156 $error = 'no_location_available'; 134 157 }
Note: See TracChangeset
for help on using the changeset viewer.