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

(-)a/C4/Search.pm (-90 lines)
Lines 2285-2379 sub searchResults { Link Here
2285
    return @newresults;
2285
    return @newresults;
2286
}
2286
}
2287
2287
2288
=head2 SearchAcquisitions
2289
    Search for acquisitions
2290
=cut
2291
2292
sub SearchAcquisitions{
2293
    my ($datebegin, $dateend, $itemtypes,$criteria, $orderby) = @_;
2294
2295
    my $dbh=C4::Context->dbh;
2296
    # Variable initialization
2297
    my $str=qq|
2298
    SELECT marcxml
2299
    FROM biblio
2300
    LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
2301
    LEFT JOIN items ON items.biblionumber=biblio.biblionumber
2302
    WHERE dateaccessioned BETWEEN ? AND ?
2303
    |;
2304
2305
    my (@params,@loopcriteria);
2306
2307
    push @params, $datebegin->output("iso");
2308
    push @params, $dateend->output("iso");
2309
2310
    if (scalar(@$itemtypes)>0 and $criteria ne "itemtype" ){
2311
        if(C4::Context->preference("item-level_itypes")){
2312
            $str .= "AND items.itype IN (?".( ',?' x scalar @$itemtypes - 1 ).") ";
2313
        }else{
2314
            $str .= "AND biblioitems.itemtype IN (?".( ',?' x scalar @$itemtypes - 1 ).") ";
2315
        }
2316
        push @params, @$itemtypes;
2317
    }
2318
2319
    if ($criteria =~/itemtype/){
2320
        if(C4::Context->preference("item-level_itypes")){
2321
            $str .= "AND items.itype=? ";
2322
        }else{
2323
            $str .= "AND biblioitems.itemtype=? ";
2324
        }
2325
2326
        if(scalar(@$itemtypes) == 0){
2327
            my $itypes = GetItemTypes();
2328
            for my $key (keys %$itypes){
2329
                push @$itemtypes, $key;
2330
            }
2331
        }
2332
2333
        @loopcriteria= @$itemtypes;
2334
    }elsif ($criteria=~/itemcallnumber/){
2335
        $str .= "AND (items.itemcallnumber LIKE CONCAT(?,'%')
2336
                 OR items.itemcallnumber is NULL
2337
                 OR items.itemcallnumber = '')";
2338
2339
        @loopcriteria = ("AA".."ZZ", "") unless (scalar(@loopcriteria)>0);
2340
    }else {
2341
        $str .= "AND biblio.title LIKE CONCAT(?,'%') ";
2342
        @loopcriteria = ("A".."z") unless (scalar(@loopcriteria)>0);
2343
    }
2344
2345
    if ($orderby =~ /date_desc/){
2346
        $str.=" ORDER BY dateaccessioned DESC";
2347
    } else {
2348
        $str.=" ORDER BY title";
2349
    }
2350
2351
    my $qdataacquisitions=$dbh->prepare($str);
2352
2353
    my @loopacquisitions;
2354
    foreach my $value(@loopcriteria){
2355
        push @params,$value;
2356
        my %cell;
2357
        $cell{"title"}=$value;
2358
        $cell{"titlecode"}=$value;
2359
2360
        eval{$qdataacquisitions->execute(@params);};
2361
2362
        if ($@){ warn "recentacquisitions Error :$@";}
2363
        else {
2364
            my @loopdata;
2365
            while (my $data=$qdataacquisitions->fetchrow_hashref){
2366
                push @loopdata, {"summary"=>GetBiblioSummary( $data->{'marcxml'} ) };
2367
            }
2368
            $cell{"loopdata"}=\@loopdata;
2369
        }
2370
        push @loopacquisitions,\%cell if (scalar(@{$cell{loopdata}})>0);
2371
        pop @params;
2372
    }
2373
    $qdataacquisitions->finish;
2374
    return \@loopacquisitions;
2375
}
2376
2377
=head2 enabled_staff_search_views
2288
=head2 enabled_staff_search_views
2378
2289
2379
%hash = enabled_staff_search_views()
2290
%hash = enabled_staff_search_views()
2380
- 

Return to bug 17193