Jake Vanderwerf
6 hours ago 56a9a1ccf764ff7a6af8f8a2292cb07443cb4aa7
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;
@@ -37,8 +40,8 @@
   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 +64,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;
@@ -114,8 +118,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 +130,35 @@
         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;
         }
      );
   }
}