View | Details | Raw Unified | Return to bug 10808
Collapse All | Expand All

(-)a/authorities/auth_finder.pl (-81 / +77 lines)
Lines 27-90 use C4::Auth; Link Here
27
use C4::Context;
27
use C4::Context;
28
use C4::AuthoritiesMarc;
28
use C4::AuthoritiesMarc;
29
use C4::Acquisition;
29
use C4::Acquisition;
30
use C4::Koha;    # XXX subfield_is_koha_internal_p
30
use C4::Koha;
31
31
32
my $query        = new CGI;
32
my $query        = new CGI;
33
my $op           = $query->param('op');
33
my $op           = $query->param('op') || '';
34
my $authtypecode = $query->param('authtypecode');
34
my $authtypecode = $query->param('authtypecode') || '';
35
my $index        = $query->param('index');
35
my $index        = $query->param('index') || '';
36
my $tagid        = $query->param('tagid');
36
my $tagid        = $query->param('tagid') || '';
37
my $resultstring = $query->param('result');
37
my $source       = $query->param('source') || '';
38
my $relationship = $query->param('relationship');
38
my $relationship = $query->param('relationship') || '';
39
my $dbh          = C4::Context->dbh;
39
40
40
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
41
my $startfrom = $query->param('startfrom');
41
    {
42
$startfrom = 0 if ( !defined $startfrom );
42
        template_name => ( $op eq 'do_search' )
43
my ( $template, $loggedinuser, $cookie );
43
        ? 'authorities/searchresultlist-auth.tt'
44
my $resultsperpage;
44
        : 'authorities/auth_finder.tt',
45
45
        query           => $query,
46
my $authtypes = getauthtypes;
46
        type            => 'intranet',
47
        authnotrequired => 0,
48
        flagsrequired   => { catalogue => 1 },
49
    }
50
);
51
52
# Authority types loop
53
my $authtypes = C4::Koha::getauthtypes();
47
my @authtypesloop;
54
my @authtypesloop;
48
foreach my $thisauthtype ( keys %$authtypes ) {
55
foreach my $thisauthtype ( keys %$authtypes ) {
49
    my %row = (
56
    my %row = (
50
        value        => $thisauthtype,
57
        value        => $thisauthtype,
51
        selected     => ($thisauthtype eq $authtypecode),
58
        selected     => ( $thisauthtype eq $authtypecode ),
52
        authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
59
        authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
53
        index        => $index,
60
        index        => $index,
54
    );
61
    );
55
    push @authtypesloop, \%row;
62
    push @authtypesloop, \%row;
56
}
63
}
57
64
58
$op ||= q{};
65
# If search form posted
59
if ( $op eq "do_search" ) {
66
if ( $op eq "do_search" ) {
60
    my @marclist  = $query->param('marclist');
67
    my @marclist  = $query->param('marclist');
61
    my @and_or    = $query->param('and_or');
68
    my @and_or    = $query->param('and_or');
62
    my @excluding = $query->param('excluding');
69
    my @excluding = $query->param('excluding');
63
    my @operator  = $query->param('operator');
70
    my @operator  = $query->param('operator');
64
    my @value     = ($query->param('value_mainstr')||undef, $query->param('value_main')||undef, $query->param('value_any')||undef, $query->param('value_match')||undef);
71
    my @value     = (
65
    my $orderby   = $query->param('orderby');
72
        $query->param('value_mainstr') || undef,
66
73
        $query->param('value_main')    || undef,
67
    $resultsperpage = $query->param('resultsperpage');
74
        $query->param('value_any')     || undef,
68
    $resultsperpage = 20 if ( !defined $resultsperpage );
75
        $query->param('value_match')   || undef
76
    );
77
    my $orderby        = $query->param('orderby')        || '';
78
    my $startfrom      = $query->param('startfrom')      || 0;
79
    my $resultsperpage = $query->param('resultsperpage') || 20;
69
80
70
    my ( $results, $total ) =
81
    my ( $results, $total ) =
71
      SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value,
82
      SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value,
72
        $startfrom * $resultsperpage,
83
        $startfrom * $resultsperpage,
73
        $resultsperpage, $authtypecode, $orderby);
84
        $resultsperpage, $authtypecode, $orderby );
