From 3baf3d2545ba6ece6b74a64c0def59bd0774cf54 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 10 Jun 2026 16:34:12 +0000
Subject: [PATCH] =Laid the groundwork for an improved DashboardManager.php setup. Have to put it aside so I can get the dang Northeh done though.

---
 inc/managers/SEO/render/Traits/ThingSchema.php |   64 ++++++++++++++++++++++++++-----
 1 files changed, 53 insertions(+), 11 deletions(-)

diff --git a/inc/managers/SEO/render/Traits/ThingSchema.php b/inc/managers/SEO/render/Traits/ThingSchema.php
index cfebbf6..d41ad97 100644
--- a/inc/managers/SEO/render/Traits/ThingSchema.php
+++ b/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));
 	}
 
@@ -109,13 +115,13 @@
 	}
 
 	public function getId():string {
-		return $this->id;
+		return $this->id??false;
 	}
 	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;
+	}
 }

--
Gitblit v1.10.0