| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 | 
							
- This file describes the public API for the CivicSpace location system as defined by
 
-  in the library implemented by "location.inc" and its supporting files.
 
- For a example of this API's usage, please consult "location.module"
 
- FUNCTION SPECIFICATIONS DESCRIBED IN THIS FILE:
 
- ----------------------------------------------
 
-   location_get_postalcode_data(): A function that takes a (postalcode,country) pair an returns lat/lon, city, province.  This
 
-                   function is meant to replace location_latlon_rough(); see below.
 
-   location_latlon_rough(): A function that returns the latitude and longitude of the specified postal-code/country pair.
 
-                   This latitude and longitude will be of the approximate center of the postal-code's area.  This function
 
-                   will soon be removed from the API as it has been replaced by the more comprehensive
 
-                   location_get_postalcode_data() described above. [TO BE DEPRECATED]
 
-   location_latlon_exact(): A function that returns the latitude and longitude of the given full location.  Typically implemented
 
-                   on top of a web-service. [TO BE IMPLEMENTED]
 
-   location_map_link(): A function that returns, based on the site configuration, either NULL or 1 or more deep-links to mapping
 
-                    web sites for the parameter location array.
 
-   location_driving_directions_link(): A function that returns, given 2 locationes, a deep-link to Yahoo! Maps or some other site
 
-                   that provides driving directions.  The site chosen depends on the implementation at the country-level.
 
-   location_proximity_form(): A function that generates a form for collecting proximity search parameters.
 
-   location_valid(): A function for validating locationes. [TO BE SPECIFIED]
 
-   theme_location(): A function that takes in an location and themes it.  (e.g., $output .= theme('location', $location)).
 
-   location_distance_between(): A function that, given a pair of lat/lon pairs, returns the distance between them.
 
- "[TO BE SPECIFIED]"   => Function spec has not been completed and may possibly be eliminated from spec.
 
- "[TO BE IMPLEMENTED]" => Function spec exists but is to be implemented in a future release.
 
- "[TO BE DEPRECATED]"  => This function will soon be removed from the API.
 
- ----------------------------------------------
 
- IMPORTANT NOTES:
 
- ----------------
 
- Formats
 
- ---
 
- In the following API, a 'location' is merely an associative array with the following keys:
 
-   'street'      => A string for the street portion of an location
 
-   'additional'  => A string for the additional street portion of an location
 
-   'province'    => An upper-case, standard postal abbreviation of a state/province/territory
 
-   'postal_code' => A string or integer for the postal code
 
-   'country'     => The lower-case of the ISO 3166 two-letter alpha code (e.g., 'us' for U.S., 'ca' for Canada).
 
- For locations that are passed to location_form() for the $prefilled_values parameter, the same format applies
 
- except that the 'province' field is the concatenation of the country code, '-', and the province abbreviation.
 
- For example, 'CA' is the value for California for all purposes, but when passing this in a location for prefilled
 
- values, it should be 'us-CA'.  There are two functions to help convert back and forth between these formats:
 
- location_form2api() and location_api2form().  These are described further below.
 
- Delegation
 
- ---
 
- With the exception of location_form() and location_proximity_form(), the calls to functions listed here are, in the end,
 
- dispatched to country-specific location libraries which are implemented in country-specific '.inc' files.  For example,
 
- location_latlon_rough(), when given a U.S. location, really returns a result that is determined by call to
 
- "location_latlon_rough_us()" which is implemented in the file "location.us.inc".
 
- Current Implementation
 
- ---
 
- Currently, the only country supported is the United States.  For the future, however, there will be documentation for how to
 
- implement a country-specific include file that can be plugged into the system to support these calls for new countries.  This
 
- scheme will revolve around method signatures for a handful of simple-to-write functions.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_get_postalcode_data($location = array());                                            +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Takes a location and uses the combination of postal code and country to return an array that gives the
 
- city, province, and lat/lon dat for that postal code.
 
- @param $location
 
-   An associative array $location where
 
-     'street'       => the street portion of the location
 
-     'additional' => additional street portion of the location
 
-     'province'     => the province, state, or territory
 
-     'country'      => lower-cased two-letter ISO code (REQUIRED)
 
