|
Lines 298-304
sub EnableOrDisableCourseItem {
Link Here
|
| 298 |
|
298 |
|
| 299 |
my $course_item = GetCourseItem( ci_id => $ci_id ); |
299 |
my $course_item = GetCourseItem( ci_id => $ci_id ); |
| 300 |
|
300 |
|
| 301 |
my $info = GetItemCourseReservesInfo( itemnumber => $course_item->{itemnumber} ); |
301 |
my $info = $course_item->{itemnumber} ? GetItemCourseReservesInfo( itemnumber => $course_item->{itemnumber} ) : GetItemCourseReservesInfo( biblionumber => $course_item->{biblionumber} ); |
| 302 |
|
302 |
|
| 303 |
my $enabled = any { $_->{course}->{enabled} eq 'yes' } @$info; |
303 |
my $enabled = any { $_->{course}->{enabled} eq 'yes' } @$info; |
| 304 |
$enabled = $enabled ? 'yes' : 'no'; |
304 |
$enabled = $enabled ? 'yes' : 'no'; |
|
Lines 424-434
sub GetCourseItem {
Link Here
|
| 424 |
|
424 |
|
| 425 |
my $ci_id = $params{'ci_id'}; |
425 |
my $ci_id = $params{'ci_id'}; |
| 426 |
my $itemnumber = $params{'itemnumber'}; |
426 |
my $itemnumber = $params{'itemnumber'}; |
|
|
427 |
my $biblionumber = $params{'biblionumber'}; |
| 427 |
|
428 |
|
| 428 |
return unless ( $itemnumber || $ci_id ); |
429 |
return unless ( $itemnumber || $biblionumber || $ci_id ); |
| 429 |
|
430 |
|
| 430 |
my $field = ($itemnumber) ? 'itemnumber' : 'ci_id'; |
431 |
my ( $field, $value ); |
| 431 |
my $value = ($itemnumber) ? $itemnumber : $ci_id; |
432 |
if ( $itemnumber ) { |
|
|
433 |
$field = 'itemnumber'; |
| 434 |
$value = $itemnumber; |
| 435 |
} elsif ( $biblionumber ) { |
| 436 |
$field = 'biblionumber'; |
| 437 |
$value = $biblionumber; |
| 438 |
} else { |
| 439 |
$field = 'ci_id'; |
| 440 |
$value = $ci_id; |
| 441 |
} |
| 432 |
|
442 |
|
| 433 |
my $query = "SELECT * FROM course_items WHERE $field = ?"; |
443 |
my $query = "SELECT * FROM course_items WHERE $field = ?"; |
| 434 |
my $dbh = C4::Context->dbh; |
444 |
my $dbh = C4::Context->dbh; |
|
Lines 462-471
sub ModCourseItem {
Link Here
|
| 462 |
warn identify_myself(%params) if $DEBUG; |
472 |
warn identify_myself(%params) if $DEBUG; |
| 463 |
|
473 |
|
| 464 |
my $itemnumber = $params{'itemnumber'}; |
474 |
my $itemnumber = $params{'itemnumber'}; |
|
|
475 |
my $biblionumber = $params{'biblionumber'}; |
| 465 |
|
476 |
|
| 466 |
return unless ($itemnumber); |
477 |
return unless ($itemnumber || $biblionumber); |
| 467 |
|
478 |
|
| 468 |
my $course_item = GetCourseItem( itemnumber => $itemnumber ); |
479 |
my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber ); |
|
|
480 |
|
| 481 |
if ( $itemnumber and !$biblionumber ) { |
| 482 |
$biblionumber = Koha::Items->find( $itemnumber )->biblionumber; |
| 483 |
$params{biblionumber} = $biblionumber; |
| 484 |
} |
| 469 |
|
485 |
|
| 470 |
my $ci_id; |
486 |
my $ci_id; |
| 471 |
|
487 |
|
|
Lines 504-509
sub _AddCourseItem {
Link Here
|
| 504 |
my $ci = Koha::Course::Item->new( |
520 |
my $ci = Koha::Course::Item->new( |
| 505 |
{ |
521 |
{ |
| 506 |
itemnumber => $params{itemnumber}, |
522 |
itemnumber => $params{itemnumber}, |
|
|
523 |
biblionumber => $params{biblionumber}, |
| 507 |
%data, |
524 |
%data, |
| 508 |
%enabled, |
525 |
%enabled, |
| 509 |
} |
526 |
} |
|
Lines 535-570
sub _UpdateCourseItem {
Link Here
|
| 535 |
my %data = map { $_ => $params{$_} } @FIELDS; |
552 |
my %data = map { $_ => $params{$_} } @FIELDS; |
| 536 |
my %enabled = map { $_ . "_enabled" => $params{ $_ . "_enabled" } } @FIELDS; |
553 |
my %enabled = map { $_ . "_enabled" => $params{ $_ . "_enabled" } } @FIELDS; |
| 537 |
|
554 |
|
| 538 |
my $item = Koha::Items->find( $course_item->itemnumber ); |
555 |
if ( $course_item->itemnumber ) { |
| 539 |
|
556 |
# biblio-level course items don't store any of these fields |
| 540 |
# Handle updates to changed fields for a course item, both adding and removing |
557 |
my $item = Koha::Items->find( $course_item->itemnumber ); |
| 541 |
if ( $course_item->is_enabled ) { |
558 |
|
| 542 |
my $item_fields = {}; |
559 |
# Handle updates to changed fields for a course item, both adding and removing |
| 543 |
|
560 |
if ( $course_item->is_enabled ) { |
| 544 |
for my $field ( @FIELDS ) { |
561 |
my $item_fields = {}; |
| 545 |
|
562 |
|
| 546 |
my $field_enabled = $field . '_enabled'; |
563 |
for my $field ( @FIELDS ) { |
| 547 |
my $field_storage = $field . '_storage'; |
564 |
|
| 548 |
|
565 |
my $field_enabled = $field . '_enabled'; |
| 549 |
# Find newly enabled field and add item value to storage |
566 |
my $field_storage = $field . '_storage'; |
| 550 |
if ( $params{$field_enabled} && !$course_item->$field_enabled ) { |
567 |
|
| 551 |
$enabled{$field_storage} = $item->$field; |
568 |
# Find newly enabled field and add item value to storage |
| 552 |
$item_fields->{$field} = $params{$field}; |
569 |
if ( $params{$field_enabled} && !$course_item->$field_enabled ) { |
| 553 |
} |
570 |
$enabled{$field_storage} = $item->$field; |
| 554 |
# Find newly disabled field and copy the storage value to the item, unset storage value |
571 |
$item_fields->{$field} = $params{$field}; |
| 555 |
elsif ( !$params{$field_enabled} && $course_item->$field_enabled ) { |
572 |
} |
| 556 |
$item_fields->{$field} = $course_item->$field_storage; |
573 |
# Find newly disabled field and copy the storage value to the item, unset storage value |
| 557 |
$enabled{$field_storage} = undef; |
574 |
elsif ( !$params{$field_enabled} && $course_item->$field_enabled ) { |
| 558 |
} |
575 |
$item_fields->{$field} = $course_item->$field_storage; |
| 559 |
# The field was already enabled, copy the incoming value to the item. |
576 |
$enabled{$field_storage} = undef; |
| 560 |
# The "original" ( when not on course reserve ) value is already in the storage field |
577 |
} |
| 561 |
elsif ( $course_item->$field_enabled) { |
578 |
# The field was already enabled, copy the incoming value to the item. |
| 562 |
$item_fields->{$field} = $params{$field}; |
579 |
# The "original" ( when not on course reserve ) value is already in the storage field |
|
|
580 |
elsif ( $course_item->$field_enabled) { |
| 581 |
$item_fields->{$field} = $params{$field}; |
| 582 |
} |
| 563 |
} |
583 |
} |
| 564 |
} |
|
|
| 565 |
|
584 |
|
| 566 |
$item->set( $item_fields )->store |
585 |
$item->set( $item_fields )->store |
| 567 |
if keys %$item_fields; |
586 |
if keys %$item_fields; |
|
|
587 |
} |
| 568 |
} |
588 |
} |
| 569 |
|
589 |
|
| 570 |
$course_item->update( { %data, %enabled } ); |
590 |
$course_item->update( { %data, %enabled } ); |
|
Lines 850-856
sub GetCourseReserves {
Link Here
|
| 850 |
my $value = ($course_id) ? $course_id : $ci_id; |
870 |
my $value = ($course_id) ? $course_id : $ci_id; |
| 851 |
|
871 |
|
| 852 |
my $query = " |
872 |
my $query = " |
| 853 |
SELECT cr.*, ci.itemnumber |
873 |
SELECT cr.*, ci.itemnumber, ci.biblionumber |
| 854 |
FROM course_reserves cr, course_items ci |
874 |
FROM course_reserves cr, course_items ci |
| 855 |
WHERE cr.$field = ? |
875 |
WHERE cr.$field = ? |
| 856 |
AND cr.ci_id = ci.ci_id |
876 |
AND cr.ci_id = ci.ci_id |
|
Lines 864-870
sub GetCourseReserves {
Link Here
|
| 864 |
if ($include_items) { |
884 |
if ($include_items) { |
| 865 |
foreach my $cr (@$course_reserves) { |
885 |
foreach my $cr (@$course_reserves) { |
| 866 |
my $item = Koha::Items->find( $cr->{itemnumber} ); |
886 |
my $item = Koha::Items->find( $cr->{itemnumber} ); |
| 867 |
my $biblio = $item->biblio; |
887 |
my $biblio = $cr->{itemnumber} ? $item->biblio : Koha::Biblios->find( $cr->{biblionumber} ); |
| 868 |
my $biblioitem = $biblio->biblioitem; |
888 |
my $biblioitem = $biblio->biblioitem; |
| 869 |
$cr->{'course_item'} = GetCourseItem( ci_id => $cr->{'ci_id'} ); |
889 |
$cr->{'course_item'} = GetCourseItem( ci_id => $cr->{'ci_id'} ); |
| 870 |
$cr->{'item'} = $item; |
890 |
$cr->{'item'} = $item; |
|
Lines 882-888
sub GetCourseReserves {
Link Here
|
| 882 |
|
902 |
|
| 883 |
if ($include_courses) { |
903 |
if ($include_courses) { |
| 884 |
foreach my $cr (@$course_reserves) { |
904 |
foreach my $cr (@$course_reserves) { |
| 885 |
$cr->{'courses'} = GetCourses( itemnumber => $cr->{'itemnumber'} ); |
905 |
$cr->{'courses'} = $cr->{itemnumber} ? GetCourses( itemnumber => $cr->{'itemnumber'} ) : GetCourses( biblionumber => $cr->{biblionumber} ); |
| 886 |
} |
906 |
} |
| 887 |
} |
907 |
} |
| 888 |
|
908 |
|
|
Lines 924-929
sub DelCourseReserve {
Link Here
|
| 924 |
=head2 GetItemCourseReservesInfo |
944 |
=head2 GetItemCourseReservesInfo |
| 925 |
|
945 |
|
| 926 |
my $arrayref = GetItemCourseReservesInfo( itemnumber => $itemnumber ); |
946 |
my $arrayref = GetItemCourseReservesInfo( itemnumber => $itemnumber ); |
|
|
947 |
my $arrayref = GetItemCourseReservesInfo( biblionumber => $biblionumber ); |
| 927 |
|
948 |
|
| 928 |
For a given item, returns an arrayref of reserves hashrefs, |
949 |
For a given item, returns an arrayref of reserves hashrefs, |
| 929 |
with a course hashref under the key 'course' |
950 |
with a course hashref under the key 'course' |
|
Lines 935-944
sub GetItemCourseReservesInfo {
Link Here
|
| 935 |
warn identify_myself(%params) if $DEBUG; |
956 |
warn identify_myself(%params) if $DEBUG; |
| 936 |
|
957 |
|
| 937 |
my $itemnumber = $params{'itemnumber'}; |
958 |
my $itemnumber = $params{'itemnumber'}; |
|
|
959 |
my $biblionumber = $params{'biblionumber'}; |
| 938 |
|
960 |
|
| 939 |
return unless ($itemnumber); |
961 |
return unless ($itemnumber || $biblionumber); |
| 940 |
|
962 |
|
| 941 |
my $course_item = GetCourseItem( itemnumber => $itemnumber ); |
963 |
my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber ); |
| 942 |
|
964 |
|
| 943 |
return unless ( keys %$course_item ); |
965 |
return unless ( keys %$course_item ); |
| 944 |
|
966 |
|
|
Lines 958-963
sub GetItemCourseReservesInfo {
Link Here
|
| 958 |
ci_id - course_item id |
980 |
ci_id - course_item id |
| 959 |
OR |
981 |
OR |
| 960 |
itemnumber - course_item itemnumber |
982 |
itemnumber - course_item itemnumber |
|
|
983 |
OR |
| 984 |
biblionumber - course_item biblionumber |
| 961 |
|
985 |
|
| 962 |
enabled = 'yes' or 'no' |
986 |
enabled = 'yes' or 'no' |
| 963 |
Optional, if not supplied, counts reserves |
987 |
Optional, if not supplied, counts reserves |
|
Lines 972-981
sub CountCourseReservesForItem {
Link Here
|
| 972 |
my $ci_id = $params{'ci_id'}; |
996 |
my $ci_id = $params{'ci_id'}; |
| 973 |
my $itemnumber = $params{'itemnumber'}; |
997 |
my $itemnumber = $params{'itemnumber'}; |
| 974 |
my $enabled = $params{'enabled'}; |
998 |
my $enabled = $params{'enabled'}; |
|
|
999 |
my $biblionumber = $params{'biblionumber'}; |
| 975 |
|
1000 |
|
| 976 |
return unless ( $ci_id || $itemnumber ); |
1001 |
return unless ( $ci_id || ( $itemnumber || $biblionumber ) ); |
| 977 |
|
1002 |
|
| 978 |
my $course_item = GetCourseItem( ci_id => $ci_id, itemnumber => $itemnumber ); |
1003 |
my $course_item = $itemnumber ? GetCourseItem( ci_id => $ci_id, itemnumber => $itemnumber ) : GetCourseItem( ci_id => $ci_id, biblionumber => $biblionumber ); |
| 979 |
|
1004 |
|
| 980 |
my @params = ( $course_item->{'ci_id'} ); |
1005 |
my @params = ( $course_item->{'ci_id'} ); |
| 981 |
push( @params, $enabled ) if ($enabled); |
1006 |
push( @params, $enabled ) if ($enabled); |