From 2127b1bdd73ecd2423e443992da4b442f5a3c1a3 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 04 Feb 2026 21:19:25 +0000
Subject: [PATCH] =Major overhaul of MetaManager.php -> Meta.php and RestRouteManager.php -> Rest.php. Seems to work for JakeVan
---
inc/helpers/renderFields.php | 241 +++++++++++++++++++++++++++++------------------
1 files changed, 147 insertions(+), 94 deletions(-)
diff --git a/inc/helpers/renderFields.php b/inc/helpers/renderFields.php
index 4817908..6554579 100644
--- a/inc/helpers/renderFields.php
+++ b/inc/helpers/renderFields.php
@@ -4,9 +4,10 @@
exit;
}
-use JVBase\managers\CacheManager;
-use JVBase\meta\MetaForm;
-use JVBase\meta\MetaManager;
+use JVBase\forms\TaxonomySelector;
+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
@@ -58,23 +59,31 @@
/**
* @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 =''):string
{
- $cache = CacheManager::for('user_links', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+ $cache = Cache::for('user_links', WEEK_IN_SECONDS)->connect('post')->connect('taxonomy')->connect('user');
$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)) {
@@ -134,29 +143,38 @@
/**
* @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 = ''):string
{
- $cache = CacheManager::for('contact', WEEK_IN_SECONDS)->connectTo('post')->connectTo('taxonomy');
+ $cache = Cache::for('contact', WEEK_IN_SECONDS)->connect('post')->connect('taxonomy');
$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) {
@@ -169,7 +187,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;
@@ -189,17 +207,26 @@
/**
* @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>';
@@ -219,17 +246,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>';
@@ -247,17 +283,26 @@
/**
* @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'] === '') {
@@ -297,36 +342,54 @@
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 '';
}
$out = ($label === '') ? '' : '<h2 class="inline">'.$label.'</h2>';
$out .= '<ul class="term-list '.jvbNoBase($terms[array_key_first($terms)]->taxonomy).'">';
foreach ($terms as $term) {
- $out .= '<li>
- <a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.$term->name.'">'.
- $term->name.
- '</a>
- </li>';
+ $out .= '<li>'.jvbGetTermLink($term).'</li>';
}
$out .= '</ul>';
return $out;
}
+function jvbGetTermLink(int|WP_Term $term, string $taxonomy = ''):string
+{
+ if (is_int($term)){
+ $term = get_term($term, jvbCheckBase($taxonomy));
+ if (is_wp_error($term)) {
+ return '';
+ }
+ }
+ $cache = Cache::for($term->taxonomy.'_link')->connect('taxonomy');
+ $key = $term->term_id;
+ return $cache->remember(
+ $key,
+ function() use ($term) {
+ return '<a href="'.get_term_link($term->term_id, $term->taxonomy).'" title="'.html_entity_decode($term->name).'">'.
+ html_entity_decode($term->name).
+ '</a>';
+ }
+ );
+}
+
+
add_action('wp_footer', 'jvbOutputImageTemplates');
function jvbOutputImageTemplates() {
@@ -344,7 +407,7 @@
</div>
<div class="summary">
<div class="result">
- <h4></h4>
+ <h3></h3>
<p></p>
</div>
</div>
@@ -367,15 +430,15 @@
<div class="group-header">
<div class="selected">
<div class="field">
- <input type="checkbox" id="select-all-group" name="select-all-group">
- <label for="select-all-group">
+ <input type="checkbox" id="select-all" name="select-all" data-selects="item-grid" data-select-all>
+ <label for="select-all">
Select All In Group
</label>
</div>
<div class="info" hidden>
</div>
</div>
- <div class="group-actions">
+ <div class="selection-actions">
<button type="button" data-action="add-to-group" title="Add selected uploads to this group">
<?= jvbIcon('plus-square') ?>
Add Here
@@ -393,8 +456,8 @@
<div class="fields"></div>
</details>
<div class="group-content col">
+ <p class="hint count"></p>
<div class="item-grid group"></div>
- <p class="hint group-count"></p>
</div>
</div>
@@ -450,20 +513,17 @@
</div>
</template>
<template class="uploadItem">
- <?php
- $form = new MetaForm();
- $form->renderImagePreview();
- ?>
+ <?= Form::renderImagePreview() ?>
</template>
<template class="restoreNotification">
<dialog class="restore-uploads">
<div class="wrap">
<div class="restore-message">
<h4>Looks like we left things hanging</h4>
- <p class="restore-details"></p>
+ <p class="details"></p>
<p class="hint">If you'd rather start over, you can clear this information.</p>
</div>
- <div class="restore-actions">
+ <div class="selection-actions">
<div class="selected">
<div class="field">
<input type="checkbox" id="select-all-restore" name="select-all-restore">
@@ -475,6 +535,10 @@
</div>
</div>
<div class="m-actions row nowrap">
+ <button type="button" data-action="restore-all">
+ <?= jvbIcon('infinity') ?>
+ Restore All
+ </button>
<button type="button" data-action="restore">
<?= jvbIcon('arrow-counter-clockwise') ?>
Restore Selected
@@ -489,10 +553,10 @@
</dialog>
</template>
<template class="restoreField">
- <div class="restore-field">
- <h3></h3>
+ <details class="restore-field">
+ <summary><h3><a></a></h3></summary>
<div class="item-grid restore"></div>
- </div>
+ </details>
</template>
<template class="startOverConfirmation">
@@ -526,49 +590,38 @@
<?php
}
if (wp_script_is('jvb-selector')) {
- \JVBase\forms\TaxonomySelector::class::outputSelectorModal();
+ TaxonomySelector::class::outputSelectorModal();
}
}
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 = [
+ $config = [
'image-title'.$addID => [
- 'type' => 'text',
- 'label' => 'Image Title',
- 'value' => $title,
- 'data' => $dataID
+ '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
+ '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
+ '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);
+ return Form::render('image_data', null, $config, false, true);
}
@@ -578,7 +631,7 @@
return '';
}
- $cache = CacheManager::for('locations')->connectTo('taxonomy');
+ $cache = Cache::for('locations')->connect('taxonomy');
$key = $cache->generateKey($location);
$cached = false;
--
Gitblit v1.10.0