Jake Vanderwerf
2026-04-15 c4aa5cdb5e90ad4b420e22772797d16980232a2b
inc/managers/SEO/render/Traits/_Properties/hasOfferCatalogTrait.php
@@ -1,7 +1,8 @@
<?php
namespace JVBase\managers\SEO\render\Traits\_Properties;
use JVBase\managers\SEO\render\Thing\Intangible\OfferCatalog;
use JVBase\base\SchemaHelper;
use JVBase\inc\managers\SEO\render\Thing\Intangible\ItemList\OfferCatalog;
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
@@ -17,8 +18,26 @@
   {
      return $this->hasOfferCatalog??null;
   }
   public function setHasOfferCatalog(OfferCatalog $hasOfferCatalog):void
   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;
   }
@@ -31,7 +50,8 @@
         'fields' => [
            'generate'  => [
               'type'   => 'true_false',
               'label'  => 'Generate from Content type?'
               'label'  => 'Generate from Content type?',
               'default'   => false,
            ],
            'content_type' => [
               'type'   => 'checkbox',
@@ -67,6 +87,10 @@
                  'description'  => [
                     'type'   => 'textarea',
                     'label'  => 'Description'
                  ],
                  'price'  => [
                     'type'   => 'number',
                     'label'  => 'Price'
                  ]
               ]
            ]