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

(-)a/Koha/Upload.pm (-13 / +44 lines)
Lines 59-66 use base qw(Class::Accessor); Link Here
59
59
60
use C4::Context;
60
use C4::Context;
61
61
62
__PACKAGE__->mk_ro_accessors( qw| name
62
__PACKAGE__->mk_ro_accessors( qw||);
63
|);
64
63
65
=head2 new
64
=head2 new
66
65
Lines 107-112 sub result { Link Here
107
    return join ',', @a;
106
    return join ',', @a;
108
}
107
}
109
108
109
=head2 err
110
111
    Returns hash with errors in format { file => err, ... }
112
    Undefined if there are no errors.
113
114
=cut
115
116
sub err {
117
    my ( $self ) = @_;
118
    my $err;
119
    foreach my $f ( keys $self->{files} ) {
120
        my $e = $self->{files}->{$f}->{errcode};
121
        $err->{ $f } = $e if $e;
122
    }
123
    return $err;
124
}
125
110
=head2 get
126
=head2 get
111
127
112
    Returns array
128
    Returns array
Lines 117-129 sub result { Link Here
117
sub get {
133
sub get {
118
    my ( $self, $params ) = @_;
134
    my ( $self, $params ) = @_;
119
    my $temp= $self->_lookup( $params );
135
    my $temp= $self->_lookup( $params );
120
    my ( @rv, $res );
136
    my ( @rv, $res);
121
    foreach my $r ( @$temp ) {
137
    foreach my $r ( @$temp ) {
138
        undef $res;
122
        $res->{name} = $r->{filename};
139
        $res->{name} = $r->{filename};
123
        $res->{path}= $self->_full_fname($r);
140
        $res->{path}= $self->_full_fname($r);
124
        $res->{fh} = IO::File->new( $res->{path}, "r" )
141
        if( $res->{path} && -r $res->{path} ) {
125
            if $params->{filehandle};
142
            $res->{fh} = IO::File->new( $res->{path}, "r" )
126
        push @rv, $res;
143
                if $params->{filehandle};
144
            push @rv, $res;
145
        } else {
146
            $self->{files}->{ $r->{filename} }->{errcode}=5; #not readable
147
        }
127
        last if !wantarray;
148
        last if !wantarray;
128
    }
149
    }
129
    return wantarray? @rv: $res;
150
    return wantarray? @rv: $res;
Lines 146-153 sub _init { Link Here
146
    } else {
167
    } else {
147
        $self->{category} = $params->{category};
168
        $self->{category} = $params->{category};
148
    }
169
    }
149
150
    $self->{errors} = [];
151
    $self->{files} = {};
170
    $self->{files} = {};
152
    $self->{uid} = C4::Context->userenv->{number} if C4::Context->userenv;
171
    $self->{uid} = C4::Context->userenv->{number} if C4::Context->userenv;
153
}
172
}
Lines 165-182 sub _create_file { Link Here
165
    if( $self->{files}->{$filename} &&
184
    if( $self->{files}->{$filename} &&
166
            $self->{files}->{$filename}->{errcode} ) {
185
            $self->{files}->{$filename}->{errcode} ) {
167
        #skip
186
        #skip
187
    } elsif( !$self->{temporary} && !$self->{rootdir} ) {
188
        $self->{files}->{$filename}->{errcode} = 3; #no rootdir
168
    } elsif( $self->{temporary} && !$self->{tmpdir} ) {
189
    } elsif( $self->{temporary} && !$self->{tmpdir} ) {
169
        $self->{files}->{$filename}->{errcode} = 2;
190
        $self->{files}->{$filename}->{errcode} = 4; #no tempdir
170
    } else {
191
    } else {
171
        my $dir = $self->_dir;
192
        my $dir = $self->_dir;
172
        my $fn = $self->{files}->{$filename}->{hash}. '_'. $filename;
193
        my $fn = $self->{files}->{$filename}->{hash}. '_'. $filename;
194
        if( -e "$dir/$fn" ) {
195
            $self->{files}->{$filename}->{errcode} = 1; #already exists
196
            return;
197
        }
173
        $fh = IO::File->new( "$dir/$fn", "w");
198
        $fh = IO::File->new( "$dir/$fn", "w");
174
        if( $fh ) {
199
        if( $fh ) {
175
            $fh->binmode;
200
            $fh->binmode;
176
            $self->{files}->{$filename}->{fh}= $fh;
201
            $self->{files}->{$filename}->{fh}= $fh;
177
        } else {
202
        } else {
178
            $self->{files}->{$filename}->{errcode} = 1;
203
            $self->{files}->{$filename}->{errcode} = 2; #not writable
179
            # push @{$self->{errors}}, [ 1, $filename ];
180
        }
204
        }
181
    }
205
    }
182
    return $fh;
206
    return $fh;
Lines 192-201 sub _dir { Link Here
192
216
193
sub _full_fname {
217
sub _full_fname {
194
    my ( $self, $rec ) = @_;
218
    my ( $self, $rec ) = @_;
219
    my $p;
195
    if( ref $rec ) {
220
    if( ref $rec ) {
196
        return ( $rec->{category}? $self->{rootdir}: $self->{tmpdir} ).
221
        if( $rec->{category} && !$self->{rootdir} ) {
197
            '/'. $rec->{dir}. '/'. $rec->{hashvalue}. '_'. $rec->{filename};
222
        } elsif( !$rec->{category} && !$self->{tmpdir} ) {
223
        } else {
224
            $p= $rec->{category}? $self->{rootdir}: $self->{tmpdir};
225
            $p.= '/';
226
            $p.= $rec->{dir}. '/'. $rec->{hashvalue}. '_'. $rec->{filename};
227
        }
198
    }
228
    }
229
    return $p;
199
}
230
}
200
231
201
sub _hook {
232
sub _hook {
(-)a/tools/upload-file.pl (-2 / +1 lines)
Lines 58-64 if ($auth_failure) { Link Here
58
}
58
}
59
59
60
my $upload = Koha::Upload->new({ });
60
my $upload = Koha::Upload->new({ });
61
if( !$upload || ! $upload->cgi ) {
61
if( !$upload || !$upload->cgi || $upload->err ) {
62
    send_reply( 'failed' );
62
    send_reply( 'failed' );
63
} else {
63
} else {
64
    send_reply( 'done', $upload->result );
64
    send_reply( 'done', $upload->result );
65
- 

Return to bug 14321