Releases: dereuromark/cakephp-geo
Releases · dereuromark/cakephp-geo
3.7.0
Open Source Geocoding & Maps
- Add LeafletHelper as open-source alternative to GoogleMapHelper - #81
- Add StaticMap Helper with open-source alternatives
- Added geocoding engines for open-source alternatives
- Add automatic center and zoom calculation from markers/paths on displayed maps
- Add marker clustering support
Improvements
- Add NullProvider for Geocoder in test mode - #78
- Add spatial support for Geocoder behavior - #76
- Add Places Autocomplete support to GoogleMapHelper - #80
- Add timezoneByCoordinates() method to Calculator - #44
Full Changelog: 3.6.1...3.7.0
3.6.1
Fixes
- Fix __PHP_Incomplete_Class error when reading cached geocode data by @dereuromark in #77
Full Changelog: 3.6.0...3.6.1
3.6.0
Improvements
-
Fixed Remote Code Execution (RCE) vulnerability in ObjectType deserialization
- Implemented whitelist-based deserialization to prevent object injection attacks
- Now only allows safe classes (DateTime, DateTimeImmutable, and CakePHP I18n classes)
- Impact: Prevents arbitrary code execution through malicious serialized data
-
Fixed Path Traversal vulnerability in GoogleMapHelper::icon()
- Added path validation to prevent directory traversal attacks
- Image paths are now restricted to WWW_ROOT/img/ directory
- Impact: Prevents unauthorized file system access
-
Fixed SQL Injection vulnerability in GeocoderBehavior::distanceConditions()
- Added input validation for table and field name parameters
- Validates identifiers against alphanumeric pattern
- Impact: Prevents SQL injection through field/table name manipulation
Full Changelog: 3.5.2...3.6.0
3.5.2
3.5.1
Fixes
- Fixed up BaseMigration file
3.5.0
Improvements
- More clear exception message for Geocoder fails around API key.
3.4.2
3.4.1
3.4.0
Improvements
Added closure support for address elements in Geocoder lookup.
Sometimes, you need to have more logic for a specific address field.
In this case you can use a closure to make dynamic lookups where needed.
$this->addBehavior('Geo.Geocoder', [ 'address' => ['street', 'postal_code', 'city', function (Event $entity) {
if ($entity->country && $entity->country->id && $entity->country_id === $entity->country->id) {
return $entity->country->name;
}
if ($entity->get('country_name')) {
return $entity->get('country_name');
}
if ($entity->country_id) {
$country = $this->Countries->get($entity->country_id);
return $country->name;
}
return null;
}]]);3.3.0
Improvements
Added GeoCoordinate value object.