From 0105fefc72dff3f36e274c4ce3c01f835762ab62 Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Thu, 2 Feb 2023 01:36:25 +0000 Subject: [PATCH] Bug 30928: Add interface column: DB update, schema changes, and UpdateStats --- C4/Circulation.pm | 6 +++++- C4/Stats.pm | 7 +++++-- Koha/Schema/Result/Statistic.pm | 10 ++++++++++ installer/data/mysql/atomicupdate/bug_30928.pl | 18 ++++++++++++++++++ installer/data/mysql/kohastructure.sql | 1 + 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_30928.pl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 6fcd4918200..b253f36217d 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -824,6 +824,7 @@ sub CanBookBeIssued { borrowernumber => $patron->borrowernumber, ccode => $item_object->ccode, categorycode => $patron->categorycode, + interface => C4::Context->interface, } ); ModDateLastSeen( $item_object->itemnumber ); # FIXME Move to Koha::Item @@ -1753,7 +1754,8 @@ sub AddIssue { location => $item_object->location, borrowernumber => $borrower->{'borrowernumber'}, ccode => $item_object->ccode, - categorycode => $borrower->{'categorycode'} + categorycode => $borrower->{'categorycode'}, + interface => C4::Context->interface, } ); @@ -2379,6 +2381,7 @@ sub AddReturn { borrowernumber => $borrowernumber, ccode => $item->ccode, categorycode => $categorycode, + interface => C4::Context->interface, }); # Send a check-in slip. # NOTE: borrower may be undef. Do not try to send messages then. @@ -3222,6 +3225,7 @@ sub AddRenewal { borrowernumber => $borrowernumber, ccode => $item_object->ccode, categorycode => $patron->categorycode, + interface => C4::Context->interface, } ); diff --git a/C4/Stats.pm b/C4/Stats.pm index a833ba2e927..f8f1aa03a82 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -65,7 +65,8 @@ C<$params> is an hashref whose expected keys are: other : sipmode itemtype : the type of the item ccode : the collection code of the item - categorycode : the categorycode of the patron + categorycode : the categorycode of the patron + interface : the context this action was taken in type key is mandatory. For types used in C4::Circulation (renew,issue,localuse,return), the following other keys are mandatory: @@ -83,7 +84,7 @@ sub UpdateStats { # make some controls return () if ! defined $params; # change these arrays if new types of transaction or new parameters are allowed - my @allowed_keys = qw (type branch amount other itemnumber itemtype borrowernumber ccode location categorycode); + my @allowed_keys = qw (type branch amount other itemnumber itemtype borrowernumber ccode location categorycode interface); my @allowed_circulation_types = qw (renew issue localuse return onsite_checkout recall); my @allowed_accounts_types = qw (writeoff payment); my @circulation_mandatory_keys = qw (type branch borrowernumber itemnumber ccode itemtype); @@ -125,6 +126,7 @@ sub UpdateStats { my $location = exists $params->{location} ? $params->{location} : undef; my $ccode = exists $params->{ccode} ? $params->{ccode} : ''; my $categorycode = exists $params->{categorycode} ? $params->{categorycode} : undef; + my $interface = exists $params->{interface} ? $params->{interface} : undef; my $dtf = Koha::Database->new->schema->storage->datetime_parser; my $statistic = Koha::Statistic->new( @@ -140,6 +142,7 @@ sub UpdateStats { borrowernumber => $borrowernumber, ccode => $ccode, categorycode => $categorycode, + interface => $interface, } )->store; diff --git a/Koha/Schema/Result/Statistic.pm b/Koha/Schema/Result/Statistic.pm index e6096eae2b6..6477af1aabe 100644 --- a/Koha/Schema/Result/Statistic.pm +++ b/Koha/Schema/Result/Statistic.pm @@ -108,6 +108,14 @@ foreign key from the items table, links transaction to a specific collection cod foreign key from the borrowers table, links transaction to a specific borrower category +=head2 interface + + data_type: 'varchar' + is_nullable: 1 + size: 30 + +interface acted upon + =cut __PACKAGE__->add_columns( @@ -137,6 +145,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 80 }, "categorycode", { data_type => "varchar", is_nullable => 1, size => 10 }, + "interface", + { data_type => "varchar", is_nullable => 1, size => 30 }, ); diff --git a/installer/data/mysql/atomicupdate/bug_30928.pl b/installer/data/mysql/atomicupdate/bug_30928.pl new file mode 100755 index 00000000000..726c9c2452f --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_30928.pl @@ -0,0 +1,18 @@ +use Modern::Perl; +return { + bug_number => "30928", + description => "Add interface field to statistics table", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + if( !column_exists( 'statistics', 'interface' ) ) { + $dbh->do(q{ + ALTER TABLE statistics + ADD COLUMN interface varchar(30) NULL DEFAULT NULL + COMMENT "interface" + AFTER categorycode + }); + say $out "Added column 'statistics.interface'"; + } + }, +} diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index f9ae4c4cd7e..cedab76747a 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -5336,6 +5336,7 @@ CREATE TABLE `statistics` ( `borrowernumber` int(11) DEFAULT NULL COMMENT 'foreign key from the borrowers table, links transaction to a specific borrower', `ccode` varchar(80) DEFAULT NULL COMMENT 'foreign key from the items table, links transaction to a specific collection code', `categorycode` varchar(10) DEFAULT NULL COMMENT 'foreign key from the borrowers table, links transaction to a specific borrower category', + `interface` varchar(30) DEFAULT NULL COMMENT 'the context this action was taken in', KEY `timeidx` (`datetime`), KEY `branch_idx` (`branch`), KEY `type_idx` (`type`), -- 2.30.2