123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- <?php
- function location_province_list_de() {
- return array(
- 'BB' => 'Brandenburg',
- 'BE' => 'Berlin',
- 'BW' => 'Baden-Württemberg',
- 'BY' => 'Bayern',
- 'HB' => 'Bremen',
- 'HE' => 'Hessen',
- 'HH' => 'Hamburg',
- 'MV' => 'Mecklenburg-Vorpommern',
- 'NI' => 'Niedersachsen',
- 'NW' => 'Nordrhein-Westfalen',
- 'RP' => 'Rheinland-Pfalz',
- 'SH' => 'Schleswig-Holstein',
- 'SL' => 'Saarland',
- 'SN' => 'Sachsen',
- 'ST' => 'Sachsen-Anhalt',
- 'TH' => 'Thüringen'
- );
- }
- /**
- * Parameters:
- * -> $location_a is an associative array that represents a full location where
- * 'street' => the street portions of the location
- * 'supplemental' => additional street portion of the location
- * 'province' => the province, state, or territory
- * 'country' => lower-cased two-letter ISO code (REQUIRED)
- * -> $location_b is associative array that represents a full location in the same way that
- * parameter $location_b does.
- *
- * Returns: a link to driving directions
- */
- function location_map_link_de($location = array(), $hide = array()) {
- $map_links = array();
- // For now, just call the suchen (tinfo) function. May want to make this configurable on some level
- // in order to maintain freedom of choice so users and site-admins don't have to be slaves
- // to tinfo!.... not that I have anything personal against tinfo!.
- if ($link = _location_map_link_de_suchen($location)) {
- $map_links['suchen'] = $link;
- }
- return $map_links;
- }
- function _location_map_link_de_suchen($location = array()) {
- $get_query = '?';
- $get_query .= 'where=';
- $query_parts = array();
- if (isset($location['street'])) {
- $query_parts[] = $location['street'];
- }
- if ($location['postal_code'] != '') {
- $query_parts[] = $location['postal_code'];
- }
- if ($location['city'] != '') {
- $query_parts[] = $location['city'];
- }
- // if ($location['number'] != '') {
- // $query_parts[] = $location['number'];
- // }
- $get_query .= urlencode(implode(', ', $query_parts));
- return ('http://www.suchen.de/lokalmap'. $get_query);
- }
- function location_map_link_de_providers() {
- return array(
- 'suchen' => array(
- 'name' => 'suchen.de (T-Info)',
- 'url' => 'http://www.suchen.de/',
- 'tos' => 'http://www.suchen.de/agb',
- ),
- 'google' => array(
- 'name' => 'Google Maps',
- 'url' => 'http://maps.google.com',
- 'tos' => 'http://www.google.com/help/terms_local.html',
- ),
- );
- }
- function location_map_link_de_default_providers() {
- return array('google');
- }
- /**
- * Parameters:
- * -> $location_a is an associative array that represents a full location where
- * 'street' => the street portions of the location
- * 'supplemental' => additional street portion of the location
- * 'province' => the province, state, or territory
- * 'country' => lower-cased two-letter ISO code (REQUIRED)
- * -> $location_b is associative array that represents a full location in the same way that
- * parameter $location_b does.
- *
- * Returns: a link to driving directions
- *
- * For now, assume site-admin wants driving directions linked to tinfo!
- * Maybe later, we can add some kind of country-specific settings page that allows the site-admin to
- * decide which site to link to for driving directions.
- */
- function location_driving_directions_link_de($location_a, $location_b) {
- return _location_driving_directions_link_de_suchen($location_a, $location_b);
- }
- /**
- * Parameters:
- * Function that is called by location_driving_directions_link_ca() under assumption that it
- * is the chosen function
- *
- * Returns:
- * a URL with HTTP GET variables
- * Depending on how full the locationes are, the URL will either point to the driving directions
- * on tinfo! or, if only partial locationes are provided, a URL that points to the *form* for
- * tinfo! driving directions where the form is filled with whatever fields have been provided
- * for the partial location(es).
- */
- function _location_driving_directions_link_de_suchen($location_a, $location_b) {
- foreach ($location_a as $field => $value) {
- $location_a[$field] = trim($value);
- }
- foreach ($location_b as $field => $value) {
- $location_b[$field] = trim($value);
- }
- if ($location_a['country'] == 'de' and $location_b['country'] == 'de') {
- $get_query = '?';
- // VON
- $query_parts = array();
- if (isset($location_a['street'])) {
- $query_parts[] = $location_a['street'];
- }
- if ($location_a['postal_code'] != '') {
- $query_parts[] = $location_a['postal_code'];
- }
- if ($location_a['city'] != '') {
- $query_parts[] = $location_a['city'];
- }
- $get_query .= 'route_from='. urlencode(implode(', ', $query_parts));
- // NACH
- $query_parts = array();
- if (isset($location_b['street'])) {
- $query_parts[] = $location_b['street'];
- }
- if ($location_b['postal_code'] != '') {
- $query_parts[] = $location_b['postal_code'];
- }
- if ($location_b['city'] != '') {
- $query_parts[] = $location_b['city'];
- }
- $get_query .= '&route_to='. urlencode(implode(', ', $query_parts));
- return ('http://www.suchen.de/route'. $get_query);
- }
- }
- function location_map_link_de_google($location = array()) {
- $query_params = array();
- foreach (array('street', 'postal_code', 'city', 'country') as $field) {
- if (isset($location[$field])) {
- $query_params[] = $location[$field];
- }
- }
- if (count($query_params)) {
- return ('http://maps.google.com?q='. urlencode(implode(', ', $query_params)));
- }
- else {
- return NULL;
- }
- }
- function theme_location_de($location = array(), $hide = array()) {
- $output = '';
- if (count($location)) {
- $output .= "\n";
- $output .= '<div class="location vcard"><div class="adr">'."\n";
- if (!empty($location['name']) && !in_array('name', $hide)) {
- $output .= '<div class="fn">'. $location['name'] .'</div>';
- }
- if (!empty($location['street']) && !in_array('street', $hide)) {
- $output .= '<div class="street-address">'. $location['street'];
- if (!empty($location['additional']) && !in_array('street', $hide)) {
- $output .= ' '. $location['additional'];
- }
- $output .='</div>';
- }
- if ((!empty($location['city']) && !in_array('city', $hide)) ||
- (!empty($location['postal_codet']) && !in_array('postal_code', $hide))) {
- $city_postal = array();
- if (!empty($location['postal_code']) && !in_array('postal_code', $hide)) {
- $city_postal[] = '<span class="postal-code">'. $location['postal_code'] .'</span>';
- }
- if (!empty($location['city']) && !in_array('city', $hide)) {
- $city_postal[] = '<span class="locality">'. $location['city'] .'</span>';
- }
- $output .= '<div>'. implode(' ', $city_postal) .'</div>';
- }
- if (!in_array('country', $hide)) {
- $output .= '<div class="country-name">'. t('Germany') .'</div>';
- }
- if (location_has_coordinates($location)) {
- $output .= '<div class="geo"><abbr class="latitude" title="'. $location['latitude'] .'" /><abbr class="longitude" title="'. $location['latitude'] .'" /></div>';
- }
- $output .= '</div></div>';
- }
- return $output;
- }
- /**
- * Returns a lat/lon pair of the approximate center of the given postal code in the given country
- *
- * @param $location
- * An associative array $location where only postal code and country are necessary, but can have the keys:
- * 'street' => the street portion of the location
- * 'supplemental' => additional street portion of the location
- * 'province' => the province, state, or territory
- * 'country' => lower-cased two-letter ISO code (REQUIRED)
- * 'postal_code' => the international postal code for this location (REQUIRED)
- *
- * @return
- * An associative array where
- * 'lat' => approximate latitude of the center of the postal code's area
- * 'lon' => approximate longitude of the center of the postal code's area
- *
- */
- function location_get_postalcode_data_de($location = array()) {
- $dash_index = strpos($location['postal_code'], '-');
- // First we strip slash off if we're dealing with a 9-digit US zipcode
- if ($dash_index === FALSE) {
- $location['postal_code'] = substr($location['postal_code'], 0, $dash_index);
- }
- // Now we pad the thing and query.
- $row = db_query("SELECT * FROM {zipcodes} where country = :country AND zip = :zip", array(':country' => $location['country'], ':zip' => str_pad($location['postal_code'], 5, "0", STR_PAD_LEFT)))->fetchObject();
- if ($row) {
- return array('lat' => $row->latitude, 'lon' => $row->longitude, 'city' => $row->city, 'province' => $row->state, 'country' => $row->country);
- }
- else {
- return NULL;
- }
- }
- /**
- * Returns minimum and maximum latitude and longitude needed to create a bounding box.
- */
- function location_bounds_de() {
- return array(
- 'minlng' => 5.87225,
- 'minlat' => 47.2249,
- 'maxlng' => 15.04765,
- 'maxlat' => 55.0839,
- );
- }
|