From cb3a8d990175a89e1a189bcd76db89ee1aea46b6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 3 Jul 2025 11:15:43 +0200 Subject: [PATCH] Bug 36947: Use ncmp --- C4/Search.pm | 19 +++---------------- Koha/SearchEngine/Elasticsearch/Search.pm | 21 +++------------------ 2 files changed, 6 insertions(+), 34 deletions(-) diff --git a/C4/Search.pm b/C4/Search.pm index bf0a485286f..8acae65b504 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -40,8 +40,7 @@ use URI::Escape; use Business::ISBN; use MARC::Record; use MARC::Field; -use POSIX qw(setlocale LC_COLLATE); -use Unicode::Collate::Locale; +use Sort::Naturally qw(ncmp); our ( @ISA, @EXPORT_OK ); @@ -304,20 +303,8 @@ Sorts facets using a configurable locale for Zebra search engine. sub _sort_facets_zebra { my ( $facets, $locale ) = @_; - if ( !$locale ) { - - # Get locale from system preference, falling back to system LC_COLLATE - $locale = C4::Context->preference('FacetSortingLocale') || 'default'; - if ( $locale eq 'default' || !$locale ) { - - #NOTE: When setlocale is run with only the 1st parameter, it is a "get" not a "set" function. - $locale = setlocale(LC_COLLATE) || 'default'; - } - } - - my $collator = Unicode::Collate::Locale->new( locale => $locale ); - if ( $collator && $facets ) { - my @sorted_facets = sort { $collator->cmp( $a->{facet_label_value}, $b->{facet_label_value} ) } @{$facets}; + if ($facets) { + my @sorted_facets = sort { ncmp( $a->{facet_label_value}, $b->{facet_label_value} ) } @$facets; if (@sorted_facets) { return \@sorted_facets; } diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm index f9383c379fb..6e543ab3879 100644 --- a/Koha/SearchEngine/Elasticsearch/Search.pm +++ b/Koha/SearchEngine/Elasticsearch/Search.pm @@ -53,9 +53,7 @@ use MARC::Record; use MARC::File::XML; use MIME::Base64 qw( decode_base64 ); use JSON; - -use POSIX qw(setlocale LC_COLLATE); -use Unicode::Collate::Locale; +use Sort::Naturally qw(ncmp); Koha::SearchEngine::Elasticsearch::Search->mk_accessors(qw( store )); @@ -467,22 +465,9 @@ Sorts facets using a locale. sub _sort_facets { my ( $self, $args ) = @_; my $facets = $args->{facets}; - my $locale = $args->{locale}; - - if ( !$locale ) { - - # Get locale from system preference, falling back to system LC_COLLATE - $locale = C4::Context->preference('FacetSortingLocale') || 'default'; - if ( $locale eq 'default' || !$locale ) { - - #NOTE: When setlocale is run with only the 1st parameter, it is a "get" not a "set" function. - $locale = setlocale(LC_COLLATE) || 'default'; - } - } - my $collator = Unicode::Collate::Locale->new( locale => $locale ); - if ( $collator && $facets ) { - my @sorted_facets = sort { $collator->cmp( $a->{facet_label_value}, $b->{facet_label_value} ) } @{$facets}; + if ($facets) { + my @sorted_facets = sort { ncmp( $a->{facet_label_value}, $b->{facet_label_value} ) } @$facets; if (@sorted_facets) { return \@sorted_facets; } -- 2.34.1