X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FLog.pm;h=cff293151516e69e1acb11f3ff7674746f789837;hb=5f8126aef3cd9e2162053b691b83ada6309d8149;hp=bad023d15da8b346f0d27bfefa75baaa06a075d4;hpb=467dbcc60962dcef31c109a4efb93e2085af6696;p=koha-ffzg.git diff --git a/C4/Log.pm b/C4/Log.pm index bad023d15d..cff2931515 100644 --- a/C4/Log.pm +++ b/C4/Log.pm @@ -24,10 +24,12 @@ package C4::Log; use strict; use warnings; +use Data::Dumper qw( Dumper ); use JSON qw( to_json ); +use Scalar::Util qw( blessed ); +use File::Basename qw( basename ); use C4::Context; -use Koha::DateUtils; use Koha::Logger; use vars qw(@ISA @EXPORT); @@ -35,7 +37,7 @@ use vars qw(@ISA @EXPORT); BEGIN { require Exporter; @ISA = qw(Exporter); - @EXPORT = qw(&logaction &cronlogaction &GetLogs); + @EXPORT = qw(logaction cronlogaction); } =head1 NAME @@ -77,9 +79,24 @@ sub logaction { $usernumber ||= 0; $interface //= C4::Context->interface; + if( blessed($infos) && $infos->isa('Koha::Object') ) { + $infos = $infos->get_from_storage if $infos->in_storage; + local $Data::Dumper::Sortkeys = 1; + + if ( $infos->isa('Koha::Item') && $modulename eq 'CATALOGUING' && $actionname eq 'MODIFY' ) { + $infos = "item " . Dumper( $infos->unblessed ); + } else { + $infos = Dumper( $infos->unblessed ); + } + } + + my $script = ( $interface eq 'cron' or $interface eq 'commandline' ) + ? basename($0) + : undef; + my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("Insert into action_logs (timestamp,user,module,action,object,info,interface) values (now(),?,?,?,?,?,?)"); - $sth->execute($usernumber,$modulename,$actionname,$objectnumber,$infos,$interface); + my $sth=$dbh->prepare("Insert into action_logs (timestamp,user,module,action,object,info,interface,script) values (now(),?,?,?,?,?,?,?)"); + $sth->execute($usernumber,$modulename,$actionname,$objectnumber,$infos,$interface,$script); $sth->finish; my $logger = Koha::Logger->get( @@ -114,85 +131,13 @@ Logs the path and name of the calling script plus the information privided by pa #' sub cronlogaction { - my ($infos)=@_; + my $params = shift; + my $info = $params->{info}; + my $action = $params->{action}; + $action ||= "Run"; my $loginfo = (caller(0))[1]; - $loginfo .= ' ' . $infos if $infos; - logaction( 'CRONJOBS', 'Run', undef, $loginfo ) if C4::Context->preference('CronjobLog'); -} - -=item GetLogs - -$logs = GetLogs($datefrom,$dateto,$user,\@modules,$action,$object,$info,$interfaces); - -Return: -C<$logs> is a ref to a hash which contains all columns from action_logs - -=cut - -sub GetLogs { - my $datefrom = shift; - my $dateto = shift; - my $user = shift; - my $modules = shift; - my $action = shift; - my $object = shift; - my $info = shift; - my $interfaces = shift; - - my $iso_datefrom = $datefrom ? output_pref({ dt => dt_from_string( $datefrom ), dateformat => 'iso', dateonly => 1 }) : undef; - my $iso_dateto = $dateto ? output_pref({ dt => dt_from_string( $dateto ), dateformat => 'iso', dateonly => 1 }) : undef; - - $user ||= q{}; - - my $dbh = C4::Context->dbh; - my $query = " - SELECT * - FROM action_logs - WHERE 1 - "; - - my @parameters; - $query .= - " AND DATE_FORMAT(timestamp, '%Y-%m-%d') >= \"" . $iso_datefrom . "\" " - if $iso_datefrom; #fix me - mysql specific - $query .= - " AND DATE_FORMAT(timestamp, '%Y-%m-%d') <= \"" . $iso_dateto . "\" " - if $iso_dateto; - if ( $user ne q{} ) { - $query .= " AND user = ? "; - push( @parameters, $user ); - } - if ( $modules && scalar(@$modules) ) { - $query .= - " AND module IN (" . join( ",", map { "?" } @$modules ) . ") "; - push( @parameters, @$modules ); - } - if ( $action && scalar(@$action) ) { - $query .= " AND action IN (" . join( ",", map { "?" } @$action ) . ") "; - push( @parameters, @$action ); - } - if ($object) { - $query .= " AND object = ? "; - push( @parameters, $object ); - } - if ($info) { - $query .= " AND info LIKE ? "; - push( @parameters, "%" . $info . "%" ); - } - if ( $interfaces && scalar(@$interfaces) ) { - $query .= - " AND interface IN (" . join( ",", map { "?" } @$interfaces ) . ") "; - push( @parameters, @$interfaces ); - } - - my $sth = $dbh->prepare($query); - $sth->execute(@parameters); - - my @logs; - while ( my $row = $sth->fetchrow_hashref ) { - push @logs, $row; - } - return \@logs; + $loginfo .= ' ' . $info if $info; + logaction( 'CRONJOBS', $action, $$, $loginfo ) if C4::Context->preference('CronjobLog'); } 1;