Lines 18-27
Link Here
|
18 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
18 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
19 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
20 |
|
20 |
|
21 |
use strict; |
21 |
use Modern::Perl; |
22 |
#use warnings; FIXME - Bug 2505 |
22 |
|
23 |
use C4::Auth; |
23 |
use C4::Auth; |
24 |
use CGI; |
24 |
use CGI; |
|
|
25 |
use Text::CSV::Encoded; |
25 |
use C4::Context; |
26 |
use C4::Context; |
26 |
use C4::Koha; |
27 |
use C4::Koha; |
27 |
use C4::Dates; |
28 |
use C4::Dates; |
Lines 131-152
if ($do_it) {
Link Here
|
131 |
@data=@$results; |
132 |
@data=@$results; |
132 |
my $total = scalar @data; |
133 |
my $total = scalar @data; |
133 |
foreach my $result (@data){ |
134 |
foreach my $result (@data){ |
|
|
135 |
# Init additional columns for CSV export |
136 |
$result->{'biblionumber'} = q{}; |
137 |
$result->{'biblioitemnumber'} = q{}; |
138 |
$result->{'barcode'} = q{}; |
139 |
$result->{'userfirstname'} = q{}; |
140 |
$result->{'usersurname'} = q{}; |
141 |
$result->{'borrowerfirstname'} = q{}; |
142 |
$result->{'borrowersurname'} = q{}; |
143 |
|
134 |
if (substr($result->{'info'}, 0, 4) eq 'item' || $result->{module} eq "CIRCULATION"){ |
144 |
if (substr($result->{'info'}, 0, 4) eq 'item' || $result->{module} eq "CIRCULATION"){ |
135 |
# get item information so we can create a working link |
145 |
# get item information so we can create a working link |
136 |
my $itemnumber=$result->{'object'}; |
146 |
my $itemnumber=$result->{'object'}; |
137 |
$itemnumber=$result->{'info'} if ($result->{module} eq "CIRCULATION"); |
147 |
$itemnumber=$result->{'info'} if ($result->{module} eq "CIRCULATION"); |
138 |
my $item=GetItem($itemnumber); |
148 |
my $item=GetItem($itemnumber); |
139 |
$result->{'biblionumber'}=$item->{'biblionumber'}; |
149 |
if ($item) { |
140 |
$result->{'biblioitemnumber'}=$item->{'biblionumber'}; |
150 |
$result->{'biblionumber'}=$item->{'biblionumber'}; |
141 |
$result->{'barcode'}=$item->{'barcode'}; |
151 |
$result->{'biblioitemnumber'}=$item->{'biblionumber'}; |
|
|
152 |
$result->{'barcode'}=$item->{'barcode'}; |
153 |
} |
142 |
} |
154 |
} |
143 |
#always add firstname and surname for librarian/user |
155 |
#always add firstname and surname for librarian/user |
144 |
if ($result->{'user'}){ |
156 |
if ($result->{'user'}){ |
145 |
my $userdetails = C4::Members::GetMemberDetails($result->{'user'}); |
157 |
my $userdetails = C4::Members::GetMemberDetails($result->{'user'}); |
146 |
if ($userdetails->{'firstname'}){ |
158 |
if ($userdetails){ |
147 |
$result->{'userfirstname'} = $userdetails->{'firstname'}; |
159 |
$result->{'userfirstname'} = $userdetails->{'firstname'}; |
148 |
} |
|
|
149 |
if ($userdetails->{'surname'}){ |
150 |
$result->{'usersurname'} = $userdetails->{'surname'}; |
160 |
$result->{'usersurname'} = $userdetails->{'surname'}; |
151 |
} |
161 |
} |
152 |
} |
162 |
} |
Lines 154-163
if ($do_it) {
Link Here
|
154 |
if ($result->{module} eq "CIRCULATION" || $result->{module} eq "MEMBERS" || $result->{module} eq "FINES"){ |
164 |
if ($result->{module} eq "CIRCULATION" || $result->{module} eq "MEMBERS" || $result->{module} eq "FINES"){ |
155 |
if($result->{'object'}){ |
165 |
if($result->{'object'}){ |
156 |
my $borrowerdetails = C4::Members::GetMemberDetails($result->{'object'}); |
166 |
my $borrowerdetails = C4::Members::GetMemberDetails($result->{'object'}); |
157 |
if ($borrowerdetails->{'firstname'}){ |
167 |
if ($borrowerdetails){ |
158 |
$result->{'borrowerfirstname'} = $borrowerdetails->{'firstname'}; |
168 |
$result->{'borrowerfirstname'} = $borrowerdetails->{'firstname'}; |
159 |
} |
|
|
160 |
if ($borrowerdetails->{'surname'}){ |
161 |
$result->{'borrowersurname'} = $borrowerdetails->{'surname'}; |
169 |
$result->{'borrowersurname'} = $borrowerdetails->{'surname'}; |
162 |
} |
170 |
} |
163 |
} |
171 |
} |
Lines 187-204
if ($do_it) {
Link Here
|
187 |
output_html_with_http_headers $input, $cookie, $template->output; |
195 |
output_html_with_http_headers $input, $cookie, $template->output; |
188 |
} else { |
196 |
} else { |
189 |
# Printing to a csv file |
197 |
# Printing to a csv file |
|
|
198 |
my $content = q{}; |
199 |
my $delimiter = C4::Context->preference('delimiter') || ','; |
200 |
if (@data) { |
201 |
my $csv = Text::CSV::Encoded->new( { encoding_out => 'utf8', sep_char => $delimiter } ); |
202 |
$csv or die "Text::CSV::Encoded->new FAILED: " . Text::CSV::Encoded->error_diag(); |
203 |
# First line with heading |
204 |
# Exporting bd id seems useless |
205 |
my @headings = grep { $_ ne 'action_id' } sort keys $data[0]; |
206 |
if ( $csv->combine( @headings ) ) { |
207 |
$content .= $csv->string() . "\n"; |
208 |
} |
209 |
# Lines of logs |
210 |
foreach my $line (@data) { |
211 |
my @cells = map { $line->{$_} } @headings; |
212 |
if ( $csv->combine( @cells ) ) { |
213 |
$content .= $csv->string() . "\n"; |
214 |
} |
215 |
} |
216 |
} |
190 |
print $input->header( |
217 |
print $input->header( |
191 |
-type => 'text/csv', |
218 |
-type => 'text/csv', |
192 |
-attachment => "$basename.csv", |
219 |
-attachment => $basename . '.csv', |
193 |
-filename => "$basename.csv" |
|
|
194 |
); |
220 |
); |
195 |
my $sep = C4::Context->preference("delimiter"); |
221 |
print $content; |
196 |
foreach my $line (@data) { |
|
|
197 |
#next unless $modules[0] eq "catalogue"; |
198 |
foreach (qw(timestamp firstname surname action info title author)) { |
199 |
print $line->{$_} . $sep; |
200 |
} |
201 |
} |
202 |
} |
222 |
} |
203 |
exit; |
223 |
exit; |
204 |
} else { |
224 |
} else { |
205 |
- |
|
|