From 5b50afdcafd150186ea5c7b0e1cad98065590b35 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 28 Aug 2026 18:44:28 +0000
Subject: [PATCH] =A few more phpStorm suggestions, mainly in PHPDocs

---
 inc/helpers/renderFields.php |  281 +++++++++++++++++++++++++------------------------------
 1 files changed, 128 insertions(+), 153 deletions(-)

diff --git a/inc/helpers/renderFields.php b/inc/helpers/renderFields.php
index 7384fc7..c0d213c 100644
--- a/inc/helpers/renderFields.php
+++ b/inc/helpers/renderFields.php
@@ -5,9 +5,9 @@
 }
 
 use JVBase\forms\TaxonomySelector;
-use JVBase\managers\CacheManager;
-use JVBase\meta\MetaForm;
-use JVBase\meta\MetaManager;
+use JVBase\managers\Cache;
+use JVBase\meta\Form;
+use JVBase\meta\Meta;
 
 /**
  * Outputs a toggle text that visually changes based on selection, like a switch
@@ -17,7 +17,7 @@
  * @param string $on
  * @param string $off
  * @param bool $hidden
- *
+ * @param array $data
  * @return string
  */
 function jvbRenderToggleTextField(
@@ -59,71 +59,52 @@
 
 /**
  * @param int $ID
- * @param MetaManager|null $meta
- *
+ * @param string $type
  * @return string
  */
-function jvbRenderLinks(int $ID, MetaManager|null $meta = null):string
+function jvbRenderLinks(int $ID, string $type ='post'):string
 {
-    $cache = CacheManager::for('user_links', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+    $cache = Cache::for('user_links_'.$type, $type,WEEK_IN_SECONDS);
     $cached = $cache->get($ID);
     if ($cached) {
         return $cached;
     }
 
-    if (!$meta) {
-        $meta = jvbGetMeta($ID);
-    }
+	$meta = match($type){
+		'post'	=> Meta::forPost($ID),
+		'term'	=> Meta::forTerm($ID),
+		'user'	=> Meta::forUser($ID),
+		default	=> false
+	};
+	if (!$meta) {
+		$meta = jvbGetMeta($ID);
+	}
+	if (!$meta) {
+		return '';
+	}
 
-    $links = $meta->getValue('links');
+    $links = $meta->get('links');
 
     $out = '';
     if (!empty($links)) {
         $out = '<ul class="contact">';
         foreach ($links as $link) {
             $url = $link['url'];
-            switch (true) {
-                case strpos($url, 'facebook'):
-                    $i = jvbIcon('facebook-logo');
-                    break;
-                case strpos($url, 'instagram'):
-                    $i = jvbIcon('instagram-logo');
-                    break;
-                case strpos($url, 'tiktok'):
-                    $i = jvbIcon('tiktok-logo');
-                    break;
-                case strpos($url, 'x.com'):
-                    $i = jvbIcon('x');
-                    break;
-                case strpos($url, 'youtube'):
-                    $i = jvbIcon('youtube-logo');
-                    break;
-                case strpos($url, 'mastadon'):
-                    $i = jvbIcon('mastadon-logo');
-                    break;
-                case strpos($url, 'fediverse'):
-                case strpos($url, 'bluesky'):
-                    $i = jvbIcon('fediverse-logo');
-                    break;
-                case strpos($url, 'linktree'):
-                    $i = jvbIcon('linktree-logo');
-                    break;
-                case strpos($url, 'snapchat'):
-                    $i = jvbIcon('snapchat-logo');
-                    break;
-                case strpos($url, 'twitch'):
-                    $i = jvbIcon('twitch-logo');
-                    break;
-                case strpos($url, 'threads'):
-                    $i = jvbIcon('threads-logo');
-                    break;
-                case strpos($url, 'twitter'):
-                    $i = jvbIcon('twitter-logo');
-                    break;
-                default:
-                    $i = jvbIcon('link');
-                    break;
-            }
+			$i = match (true) {
+		        strpos($url, 'facebook') => jvbIcon('facebook-logo'),
+		        strpos($url, 'instagram') => jvbIcon('instagram-logo'),
+		        strpos($url, 'tiktok') => jvbIcon('tiktok-logo'),
+		        strpos($url, 'x.com') => jvbIcon('x'),
+		        strpos($url, 'youtube') => jvbIcon('youtube-logo'),
+		        strpos($url, 'mastadon') => jvbIcon('mastadon-logo'),
+		        strpos($url, 'fediverse'), strpos($url, 'bluesky') => jvbIcon('fediverse-logo'),
+		        strpos($url, 'linktree') => jvbIcon('linktree-logo'),
+		        strpos($url, 'snapchat') => jvbIcon('snapchat-logo'),
+		        strpos($url, 'twitch') => jvbIcon('twitch-logo'),
+		        strpos($url, 'threads') => jvbIcon('threads-logo'),
+		        strpos($url, 'twitter') => jvbIcon('twitter-logo'),
+		        default => jvbIcon('link'),
+	        };
             $tracker = (array_key_exists('tracker', $link)) ? '?'.$link['tracker'] : '?source=edmontonInk';
             $out .= '<li><a href="'.$link['url'].$tracker.'" target="_blank">'.$i.$link['title'].'</a></li>';
         }
@@ -135,29 +116,41 @@
 
 /**
  * @param int $ID
- * @param MetaManager|null $meta
+ * @param ?string $type
  *
  * @return string
  */
-function jvbRenderContactInfo(int $ID, MetaManager|null $meta = null):string
+function jvbRenderContactInfo(int $ID, ?string $type = null):string
 {
-    $cache = CacheManager::for('contact', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+	if (is_null($type)) {
+		return '';
+	}
+    $cache = Cache::for('contact_'.$type, $type,WEEK_IN_SECONDS);
 
     $cached = $cache->get($ID);
     if($cached){
         return $cached;
     }
-    if (!$meta) {
-        $meta = jvbGetMeta($ID);
-    }
+	$meta = match($type){
+		'post'	=> Meta::forPost($ID),
+		'term'	=> Meta::forTerm($ID),
+		'user'	=> Meta::forUser($ID),
+		default	=> false
+	};
+	if (!$meta) {
+		$meta = jvbGetMeta($ID);
+	}
+	if (!$meta) {
+		return '';
+	}
 
-    $preference = $meta->getValue('public_contact');
+    $preference = $meta->get('public_contact');
     $preference = (is_array($preference)) ? $preference : explode(',', $preference);
 
     $out = '';
     if (!empty($preference)) {
         $out = '<ul class="contact">';
-        $phone = $meta->getValue('phone');
+        $phone = $meta->get('phone');
         foreach ($preference as $p) {
             $link = $label = false;
             switch ($p) {
@@ -170,7 +163,7 @@
                     $label = jvbIcon('phone').'<span>Call</span>';
                     break;
                 case 'email':
-                    $link = 'mailto:'.$meta->getValue('email').'?subject='.rawurlencode('Contact from edmonton.ink').'&body='.rawurlencode('Hey,
+                    $link = 'mailto:'.$meta->get('email').'?subject='.rawurlencode('Contact from edmonton.ink').'&body='.rawurlencode('Hey,
         I found you on edmonton.ink, and I wanted to reach out!');
                     $label = jvbIcon('envelope').'<span>Email</span>';
                     break;
@@ -190,22 +183,31 @@
 
 /**
  * @param int $ID
- * @param MetaManager|null $meta
+ * @param string $type
  * @return string
  */
-function jvbRenderSpecialtyField(int $ID,  MetaManager|null $meta = null):string
+function jvbRenderSpecialtyField(int $ID,  string $type = ''):string
 {
-    if (!$meta) {
-        $meta = jvbGetMeta($ID);
-    }
+	$meta = match($type){
+		'post'	=> Meta::forPost($ID),
+		'term'	=> Meta::forTerm($ID),
+		'user'	=> Meta::forUser($ID),
+		default	=> false
+	};
+	if (!$meta) {
+		$meta = jvbGetMeta($ID);
+	}
+	if (!$meta) {
+		return '';
+	}
 
     $out = '';
-    $specialties = $meta->getValue('specialties');
+    $specialties = $meta->get('specialties');
     if (!empty($specialties)) {
         foreach ($specialties as $specialty) {
             $out .= '<li><b>'.$specialty['specialty'].'</b>';
             if ($specialty['description'] !== '') {
-                $out .= apply_filters('the_content', $specialty['description']);
+                $out .= jvb_filter_content( $specialty['description']);
             }
             $out .= '</li>';
         }
@@ -220,17 +222,26 @@
 
 /**
  * @param int $ID
- * @param MetaManager|null $meta
+ * @param string $type = ''
  * @return string
  */
-function jvbRenderAwardsField(int $ID, MetaManager|null $meta = null):string
+function jvbRenderAwardsField(int $ID, string $type = ''):string
 {
-    if (!$meta) {
-        $meta = jvbGetMeta($ID);
-    }
+	$meta = match($type){
+		'post'	=> Meta::forPost($ID),
+		'term'	=> Meta::forTerm($ID),
+		'user'	=> Meta::forUser($ID),
+		default	=> false
+	};
+	if (!$meta) {
+		$meta = jvbGetMeta($ID);
+	}
+	if (!$meta) {
+		return '';
+	}
 
     $out = '';
-    $awards = $meta->getValue('awards');
+    $awards = $meta->get('awards');
     if (!empty($awards)) {
         foreach ($awards as $award) {
             $out .= '<li><b>'.$award['name'].'</b>';
@@ -248,23 +259,32 @@
 
 /**
  * @param int $ID
- * @param MetaManager|null $meta
+ * @param string $type
  * @return string
  */
-function jvbRenderReviewsField(int $ID, MetaManager|null $meta = null):string
+function jvbRenderReviewsField(int $ID, string $type = ''):string
 {
-    if (!$meta) {
-        $meta = jvbGetMeta($ID);
-    }
+	$meta = match($type){
+		'post'	=> Meta::forPost($ID),
+		'term'	=> Meta::forTerm($ID),
+		'user'	=> Meta::forUser($ID),
+		default	=> false
+	};
+	if (!$meta) {
+		$meta = jvbGetMeta($ID);
+	}
+	if (!$meta) {
+		return '';
+	}
 
     $out = '';
-    $reviews = $meta->getValue('reviews');
+    $reviews = $meta->get('reviews');
     if (!empty($reviews)) {
         foreach ($reviews as $review) {
             if ($review['review'] === '') {
                 continue;
             }
-            $out .= '<li><blockquote>'.apply_filters('the_content', $review['review']);
+            $out .= '<li><blockquote>'.jvb_filter_content( $review['review']);
             if ($review['name'] !== '' || $review['rating'] !== 'none') {
                 $date = $aOpen = $aClose = '';
                 if ($review['url']) {
@@ -272,10 +292,10 @@
                     $aClose = '</a>';
                 }
                 if ($review['date'] !== '') {
-                    $date = new Date('M j, Y', strtotime($review['date']));
+                    $date = date('M j, Y', strtotime($review['date']));
                 }
 
-                $out .= '<cite class="row btw">';
+                $out .= '<cite class="row x-btw">';
                 if ($review['rating'] !== 'none') {
                     $out .= jvbFormatStarRating($review['rating']);
                 }
@@ -298,19 +318,19 @@
     return $out;
 }
 
-function jvbGetMeta(int $ID) {
-    if (is_tax()) {
-        $type = 'term';
-    } elseif (is_singular()) {
-        $type = 'post';
+function jvbGetMeta(int $ID):Meta|false {
+    if (term_exists($ID)) {
+        return Meta::forTerm($ID);
+    } elseif (get_post_status($ID)) {
+        return Meta::forPost($ID);
+    } elseif (get_userdata($ID)) {
+        return Meta::forUser($ID);
     } else {
-        $type = 'user';
-    }
-    return new JVBase\meta\MetaManager($ID, $type);
+		return false;
+	}
 }
 
-
-function jvbRenderTermList(array|bool|WP_Error $terms, string $label = '') {
+function jvbRenderTermList(array|bool|WP_Error $terms, string $label = ''):string {
     if (!$terms || is_wp_error($terms) || empty($terms)) {
         return '';
     }
@@ -332,13 +352,13 @@
 			return '';
 		}
 	}
-	$cache = CacheManager::for($term->taxonomy);
-	$key = $term->term_id.'-link';
+	$cache = Cache::for($term->taxonomy.'_link', 'term');
+	$key = $term->term_id;
 	return $cache->remember(
 		$key,
 		function() use ($term) {
-			return '<a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.$term->name.'">'.
-			$term->name.
+			return '<a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.html_entity_decode($term->name).'">'.
+				html_entity_decode($term->name).
 			'</a>';
 		}
 	);
@@ -378,13 +398,13 @@
 			</div>
 		</template>
 		<template class="uploadMeta">
-			<?= jvbImageMeta() ?>
+			<?= Form::renderImagePreview() ?>
 		</template>
 		<template class="imageGroup">
 			<div class="upload-group">
 				<div class="group-header">
 					<div class="selected">
-						<div class="field">
+						<div class="field checkbox">
 							<input type="checkbox" id="select-all" name="select-all" data-selects="item-grid" data-select-all>
 							<label for="select-all">
 								Select All In Group
@@ -405,7 +425,7 @@
 					</div>
 				</div>
 				<details>
-					<summary class="row btw">
+					<summary class="row x-btw">
 						Extra Fields
 					</summary>
 					<div class="fields"></div>
@@ -419,7 +439,7 @@
 		</template>
 		<template class="groupActions">
 			<div class="item-actions">
-				<div class="radio-button">
+				<div class="btn">
 					<input type="radio" class="featured btn" name="featured" id="featured">
 					<label for="featured">
 						<?=jvbIcon('star')?>
@@ -468,10 +488,7 @@
 			</div>
 		</template>
 		<template class="uploadItem">
-			<?php
-			$form = new MetaForm();
-			$form->renderImagePreview();
-			?>
+			<?= Form::renderImagePreview() ?>
 		</template>
 		<template class="restoreNotification">
 			<dialog class="restore-uploads">
@@ -483,7 +500,7 @@
 					</div>
 					<div class="selection-actions">
 						<div class="selected">
-							<div class="field">
+							<div class="field checkbox">
 								<input type="checkbox" id="select-all-restore" name="select-all-restore">
 								<label for="select-all-restore">
 									Select All
@@ -552,57 +569,15 @@
 	}
 }
 
-function jvbImageMeta(int|null $ID = null, string $title = '', string $alt = '', string $caption = '', array $fields = []):string
-{
-	$form = new MetaForm();
-	$dataID = ($ID) ? ['image-id' => $ID] : false;
-	$addID = ($ID) ? '-'.$ID : '';
-
-
-	$defaultFields = [
-		'image-title'.$addID => [
-			'type'	=> 'text',
-			'label'	=> 'Image Title',
-			'value'	=> $title,
-			'data'	=> $dataID
-		],
-		'image-alt-text'.$addID => [
-			'type'	=> 'text',
-			'label'	=> 'Alt Text',
-			'value'	=> $alt,
-			'hint'	=> 'Alt text helps the visually impaired, as well as some benefits for SEO.',
-			'data'	=> $dataID
-		],
-		'image-caption'.$addID => [
-			'type'	=> 'textarea',
-			'value'	=> $caption,
-			'label'	=> 'Image Caption',
-			'data'	=> $dataID
-		]
-	];
-	$fields = array_merge($defaultFields, $fields);
-
-	$config = [
-		'type'	=> 'group',
-		'wrap'	=> 'details',
-		'label'	=> 'Image Info',
-		'hint'	=> 'These will be automatically generated if left blank.',
-		'fields'	=> $fields
-	];
-
-	return $form->render('image_data',null, $config,false, true);
-}
-
-
 
 function jvbLocationLinks(array $location): string {
 	if (empty($location['address'])) {
 		return '';
 	}
 
-	$cache = CacheManager::for('locations')->connectTo('taxonomy');
-	$key = $cache->generateKey($location);
+	$cache = Cache::for('tax_locations', 'term');
 
+	$cached = $cache->get($location);
 	$cached = false;
 	if ($cached) {
 		return $cached;
@@ -634,7 +609,7 @@
 	);
 
 	$cached = '<p class="find-us">'.jvbIcon('map-pin').'Find us here: '.$google.$apple.'</p>';
-	$cache->set($key, $cached);
+	$cache->set($location, $cached);
 
 	return $cached;
 }

--
Gitblit v1.10.0