Jake Vanderwerf
3 days ago ba1e1ccf869b818f7a7a897264dfea05563a7796
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
namespace JVBase\managers\SEO\render\Traits\_Properties;
 
use JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\GeoShape;
use JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\AdministrativeArea;
use JVBase\managers\SEO\render\Thing\Place\Place;
use JVBase\managers\SEO\render\Traits\_Helpers\arrayHelper;
 
if (!defined('ABSPATH')) {
    exit;
}
trait areaServedTrait {
    use arrayHelper;
    /**
     * @var AdministrativeArea|GeoShape|Place|string|array The geographic area where a service or offered item is provided. Supersedes serviceArea.
     */
    protected AdministrativeArea|GeoShape|Place|string|array $areaServed;
 
    public function getAreaServed():AdministrativeArea|GeoShape|Place|string|array|null
    {
        return $this->areaServed??null;
    }
    public function setAreaServed(AdministrativeArea|GeoShape|Place|string|array $areaServed):void
    {
        if (is_array($areaServed)) {
            $areaServed = $this->mixedArray('areaServed', $areaServed, [
                'string',
                'JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\GeoShape',
                'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\AdministrativeArea',
                'JVBase\managers\SEO\render\Thing\Place\Place'
            ]);
        }
        $this->areaServed = $areaServed;
    }
    public function getAreaServedFieldConfig():array
    {
        return [
            'type'  => 'group',
            'wrap'  => 'details',
            'label' => 'Area(s) Served',
            'fields'    => [
                'name'  => [
                    'type'  => 'text',
                    'label' => 'Area Name',
                    'hint'  => 'neighbourhood, city, province, or country'
                ],
                'sameAs'    => [
                    'type'  => 'url',
                    'label' => 'Same As',
                    'hint'  => 'The Wikipedia page of this area'
                ]
            ]
        ];
    }
}