use Config::IniFiles;
use Text::Unaccent;
use Data::Pageset;
+use POSIX qw(locale_h);
use lib '..';
use index_DBI_filter;
my $BASE_PATH =$cfg_global->val('webpac', 'base_path');
# for pager
my $pages_per_set = $cfg_global->val('webpac', 'pages_per_set') || 10;
+my $locale = $cfg_global->val('locale') || 'hr_HR';
Text::Iconv->raise_error(0); # Conversion errors raise exceptions
my $from_utf8 = Text::Iconv->new('UTF8', $CHARSET);
+setlocale(LC_CTYPE, $locale);
+setlocale(LC_COLLATE, $locale);
+
if ($UNAC_FILTER) {
require $UNAC_FILTER;
} else {
use vars qw($Count);
use HTML::Entities;
use URI::Escape;
-use locale;
use Carp;
-
use DBI;
+use locale;
# bench time
my $bench_time = time();
if (! $self->{c}->{$uc}->{$field}) {
#print stderr "in index: $index_data\n";
- $self->{c}->{$uc}->{$field}->{item} = $index_data;
+ $self->{c}->{$uc}->{$field}->{item} = lc($index_data);
$self->{c}->{$uc}->{$field}->{display} = $display;
}
my $tables_sql = 'data';
my $where_sql = '';
- my @sql_args = ( $field, $where );
+ my @sql_args = ( $field, lc($where) );
if ($filter) {
$tables_sql .= ",filters";
my $sql = qq{
select count(*)
from $tables_sql
- where name = ? and upper(item) like upper(?)||'%'
+ where name = ? and item like ?||'%'
$where_sql
};
my $tables_sql = 'data';
my $where_sql = '';
- my @sql_args = ( $field, $where );
+ my @sql_args = ( $field, lc($where) );
if ($filter) {
$tables_sql .= ",filters";
my $sql2 = qq{
select data.ord as ord
from $tables_sql
- where name = ? and upper(item) like upper(?)||'%'
+ where name = ? and item like ?||'%'
$where_sql
+ order by data.ord
};
my $sth = $self->{dbh}->prepare($sql2) || confess "sql2: $sql2; ".$self->{dbh}->errstr();
$sth->execute(@sql_args) || confess "sql2: $sql2; ".$self->{dbh}->errstr();
if (my $row = $sth->fetchrow_hashref) {
- $from_ord += $row->{ord} - 1;
+ $from_ord = $row->{ord} - 1;
} else {
# if no match is found when searching from beginning
# of word in index, try substring match anywhere
$sql2 = qq{
select data.ord as ord
from $tables_sql
- where name = ? and upper(item) like '% '||upper(?)||'%'
+ where name = ? and item like '%'||?||'%'
$where_sql
+ order by data.ord
};
$sth = $self->{dbh}->prepare($sql2) || confess "sql2: $sql2; ".$self->{dbh}->errstr();
$sth->execute(@sql_args) || confess "sql2: $sql2; ".$self->{dbh}->errstr();
if (my $row = $sth->fetchrow_hashref) {
- $from_ord += $row->{ord} - 1;
+ $from_ord = $row->{ord} - 1;
}
}
}