#
# This file is part of Koha.
#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use strict;
use warnings;
use C4::Debug;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
BEGIN {
- $VERSION = 3.07.00.049; # set version for version checking
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
$sth->execute($frameworkcode);
my $data;
while (my $hashRef = $sth->fetchrow_hashref) {
- for (@fields) {
- $hashRef->{$_} =~ s/[\r\n]//g;
- $$strCSV .= '"' . $hashRef->{$_} . '",';
+ for my $field (@fields) {
+ my $value = $hashRef->{$field} // q||;
+ $value =~ s/[\r\n]//g;
+ $$strCSV .= '"' . $value . '",';
}
chop $$strCSV;
$$strCSV .= chr(10);
$data = $hashRef->{$_->{name}};
if ($_->{type} eq 'float' && !defined($data)) {
$data = '0';
+ } elsif ($_->{type} eq 'string' && !defined($data)) {
+ $data = q{};
} elsif ($_->{type} eq 'string' && (!$data && $data ne '0')) {
$data = '#';
}
$data = $hashRef->{$_->{name}};
if ($_->{type} eq 'Number' && !defined($data)) {
$data = '0';
+ } elsif ($_->{type} eq 'String' && !defined($data)) {
+ $data = q{};
} elsif ($_->{type} eq 'String' && (!$data && $data ne '0')) {
$data = '#';
}
seek($dom, $pos, 0);
return 1;
}
- if (scalar(@$fields) == scalar(@arrData)) {
- if (!$fieldsNameRead) {
- # New table, we read the field names
- $fieldsNameRead = 1;
- for (my $i=0; $i < @arrData; $i++) {
- if ($arrData[$i] ne $fields->[$i]) {
- $fieldsNameRead = 0;
- last;
- }
- }
- if ($fieldsNameRead) {
- $fieldsStr = join(',', @$fields);
- $dataStr = '';
- map { $dataStr .= '?,';} @$fields;
- chop($dataStr) if ($dataStr);
- $updateStr = '';
- map { $updateStr .= $_ . '=?,';} @$fields;
- chop($updateStr) if ($updateStr);
- }
- } else {
- # Read data
- my $j = 0;
- my %dataFields = ();
- for (@arrData) {
- if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
- $dataFields{$fields->[$j]} = $frameworkcode;
- $arrData[$j] = $frameworkcode;
- } else {
- $dataFields{$fields->[$j]} = $_;
- }
- $j++
+ if (!$fieldsNameRead) {
+ # New table, we read the field names
+ $fieldsNameRead = 1;
+ $fields = [@arrData];
+ $fieldsStr = join(',', @$fields);
+ $dataStr = '';
+ map { $dataStr .= '?,';} @$fields;
+ chop($dataStr) if ($dataStr);
+ $updateStr = '';
+ map { $updateStr .= $_ . '=?,';} @$fields;
+ chop($updateStr) if ($updateStr);
+ } else {
+ # Read data
+ my $j = 0;
+ my %dataFields = ();
+ for (@arrData) {
+ if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
+ $dataFields{$fields->[$j]} = $frameworkcode;
+ $arrData[$j] = $frameworkcode;
+ } else {
+ $dataFields{$fields->[$j]} = $_;
}
- $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
+ $j++
}
+ $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
}
$pos = tell($dom);
}