- Timestamp:
- 04/21/2017 05:25:46 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/api.wordpress.org/public_html/events/1.0/index.php
r5355 r5409 230 230 * @param string $country 231 231 * @param string $timezone 232 * @param string $mode 'exact' to only return exact matches from the database; 233 * 'loose' to return any match. This has a high chance of false positives. 232 234 * 233 235 * @return stdClass|null 234 236 */ 235 function guess_ideographic_location_from_geonames( $location_name, $country, $timezone ) {237 function guess_ideographic_location_from_geonames( $location_name, $country, $timezone, $mode = 'exact' ) { 236 238 global $wpdb; 237 239 … … 245 247 * 246 248 * Because this will only match entries that are prefixed _and_ postfixed with a comma, it will never match the 247 * first and last entries in the column. That's ok, though, because the first entry is alwaysan airport code248 * in English, which will be matched by other functions. The last entry is often ideographic, so it'd be nice249 * first and last entries in the column. That's ok, though, because the first entry is often an airport code 250 * in English, which is shorter than `ft_min_word_len` anyway. The last entry is often ideographic, so it'd be nice 249 251 * to match it, but this is good enough for now. 250 252 */ 251 $escaped_location_name = sprintf( '%%,%s,%%', $wpdb->esc_like( $location_name ) ); 253 $escaped_location_name = sprintf( 254 'loose' === $mode ? '%%%s%%' : '%%,%s,%%', 255 $wpdb->esc_like( $location_name ) 256 ); 252 257 253 258 /* … … 434 439 'longitude' => $guess->ip_longitude, 435 440 'country' => $guess->country_short, 441 ); 442 } 443 } 444 445 /* 446 * If all else fails for a non-ASCII request, cast a wide net and try to find something before giving up, even 447 * if the chance of success if lower than normal. Returning false is guaranteed failure, so this improves things 448 * even if it only works 10% of the time. 449 * 450 * This must be done as the very last thing before giving up, because the likelihood of false positives is high. 451 */ 452 if ( ! $location && isset( $args['location_name'] ) && 'ASCII' !== mb_detect_encoding( $args['location_name'] ) ) { 453 $guess = guess_ideographic_location_from_geonames( $args['location_name'], $country_code, $args['timezone'] ?? '', 'loose' ); 454 455 if ( $guess ) { 456 $location = array( 457 'description' => $guess->name, 458 'latitude' => $guess->latitude, 459 'longitude' => $guess->longitude, 460 'country' => $guess->country, 436 461 ); 437 462 }
Note: See TracChangeset
for help on using the changeset viewer.