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 { } }