Jake Vanderwerf
2026-01-01 de699440ff94e9c0d8e8b5201ee93179c085bf60
inc/blocks/VideoCoverBlock.php
@@ -1,6 +1,7 @@
<?php
namespace JVBase\blocks;
use JVBase\blocks\CustomBlocks;
if (!defined('ABSPATH')) {
   exit;
}
@@ -14,7 +15,7 @@
class VideoCoverBlock
{
   protected static ?VideoCoverBlock $instance = null;
   protected string $path = JVB_DIR . '/build/video-cover';
   protected string $path = JVB_DIR . '/build/video';
   public static function getInstance(): VideoCoverBlock
   {
@@ -41,18 +42,23 @@
    */
   public function render($attributes, $content): string
   {
      // Extract attributes with defaults
      $poster_id = $attributes['posterId'] ?? 0;
      $video_sources = $attributes['videoSources'] ?? [];
      $mobile_sources = $attributes['mobileSources'] ?? [];
      $css_class = $attributes['className'] ?? '';
      $fade_class = $attributes['fadeEffect'] ?? false ? 'fade' : '';
      $overlay_opacity = $attributes['overlayOpacity'] ?? 0;
      $content_alignment = $attributes['contentAlignment'] ?? 'center';
      $min_height = $attributes['minHeight'] ?? 0;
      //Get date of current post
      global $post;
      $date = date('c',strtotime($post->post_date));
      $title = $attributes['title'] ?? $post->post_title;
      $description = $attributes['description'] ?? $post->post_excerpt;
      $title = "Legacy Tattoo Removal";
      $description="A video of Madi Rawson performing laser tattoo removal treatments.";
      // If no video sources, return empty
      if (empty($video_sources)) {
         return '';
@@ -78,7 +84,7 @@
            "uploadDate": "'.$date.'"
        }
    </script>
    <div class="wrap">
    <div class="wrap abs edges">
        <div class="video-container">';
      $html .= '<video';
      $html .= ' muted loop playsinline autoplay';
@@ -87,13 +93,13 @@
         $html .= ' poster="' . esc_url($poster_url) . '"';
      }
      $html .= '>';
      $html .= ' fetch-priority="high">';
      // Add mobile sources first (lower resolution)
      foreach ($mobile_sources as $source) {
         if (!empty($source['url']) && !empty($source['mime'])) {
            $html .= '<source';
            $html .= ' src="' . esc_url($source['url']) . '"';
            $html .= ' data-src="' . esc_url($source['url']) . '"';
            $html .= ' type="' . esc_attr($source['mime']) . '"';
            $html .= ' media="(max-width: 767px)"';
            $html .= '>';
@@ -104,7 +110,7 @@
      foreach ($video_sources as $source) {
         if (!empty($source['url']) && !empty($source['mime'])) {
            $html .= '<source';
            $html .= ' src="' . esc_url($source['url']) . '"';
            $html .= ' data-src="' . esc_url($source['url']) . '"';
            $html .= ' type="' . esc_attr($source['mime']) . '"';
            // Add media query for desktop if mobile sources exist
@@ -117,8 +123,27 @@
      }
      $html .= '</video>';
      $html .= '</div></div><div class="inner-wrap"></div></section>';
      $inner_content = $this->extractInnerContent($content);
      $html .= '</div></div><div class="inner-wrap">'.$inner_content.'</div></section>';
      return $html;
   }
   /**
    * Extract inner content from the saved block content
    * Removes the wrapper div and returns just the inner blocks HTML
    */
   protected function extractInnerContent(string $content): string
   {
      if (empty($content)) {
         return '';
      }
      // Remove the placeholder wrapper div
      $content = preg_replace('/<div[^>]*class="[^"]*video-cover-wrapper-placeholder[^"]*"[^>]*>/', '', $content, 1);
      $content = preg_replace('/<\/div>\s*$/', '', $content, 1);
      return trim($content);
   }
}