Jake Vanderwerf
2026-04-15 c4aa5cdb5e90ad4b420e22772797d16980232a2b
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
namespace JVBase\managers\SEO\render\Traits\_Properties;
 
use JVBase\base\SchemaHelper;
use JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog;
use JVBase\registrar\Registrar;
 
if (!defined('ABSPATH')) {
    exit;
}
trait hasOfferCatalogTrait {
    /**
     * @var OfferCatalog Indicates an OfferCatalog listing for this Organization, Person, or Service.
     */
    protected OfferCatalog $hasOfferCatalog;
 
    public function getHasOfferCatalog():?OfferCatalog
    {
        return $this->hasOfferCatalog??null;
    }
    public function setHasOfferCatalog(OfferCatalog|array $hasOfferCatalog):void
    {
        if (is_array($hasOfferCatalog)){
            if (array_key_exists('generate', $hasOfferCatalog) && $hasOfferCatalog['generate']) {
                $this->generateOfferCatalog($hasOfferCatalog);
            } else {
                if (!array_key_exists('type', $hasOfferCatalog)) {
                    $hasOfferCatalog['type'] = 'JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog';
                }
                $items = [];
                if (array_key_exists('items', $hasOfferCatalog)) {
                    $items = $hasOfferCatalog['items'];
                    unset($hasOfferCatalog['items']);
                }
                $hasOfferCatalog = SchemaHelper::classFromConfig($hasOfferCatalog);
                if (!empty($items)) {
                    $hasOfferCatalog->setItemListElement($items);
                }
            }
        }
        $this->hasOfferCatalog = $hasOfferCatalog;
    }
 
    public function getHasOfferCatalogFieldConfig():array
    {
        return [
            'type'  => 'group',
            'label' => 'Offer Catalog',
            'wrap'  => 'details',
            'fields'    => [
                'generate'  => [
                    'type'  => 'true_false',
                    'label' => 'Generate from Content type?',
                    'default'   => false,
                ],
                'content_type'  => [
                    'type'  => 'checkbox',
                    'label' => 'Select Type to generate from',
                    'options'   => Registrar::getRegistered(),
                    'condition' => [
                        'field' => 'generate',
                        'value' => 1,
                        'operator'  => '=='
                    ]
                ],
                'offer_catalog' => [
                    'type'  => 'repeater',
                    'label' => 'Manually Enter Offer Catalog',
                    'condition' => [
                        'field' => 'generate',
                        'value' => 1,
                        'operator'  => '!='
                    ],
                    'fields'    => [
                        'type'  => [
                            'type'  => 'select',
                            'label' => 'Type',
                            'options'   => [
                                'product'   => 'Product',
                                'service'   => 'Service'
                            ]
                        ],
                        'name'  => [
                            'type'  => 'text',
                            'label' => 'Name',
                        ],
                        'description'   => [
                            'type'  => 'textarea',
                            'label' => 'Description'
                        ],
                        'price' => [
                            'type'  => 'number',
                            'label' => 'Price'
                        ]
                    ]
                ]
            ]
        ];
    }
}