From 4b26064eeeb725680b3ee20be771344ed031ef12 Mon Sep 17 00:00:00 2001 From: Robin Sheat Date: Tue, 11 Nov 2014 16:22:15 +1300 Subject: [PATCH] Bug 11998 - fix compile warnings This creates a simplified logging system that can be used by C4::Context. --- C4/Context.pm | 6 ++-- C4/LogStatic.pm | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 C4/LogStatic.pm diff --git a/C4/Context.pm b/C4/Context.pm index 0f83467..f021929 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -103,7 +103,7 @@ use ZOOM; use XML::Simple; use C4::Boolean; use C4::Debug; -use C4::Log qw/ logaction /; +use C4::LogStatic qw/ logaction /; use Koha::Cache; use POSIX (); use DateTime::TimeZone; @@ -660,7 +660,7 @@ ON DUPLICATE KEY UPDATE value = VALUES(value)'; my $sth = $dbh->prepare($query); if ( $sth->execute(@params) ) { $syspref_cache->set_in_cache("syspref_$var", $value) if $use_syspref_cache; - logaction( 'SYSTEMPREFERENCE', $logtype, undef, $var . " | " . $value ); + logaction( $dbh, userenv(), 'SYSTEMPREFERENCE', $logtype, undef, $var . " | " . $value ); } $sth->finish; } @@ -685,7 +685,7 @@ sub delete_preference { my $res = $sth->execute($var); if ($res) { $syspref_cache->clear_from_cache("syspref_$var") if $use_syspref_cache; - logaction( 'SYSTEMPREFERENCE', 'DELETE', undef, + logaction( $dbh, userenv(), 'SYSTEMPREFERENCE', 'DELETE', undef, $var . " | " . ( $val // 'undefined' ) ); return 1; } diff --git a/C4/LogStatic.pm b/C4/LogStatic.pm new file mode 100644 index 0000000..7cb1de2 --- /dev/null +++ b/C4/LogStatic.pm @@ -0,0 +1,96 @@ +package C4::LogStatic; + +# This is a very simple logging system, designed to be only used in +# circumstances where C4::Context can't be loaded. Typically, this is +# only in C4::Context itself. +# +# This is intended to be temporary until C4::Context gets refactored to not +# handle things like sysprefs that need logged about. + + +# Copyright 2000-2002 Katipo Communications +# Copyright 2011 MJ Ray and software.coop +# Copyright 2014 Catalyst IT +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# 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; + +use vars qw($VERSION @ISA @EXPORT); + +BEGIN { + # set the version for version checking + $VERSION = 3.07.00.049; + require Exporter; + @ISA = qw(Exporter); + @EXPORT = qw(&logaction); +} + +=head1 NAME + +C4::LogStatic - basic logging function for Koha. + +=head1 SYNOPSIS + + use C4::LogStatic; + logaction($dbh, $userenv, "module", "action", $objectnum, "what happened"); + +=head1 DESCRIPTION + +This allows simple logging in situtations where C4::Context can't be loaded. + +=head1 FUNCTIONS + +=over 2 + +=item logaction + + logaction($dbh, $userenv, $modulename, $actionname, $objectnumber, $infos); + +Adds a record into action_logs table to report the different changes upon the database. +Each log entry includes the number of the user currently logged in. For batch +jobs, which operate without authenticating a user and setting up a session, the user +number is set to 0, which is the same as the superlibrarian's number. + +=cut + +#' +sub logaction { + my ($dbh, $userenv, $modulename, $actionname, $objectnumber, $infos)=@_; + + # Get ID of logged in user. if called from a batch job, + # no user session exists and C4::Context->userenv() returns + # the scalar '0'. + my $usernumber = (ref($userenv) eq 'HASH') ? $userenv->{'number'} : 0; + $usernumber ||= 0; + + my $sth=$dbh->prepare("Insert into action_logs (timestamp,user,module,action,object,info) values (now(),?,?,?,?,?)"); + $sth->execute($usernumber,$modulename,$actionname,$objectnumber,$infos); + $sth->finish; +} + + +1; +__END__ + +=back + +=head1 AUTHOR + +Koha Development Team + +=cut -- 2.1.0