first commit
This commit is contained in:
60
class/Query/Variation.php
Normal file
60
class/Query/Variation.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?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
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user