<?php declare(strict_types=1); namespace App\Module; use Contao\Widget; use Isotope\Module\CumulativeFilter; use Contao\Database; /** * @property array $iso_cumulativeFields */ class IsoCumulativeFilter extends CumulativeFilter { /** * Gets the used and available options for given attribute * * @param string $attribute The attribute name * @param string $label Set to the label of the attribute * * @return array */ protected function getOptionsForAttribute($attribute, &$label) { if ($attribute !== 'attr_monthyear') { $options = parent::getOptionsForAttribute($attribute, $label); } else { $usedValues = $this->getUsedValuesForAttribute( $attribute, $this->findCategories(), $this->iso_newFilter, $this->iso_list_where ); if (empty($usedValues)) { return array(); } // Use the default routine to initialize options data $arrWidget = Widget::getAttributesFromDca( $GLOBALS['TL_DCA']['tl_iso_product']['fields'][$attribute], $attribute ); $label = $arrWidget['label']; $result = Database::getInstance()->execute(" SELECT id AS 'value', month AS 'label' FROM tl_iso_product_month WHERE id IN (" . implode(',', $usedValues) . ") ORDER BY CASE WHEN label LIKE 'Januar%' THEN 1 WHEN label LIKE 'Februar%' THEN 2 WHEN label LIKE 'März%' THEN 3 WHEN label LIKE 'April%' THEN 4 WHEN label LIKE 'Mai%' THEN 5 WHEN label LIKE 'Juni%' THEN 6 WHEN label LIKE 'Juli%' THEN 7 WHEN label LIKE 'August%' THEN 8 WHEN label LIKE 'September%' THEN 9 WHEN label LIKE 'Oktober%' THEN 10 WHEN label LIKE 'November%' THEN 11 WHEN label LIKE 'Dezember%' THEN 12 ELSE 13 END "); $options = $result->fetchAllAssoc(); } return $options; } }