Jake Vanderwerf
5 hours ago 3baf3d2545ba6ece6b74a64c0def59bd0774cf54
inc/managers/SEO/render/Traits/ThingSchema.php
@@ -5,9 +5,12 @@
   exit;
}
use JVBase\managers\Cache;
use JVBase\managers\SEO\render\DataType\Date;
use JVBase\managers\SEO\render\DataType\DateTime;
use JVBase\managers\SEO\render\DataType\Time;
use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\ImageObject;
use JVBase\managers\SEO\render\Thing\Intangible\StructuredValue\PropertyValue;
use JVBase\managers\SEO\render\Thing\Thing;
use JVBase\managers\SEO\render\Traits\_Properties\additionalTypeTrait;
use JVBase\managers\SEO\render\Traits\_Properties\alternateNameTrait;
@@ -28,17 +31,18 @@
      nameTrait, ownerTrait, potentialActionTrait, sameAsTrait, subjectOfTrait, urlTrait;
   protected string $id;
   protected bool $showID = true;
   protected array $ignore = [
      'mappedMethods',
      'ignore',
      'id'
      'id',
      'showID',
   ];
   public function outputSchema():array
   {
      global $wp;
      $current = home_url( add_query_arg( $_GET, $wp->request ) );
      $id = (isset($this->id)) ? $this->id : $current.'#'.strtolower($this->getTypeName());
      $current = get_home_url(null, add_query_arg( $_GET, $wp->request ) );
      $id = (isset($this->id)) ? $this->id : $current.'/#'.strtolower($this->getTypeName());
      $elements = array_map(
         function ($value) {
@@ -61,8 +65,9 @@
            } else if (is_a($value, Time::class)) {
               $value = $value->getTime();
            }else if (!is_string($value)) {
               error_log('Normal value? '.print_r($value, true));
               if (JVB_TESTING && !is_numeric($value)) {
//                error_log('Normal value? '.print_r($value, true));
               }
            }
            return $value;
@@ -72,9 +77,10 @@
         }, ARRAY_FILTER_USE_KEY)
      );
      return  array_merge([
      $id = $this->showID ? ['@id' => $id] : [];
      return  array_merge($id, [
         '@type'  => $this->getTypeName(),
         '@id' => $id,
      ], array_filter($elements));
   }
@@ -114,8 +120,8 @@
   public function setId(string $id):void
   {
      if (!filter_var($id, FILTER_VALIDATE_URL)) {
         error_log('[SEO]Could not set id: '.$id.'. Should be a valid URL');
         return;
         global $wp;
         $id = home_url( add_query_arg( $_GET, $wp->request ) ).'/#'.sanitize_title($id);
      }
      $this->id = $id;
   }
@@ -126,4 +132,40 @@
         unset($this->$property);
      }
   }
   public static function createImageFromID(int $ID):ImageObject|false
   {
      $cache = Cache::for('schemaImage')->connect('post');
      return $cache->remember(
         $ID,
         function() use($ID) {
            $imagePost = get_post($ID);
            if (!$imagePost) {
               return false;
            }
            $image = wp_get_attachment_image_src($ID,'full');
            if (empty($image)) {
               return false;
            }
            $imageObject = new ImageObject();
            $imageObject->setUploadDate($imagePost->post_date);
            $imageObject->setWidth($image[1]);
            $imageObject->setHeight($image[2]);
            $imageObject->setContentUrl($image[0]);
            $caption = wp_get_attachment_caption($ID);
            if (!empty($caption)) {
               $imageObject->setCaption($caption);
            }
            return $imageObject;
         }
      );
   }
   public function showID(bool $showIt = true):void
   {
      $this->showID = $showIt;
   }
}