eZ\Publish\Core\Search\Elasticsearch\Content\CriterionVisitor\FieldFilterBase::getTodoFieldFilter PHP Method

getTodoFieldFilter() protected method

TODO: should really work something like this, but also needs update to the UrlAliasService etc.
protected getTodoFieldFilter ( array $languageFilter ) : array | null
$languageFilter array
return array | null
    protected function getTodoFieldFilter(array $languageFilter)
    {
        $translationFilter = null;
        if (!empty($languageFilter['languages'])) {
            $translationFilter = array('terms' => array('fields_doc.meta_language_code_s' => $languageFilter['languages']));
            if (isset($languageFilter['defaultTranslationToMainLanguage'])) {
                switch ($languageFilter['defaultTranslationToMainLanguage']) {
                    case true:
                        $translationFilter = array('or' => array($translationFilter, 'term' => array('meta_is_main_translation_b' => true)));
                        break;
                    case 'use_always_available':
                        $translationFilter = array('or' => array($translationFilter, 'and' => array(array('term' => array('always_available_b' => true)), array('term' => array('meta_is_main_translation_b' => true)))));
                        break;
                    case false:
                        // Nothing to do
                        break;
                    default:
                        throw new \RuntimeException("Invalid value for 'defaultTranslationToMainLanguage' field filter: expected one of: " . "true, 'use_always_available', false, got: " . var_export($languageFilter['defaultTranslationToMainLanguage'], true));
                }
            }
        }
        return $translationFilter;
    }