Files
kupshop/class/Query/Variation.php
2025-08-02 16:30:27 +02:00

61 lines
1.7 KiB
PHP

<?php
namespace Query;
use Doctrine\DBAL\Connection;
use KupShop\I18nBundle\Translations\VariationsTranslation;
class VariationBase
{
public static function labelsInSections(array $sectionIds)
{
return function (QueryBuilder $qb) use ($sectionIds) {
$qb->join('pvcl', 'products_variations_sections', 'pvs', 'pvcl.id = pvs.id_label');
$qb->setParameter('sectionIds', $sectionIds, Connection::PARAM_INT_ARRAY);
return $qb->expr()->in('pvs.id_section', ':sectionIds');
};
}
public static function isVisible()
{
if (!findModule(\Modules::PRODUCTS_VARIATIONS)) {
return null;
}
static $counter = 0;
return function (QueryBuilder $qb) use (&$counter) {
if ($qb->isAliasPresent('pv')) {
$paramName = 'visible_variation_'.$counter++;
$expression = null;
$qb->setParameter($paramName, 'Y');
$qb->andWhere(
Translation::joinTranslatedFields(
VariationsTranslation::class,
function (QueryBuilder $qb, $columnName, $translatedField) use (&$expression, $paramName) {
$expression = Operator::coalesce($translatedField, "pv.{$columnName}")." = :{$paramName}";
return false;
},
['figure']
)
);
return Operator::orX(
$expression,
Operator::isNull('pv.figure')
);
}
return '1';
};
}
}
if (empty($subclass)) {
class Variation extends VariationBase
{
}
}