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(
'',
json_encode($video->outputSchema())
);
return sprintf(
'%s',
$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);
}
}