############################################################################### # ErrorLog.pm # # $Date: 10.03.13 $ # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 2.5.41 # # Packaged: September 1, 2013 # # Distributed by: http://www.yabbforum.nz # # =========================================================================== # # Copyright (c) 2000-2013 YaBB (www.yabbforum.nz) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # ############################################################################### use CGI::Carp qw(fatalsToBrowser); our $VERSION = '2.5.41'; $errorlogpmver = 'YaBB 2.5.4 RC1 $Revision$'; if ( $action eq 'detailedversion' ) { return 1; } sub ErrorLog { is_admin_or_gmod(); $yytitle = "$errorlog{'1'}"; $errorcount = 0; fopen( ERRORFILE, "$vardir/errorlog.txt" ); @errors = ; fclose(ERRORFILE); $errorcount = @errors; $date2 = $date; for my $i ( 0 .. ( $errorcount - 1 ) ) { my @tmpArray = split /\|/xsm, $errors[$i]; $date1 = $tmpArray[1]; calcdifference(); $date_ref = $result; $tmplist[$i] = qq~$date_ref\|$errors[$i]~; } $sortmode = $INFO{'sort'}; $sortorder = $INFO{'order'}; if ( $sortmode eq q{} ) { $sortmode = 'time'; } if ( $sortorder eq q{} ) { $sortorder = 'reverse'; } my @sortlist = (); my $field = '0'; # 0-based field defaults to the datecmp value my $type = '0'; # 0=numeric; 1=text my $case = '1'; # 0=case sensitive; 1=ignore case my $dir = '0'; # 0=increasing; 1=decreasing if ( $sortmode eq 'time' ) { $field = '1'; $type = '0'; $case = '1'; $dir = '0'; } elsif ( $sortmode eq 'users' ) { $field = '8'; $type = '1'; $case = '1'; $dir = '0'; } elsif ( $sortmode eq 'ip' ) { $field = '3'; $type = '0'; $case = '0'; $dir = '0'; } @sortlist = map { $_->[0] } sort { YaBBsort( $field, $type, $case, $dir ) } map { [ $_, split /\|/xsm ] } @tmplist; if ( $INFO{'order'} eq 'reverse' ) { @sortlist = reverse @sortlist; } else { if ( $sortmode eq 'time' ) { $order_time = ';order=reverse'; } elsif ( $sortmode eq 'users' ) { $order_users = ';order=reverse'; } elsif ( $sortmode eq 'ip' ) { $order_ip = ';order=reverse'; } } if ( $sortmode ne q{} ) { $sortmode = ';sort=' . $INFO{'sort'}; } if ( $sortorder ne q{} ) { $sortorder = ';order=' . $INFO{'order'}; } $yymain .= qq~\
~; $numshown = 0; $actualnum = 0; while ( $numshown <= $errorcount ) { my ( $tmp_user, $username, $numb, $ids, $all ) = q{}; $numshown++; my ( $tmp_datecmp, $tmp_id, $tmp_date, $tmp_userip, $tmp_error, $tmp_action, $tmp_topic_number, $tmp_board, $tmp_username, $tmp_password ) = split /\|/xsm, $sortlist[$b]; if ( !$tmp_id ) { next; } FormatUserName($tmp_username); if ( !$tmp_username ) { $tmp_user = 'Guest'; } else { $tmp_user = $tmp_username; } $userlist{$tmp_user} = $userlist{$tmp_user} + 1; $tmp_date = timeformat($tmp_date); LoadUser($tmp_user); my $ipBlock = ( $use_guardian && $use_htaccess ) ? qq~
$admin_txt{'ipblock'}~ : q{}; my $lookupIP = ($ipLookup) ? qq~$tmp_userip~ : qq~$tmp_userip~; if ( $tmp_user eq "$useraccount{$tmp_user}" ) { if ( $userprofile{$tmp_user}->[1] ) { $username = qq~$userprofile{$tmp_user}->[1]~; } else { $username .= qq~$useraccount{$tmp_user}~; } $username .= qq~
$lookupIP - $admin_txt{'725f'}$ipBlock~; } else { $username = qq~$tmp_user
$lookupIP - $admin_txt{'725f'}$ipBlock~; } if ( $tmp_topic_number eq q{} ) { $numb = "&action=$tmp_action"; } else { $numb = "&action=$tmp_action&num=$tmp_topic_number"; } if ( $tmp_board eq q{} ) { $ids = '?board='; } else { $ids = "?board=$tmp_board"; } if ( $tmp_action eq q{} && $tmp_board eq q{} ) { $all = "$boardurl/$yyexec.$yyext"; } else { $all = "$boardurl/$yyexec.$yyext$ids$numb"; } if ( $tmp_error eq $admin_txt{'39'} || $tmp_error eq $admin_txt{'40'} ) { $tmp_error = $tmp_error . qq~ - ($tmp_password)~; } $b++; $addel = qq~ ~; $actualnum++; $print_errorlog .= qq~ $addel ~; } if ( !($actualnum) ) { $print_errorlog = qq~~; } $yymain .= qq~ $print_errorlog ~; @userlist = reverse sort { $userlist{$a} <=> $userlist{$b} } keys %userlist; foreach my $member (@userlist) { $errmember .= qq~$member ($userlist{$member}), ~; } $errmember =~ s/, \Z//sm; $yymain .= qq~
$admin_img{'xx'} $yytitle
$errorlog{'18'}
$errorlog{'21'} $errorlog{'5'} $errorlog{'11'} ( $errorlog{'6'} ) $errorlog{'7'} / $errorlog{'8'} $errorlog{'13'}
$actualnum $tmp_date $username
$tmp_error

