/**
  * Get lat lon by address
  * @author Oleg D.
  */
 function getLatLon($address, $updateAddress = 0)
 {
     $addressString = $city = $state = $country = '';
     if (!empty($address['address'])) {
         $addressString = $address['address'] . ' ' . $address['address2'] . ' ' . $address['address3'];
         if (!empty($address['city'])) {
             $city = $address['city'];
         }
         if (!empty($address['Country']['name'])) {
             $country = $address['Country']['name'];
         } elseif (!empty($address['country_name'])) {
             $country = $address['country_name'];
         }
         if (!empty($address['Provincestate']['name'])) {
             $state = $address['Provincestate']['name'];
         } elseif (!empty($address['state_name'])) {
             $state = $address['state_name'];
         }
         App::import('Vendor', 'GoogleMapAPI', array('file' => 'class.GoogleMapAPI.php'));
         $map = new GoogleMapAPI();
         $map->setAPIKey(GOOGLE_MAP_KEY);
         $latLon = $map->getCoordsByAddress(trim($addressString), $city, $state, $country);
         if ($updateAddress && !empty($address['id']) && !empty($latLon['lat']) && !empty($latLon['lon'])) {
             $Address = new Address();
             $Address->save(array('id' => $address['id'], 'latitude' => $latLon['lat'], 'longitude' => $latLon['lon']));
         }
         return $latLon;
     } else {
         return false;
     }
 }
 /**
  * Get lat lon by address
  * 
  * modified by skinny....$state can be array('id'=>$id) and $country can be array('id'=>$id)
  * 
  * @author Oleg D.
  */
 function getLatLon($address = null, $city = null, $state = null, $country = null)
 {
     if (is_array($state)) {
         $stateid = $state['id'];
         $provinceState = $this->Provincestate->find('first', array('id' => $stateid));
         $state = $provinceState['Provincestate']['name'];
     }
     if (is_array($country)) {
         $countryid = $country['id'];
         $country = $this->Country->find('first', array('id' => $countryid));
         $country = $country['Country']['name'];
     }
     App::import('Vendor', 'GoogleMapAPI', array('file' => 'class.GoogleMapAPI.php'));
     $map = new GoogleMapAPI();
     $map->setAPIKey(GOOGLE_MAP_KEY);
     return $map->getCoordsByAddress($address, $city, $state, $country);
 }
 /**
  * Find latitude and longitude for available address of Venues and save to Address table
  * @author Povstyanoy
  */
 function generateCoordinates($password = "")
 {
     if ($password != "novohudonosor") {
         exit("You don't have rights to run this script");
     }
     $this->autoRender = false;
     $this->Venue->Address->recursive = 0;
     $addresses = $this->Venue->Address->find('all', array('conditions' => array('latitude' => null, 'longitude' => null, 'model' => 'Venue')));
     //print_r($addresses);
     //die;
     App::import('Vendor', 'GoogleMapAPI', array('file' => 'class.GoogleMapAPI.php'));
     $map = new GoogleMapAPI();
     $map->setAPIKey(GOOGLE_API_KEY);
     foreach ($addresses as $index => $address) {
         $geocode = $map->getCoordsByAddress($address['Address']['address'], $address['Address']['city'], $address['Provincestate']['name'], $address['Country']['name']);
         $result = false;
         if (!empty($geocode)) {
             $result = $this->Venue->Address->updateAll(array('latitude' => "'" . $geocode['lat'] . "'", 'longitude' => "'" . $geocode['lon'] . "'"), array("Address.id = {$address['Address']['id']}"));
             echo $index;
             print_r($geocode);
             var_dump($result);
             echo "<br />";
         }
     }
 }