function geo_geocode_string($string) { $service = $GLOBALS['cfg']['geo_geocoding_service']; $func = "geo_geocode_{$service}"; if (!$service || !is_callable($func)) { return array('ok' => 0, 'error' => 'Unknown or undefined service'); } $rsp = call_user_func($func, $string); $map = geo_geocode_service_map('string keys'); $rsp['service_id'] = $map[$service]; return $rsp; }
function dots_derive_location_from_address(&$data) { $geocode_rsp = geo_geocode_string($data['address']); if (!$geocode_rsp['ok']) { return array('ok' => 0); } # stuff to be marked as "derived_from" $derived_keys = array('latitude', 'longitude'); $data['latitude'] = $geocode_rsp['latitude']; $data['longitude'] = $geocode_rsp['longitude']; $geocoded_by = $geocode_rsp['service_id']; $geo_map = geo_geocode_service_map(); $geocoder_name = $geo_map[$geocoded_by]; $derived_map = dots_derive_derived_from_map('string keys'); $derived_from = $derived_map["geocoded ({$geocoder_name})"]; foreach ($geocode_rsp['extras'] as $k => $v) { $extra = "{$geocoder_name}:{$k}"; $derived_keys[] = $extra; $data[$extra] = $v; } # Happy happy $rsp = array('ok' => 1, 'keys' => array()); foreach ($derived_keys as $key) { $rsp['keys'][$key] = $derived_from; } return $rsp; }
if ($dots) { $to_json = array(); foreach ($dots as $dot) { $tmp = array(); foreach ($json_fields as $fi) { if (isset($dot[$fi])) { if ($fi == "details") { $_details = array(); foreach ($dot[$fi] as $de) { $_details[] = array('label' => $de[0]['label'], 'value' => $de[0]['value']); } $tmp[$fi] = $_details; } else { $tmp[$fi] = $dot[$fi]; } } } $to_json[] = $tmp; } //if( isset($owner.username) )$ddd[] = array('owner'=>$owner.username); $smarty->assign("dots_simple", $to_json); } $is_own = $owner['id'] == $GLOBALS['cfg']['user']['id'] ? 1 : 0; $smarty->assign('is_own', $is_own); if ($is_own) { $smarty->assign("permissions_map", dots_permissions_map()); $smarty->assign("geocoder_map", geo_geocode_service_map()); } $smarty->assign("pagination_url", urls_dots_for_user($owner)); $smarty->display('page_user_dots.txt'); exit;