-     'postal_code'  => international postal code (REQUIRED)
 
- @return
 
-   NULL if data cannot be found.
 
-   Otherwise, an associative array where
 
-     'lat' => is a floating point of the latitude coordinate of this location
 
-     'lon' => is a floating point of the longitude coordinate of this location
 
-     'city' => is a string for the city this postalcode is in (or the most recognized city at the given postal)
 
-     'province' => the province of the given postal code.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_latlon_rough($location = array());                                                   +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Takes an location and returns a "rough" latitude/longitude pair based on the postal code
 
- data available for the given country.
 
- @param $location
 
-   An associative array $location where
 
-     'street'       => the street portion of the location
 
-     'additional' => additional street portion of the location
 
-     'province'     => the province, state, or territory
 
-     'country'      => lower-cased two-letter ISO code (REQUIRED)
 
-     'postal_code'  => international postal code (REQUIRED)
 
- @return
 
-   NULL if data cannont be found.
 
-   Otherwise, an associative array where
 
-     'lat' => is a floating point of the latitude coordinate of this location
 
-     'lon' => is a floating point of the longitude coordinate of this location
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_latlon_exact($location = array());                                                     +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Currently, this is not a priority until there is an implementable use for exact longitude,
 
- latitude coordinates for an location.  The idea is that this call will eventually retrieve
 
- information through a web-service.  Whereas location_latlon_rough() returns an approximate
 
- lat/lon pair based strictly on the postal code where this lat/lon pair is pulled from a
 
- database table, this function is intended to send the entire location to a web-service and
 
- to retrieve exact lat/lon coordinates.
 
- @param $location
 
-   An array where
 
-     -> the key values are 'street', 'additional', 'province', 'country', 'postal_code'
 
-     -> the values are:
 
-         'street'         => the string representing the street location (REQUIRED)
 
-         'additional'     => the string representing the additional street location portion in the location form
 
-         'city'           => the city name (REQUIRED)
 
-         'province'       => the province code defined in the country-specific include file
 
-         'country'        => the lower-case of the two-letter ISO code (REQUIRED)
 
-         'postal_code'    => the postal-code (REQUIRED)
 
- @return
 
-   NULL if the delegated-to function that does the actual look-up does not exist.
 
-   If the appropriate function exists, then this function returns an associative array where
 
-      'lon' => A floating point number for the longitude coordinate of the parameter location
 
-      'lat' => A floating point number for the latitude coordinate of the parameter location
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_map_link($location = array(), $link_text = 'See map');                                 +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Get deep-links to a mapping services such as Yahoo! Maps or MapQuest (actual providers depend on configuration
 
- of location module) given a location.  The call is delegated based on the 'country' value in the $location parameter.
 
- @param $location
 
-   An associative array where
 
-      'street'       => A string representing the street location
 
-      'additional'   => A string for any additional portion of the street location
 
-      'city'         => A string for the city name
 
-      'province'     => The standard postal abbreviation for the province
 
-      'country'      => The two-letter ISO code for the country of the location (REQUIRED)
 
-      'postal_code'  => The international postal code for the location
 
- @return
 
-   NULL if there are not mapping providers configured for the country or if no links could be generated.
 
-   A string of the form "See map: Yahoo! Maps, MapQuest" where Yahoo! Maps and Mapquest are links to the
 
-   given location and can be replaced with other options (e.g., Google) available in the location module settings.
 
-   The idea is to encode the appropriate parameters as HTTP GET variables to the URL.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_driving_directions_link($locationA = array(), $locationB = array(), $link_text = 'Get directions');
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Takes two locationes and tries to return a deep-link to driving directions.
 
- Parameters:
 
- @param $locationA
 
-   An associative array that represents an location where
 
-      'street'       => the street portions of the location
 
-      'additional'   => additional street portion of the location
 
-      'city'         => the city name
 
-      'province'     => the province, state, or territory
 
-      'country'      => lower-cased two-letter ISO code (REQUIRED)
 
-      'postal_code'  => the postal code
 
- @param $locationB
 
-   An associative array that represents an location in the same way that
 
-   parameter $locationA does.
 
- @param $link_text
 
