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

(-)a/Koha/Upload.pm (-20 / +23 lines)
Lines 76-81 use base qw(Class::Accessor); Link Here
76
use C4::Context;
76
use C4::Context;
77
use C4::Koha;
77
use C4::Koha;
78
use Koha::UploadedFile;
78
use Koha::UploadedFile;
79
use Koha::UploadedFiles;
79
80
80
__PACKAGE__->mk_ro_accessors( qw|| );
81
__PACKAGE__->mk_ro_accessors( qw|| );
81
82
Lines 306-318 sub _create_file { Link Here
306
        $self->{files}->{$filename}->{errcode} = 4; #no tempdir
307
        $self->{files}->{$filename}->{errcode} = 4; #no tempdir
307
    } else {
308
    } else {
308
        my $dir = $self->_dir;
309
        my $dir = $self->_dir;
309
        my $fn = $self->{files}->{$filename}->{hash}. '_'. $filename;
310
        my $hashval = $self->{files}->{$filename}->{hash};
310
        if( -e "$dir/$fn" && @{ $self->_lookup({
311
        my $fn = $hashval. '_'. $filename;
311
          hashvalue => $self->{files}->{$filename}->{hash} }) } ) {
312
312
        # if the file exists and it is registered, then set error
313
        # if the file exists and it is registered, then set error
314
        # if it exists, but is not in the database, we will overwrite
315
        if( -e "$dir/$fn" &&
316
            Koha::UploadedFiles->search({
317
                hashvalue          => $hashval,
318
                uploadcategorycode => $self->{category},
319
            })->count ) {
313
            $self->{files}->{$filename}->{errcode} = 1; #already exists
320
            $self->{files}->{$filename}->{errcode} = 1; #already exists
314
            return;
321
            return;
315
        }
322
        }
323
316
        $fh = IO::File->new( "$dir/$fn", "w");
324
        $fh = IO::File->new( "$dir/$fn", "w");
317
        if( $fh ) {
325
        if( $fh ) {
318
            $fh->binmode;
326
            $fh->binmode;
Lines 381-409 sub _register { Link Here
381
389
382
sub _lookup {
390
sub _lookup {
383
    my ( $self, $params ) = @_;
391
    my ( $self, $params ) = @_;
384
    my $dbh = C4::Context->dbh;
392
385
    my $sql = q|
393
    my ( $cond, $attr, %pubhash );
386
SELECT id,hashvalue,filename,dir,filesize,uploadcategorycode,public,permanent,owner
394
    %pubhash = $self->{public}? ( public => 1 ): ();
387
FROM uploaded_files
388
    |;
389
    my @pars;
390
    if( $params->{id} ) {
395
    if( $params->{id} ) {
391
        return [] if $params->{id} !~ /^\d+(,\d+)*$/;
396
        return [] if $params->{id} !~ /^\d+(,\d+)*$/;
392
        $sql.= 'WHERE id IN ('.$params->{id}.')';
397
        $cond = { id => [ split ',', $params->{id} ], %pubhash };
393
        @pars = ();
394
    } elsif( $params->{hashvalue} ) {
398
    } elsif( $params->{hashvalue} ) {
395
        $sql.= 'WHERE hashvalue=?';
399
        $cond = { hashvalue => $params->{hashvalue}, %pubhash };
396
        @pars = ( $params->{hashvalue} );
397
    } elsif( $params->{term} ) {
400
    } elsif( $params->{term} ) {
398
        $sql.= 'WHERE (filename LIKE ? OR hashvalue LIKE ?)';
401
        $cond =
399
        @pars = ( '%'.$params->{term}.'%', '%'.$params->{term}.'%' );
402
            [ { filename => { like => '%'.$params->{term}.'%' }, %pubhash },
403
              { hashvalue => { like => '%'.$params->{term}.'%' }, %pubhash } ];
400
    } else {
404
    } else {
401
        return [];
405
        return [];
402
    }
406
    }
403
    $sql.= $self->{public}? ' AND public=1': '';
407
    $attr = { order_by => { -asc => 'id' }};
404
    $sql.= ' ORDER BY id';
408
405
    my $temp= $dbh->selectall_arrayref( $sql, { Slice => {} }, @pars );
409
    return Koha::UploadedFiles->search( $cond, $attr )->unblessed;
406
    return $temp;
410
    # Does always return an arrayref (perhaps an empty one)
407
}
411
}
408
412
409
sub _delete {
413
sub _delete {
410
- 

Return to bug 17501