static function createFilterValuesSearch($filter, $view_join, $view_where, $filters_where, $indexed_elements, $search_prop) { $faceted_filter = $filter->parameters->get('faceted_filter_s', 2); $display_filter_as = $filter->parameters->get('display_filter_as_s', 0); // Filter Type of Display $filter_as_range = in_array($display_filter_as, array(2, 3)); $lang_filter_values = $filter->parameters->get('lang_filter_values', 1); //$show_matching_items = $filter->parameters->get( 'show_matching_items_s', 1 ); //$show_matches = $filter_as_range || !$faceted_filter ? 0 : $show_matching_items; $filter->filter_isindexed = (bool) $indexed_elements; $_results = FlexicontentFields::getFilterValuesSearch($filter, $view_join, $view_where, $filters_where); $results =& $_results; // Language filter labels if ($lang_filter_values) { foreach ($results as $i => $result) { $results[$i]->text = JText::_($result->text); } } // Skip sorting for indexed elements, DB query or element entry is responsible // for ordering indexable fields, also skip if ordering is done by the filter if (!$indexed_elements && empty($filter->filter_orderby)) { uksort($results, 'strnatcasecmp'); } return $results; }
static function createFilterValuesSearch($filter, $view_join, $view_where, $filters_where, $indexed_elements, $search_prop) { $faceted_filter = $filter->parameters->get('faceted_filter_s', 2); $display_filter_as = $filter->parameters->get('display_filter_as_s', 0); // Filter Type of Display $isRange = in_array($display_filter_as, array(2, 3, 8)); $lang_filter_values = $filter->parameters->get('lang_filter_values', 1); $show_matching_items = $filter->parameters->get('show_matching_items_s', 1); $show_matches = $isRange || !$faceted_filter ? 0 : $show_matching_items; $filter->filter_isindexed = (bool) $indexed_elements; if ($faceted_filter || !$indexed_elements) { $_results = FlexicontentFields::getFilterValuesSearch($filter, $view_join, $view_where, $filters_where); //echo "<pre>". $filter->label.": ". print_r($_results, true) ."\n\n</pre>"; } // Support of value-indexed fields if (!$faceted_filter && $indexed_elements) { // Clone 'indexed_elements' because they maybe modified $results = array(); foreach ($indexed_elements as $i => $result) { $results[$i] = clone $result; } } else { if ($indexed_elements && is_array($indexed_elements)) { // Limit indexed element according to DB results found $results = array_intersect_key($indexed_elements, $_results); //echo "<pre>". $filter->label.": ". print_r($indexed_elements, true) ."\n\n</pre>"; if ($faceted_filter == 2 && $show_matches) { foreach ($results as $i => $result) { $result->found = $_results[$i]->found; // Clone 'indexed_elements' because they maybe modified $results[$i] = clone $result; } } } else { $results =& $_results; } } // Language filter values/labels (for indexed fields this is already done) if ($lang_filter_values && !$indexed_elements) { foreach ($results as $i => $result) { $results[$i]->text = JText::_($result->text); } } // Skip sorting for indexed elements, DB query or element entry is responsible // for ordering indexable fields, also skip if ordering is done by the filter if (!$indexed_elements && empty($filter->filter_orderby_adv)) { uksort($results, 'strnatcasecmp'); if ($filter->parameters->get('reverse_filter_order', 0)) { $results = array_reverse($results, true); } } return $results; }