$all
$errorlog{'19'}
$errorlog{'26'} $errmember
 ~; if ( $errorcount > 0 ) { $yymain .= qq~ ~; } $yymain .= q~  ~; if ( $errorcount > 0 ) { $yymain .= q~~; } $yymain .= q~
~; if ( $errorcount > 0 ) { $yymain .= qq~
$admin_img{'prefimg'} $errorlog{'14'}
~; } $yymain .= q~
~; $action_area = 'errorlog'; AdminTemplate(); return; } sub CleanErrorLog { is_admin_or_gmod(); if ( -e ("$vardir/errorlog.txt") ) { unlink "$vardir/errorlog.txt" or croak qq~$!~; } $yySetLocation = qq~$adminurl?action=errorlog~; redirectexit(); return; } sub DeleteError { is_admin_or_gmod(); my ( $sortmode, $sortorder ); chomp $FORM{'button'}; if ( $FORM{'button'} ne '4' ) { fatal_error('no_access'); } fopen( FILE, "$vardir/errorlog.txt" ); @errors = ; fclose(FILE); unlink "$vardir/errorlog.txt"; fopen( FILE, ">>$vardir/errorlog.txt" ); foreach my $line (@errors) { chomp $line; my ( $tmp_id, $tmp_date, $tmp_username, $tmp_error, $tmp_board, $tmp_action ) = split /\|/xsm, $line; if ( !exists $FORM{"error$tmp_id"} ) { print {FILE} $line . "\n" or croak "$croak{'print'} FILE"; } } fclose(FILE); $yySetLocation = qq~$adminurl?action=errorlog~; redirectexit(); return; } # Moved here from Subs.pm since it was only used here sub YaBBsort { my $field = ( shift || 0 ) + 1; # 0-based field my $type = shift || 0; # 0=numeric; 1=text my $case = shift || 0; # 0=case sensitive; 1=ignore case my $dir = shift || 0; # 0=increasing; 1=decreasing if ( $type == 0 ) { if ( $dir == 0 ) { $a->[$field] <=> $b->[$field]; } else { $b->[$field] <=> $a->[$field]; } } else { if ( $case == 0 ) { if ( $dir == 0 ) { $a->[$field] cmp $b->[$field]; } else { $b->[$field] cmp $a->[$field]; } } else { if ( $dir == 0 ) { uc $a->[$field] cmp uc $b->[$field]; } else { uc $b->[$field] cmp uc $a->[$field]; } } } return 1; } 1;