Jake Vanderwerf
2026-02-04 2127b1bdd73ecd2423e443992da4b442f5a3c1a3
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
@@ -59,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)) {
@@ -135,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) {
@@ -170,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;
@@ -190,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>';
@@ -220,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>';
@@ -248,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'] === '') {
@@ -298,19 +342,20 @@
    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 +377,13 @@
         return '';
      }
   }
   $cache = CacheManager::for($term->taxonomy);
   $key = $term->term_id.'-link';
   $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="'.$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>';
      }
   );
@@ -468,10 +513,7 @@
         </div>
      </template>
      <template class="uploadItem">
         <?php
         $form = new MetaForm();
         $form->renderImagePreview();
         ?>
         <?= Form::renderImagePreview() ?>
      </template>
      <template class="restoreNotification">
         <dialog class="restore-uploads">
@@ -554,7 +596,6 @@
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 : '';
@@ -580,7 +621,7 @@
      ]
   ];
   return $form->render('image_data', null, $config, false, true);
   return Form::render('image_data', null, $config, false, true);
}
@@ -590,7 +631,7 @@
      return '';
   }
   $cache = CacheManager::for('locations')->connectTo('taxonomy');
   $cache = Cache::for('locations')->connect('taxonomy');
   $key = $cache->generateKey($location);
   $cached = false;