/** * Creates locales list. * * @param ViewData\ChoicesAwareViewData $filter * * @return array */ private function buildLocalesList($filter) { $search = $this->repository->createSearch(); $localeAgg = new TermsAggregation('locale_agg'); $localeAgg->setField('messages.locale'); $search->addAggregation($localeAgg); $result = $this->repository->execute($search, Result::RESULTS_RAW); $list = []; foreach ($result['aggregations']['agg_locale_agg']['buckets'] as $value) { $list[$value['key']] = true; } ksort($list); $activeLocales = []; if ($filter->getState()->isActive()) { foreach ($filter->getChoices() as $choice) { $activeLocales[$choice->getLabel()] = $choice->isActive(); } $list = array_merge($list, $activeLocales); } return $list; }