61 lines
1.7 KiB
PHP
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
|
|
{
|
|
}
|
|
}
|