74
85
75
    # If an authority heading is repeated, add an arrayref to those repetions
86
    # If an authority heading is repeated, add an arrayref to those repetions
76
    # First heading -- Second heading
87
    # First heading -- Second heading
77
    for my $heading ( @$results ) {
88
    for my $heading (@$results) {
78
        my @repets = split / -- /, $heading->{summary};
89
        my @repets = split / -- /, $heading->{summary};
79
        if ( @repets > 1 ) {
90
        if ( @repets > 1 ) {
80
            my @repets_loop;
91
            my @repets_loop;
81
            for (my $i = 0; $i < @repets; $i++) {
92
            for ( my $i = 0 ; $i < @repets ; $i++ ) {
82
                push @repets_loop,
93
                push @repets_loop,
83
                    { index => $index, repet => $i+1, value => $repets[$i] };
94
                  { index => $index, repet => $i + 1, value => $repets[$i] };
84
            }
95
            }
85
            $heading->{repets} = \@repets_loop;
96
            $heading->{repets} = \@repets_loop;
86
        }
97
        }
87
    }
98
    }
99
88
    # multi page display gestion
100
    # multi page display gestion
89
    my $displaynext = 0;
101
    my $displaynext = 0;
90
    my $displayprev = $startfrom;
102
    my $displayprev = $startfrom;
