From 747d741293e064a979d7bf6c143ef969ea6d7629 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 24 May 2026 20:49:44 +0000
Subject: [PATCH] =GMBReview block minor tweaks. Refactored ReferralManager.php and ReferralRoutes.php to utilize the manager for all logic, and CustomTable for table interactions.
---
src/fields/render.php | 320 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 320 insertions(+), 0 deletions(-)
diff --git a/src/fields/render.php b/src/fields/render.php
new file mode 100644
index 0000000..b5645eb
--- /dev/null
+++ b/src/fields/render.php
@@ -0,0 +1,320 @@
+<?php
+
+use JVBase\managers\Cache;
+use JVBase\meta\Meta;
+use JVBase\meta\Render;
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit; // Exit if accessed directly
+}
+/**
+ * Summary Block Render
+ *
+ * @package Edmonton_Ink
+ */
+
+function jvbRenderSummaryBlock(array $attributes):string
+{
+
+ // Buffer output
+ if (is_tax()) {
+ switch (get_queried_object()->taxonomy) {
+ case BASE.'shop':
+ return jvbRenderShopSummary();
+ default:
+ return jvbRenderTermSummary();
+ }
+ } elseif (is_singular()) {
+ return jvbRenderArtistSummary();
+ }
+ return '';
+}
+
+function jvbRenderArtistSummary():string
+{
+ $current = get_queried_object();
+ $cache = Cache::for('artistSummary', WEEK_IN_SECONDS);
+ $key = $current->ID;
+ $cached = $cache->get($key);
+ if ($cached !== false) {
+ return $cached;
+ }
+
+ ob_start();
+ $meta = Meta::forPost($current->ID);
+ $artist = jvbContentFromUser((int)$current->post_author);
+
+ $registrar = Registrar::getInstance($current->post_type);
+ $sections = [];
+ if ($registrar) {
+ $sections = $registrar->getSections();
+ }
+
+
+
+
+// $handler = JVB()->getContent(str_replace(BASE,'', $current->post_type));
+ ?>
+ <nav id="artist" class="on-this-page index">
+ <label>Jump to:
+ <button type="button" aria-label="Show Index" title="Show Index" class="toggle" aria-expanded="false">
+ <?= jvbIcon('plus-square')?>
+ </button>
+ </label>
+ <ul>
+ <li><a href="#top" title="Back to Top"><?=jvbIcon('caret-circle-up')?></a></li>
+ <li><a href="#about">About</a></li>
+ <li><a href="#styles">Styles</a></li>
+ <li><a href="#contact">Contact</a></li>
+ <li><a href="#work">Work</a></li>
+ </ul>
+ </nav>
+ <header id="top">
+ <h1><small><?=(!empty($artist['city'])) ? $artist['city']['name'] :'Edmonton'?>'s Best <?= (!empty($artist['type'])) ?
+ $artist['type']['name']:'Tattoo Artists'?>:
+ </small><?=$artist['display_name']?></h1>
+ <div>
+ <?php if (!empty($artist['shop'])) : ?>
+ <ul class="term-list shop">
+ <li>
+ <a href="<?=$artist['shop']['url']?>" title="Learn more about <?=$artist['shop']['name']?>">
+ <?= strtolower($artist['shop']['name'])?>
+ </a>
+ </li>
+ </ul>
+ <?php endif; ?>
+ <?php if (!empty($artist['city'])): ?>
+ <ul class="term-list city">
+ <li>
+ <a href="<?=$artist['city']['url']?>" title="See who else is rocking out of <?=$artist['city']['name']?>">
+ <?= strtolower($artist['city']['name'])?>
+ </a>
+ </li>
+ </ul>
+ <?php endif; ?>
+ <?php $styles = $meta->get('top_styles');
+ if (!empty($styles)) {
+ ?>
+ <ul class="term-list style">
+ <?php
+ foreach ($styles as $style) {
+ $term = get_term((int)$style, BASE.'style');
+ if ($term && !is_wp_error($term)) {
+ $link = get_term_link((int)$style, BASE.'style');
+ ?>
+ <li>
+ <a href="<?=$link?>" title="Learn more about <?=html_entity_decode($term->name)?>">
+ <?=strtolower(html_entity_decode($term->name))?>
+ </a>
+ </li>
+ <?php
+ }
+ }
+ ?>
+ </ul>
+ <?php
+ }
+ ?>
+ </div>
+ </header>
+ <section>
+ <details class="bio-info">
+ <summary class="row x-btw">
+ <h2>About <?= ($artist['name'] !== '') ? $artist['name'] : strtok($artist['display_name'], ' ')?></h2>
+ </summary>
+ <div class="columns stack-small">
+ <div class="column">
+ <?= Render::renderFrom($meta, 'image_portrait'); ?>
+ </div>
+ <div class="column">
+ <?= Render::renderFrom($meta, 'short_bio'); ?>
+ </div>
+ </div>
+ <div id="styles">
+ <h3>Works In</h3>
+ <?= jvbGetTheTerms('style', $current->ID) ?>
+ </div>
+ <div class="contact">
+ <h3>Contact:</h3>
+ <?php
+ echo jvbRenderContactInfo($current->ID, $meta);
+ echo jvbRenderLinks($current->ID, $meta);
+ ?>
+ </div>
+
+ <div id="about">
+ <?= Render::renderFrom($meta, 'bio')?>
+ </div>
+ </details>
+ </section>
+ <section id="contact" class="">
+ <h2>Contact <?=$artist['name']?></h2>
+ <?php
+ echo jvbRenderContactInfo($current->ID, 'post');
+ echo jvbRenderLinks($current->ID, 'post');
+ ?>
+ </section>
+ <?php
+ $finished = ob_get_clean();
+ $cache->set($key, $finished);
+ return $finished;
+}
+
+function jvbRenderShopSummary()
+{
+ $current = get_queried_object();
+
+ $cache = Cache::for('shop_bio', WEEK_IN_SECONDS)->connect('taxonomy');
+ $key = $current->term_id;
+ $cached = $cache->get($key);
+ if ($cached !== false) {
+ return $cached;
+ }
+
+ ob_start();
+
+ $meta = Meta::forTerm($current->term_id);
+ $fields = $meta->getAll(['average_rating', 'established', 'bio','location','hours','specialties','awards','reviews']);
+ ?>
+ <nav id="shop" class="on-this-page index">
+ <label>Jump to:
+ <button type="button" aria-label="Show Index" title="Show Index" class="toggle" aria-expanded="false">
+ <?= jvbIcon('plus-square')?>
+ </button>
+ </label>
+ <ul>
+ <li><a href="#top" title="Back to Top"><?=jvbIcon('caret-circle-up')?></a></li> <?php
+ if ($fields['rating'] !== 'none') {
+ ?>
+ <li><a href="#rating">Rating</a></li>
+ <?php
+ } elseif ($fields['opened'] !== '') {
+ ?>
+ <li><a href="#opened">Opened</a></li>
+ <?php
+ } elseif ($fields['location'] !== '') {
+ ?>
+ <li><a href="#location">Location</a></li>
+ <?php
+ } elseif ($fields['about'] !== '') {
+ ?>
+ <li><a href="#about">About</a></li>
+ <?php
+ } elseif ($fields['hours'] !== '') {
+ ?>
+ <li><a href="#hours">Hours</a></li>
+ <?php
+ } elseif ($fields['specialties'] !== '') {
+ ?>
+ <li><a href="#specialties">Specialties</a></li>
+ <?php
+ } elseif ($fields['awards'] !== '') {
+ ?>
+ <li><a href="#awards">Awards</a></li>
+ <?php
+ } elseif ($fields['reviews'] !== '') {
+ ?>
+ <li><a href="#reviews">Reviews</a></li>
+ <?php
+ }
+ ?>
+ <li><a href="#contact">Contact</a></li>
+ <li><a href="#artists">Artists</a></li>
+ </ul>
+ </nav>
+ <header id="top">
+ <div class="columns stack-small">
+ <div class="column">
+ <?=jvbFormatImage($meta->get('image'))?>
+ </div>
+ <div class="column">
+ <h1>
+ <small><?= (get_term((int)$meta->get('city'), BASE.'city')) ?
+ get_term((int)$meta->get('city'), BASE.'city')->name :
+ 'Edmonton'?>'s Best Tattoo Shops</small>
+ <?=$current->name?>
+ </h1>
+ <?= jvbFormatRating($current->term_id, 'term') ?>
+ <?= Render::renderFrom($meta, 'slogan'); ?>
+ </div>
+ </div>
+ </header>
+ <section>
+ <details class="bio-info">
+ <summary class="row x-btw">
+ <h2>Learn More About <?=$current->name?></h2>
+ </summary>
+ <div class="map">
+ <?= Render::renderFrom($meta, 'location'); ?>
+ </div>
+ <div class="short-bio">
+ <?= Render::renderFrom($meta, 'short_bio'); ?>
+ </div>
+
+ <div class="contact">
+ <h3>Contact:</h3>
+ <?php
+ echo jvbRenderContactInfo($current->term_id, 'term');
+ echo jvbRenderLinks($current->term_id, 'term');
+ ?>
+ </div>
+
+ <div id="about">
+ <?= Render::renderFrom($meta, 'bio')?>
+ </div>
+ </details>
+ </section>
+ <section id="contact" class="">
+ <h2>Contact </h2>
+ <?php
+ echo jvbRenderContactInfo($current->term_id, 'term');
+ echo jvbRenderLinks($current->term_id, 'term');
+ ?>
+ </section>
+ <?= jvbRenderHours($current->term_id, 'term')?>
+
+
+ <?php
+ $finished = ob_get_clean();
+ $cache->set($key, $finished);
+ return $finished;
+}
+
+
+function jvbRenderTermSummary()
+{
+ $current = get_queried_object();
+ $cache = Cache::for('term_summary', WEEK_IN_SECONDS)->connect('taxonomy');
+ $key = $current->ID;
+ $cached = $cache->get($key);
+ if ($cached !== false) {
+ return $cached;
+ }
+
+ ob_start();
+ $tax = jvbNoBase($current->taxonomy);
+ switch ($tax) {
+ case 'style':
+ $title = 'Tattoo Artists';
+ break;
+ case 'theme':
+ $title = 'Tattoos';
+ break;
+ default:
+ $title = '';
+ }
+
+ $meta = Meta::forTerm($current->ID);
+ $fields = $meta->getAll();
+
+ ?>
+ <header id="top">
+ <h1><?= get_the_archive_title() ?></h1>
+ </header>
+
+ <?php
+ $finished = ob_get_clean();
+ $cache->set($key, $finished);
+ return $finished;
+}
--
Gitblit v1.10.0