<?php

use KupShop\CatalogBundle\Entity\Wrapper\ProductWrapper;

/**
 * Ofiltruje fotky produktu na pouze aktivni.
 *
 * - Pokud ma produkt varianty, tak chci fotky pouze viditelnych (skladem) variant
 * - Pokud produkt bez variant, tak chci vsechny fotky
 */
function smarty_function_get_znz_product_photos($params, &$smarty)
{
    $dbcfg = Settings::getDefault();

    $product = ProductWrapper::unwrap($params['product']);

    $photos = [];

    // pokud mam varianty
    if (!empty($product->variations['variations'])) {
        // a ted projdu varianty a pridam obrazky variant
        foreach ($product->variations['variations'] ?? [] as $variation) {
            // stejna podminka jako v sablone - pokud varianta neni skladem, tak neni videt a neni timpadem videt ani jeji fotka
            if ($variation['delivery_time_index'] != 0 && $dbcfg->prod_show_not_in_store == 'N') {
                continue;
            }

            // poskladam si nazev varianty (jen hodnota bez jmenovky)
            $variationTitle = [];
            foreach ($variation['combinations'] ?? [] as $combination) {
                $variationTitle[] = $product->variations['labels'][$combination['id_label']]['values'][$combination['id_value']];
            }
            $variationTitle = implode(' ', $variationTitle);

            // projdu fotky dane varianty a pridam si je do pole fotek + doplnim naze varianty, abych ho mohl potom
            // strcit k nazvu obrazku pri nahledu
            foreach ($variation['photos'] ?? [] as $photo) {
                $photos[$photo['id']] = array_merge($photo, ['variationTitle' => $variationTitle]);
            }
        }
    } else {
        // pokud nemam varianty, tak proste pouziju vsechny fotky produktu
        $photos = $product->photos ?: [];
    }

    if (!empty($params['assign'])) {
        $smarty->assign($params['assign'], $photos);
    } else {
        return $photos;
    }
}
