Jake Vanderwerf
2026-08-28 a9654f00c8fbc9934289d761843ddd071025013f
inc/blocks/TimelineBlock.php
@@ -4,7 +4,7 @@
use JVBase\managers\Cache;
use JVBase\meta\Meta;
use JVBase\registrar\Registrar;
use JVBase\utility\Features;
use JVBase\rest\routes\ContentRoutes;
use WP_Block;
if (!defined('ABSPATH')) {
@@ -30,12 +30,12 @@
    public function __construct()
    {
        $this->cache = Cache::for('timelines', WEEK_IN_SECONDS)->connect('post');
        $this->cache = Cache::for('timelines', 'post', WEEK_IN_SECONDS);
      if (JVB_TESTING){
         $this->cache->flush();
      }
        add_action('init', [ $this, 'registerBlock' ]);
      add_action('wp_footer', 'jvbRenderGallery');
      add_action('wp_footer', [$this, 'renderGallery']);
    }
    public function registerBlock()
@@ -59,13 +59,7 @@
        }
      $this->content = jvbNoBase($post->post_type);
      $this->children = get_children([
         'post_parent'  => $this->parentID,
         'post_status'  => 'publish',
         'orderby'      => 'date',
         'order'     => 'ASC',
         'fields'       => 'ids'
      ]);
      $this->children = jvbTimelinePoints($this->parentID,$post->post_type);
      $this->total = count($this->children);
        ob_start();
@@ -79,6 +73,9 @@
    {
        $this->renderHeader();
        $this->renderTimeline();
      ?>
      <ul class="buttons"><li><a href="<?= get_post_type_archive_link(BASE.$this->content) ?>">See All Before & Afters</a></li></ul>
      <?php
    }
   protected function get_field(string $fieldName, array $fields) {
@@ -90,7 +87,7 @@
    protected function renderHeader():void
    {
      $meta = Meta::forPost($this->parentID);
      $sharedFields = JVB()->routes('content')->getTimelineSharedFields($this->content);
      $sharedFields = ContentRoutes::getInstance()->getTimelineSharedFields($this->content);
      $fields = $meta->getAll($sharedFields);
      $extra = $meta->getAll();
        ?>
@@ -133,7 +130,16 @@
            }
            ?>
         </ul>
         <ul class="buttons"><li><a href="<?= get_post_type_archive_link(BASE.$this->content) ?>">See All Before & Afters</a></li></ul>
        </header>
      <section id="info">
         <?php
         $content = $this->get_field('post_content', $extra);
         if ($content !== '') {
            echo $this->formatContent($content);
         }
         ?>
      </section>
      <section id="at-a-glance" class="row nowrap">
         <div class="before">
            <h3>Before</h3>
@@ -146,14 +152,6 @@
            <?php endif; ?>
         </div>
      </section>
      <section id="info">
         <?php
         $content = $this->get_field('post_content', $extra);
         if ($content !== '') {
            echo $this->formatContent($content);
         }
         ?>
      </section>
        <?php
    }
@@ -173,7 +171,7 @@
   {
      $all = $this->children;
      array_unshift($all, $this->parentID);
      $uniqueFields = JVB()->routes('content')->getTimelineUniqueFields($this->content);
      $uniqueFields = ContentRoutes::getInstance()->getTimelineUniqueFields($this->content);
      foreach ($all as $i => $ID) {
         $meta = Meta::forPost($ID);
@@ -183,11 +181,11 @@
         $title = ($i === 0) ? 'Before Laser Tattoo Removal' : 'After '.$i.' Treatment'.$plural;
         $title = ($i > 0 && !str_contains('Treatment', $fields['post_title'])) ? $fields['post_title'] : $title;
         ?>
         <section id="<?= $i === 0 ? 'before-treatment' : 'treatment-'.$i ?>" class="timeline-point row a-start nowrap">
         <section id="<?= $i === 0 ? 'before-treatment' : 'treatment-'.$i ?>" class="timeline-point row top nowrap">
            <?php
            $img = $this->get_field('post_thumbnail', $fields);
            if (is_int($img)) {
               echo jvbFormatImage($img);
               echo str_replace('<img', '<img data-caption=".info header"', jvbFormatImage($img));
            }
            ?>
            <div class="info">
@@ -224,9 +222,14 @@
      $registrar = Registrar::getInstance('timeline');
      foreach ($timeline as $term) {
         $link = get_term_link($term->term_id, BASE.'timeline');
         $out .= '<li><a href="'.$link.'" rel="tag" title="See more progressions at this timeline">'.jvbIcon($registrar->getIcon('hourglass')).html_entity_decode($term->name).'</a><small>after the treatment</small></li>';
         $out .= '<li><small><a href="'.$link.'" rel="tag" title="See more progressions at this timeline">'.jvbIcon($registrar->getIcon('hourglass')).html_entity_decode($term->name).'</a> after the treatment</small></li>';
      }
      $out .='</ul>';
      return $out;
   }
   public function renderGallery():void
   {
      jvbRenderGallery();
   }
}