From bec1be70907894576bad089c554e636390de7d7e Mon Sep 17 00:00:00 2001 From: hdl Date: Fri, 15 Jul 2005 16:10:31 +0000 Subject: [PATCH] Adding Log Facility. Needs Two Update in database... On more table (action_logs) And One more syspref Activate_Log, with On|Off values. Maintainance has been sweeped of previous Log functions addbiblio.pl contains a sample of code using Log.pm To be generalized to Authorities, acquisitions, members soon. --- C4/Log.pm | 99 +++++++++++++++++++++++++++++++++++++++ C4/Maintainance.pm | 16 ------- acqui.simple/addbiblio.pl | 7 ++- updater/updatedatabase | 19 ++++++++ 4 files changed, 124 insertions(+), 17 deletions(-) create mode 100644 C4/Log.pm diff --git a/C4/Log.pm b/C4/Log.pm new file mode 100644 index 0000000000..7727528ad7 --- /dev/null +++ b/C4/Log.pm @@ -0,0 +1,99 @@ +package C4::Log; #assumes C4/Log + +#package to deal with Logging Actions in DB + + +# Copyright 2000-2002 Katipo Communications +# +# 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; +use C4::Context; + +require Exporter; + +use vars qw($VERSION @ISA @EXPORT); + +# set the version for version checking +$VERSION = 0.01; + +=head1 NAME + +C4::Log - Koha Log Facility functions + +=head1 SYNOPSIS + + use C4::Log; + +=head1 DESCRIPTION + +The functions in this module perform various functions in order to log all the operations done on the Database, including deleting and undeleting books, adding/editing members, etc. + +=head1 FUNCTIONS + +=over 2 + +=cut + +@ISA = qw(Exporter); +@EXPORT = qw(&logaction &logstatus); + +=item logaction + + &logaction($usernumber, $modulename, $actionname, $infos); + +Adds a record into action_logs table to report the different changes upon the database + +=cut +#' +sub logaction{ + my ($usernumber,$modulename, $actionname, $infos)=@_; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("Insert into action_logs (timestamp,user,module,action,info) values (now(),?,?,?,?)"); + $sth->execute($usernumber,$modulename,$actionname,$infos); + $sth->finish; +} + +=item logstatus + + &logstatus; + +returns True If Activate_Log variable is equal to On +Activate_Log is a system preference Variable +=cut +#' +sub logstatus{ + my ($usernumber,$modulename, $actionname, $infos)=@_; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select value from systempreferences where variable='Activate_Log'"); + $sth->execute; + my ($var)=$sth->fetchrow; + $sth->finish; + return ($var eq "On"?"True":"") +} + +END { } # module clean-up code here (global destructor) + +1; +__END__ + +=back + +=head1 AUTHOR + +Koha Developement team + +=cut diff --git a/C4/Maintainance.pm b/C4/Maintainance.pm index 107361c892..6bcd53335a 100644 --- a/C4/Maintainance.pm +++ b/C4/Maintainance.pm @@ -215,22 +215,6 @@ sub updatetype{ $sth->finish; } -=item logaction - - &logaction($usernumber, $modulename, $actionname, $infos); - -Adds a record into action_logs table to report the different changes upon the database - -=cut -#' -sub logaction{ - my ($usernumber,$modulename, $actionname, $infos)=@_; - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("Insert into action_logs (timestamp,user,module,action,info) values (now(),?,?,?,?)"); - $sth->execute($usernumber,$modulename,$actionname,$infos); - $sth->finish; -} - END { } # module clean-up code here (global destructor) 1; diff --git a/acqui.simple/addbiblio.pl b/acqui.simple/addbiblio.pl index 4120717f8c..7a1f6e8067 100755 --- a/acqui.simple/addbiblio.pl +++ b/acqui.simple/addbiblio.pl @@ -27,6 +27,7 @@ use C4::Interface::CGI::Output; use C4::Biblio; use C4::SearchMarc; # also includes Biblio.pm, SearchMarc is used to FindDuplicate use C4::Context; +use C4::Log; use C4::Koha; # XXX subfield_is_koha_internal_p use HTML::Template; use MARC::File::USMARC; @@ -428,8 +429,10 @@ if ($op eq "addbiblio") { if ($is_a_modif) { NEWmodbiblioframework($dbh,$bibid,$frameworkcode); NEWmodbiblio($dbh,$record,$bibid,$frameworkcode); + logaction($loggedinuser,"acqui.simple","modify","biblionumber :$oldbiblionumber\nrecord : ".$record->as_formatted) if (logstatus); } else { ($bibid,$oldbibnum,$oldbibitemnum) = NEWnewbiblio($dbh,$record,$frameworkcode); + logaction($loggedinuser,"acqui.simple","add","biblionumber :$oldbibnum\nrecord : ".$record->as_formatted) if (logstatus); } # now, redirect to additem page print $input->redirect("additem.pl?bibid=$bibid&frameworkcode=$frameworkcode"); @@ -482,9 +485,11 @@ if ($op eq "addbiblio") { } elsif ($op eq "delete") { #------------------------------------------------------------------------------------------------------------------------------ &NEWdelbiblio($dbh,$bibid); + logaction($loggedinuser,"acqui.simple","del","biblionumber :$bibid") if (logstatus); + print "Content-Type: text/html\n\n"; exit; -#------------------------------------------------------------------------------------------------------------------------------ +#------------------------------------------------------------------------------------------------------------------------------logaction($loggedinuser,"acqui.simple","add","biblionumber :$oldbibnum"); #------------------------------------------------------------------------------------------------------------------------------ } else { #------------------------------------------------------------------------------------------------------------------------------ diff --git a/updater/updatedatabase b/updater/updatedatabase index 58dea1ce0c..96e0825ae4 100755 --- a/updater/updatedatabase +++ b/updater/updatedatabase @@ -909,6 +909,16 @@ my %tabledata = ( explanation => 'show or hide "lost" items in OPAC.', type => 'YesNo', }, + { + uniquefieldrequired => 'variable', + variable => 'Acitvate_Log', + value => 'On', + forceupdate => { 'explanation' => 1, + 'type' => 1}, + explanation => 'Turn Log Actions on DB On an Off', + type => 'Choice', + options => 'On|Off' + }, ], ); @@ -1510,6 +1520,15 @@ $sth->finish; exit; # $Log$ +# Revision 1.108 2005/07/15 16:10:35 hdl +# Adding Log Facility. +# Needs Two Update in database... +# On more table (action_logs) +# And One more syspref Activate_Log, with On|Off values. +# Maintainance has been sweeped of previous Log functions +# addbiblio.pl contains a sample of code using Log.pm +# To be generalized to Authorities, acquisitions, members soon. +# # Revision 1.107 2005/07/14 09:53:10 hdl # Adding a log facility for actions watching. # Code to be widely used in order to report data modifications. -- 2.39.5