From c0977360848fe7d5edd0050c00b5b246d1e7e211 Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Sat, 26 Dec 2009 22:23:05 +1300 Subject: [PATCH] Fix for bug 2885, now an error message is thrown instead of a silent fail Signed-off-by: Galen Charlton --- C4/Branch.pm | 47 ++++++++++++++----- admin/branches.pl | 9 ++++ .../prog/en/modules/admin/branches.tmpl | 2 +- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/C4/Branch.pm b/C4/Branch.pm index 34f716ab77..a6b1a3aef0 100644 --- a/C4/Branch.pm +++ b/C4/Branch.pm @@ -44,6 +44,7 @@ BEGIN { &ModBranchCategoryInfo &DelBranch &DelBranchCategory + &CheckCategoryUnique ); @EXPORT_OK = qw( &onlymine &mybranch get_branch_code_from_name ); } @@ -526,20 +527,42 @@ sets the data from the editbranch form, and writes to the database... sub ModBranchCategoryInfo { my ($data) = @_; my $dbh = C4::Context->dbh; - if ($data->{'add'}){ - # we are doing an insert - my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)"); - $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} ); - $sth->finish(); - } - else { - # modifying - my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?"); - $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) ); - $sth->finish(); - } + if ($data->{'add'}){ + # we are doing an insert + my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)"); + $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} ); + $sth->finish(); + } + else { + # modifying + my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?"); + $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) ); + $sth->finish(); + } +} + +=head2 CheckCategoryUnique + +if (CheckCategoryUnique($categorycode)){ + # do something } +=cut + +sub CheckCategoryUnique { + my $categorycode = shift; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("SELECT categorycode FROM branchcategories WHERE categorycode = ?"); + $sth->execute(uc( $categorycode) ); + if (my $data = $sth->fetchrow_hashref){ + return 0; + } + else { + return 1; + } +} + + =head2 DeleteBranchCategory DeleteBranchCategory($categorycode); diff --git a/admin/branches.pl b/admin/branches.pl index 744ccfbd0c..1d6b1881ad 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -151,6 +151,15 @@ elsif ( $op eq 'addcategory_validate' ) { unless ( $params->{'categorycode'} && $params->{'categoryname'} ) { default("MESSAGE4",$template); } + elsif ($input->param('add')){ + # doing an add must check the code is unique + if (CheckCategoryUnique($input->param('categorycode'))){ + ModBranchCategoryInfo($params); + } + else { + default("MESSAGE9",$template); + } + } else { ModBranchCategoryInfo($params); default("MESSAGE5",$template); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tmpl index de96c186df..e05024eda0 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tmpl @@ -158,7 +158,7 @@
Library category deleted
Library cannot be deleted because there are patrons or items using that library
Category cannot be deleted because there are libraries using that category
- +
Category cannot be added, categorycode already exists
-- 2.39.5