From 266aa37c48222993bf7bdad6834e31bd08736f5e Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 23 May 2026 21:22:07 +0000
Subject: [PATCH] =Post type archive meta title fix
---
inc/utility/Video.php | 146 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/inc/utility/Video.php b/inc/utility/Video.php
new file mode 100644
index 0000000..f71c050
--- /dev/null
+++ b/inc/utility/Video.php
@@ -0,0 +1,146 @@
+<?php
+namespace JVBase\utility;
+
+use JVBase\managers\Cache;
+use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\VideoObject;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+class Video
+{
+ protected ?Cache $cache = null;
+ protected ?Cache $vidData = null;
+
+ public function __construct()
+ {
+ $this->cache = Cache::for('videos')->connect('post');
+ $this->vidData = Cache::for('vidData')->connect('post');
+ if (JVB_TESTING) {
+ $this->cache->flush();
+ $this->vidData->flush();
+ }
+ }
+ public static function get(int $ID, array $args = []):string
+ {
+ return (new self())->formatVideo($ID, $args);
+ }
+ public function formatVideo(int $ID, array $args = []):string
+ {
+ return $this->cache->remember(
+ $this->cache->generateKey(array_merge(['id' => $ID], $args)),
+ function() use ($ID, $args) {
+ $url = wp_get_attachment_url($ID);
+ $meta = wp_get_attachment_metadata($ID);
+ $attachmentPost = get_post($ID);
+
+ jvbDump($meta, 'video meta');
+
+ $title = ($attachmentPost && $attachmentPost->post_title !== '') ? $attachmentPost->post_title : '';
+ $caption = wp_get_attachment_caption($ID);
+
+ $video = new VideoObject();
+ $video->setName($title);
+ $video->setContentUrl($url);
+
+ if ($attachmentPost) {
+ $video->setUploadDate($attachmentPost->post_date);
+ }
+
+ if (isset($meta['height'])) {
+ $video->setHeight($meta['height'].'px');
+ }
+ if (isset($meta['width'])) {
+ $video->setWidth($meta['width'].'px');
+ }
+ if (isset($meta['mime_type'])) {
+ $video->setEncodingFormat($meta['mime_type']);
+ }
+ if (isset($meta['filesize'])) {
+ $video->setContentSize($meta['filesize']);
+ }
+ if (isset($meta['length'])) {
+ $video->setDuration($meta['length']);
+ }
+ if (!empty($caption)) {
+ $video->setDescription($caption);
+ }
+
+ $schema = sprintf(
+ '<script type="application/ld+json">%s</script>',
+ json_encode($video->outputSchema())
+ );
+
+ return sprintf(
+ '%s<video width="%s" height="%s" controls>
+ <source src="%s" type="%s">Your browser does not support the video tag
+ </video>',
+ $schema,
+ $meta['width'],
+ $meta['height'],
+ $url,
+ $meta['mime_type']
+ );
+
+
+
+ }
+ );
+ }
+
+ public function getGallerySizes(int $ID, string $replace):string
+ {
+ if (!wp_get_attachment_image_src($ID)) {
+ return '';
+ }
+ if (!has_image_size($replace)) {
+ $replace = 'large';
+ }
+
+ if ($replace == 'large') {
+ return 'data-small="' .
+ wp_get_attachment_image_src($ID)[0] . '" data-medium="' .
+ wp_get_attachment_image_src($ID, 'large')[0] . '" data-full="' .
+ wp_get_attachment_image_src($ID, 'full')[0] . '"';
+ } elseif ($replace == 'medium') {
+ return 'data-small="'.
+ wp_get_attachment_image_src($ID, 'large')[0].'" data-medium="'.
+ wp_get_attachment_image_src($ID, 'large')[0].'" data-full="'.
+ wp_get_attachment_image_src($ID, 'large')[0].'"';
+ } elseif ($replace == 'thumbnail') {
+ return 'data-small="'.
+ wp_get_attachment_image_src($ID, 'medium')[0].'" data-medium="'.
+ wp_get_attachment_image_src($ID, 'medium')[0].'" data-full="'.
+ wp_get_attachment_image_src($ID, 'medium')[0].'"';
+ }
+ return '';
+ }
+
+ public function getImageData(int $imgID):array
+ {
+ return $this->imgData->remember(
+ $imgID,
+ function() use ($imgID) {
+ if (!wp_get_attachment_image($imgID, 'tiny')) {
+ return [];
+ }
+ return [
+ 'tiny' => wp_get_attachment_image_src($imgID, 'tiny')[0],
+ 'small' => wp_get_attachment_image_src($imgID, 'medium')[0],
+ 'medium' => wp_get_attachment_image_src($imgID, 'large')[0],
+ 'large' => wp_get_attachment_image_src($imgID, 'full')[0],
+ 'image-alt-text'=> get_post_meta($imgID, '_wp_attachment_image_alt', true),
+ 'image-title' => get_the_title($imgID),
+ 'image-caption' => get_the_excerpt($imgID),
+ ];
+ }
+ );
+ }
+
+ public static function getData(int $imgID):array
+ {
+ return (new Video)->getImageData($imgID);
+ }
+
+}
--
Gitblit v1.10.0