Bugzilla – Attachment 23516 Details for
Bug 6254
Set default for privacy by patron category
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 6254 - can't set patron privacy by default
Bug-6254---cant-set-patron-privacy-by-default.patch (text/plain), 13.28 KB, created by
Kyle M Hall (khall)
on 2013-12-13 14:53:14 UTC
(
hide
)
Description:
Bug 6254 - can't set patron privacy by default
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2013-12-13 14:53:14 UTC
Size:
13.28 KB
patch
obsolete
>From 450c0fddc2110520fca026e6022ce64ac9fa0b6e Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Thu, 5 Dec 2013 07:35:00 -0500 >Subject: [PATCH] Bug 6254 - can't set patron privacy by default > >There is currently no way to set the privacy setting for newly created >patrons. This patch adds a new field "default privacy" to the patron >categories such that each patron category may have a different default >privacy setting. > >Test Plan: >1) Apply this patch >2) Edit a patron category, change the default privacy to "forever" >3) Create a new patron of that category >4) Log into the catalog as that patron, verify the privacy setting > is set to "forever" >5) Repeat steps 2-4 with the settings "never" and "default" >--- > C4/Members.pm | 10 ++++ > Koha/Schema/Result/Category.pm | 44 ++++++++--------- > admin/categorie.pl | 49 ++++++++++--------- > installer/data/mysql/kohastructure.sql | 1 + > installer/data/mysql/updatedatabase.pl | 6 ++ > .../prog/en/modules/admin/categorie.tt | 20 ++++++++ > 6 files changed, 84 insertions(+), 46 deletions(-) > >diff --git a/C4/Members.pm b/C4/Members.pm >index b04cc64..06e5c34 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -41,6 +41,7 @@ use Koha::DateUtils; > use Koha::Borrower::Debarments qw(IsDebarred); > use Text::Unaccent qw( unac_string ); > use Koha::AuthUtils qw(hash_password); >+use Koha::Database; > > our ($VERSION,@ISA,@EXPORT,@EXPORT_OK,$debug); > >@@ -807,6 +808,15 @@ sub AddMember { > $data{'dateenrolled'} = C4::Dates->new()->output("iso"); > } > >+ my $patron_category = >+ Koha::Database->new()->schema()->resultset('Category') >+ ->find( $data{'categorycode'} ); >+ $data{'privacy'} = >+ $patron_category->default_privacy() eq 'default' ? 1 >+ : $patron_category->default_privacy() eq 'never' ? 2 >+ : $patron_category->default_privacy() eq 'forever' ? 0 >+ : undef; >+ > # create a disabled account if no password provided > $data{'password'} = ($data{'password'})? hash_password($data{'password'}) : '!'; > $data{'borrowernumber'}=InsertInTable("borrowers",\%data); >diff --git a/Koha/Schema/Result/Category.pm b/Koha/Schema/Result/Category.pm >index 12ac12f..b6de4b9 100644 >--- a/Koha/Schema/Result/Category.pm >+++ b/Koha/Schema/Result/Category.pm >@@ -1,21 +1,17 @@ >-use utf8; > package Koha::Schema::Result::Category; > > # Created by DBIx::Class::Schema::Loader > # DO NOT MODIFY THE FIRST PART OF THIS FILE > >-=head1 NAME >- >-Koha::Schema::Result::Category >- >-=cut >- > use strict; > use warnings; > > use base 'DBIx::Class::Core'; > >-=head1 TABLE: C<categories> >+ >+=head1 NAME >+ >+Koha::Schema::Result::Category > > =cut > >@@ -43,7 +39,6 @@ __PACKAGE__->table("categories"); > =head2 enrolmentperioddate > > data_type: 'date' >- datetime_undef_if_invalid: 1 > is_nullable: 1 > > =head2 upperagelimit >@@ -102,6 +97,13 @@ __PACKAGE__->table("categories"); > is_nullable: 0 > size: 1 > >+=head2 default_privacy >+ >+ data_type: 'enum' >+ default_value: 'default' >+ extra: {list => ["default","never","forever"]} >+ is_nullable: 0 >+ > =cut > > __PACKAGE__->add_columns( >@@ -112,7 +114,7 @@ __PACKAGE__->add_columns( > "enrolmentperiod", > { data_type => "smallint", is_nullable => 1 }, > "enrolmentperioddate", >- { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 }, >+ { data_type => "date", is_nullable => 1 }, > "upperagelimit", > { data_type => "smallint", is_nullable => 1 }, > "dateofbirthrequired", >@@ -133,18 +135,14 @@ __PACKAGE__->add_columns( > { data_type => "tinyint", default_value => 0, is_nullable => 0 }, > "category_type", > { data_type => "varchar", default_value => "A", is_nullable => 0, size => 1 }, >+ "default_privacy", >+ { >+ data_type => "enum", >+ default_value => "default", >+ extra => { list => ["default", "never", "forever"] }, >+ is_nullable => 0, >+ }, > ); >- >-=head1 PRIMARY KEY >- >-=over 4 >- >-=item * L</categorycode> >- >-=back >- >-=cut >- > __PACKAGE__->set_primary_key("categorycode"); > > =head1 RELATIONS >@@ -225,8 +223,8 @@ __PACKAGE__->might_have( > ); > > >-# Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21 >-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:lert5/PnaztNZ9rmoGc2Gg >+# Created by DBIx::Class::Schema::Loader v0.07000 @ 2013-12-05 08:14:03 >+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fQEm4xRLHEY1L2/KqCzi0Q > > > # You can replace this text with custom content, and it will be preserved on regeneration >diff --git a/admin/categorie.pl b/admin/categorie.pl >index 952ef7a..abd73f8 100755 >--- a/admin/categorie.pl >+++ b/admin/categorie.pl >@@ -94,7 +94,7 @@ if ($op eq 'add_form') { > my @selected_branches; > if ($categorycode) { > my $dbh = C4::Context->dbh; >- my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); >+ my $sth=$dbh->prepare("SELECT * FROM categories WHERE categorycode = ?"); > $sth->execute($categorycode); > $data=$sth->fetchrow_hashref; > >@@ -119,22 +119,27 @@ if ($op eq 'add_form') { > }; > } > >- $template->param(description => $data->{'description'}, >- enrolmentperiod => $data->{'enrolmentperiod'}, >- enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), >- upperagelimit => $data->{'upperagelimit'}, >- dateofbirthrequired => $data->{'dateofbirthrequired'}, >- enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), >- overduenoticerequired => $data->{'overduenoticerequired'}, >- issuelimit => $data->{'issuelimit'}, >- reservefee => sprintf("%.2f",$data->{'reservefee'}), >- hidelostitems => $data->{'hidelostitems'}, >- category_type => $data->{'category_type'}, >- SMSSendDriver => C4::Context->preference("SMSSendDriver"), >- TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification"), >- "type_".$data->{'category_type'} => 1, >- branches_loop => \@branches_loop, >- ); >+ $template->param( >+ description => $data->{'description'}, >+ upperagelimit => $data->{'upperagelimit'}, >+ dateofbirthrequired => $data->{'dateofbirthrequired'}, >+ enrolmentfee => sprintf( "%.2f", $data->{'enrolmentfee'} ), >+ overduenoticerequired => $data->{'overduenoticerequired'}, >+ issuelimit => $data->{'issuelimit'}, >+ reservefee => sprintf( "%.2f", $data->{'reservefee'} ), >+ hidelostitems => $data->{'hidelostitems'}, >+ category_type => $data->{'category_type'}, >+ SMSSendDriver => C4::Context->preference("SMSSendDriver"), >+ branches_loop => \@branches_loop, >+ default_privacy => $data->{'default_privacy'}, >+ enrolmentperiod => $data->{'enrolmentperiod'}, >+ enrolmentperioddate => >+ C4::Dates::format_date( $data->{'enrolmentperioddate'} ), >+ TalkingTechItivaPhone => >+ C4::Context->preference("TalkingTechItivaPhoneNotification"), >+ "type_" . $data->{'category_type'} => 1, >+ ); >+ > if (C4::Context->preference('EnhancedMessagingPreferences')) { > C4::Form::MessagingPreferences::set_form_values({ categorycode => $categorycode } , $template); > } >@@ -150,8 +155,8 @@ if ($op eq 'add_form') { > } > > if ($is_a_modif) { >- 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 $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,hidelostitems=?,overduenoticerequired=?,category_type=?, default_privacy=? WHERE categorycode=?"); >+ $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type','default_privacy','categorycode')); > my @branches = $input->param("branches"); > if ( @branches ) { > $sth = $dbh->prepare("DELETE FROM categories_branches WHERE categorycode = ?"); >@@ -168,11 +173,9 @@ if ($op eq 'add_form') { > $sth->execute; > } > } >- $sth->finish; > } else { >- 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; >+ my $sth=$dbh->prepare("INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,hidelostitems,overduenoticerequired,category_type,default_privacy) values (?,?,?,?,?,?,?,?,?,?,?,?)"); >+ $sth->execute(map { $input->param($_) } ('categorycode','description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type', 'default_privacy')); > } > if (C4::Context->preference('EnhancedMessagingPreferences')) { > C4::Form::MessagingPreferences::handle_form_action($input, >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 07160c8..31bf032 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -463,6 +463,7 @@ CREATE TABLE `categories` ( -- this table shows information related to Koha patr > `reservefee` decimal(28,6) default NULL, -- cost to place holds > `hidelostitems` tinyint(1) NOT NULL default '0', -- are lost items shown to this category (1 for yes, 0 for no) > `category_type` varchar(1) NOT NULL default 'A', -- type of Koha patron (Adult, Child, Professional, Organizational, Statistical, Staff) >+ `default_privacy` ENUM( 'default', 'never', 'forever' ) NOT NULL DEFAULT 'default', -- Default privacy setting for this patron category > PRIMARY KEY (`categorycode`), > UNIQUE KEY `categorycode` (`categorycode`) > ) ENGINE=InnoDB DEFAULT CHARSET=utf8; >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 19893b4..1e2cf47 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -7824,6 +7824,12 @@ if ( CheckVersion($DBversion) ) { > SetVersion($DBversion); > } > >+$DBversion = "3.15.00.XXX"; >+if(CheckVersion($DBversion)) { >+ $dbh->do("ALTER TABLE categories ADD default_privacy ENUM( 'default', 'never', 'forever' ) NOT NULL DEFAULT 'default'"); >+ print "Upgrade to $DBversion done (Bug 6254 - can't set patron privacy by default)\n"; >+ SetVersion($DBversion); >+} > > =head1 FUNCTIONS > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >index d1c2e4c..56b667a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >@@ -203,6 +203,26 @@ > <span>Select All if this category type must to be displayed all the time. Otherwise select librairies you want to associate with this value. > </span> > </li> >+ <li> >+ <label for="default_privacy">Default privacy: </label> >+ <select id="default_privacy" name="default_privacy"> >+ [% SWITCH default_privacy %] >+ [% CASE 'forever' %] >+ <option value="default">Default</option> >+ <option value="never">Never</option> >+ <option value="forever" selected="selected">Forever</option> >+ [% CASE 'never' %] >+ <option value="default">Default</option> >+ <option value="never" selected="selected">Never</option> >+ <option value="forever">Forever</option> >+ [% CASE %] >+ <option value="default" selected="selected">Default</option> >+ <option value="never">Never</option> >+ <option value="forever">Forever</option> >+ [% END %] >+ </select> >+ <span>Controls how long a patrons checkout history is kept for new patrons of this category. "Default" lets the library decide, "Never" anonymizes checkouts on return, and "Forever" keeps a patron's checkout history indefinitely.</span> >+ </li> > </ol> > </fieldset> > >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6254
:
19131
|
19132
|
19133
|
19272
|
19631
|
23309
|
23310
|
23317
|
23516
|
23520
|
23983
|
23985
|
23986
|
23987
|
24606
|
24696
|
24697
|
24698
|
24699
|
28033
|
28034
|
28035
|
28036