Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/View/Sd/
Upload File :
Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/View/Sd/SdProduct.php

<?php
/*
* @package		Tech Fry Library
* @license		https://www.gnu.org/licenses/gpl-3.0.en.html
*/

namespace TechFry\Library\View\Sd;

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;

// https://developers.google.com/search/docs/appearance/structured-data/product
class SdProduct
{
    public static function get_output($data = array())
    {
        // Required: name and  one of review, aggregateRating, offers
        
        $json = array(
            "@context" => "https://schema.org",
            "@type" => "Product",
            "name" => $data['name'] ?? $data['title'],
            "description" => $data['description'],
            "sku" => $data['sku'] ?? '',
        );

        // Brand
        $brand = $data['brand'] ?? '';
        if ($brand)
        {
            $json["brand"] = array(
	            "@type" => "Brand",
                "name" => $brand,
	        );
        }

        if (isset($data['image']) && $data['image'])
        {
            $json['image'] = Sd::add_image($data['image']);
        }

        if (isset($data['mpn']) && $data['mpn'])
        {
            $json['mpn'] = $data['mpn'];
        }

        if (isset($data['isbn']) && $data['isbn'])
        {
            $json['isbn'] = $data['isbn'];
        }

        if (isset($data['gtin']) && $data['gtin'])
        {
            $json['gtin'] = $data['gtin'];
        }

        if (isset($data['gtin8']) && $data['gtin8'])
        {
            $json['gtin8'] = $data['gtin8'];
        }

        if (isset($data['gtin13']) && $data['gtin13'])
        {
            $json['gtin13'] = $data['gtin13'];
        }

        if (isset($data['gtin14']) && $data['gtin14'])
        {
            $json['gtin14'] = $data['gtin14'];
        }

        if (isset($data['rating_count']) && $data['rating_count'])
        {
            $json["aggregateRating"] = array(
                "ratingCount" => $data['rating_count'] ?? $data["ratingCount"],
                "ratingValue" => $data['rating_value'] ?? $data["ratingValue"],
            );
        }
        
        // Offer
        $price_valid_until = $data["price_valid_until"] ?? '';
        $pricevaliduntil = $price_valid_until ? Factory::getDate($price_valid_until) : Factory::getDate()->modify('+1 year');

        $json["offers"] = array(
	        "@type" => "Offer",
	        "price" => $data['price'] ?? '',
	        "priceValidUntil" => $pricevaliduntil->toISO8601(),
	        "priceCurrency" => $data['currency'],
	        "url" => $data['offer_url'] ?? '',
	    );

        if (isset($data['availability']) && $data['availability'])
        {
            $json["offers"]["availability"] = "https://schema.org/" . $data['availability'];
        }

        if (isset($data['condition']) && $data['condition'])
        {
            $json["offers"]["itemCondition"] = "https://schema.org/" . $data['condition'];
        }

        Sd::display_sd($json);
    }
}