From f859e64a57c624ff2daa2b21355f65a49fd4807d Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 29 Aug 2026 03:09:12 +0000
Subject: [PATCH] =Some more tweaks. Mostly on the MenuBlock and adding the Meta.php to WooCommerce Products

---
 inc/utility/Image.php |   67 +++++++++++++++++++++++++++++----
 1 files changed, 58 insertions(+), 9 deletions(-)

diff --git a/inc/utility/Image.php b/inc/utility/Image.php
index df5c2f3..23e2844 100644
--- a/inc/utility/Image.php
+++ b/inc/utility/Image.php
@@ -17,17 +17,14 @@
 
 	public function __construct()
 	{
-		$this->cache = Cache::for('images')->connect('post');
-		$this->imgData = Cache::for('imageData')->connect('post');
-		if (JVB_TESTING) {
-			$this->cache->flush();
-		}
+		$this->cache = Cache::for('images', 'post');
+		$this->imgData = Cache::for('imageData', 'post');
 	}
 
 	public function formatImage(int $ID, string $start = 'tiny', string $replace = 'large', bool $addLink = true, ?string $postSlug = null):string
 	{
 		$return = $this->cache->remember(
-			$this->cache->generateKey(['ID' => $ID, 'start' => $start, 'replace' => $replace]),
+			['ID' => $ID, 'start' => $start, 'replace' => $replace],
 			function() use ($ID, $start, $replace) {
 				// Define size order for progressive enhancement
 				$sizeOrder = ['tiny', 'directory-preview', 'thumbnail', 'medium', 'large', 'full'];
@@ -72,8 +69,17 @@
 
 		if ($addLink) {
 			if (!$postSlug) {
-				global $post;
-				$postSlug = $post->post_name;
+				if (is_singular()) {
+					global $post;
+					$postSlug = $post->post_name;
+				}else if (is_tax()) {
+					$tax = get_queried_object();
+					$postSlug = jvbNoBase($tax->taxonomy);
+				}elseif (is_post_type_archive()) {
+					$obj = get_queried_object();
+					$postSlug = jvbNoBase($obj->name);
+				}
+
 			}
 			$full = wp_get_attachment_image_src($ID, 'full');
 
@@ -86,7 +92,7 @@
 				$postSlug,
 				$postSlug,
 				$imgSlug,
-				$full[0]
+				$full[0]??''
 			);
 
 			// Add gallery attributes to img tag
@@ -144,4 +150,47 @@
 			}
 		);
 	}
+
+	public static function getData(int $imgID):array
+	{
+		return (new Image)->getImageData($imgID);
+	}
+
+	public static function gallery(string $ids, ?string $type = null):string
+	{
+		$ids = explode(',', $ids);
+		$inner = implode('', array_map(function ($ID) {
+			$caption = wp_get_attachment_caption($ID);
+			if (!empty($caption)) {
+				$caption = sprintf('<figcaption>%s</figcaption', $caption);
+			}
+			return sprintf(
+				'<li><figure>%s%s</figure></li>',
+				self::image($ID),
+				$caption
+			);
+		}, $ids));
+		return sprintf(
+			'<ul class="gallery%s">%s</ul>',
+			$type? ' '.$type : '',
+			$inner
+		);
+	}
+
+	public static function image(int $id, string $start = 'tiny', string $replace = 'large', bool $addLink = true, ?string $postSlug = null):string
+	{
+		return (new Image)->formatImage($id, $start, $replace, $addLink, $postSlug);
+	}
+	public static function SVG(string $slug):string
+	{
+		$cache = Cache::for('svgs');
+
+		return $cache->remember(
+			$slug,
+			function() use ($slug) {
+				$filename = JVB_CHILD_DIR.'/assets/icons/'.$slug.'.svg';
+				return file_exists($filename) ? file_get_contents($filename) : '';
+			}
+		);
+	}
 }

--
Gitblit v1.10.0