-   The text of the HTML link that is to be generated.
 
- @return
 
-   A deep-link to driving directions on Yahoo! or some other mapping service, if enough fields are filled in the parameters.
 
-   A deep-link to a form for driving directions with information pre-filled if not enough, but some fields are filled in the parameters.
 
-   The empty string if no information is provided (or if so little information is provided that there is no function to which to delegate
 
-   the call.
 
-   We dispatch the call to a country-specific function.  The country-specific function, in this case,
 
-   will be the one reflected by the country parameter of the first function.  We require that
 
-   both locationes supplied have a country field at the minimum.
 
-   The country-specific functions will ultimately decide, with the parameters given, whether to
 
-   to link to a form for driving directions is provided, where this form will be
 
-   pre-populated with whatever values were available or whether to link directly to the driving
 
-   directions themselves if enough fields are filled for each location.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_proximity_form($location_form = '', $label = '', $description = '', $prefilled_values = array(), $form_name = 'location');
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- This function generates a form for doing proximity searches within a certain distance
 
- of a specified point.
 
- Depending on the context within which this function is called, the search-point can either
 
- be user-supplied via the location form that is passed (if one is available) or done within
 
- a search-point extracted from a contact table or some other location source specified by
 
- the programmer calling this function.
 
- @param $location_form
 
-   An optional location form, preferably generated by location_form().  If the script processing this
 
-   form also needs a user-supplied location, this parameter is used to specify a form for collecting the
 
-   search-point about which this search is being done.  If the caller does not supply a form, it is
 
-   assumed that the caller already has a search point in mind and that this will be made clear in
 
-   the $description parameter.
 
- @param $label
 
-   The label you want to apply to the form group that is returned (passed as $legend param to form_group()).
 
- @param $description
 
-   A text description of what is being searched for (e.g., 'Find all upcoming events near you.')
 
- @param $prefilled_values
 
-   An associative array for prefilled values for the proximity search parameters, where
 
-     'distance' => is the prefilled int value to be selected for the distance scalar
 
-     'distance_unit' => is 'km' or 'mile'
 
- @param $form_name
 
-   An additional parameter to help prevent HTML input name collisions.  If the caller is using this
 
-   function to generate more than 1 location proximity form on a page, then the generated name for
 
-   each HTML input's "name" attribute will be $form_name.  Allowing the caller to pass $form_name allows
 
-   the caller the flexibility of using more than one location proximity search form on one page.
 
- @return
 
-   An HTML form (generated by Drupal form functions) that lets users specify proximity search parameters that include distance,
 
-   the unit of distance, and a search-point if the optional $location_form parameter is passed.  If one is not passed,
 
-   the caller of this function will be assumed to already have one.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function theme_location($location = array());                                                            +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Generates HTML for the passed location.
 
- @param $location
 
-   An associative array where
 
-      'street'       => A string representing the street location
 
-      'additional'   => A string for any additional portion of the street location
 
-      'city'         => A string for the city name
 
-      'province'     => The standard postal abbreviation for the province
 
-      'country'      => The two-letter ISO code for the country of the location (REQUIRED)
 
-      'postal_code'  => The international postal code for the location
 
- @return
 
-   An HTML string with special tags for locationes.
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- function location_distance_between($latlonA = array(), $latlonB = array(), $distance_unit = 'km');      +
 
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
- Given two points in lat/lon form, returns the distance between them.
 
- @param $latlonA
 
-   An associative array where
 
-      'lon' => is a floating point of the longitude coordinate for the point given by latlonA
 
-      'lat' => is a floating point of the latitude coordinate for the point given by latlonB
 
- @param $latlonB
 
-      Another point formatted like $latlonB
 
- @param $distance_unit
 
-      A string that is either 'km' or 'mile'.
 
-      If neither 'km' or 'mile' is passed, the parameter is forced to 'km'
 
- @return
 
-    NULL if sense can't be made of the parameters.
 
-    An associative array where
 
-      'scalar' => Is the distance between the two lat/lon parameter points
 
-      'distance_unit' => Is the unit of distance being represented by 'scalar'.
 
-                         This will be 'km' unless 'mile' is passed for the $distance_unit param
 
 
  |