X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fcategorie.pl;h=952ef7a1fdac8b3eeef5d07d183cc0a8f6298559;hb=1e0b890b0c2b15217e0961341cef1d3e3922c2c4;hp=4a5d68390c021b75fe73df35dfc0e44eb21a3587;hpb=1a5270bdd05a3eb0c74dbee93c5b536ed3ef13b5;p=koha_fer diff --git a/admin/categorie.pl b/admin/categorie.pl index 4a5d68390c..952ef7a1fd 100755 --- a/admin/categorie.pl +++ b/admin/categorie.pl @@ -36,11 +36,12 @@ # with Koha; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; + use CGI; use C4::Context; use C4::Auth; +use C4::Branch; use C4::Output; use C4::Dates; use C4::Form::MessagingPreferences; @@ -73,7 +74,7 @@ my ($template, $loggedinuser, $cookie) query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => {parameters => 1}, + flagsrequired => {parameters => 'parameters_remaining_permissions'}, debug => 1, }); @@ -90,16 +91,34 @@ if ($op eq 'add_form') { #---- if primkey exists, it's a modify action, so read values to modify... my $data; + my @selected_branches; if ($categorycode) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?"); + my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); $sth->execute($categorycode); $data=$sth->fetchrow_hashref; - $sth->finish; - } + + $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM categories_branches AS cb, branches AS b WHERE cb.branchcode = b.branchcode AND cb.categorycode = ?"); + $sth->execute( $categorycode ); + while ( my $branch = $sth->fetchrow_hashref ) { + push @selected_branches, $branch; + } + $sth->finish; + } $data->{'enrolmentperioddate'} = undef if ($data->{'enrolmentperioddate'} eq '0000-00-00'); + my $branches = GetBranches; + my @branches_loop; + foreach my $branch (sort keys %$branches) { + my $selected = ( grep {$$_{branchcode} eq $branch} @selected_branches ) ? 1 : 0; + push @branches_loop, { + branchcode => $$branches{$branch}{branchcode}, + branchname => $$branches{$branch}{branchname}, + selected => $selected, + }; + } + $template->param(description => $data->{'description'}, enrolmentperiod => $data->{'enrolmentperiod'}, enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), @@ -109,9 +128,12 @@ if ($op eq 'add_form') { overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, reservefee => sprintf("%.2f",$data->{'reservefee'}), + hidelostitems => $data->{'hidelostitems'}, category_type => $data->{'category_type'}, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + SMSSendDriver => C4::Context->preference("SMSSendDriver"), + TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification"), "type_".$data->{'category_type'} => 1, + branches_loop => \@branches_loop, ); if (C4::Context->preference('EnhancedMessagingPreferences')) { C4::Form::MessagingPreferences::set_form_values({ categorycode => $categorycode } , $template); @@ -128,12 +150,28 @@ if ($op eq 'add_form') { } if ($is_a_modif) { - my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,overduenoticerequired=?,category_type=? WHERE categorycode=?"); - $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired','category_type','categorycode')); + my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,hidelostitems=?,overduenoticerequired=?,category_type=? WHERE categorycode=?"); + $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type','categorycode')); + my @branches = $input->param("branches"); + if ( @branches ) { + $sth = $dbh->prepare("DELETE FROM categories_branches WHERE categorycode = ?"); + $sth->execute( $input->param( "categorycode" ) ); + $sth = $dbh->prepare( + "INSERT INTO categories_branches + ( categorycode, branchcode ) + VALUES ( ?, ? )" + ); + for my $branchcode ( @branches ) { + next if not $branchcode; + $sth->bind_param( 1, $input->param( "categorycode" ) ); + $sth->bind_param( 2, $branchcode ); + $sth->execute; + } + } $sth->finish; } else { - my $sth=$dbh->prepare("INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?)"); - $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','overduenoticerequired','category_type')); + my $sth=$dbh->prepare("INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,hidelostitems,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?,?)"); + $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type')); $sth->finish; } if (C4::Context->preference('EnhancedMessagingPreferences')) { @@ -156,7 +194,7 @@ if ($op eq 'add_form') { $sth->finish; $template->param(total => $total->{'total'}); - my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,overduenoticerequired,category_type from categories where categorycode=?"); + my $sth2=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); $sth2->execute($categorycode); my $data=$sth2->fetchrow_hashref; $sth2->finish; @@ -173,6 +211,7 @@ if ($op eq 'add_form') { overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, reservefee => sprintf("%.2f",$data->{'reservefee'}), + hidelostitems => $data->{'hidelostitems'}, category_type => $data->{'category_type'}, ); # END $OP eq DELETE_CONFIRM @@ -193,7 +232,14 @@ if ($op eq 'add_form') { $template->param(else => 1); my @loop; my ($count,$results)=StringSearch($searchfield,'web'); + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM categories_branches AS cb, branches AS b WHERE cb.branchcode = b.branchcode AND cb.categorycode = ?"); for (my $i=0; $i < $count; $i++){ + $sth->execute( $results->[$i]{'categorycode'} ); + my @selected_branches; + while ( my $branch = $sth->fetchrow_hashref ) { + push @selected_branches, $branch; + } my %row = ( categorycode => $results->[$i]{'categorycode'}, description => $results->[$i]{'description'}, @@ -205,8 +251,11 @@ if ($op eq 'add_form') { overduenoticerequired => $results->[$i]{'overduenoticerequired'}, issuelimit => $results->[$i]{'issuelimit'}, reservefee => sprintf("%.2f",$results->[$i]{'reservefee'}), + hidelostitems => $results->[$i]{'hidelostitems'}, category_type => $results->[$i]{'category_type'}, - "type_".$results->[$i]{'category_type'} => 1); + "type_".$results->[$i]{'category_type'} => 1, + branches => \@selected_branches, + ); if (C4::Context->preference('EnhancedMessagingPreferences')) { my $brief_prefs = _get_brief_messaging_prefs($results->[$i]{'categorycode'}); $row{messaging_prefs} = $brief_prefs if @$brief_prefs; @@ -215,8 +264,7 @@ if ($op eq 'add_form') { } $template->param(loop => \@loop); # check that I (institution) and C (child) exists. otherwise => warning to the user - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select category_type from categories where category_type='C'"); + $sth=$dbh->prepare("select category_type from categories where category_type='C'"); $sth->execute; my ($categoryChild) = $sth->fetchrow; $template->param(categoryChild => $categoryChild); @@ -245,7 +293,7 @@ sub _get_brief_messaging_prefs { message_name => $option->{'message_name'}, $option->{'message_name'} => 1 }; - foreach my $transport ( @{$pref->{'transports'}} ) { + foreach my $transport ( keys %{$pref->{'transports'}} ) { push @{ $brief_pref->{'transports'} }, { transport => $transport }; } push @$results, $brief_pref;