HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux mail.btech-izolacje.pl 5.15.0-140-generic #150-Ubuntu SMP Sat Apr 12 06:00:09 UTC 2025 x86_64
User: pewna6876 (1017)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: /home/pewnabryka.pl/public_html/wp-content/plugins/vehica-core/app/Managers/PrepareImageForJs.php
<?php


namespace Vehica\Managers;


use Vehica\Core\Manager;
use WP_Post;

/**
 * Class PrepareImageForJs
 * @package Vehica\Managers
 */
class PrepareImageForJs extends Manager
{

    public function boot()
    {
        add_filter('wp_prepare_attachment_for_js', [$this, 'response'], 10, 3);
    }

    /**
     * @param array $response
     * @param WP_Post $attachment
     * @param array $meta
     * @return array
     */
    public function response($response, $attachment, $meta)
    {
        if (!$this->sizeExits($meta)) {
            return $response;
        }

        $response['sizes']['large'] = [
            'width' => $this->getWidth($meta),
            'height' => $this->getHeight($meta),
            'url' => $this->getUrl($attachment, $meta),
            'orientation' => $this->getOrientation($meta),
        ];

        return $response;
    }

    /**
     * @param array $meta
     * @return string
     */
    private function getOrientation($meta)
    {
        return $meta['sizes']['large']['height'] > $meta['sizes']['large']['width'] ? 'portrait' : 'landscape';
    }

    /**
     * @param WP_Post $attachment
     * @param array $meta
     * @return string
     */
    private function getUrl($attachment, $meta)
    {
        $attachmentUrl = wp_get_attachment_url($attachment->ID);
        $baseUrl = str_replace(wp_basename($attachmentUrl), '', $attachmentUrl);
        return $baseUrl . $meta['sizes']['large']['file'];
    }

    /**
     * @param array $meta
     * @return float
     */
    private function getWidth($meta)
    {
        return $meta['sizes']['large']['width'];
    }

    /**
     * @param array $meta
     * @return float
     */
    private function getHeight($meta)
    {
        return $meta['sizes']['large']['height'];
    }

    /**
     * @param array $meta
     * @return bool
     */
    private function sizeExits($meta)
    {
        return isset($meta['sizes']['large']);
    }

}