Lines 94-102 if ( $op eq "do_search" ) { Link Here
94
106
95
    my @field_data = ();
107
    my @field_data = ();
96
108
97
    my @marclist_ini =
109
# get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name)
98
      $query->param('marclist')
110
    my @marclist_ini = $query->param('marclist');
99
      ; # get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name
100
    for ( my $i = 0 ; $i <= $#marclist ; $i++ ) {
111
    for ( my $i = 0 ; $i <= $#marclist ; $i++ ) {
101
        push @field_data, { term => "marclist",  val => $marclist_ini[$i] };
112
        push @field_data, { term => "marclist",  val => $marclist_ini[$i] };
102
        push @field_data, { term => "and_or",    val => $and_or[$i] };
113
        push @field_data, { term => "and_or",    val => $and_or[$i] };
Lines 104-116 if ( $op eq "do_search" ) { Link Here
104
        push @field_data, { term => "operator",  val => $operator[$i] };
115
        push @field_data, { term => "operator",  val => $operator[$i] };
105
    }
116
    }
106
117
107
    push @field_data, { term => "value_mainstr", val => $query->param('value_mainstr') || "" };
118
    push @field_data,
108
    push @field_data, { term => "value_main",    val => $query->param('value_main')    || "" };
119
      { term => "value_mainstr", val => $query->param('value_mainstr') || "" };
109
    push @field_data, { term => "value_any",     val => $query->param('value_any')     || ""};
120
    push @field_data,
110
    push @field_data, { term => "value_match",   val => $query->param('value_match')   || ""};
121
      { term => "value_main", val => $query->param('value_main') || "" };
122
    push @field_data,
123
      { term => "value_any", val => $query->param('value_any') || "" };
124
    push @field_data,
125
      { term => "value_match", val => $query->param('value_match') || "" };
111
126
112
    my @numbers = ();
127
    my @numbers = ();
113
114
    if ( $total > $resultsperpage ) {
128
    if ( $total > $resultsperpage ) {
115
        for ( my $i = 1 ; $i < $total / $resultsperpage + 1 ; $i++ ) {
129
        for ( my $i = 1 ; $i < $total / $resultsperpage + 1 ; $i++ ) {
116
            if ( $i < 16 ) {
130
            if ( $i < 16 ) {
Lines 129-201 if ( $op eq "do_search" ) { Link Here
129
143
130
    my $from = $startfrom * $resultsperpage + 1;
144
    my $from = $startfrom * $resultsperpage + 1;
131
    my $to;
145
    my $to;
132
133
    if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) {
146
    if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) {
134
        $to = $total;
147
        $to = $total;
135
    }
148
    }
136
    else {
149
    else {
137
        $to = ( ( $startfrom + 1 ) * $resultsperpage );
150
        $to = ( ( $startfrom + 1 ) * $resultsperpage );
138
    }
151
    }
139
    ( $template, $loggedinuser, $cookie ) = get_template_and_user(
140
        {
141
            template_name   => "authorities/searchresultlist-auth.tt",
142
            query           => $query,
143
            type            => 'intranet',
144
            authnotrequired => 0,
145
            flagsrequired   => { catalogue => 1 },
146
        }
147
    );
148
152
149
    $template->param( result => $results ) if $results;
153
    $template->param( result => $results ) if $results;
150
    $template->param(
154
    $template->param(
151
        orderby      => $orderby,
155
        orderby          => $orderby,
152
        startfrom      => $startfrom,
156
        startfrom        => $startfrom,
153
    displaynext    => $displaynext,
157
        displaynext      => $displaynext,
154
    displayprev    => $displayprev,
158
        displayprev      => $displayprev,
155
    resultsperpage => $resultsperpage,
159
        resultsperpage   => $resultsperpage,
156
    startfromnext  => $startfrom + 1,
160
        startfromnext    => $startfrom + 1,
157
    startfromprev  => $startfrom - 1,
161
        startfromprev    => $startfrom - 1,
158
        searchdata     => \@field_data,
162
        searchdata       => \@field_data,
159
        total          => $total,
163
        total            => $total,
160
        from           => $from,
164
        from             => $from,
161
        to             => $to,
165
        to               => $to,
162
        numbers        => \@numbers,
166
        numbers          => \@numbers,
163
        operator_mainstr => ( @operator > 0 && $operator[0] ) ? $operator[0] : '',
167
        operator_mainstr => ( @operator > 0 && $operator[0] )
164
        operator_main    => ( @operator > 1 && $operator[1] ) ? $operator[1] : '',
168
        ? $operator[0]
165
        operator_any     => ( @operator > 2 && $operator[2] ) ? $operator[2] : '',
169
        : '',
166
        operator_match   => ( @operator > 3 && $operator[3] ) ? $operator[3] : '',
170
        operator_main  => ( @operator > 1 && $operator[1] ) ? $operator[1] : '',
167
    );
171
        operator_any   => ( @operator > 2 && $operator[2] ) ? $operator[2] : '',
168
} else {
172
        operator_match => ( @operator > 3 && $operator[3] ) ? $operator[3] : '',
169
    ( $template, $loggedinuser, $cookie ) = get_template_and_user(
170
        {
171
            template_name   => "authorities/auth_finder.tt",
172
            query           => $query,
173
            type            => 'intranet',
174
            authnotrequired => 0,
175
            flagsrequired   => { catalogue => 1 },
176
        }
177
    );
173
    );
174
}
175
else {
178
176
179
    $template->param(
177
    # special case for UNIMARC field 210c builder
180
        resultstring => $resultstring,
178
    my $resultstring = $query->param('result') || '';
181
    );
179
    $template->param( resultstring => $resultstring, );
182
}
180
}
183
181
184
$template->param(
182
$template->param(
185
    op            => $op,
183
    op            => $op,
186
    value_mainstr => $query->param('value_mainstr') || "", 
184
    value_mainstr => $query->param('value_mainstr') || '',
187
    value_main    => $query->param('value_main') || "",
185
    value_main    => $query->param('value_main') || '',
188
    value_any     => $query->param('value_any') || "",
186
    value_any     => $query->param('value_any') || '',
189
    value_match   => $query->param('value_match') || "",
187
    value_match   => $query->param('value_match') || '',
190
    tagid         => $tagid,
188
    tagid         => $tagid,
191
    index         => $index,
189
    index         => $index,
192
    authtypesloop => \@authtypesloop,
190
    authtypesloop => \@authtypesloop,
193
    authtypecode  => $authtypecode,
191
    authtypecode  => $authtypecode,
192
    source        => $source,
193
    relationship  => $relationship,
194
);
194
);
195
195
196
$template->{VARS}->{source} = $query->param('source') || '';
197
$template->{VARS}->{relationship} = $query->param('relationship') || '';
198
199
# Print the page
196
# Print the page
200
output_html_with_http_headers $query, $cookie, $template->output;
197
output_html_with_http_headers $query, $cookie, $template->output;
201
198
202
- 

Return to bug 10808