Skip to content

Commit 047e7fc

Browse files
authored
Merge pull request #406 from brandonkelly/wp-import-support
Add an ACF adapter for Google Map fields
2 parents 4350fac + d22ad83 commit 047e7fc

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

composer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
"ext-zlib": "*",
1616
"php": "^8.2"
1717
},
18+
"require-dev": {
19+
"craftcms/wp-import": "dev-main"
20+
},
1821
"autoload": {
1922
"psr-4": {
2023
"ether\\simplemap\\": "src/"

src/SimpleMap.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
use craft\web\Application;
2121
use craft\web\twig\variables\CraftVariable;
2222
use craft\web\UrlManager;
23+
use craft\wpimport\Command as WpImportCommand;
24+
use ether\simplemap\acfadapters\GoogleMap as GoogleMapAcfAdapter;
2325
use ether\simplemap\fields\MapField as MapField;
2426
use ether\simplemap\integrations\feedme\FeedMeMaps;
2527
use ether\simplemap\integrations\graphql\MapPartsType;
@@ -140,6 +142,16 @@ public function init ()
140142
[$this, 'onApplicationInit']
141143
);
142144
}
145+
146+
if (class_exists(WpImportCommand::class)) {
147+
Event::on(
148+
WpImportCommand::class,
149+
WpImportCommand::EVENT_REGISTER_ACF_ADAPTERS,
150+
static function (RegisterComponentTypesEvent $event) {
151+
$event->types[] = GoogleMapAcfAdapter::class;
152+
}
153+
);
154+
}
143155
}
144156

145157
protected function beforeUninstall (): void

src/acfadapters/GoogleMap.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?php
2+
/**
3+
* Maps for Craft CMS
4+
*
5+
* @link https://ethercreative.co.uk
6+
* @copyright Copyright (c) 2024 Ether Creative
7+
*/
8+
9+
namespace ether\simplemap\acfadapters;
10+
11+
use craft\base\FieldInterface;
12+
use craft\wpimport\BaseAcfAdapter;
13+
use ether\simplemap\fields\MapField;
14+
15+
/**
16+
* Class GoogleMap
17+
*
18+
* @author Ether Creative
19+
* @author Brandon Kelly
20+
* @package ether\simplemap\acfadapters
21+
*/
22+
class GoogleMap extends BaseAcfAdapter
23+
{
24+
public static function type(): string
25+
{
26+
return 'google_map';
27+
}
28+
29+
public function create(array $data): FieldInterface
30+
{
31+
$field = new MapField();
32+
if ($data['center_lat']) {
33+
$field->lat = $data['center_lat'];
34+
}
35+
if ($data['center_lng']) {
36+
$field->lng = $data['center_lng'];
37+
}
38+
if ($data['zoom']) {
39+
$field->zoom = $data['zoom'];
40+
}
41+
return $field;
42+
}
43+
44+
public function normalizeValue(mixed $value, array $data): mixed
45+
{
46+
return [
47+
'address' => $value['address'],
48+
'lat' => $value['lat'],
49+
'lng' => $value['lng'],
50+
'zoom' => $value['zoom'],
51+
'parts' => [
52+
'number' => $value['street_number'],
53+
'address' => $value['street_name'],
54+
'city' => $value['city'],
55+
'postcode' => $value['post_code'],
56+
'state' => $value['state'],
57+
'country' => $value['country'],
58+
'administrative_area_level_1' => $value['state'],
59+
'locality' => $value['city'],
60+
'postal_code' => $value['post_code'],
61+
'route' => $value['street_name'],
62+
'street_number' => $value['street_number'],
63+
],
64+
];
65+
}
66+
}

0 commit comments

Comments
 (0)