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); |