2006-12-02 04:36:16 +00:00
< ? php
/*
2008-12-16 14:22:01 +00:00
* e107 website system
*
* Copyright ( C ) 2001 - 2008 e107 Inc ( e107 . org )
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
* Administration Area - Admin Log
*
* $Source : / cvs_backup / e107_0 . 8 / e107_admin / admin_log . php , v $
2008-12-21 12:53:11 +00:00
* $Revision : 1.25 $
* $Date : 2008 - 12 - 21 12 : 53 : 11 $
2008-12-16 14:22:01 +00:00
* $Author : secretr $
*
2006-12-02 04:36:16 +00:00
*/
2008-12-16 14:22:01 +00:00
/*
* Preferences :
* 'sys_log_perpage' - number of events per page
*
* 'user_audit_opts' - which user - related events to log
* 'user_audit_class' - user class whose actions can be logged
*
* 'roll_log_days' ( default 7 ) - number of days for which entries retained in rolling log
* 'roll_log_active' - set to '1' to enable
*
*/
require_once ( " ../class2.php " );
if ( ! getperms ( " S " ))
2006-12-02 04:36:16 +00:00
{
2008-12-16 14:22:01 +00:00
header ( " location: " . e_BASE . " index.php " );
exit ();
2006-12-02 04:36:16 +00:00
}
2007-12-15 15:06:40 +00:00
// Main language file should automatically be loaded
2008-12-07 14:22:40 +00:00
// Load language files for log messages
2008-12-16 14:22:01 +00:00
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . '/admin/lan_log_messages.php' ); //... for core functions
if ( is_array ( $pref [ 'logLanguageFile' ])) //... and for any plugins which support it
2008-12-07 14:22:40 +00:00
{
foreach ( $pref [ 'logLanguageFile' ] as $path => $file )
{
2008-12-16 14:22:01 +00:00
$file = str_replace ( '--LAN--' , e_LANGUAGE , $file );
2008-12-07 14:22:40 +00:00
include_lan ( e_PLUGIN . $path . '/' . $file );
}
}
2007-12-15 15:06:40 +00:00
unset ( $qs );
2008-12-16 14:22:01 +00:00
require_once ( e_ADMIN . " auth.php " );
require_once ( e_HANDLER . " message_handler.php " );
require_once ( e_HANDLER . " form_handler.php " );
$emessage = & eMessage :: getInstance ();
$frm = new e_form ( false );
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
define ( 'AL_DATE_TIME_FORMAT' , 'y-m-d H:i:s' );
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'setoptions' ]))
2006-12-02 04:36:16 +00:00
{
2008-12-07 14:22:40 +00:00
unset ( $temp );
2006-12-02 04:36:16 +00:00
2008-12-16 14:22:01 +00:00
if ( in_array (( string ) USER_AUDIT_LOGIN , $_POST [ 'user_audit_opts' ]))
2008-12-07 14:22:40 +00:00
{
$_POST [ 'user_audit_opts' ][] = USER_AUDIT_LOGOUT ;
}
2008-12-16 14:22:01 +00:00
foreach ( $_POST [ 'user_audit_opts' ] as $k => $v )
2008-12-07 14:22:40 +00:00
{
2008-12-16 14:22:01 +00:00
if ( ! is_numeric ( $v ))
2008-12-07 14:22:40 +00:00
{
unset ( $_POST [ 'user_audit_opts' ][ $k ]);
}
}
2008-12-16 14:22:01 +00:00
$temp [ 'roll_log_active' ] = intval ( $_POST [ 'roll_log_active' ]);
$temp [ 'roll_log_days' ] = intval ( $_POST [ 'roll_log_days' ]);
$temp [ 'sys_log_perpage' ] = intval ( $_POST [ 'sys_log_perpage' ]);
$temp [ 'user_audit_opts' ] = implode ( ',' , $_POST [ 'user_audit_opts' ]);
2008-12-07 14:22:40 +00:00
$temp [ 'user_audit_class' ] = intval ( $_POST [ 'user_audit_class' ]);
2008-12-16 14:22:01 +00:00
if ( $admin_log -> logArrayDiffs ( $temp , $pref , 'ADLOG_01' ) || $admin_log -> logArrayDiffs ( $temp , $pref , 'ADLOG_04' ))
2008-12-07 14:22:40 +00:00
{
2008-12-16 14:22:01 +00:00
save_prefs (); // Only save if changes
$emessage -> add ( RL_LAN_006 , E_MESSAGE_SUCCESS );
}
else
{
$emessage -> add ( LAN_NO_CHANGE );
2008-12-07 14:22:40 +00:00
}
2008-12-16 14:22:01 +00:00
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
if ( e_QUERY )
{ // Must explode after calling auth.php
2007-12-15 15:06:40 +00:00
$qs = explode ( " . " , e_QUERY );
2006-12-02 04:36:16 +00:00
}
2008-12-16 14:22:01 +00:00
$action = varset ( $qs [ 0 ], 'adminlog' );
2007-12-29 22:07:49 +00:00
2008-05-17 15:00:41 +00:00
// Delete comments if appropriate
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'deleteitems' ]) && ( $action == 'comments' ))
2008-05-17 15:00:41 +00:00
{
2008-12-07 14:22:40 +00:00
$c_list = array ();
2008-12-16 14:22:01 +00:00
foreach ( $_POST [ 'del_item' ] as $di )
2008-12-07 14:22:40 +00:00
{
2008-12-16 14:22:01 +00:00
if ( intval ( $di ) > 0 )
$c_list [] = '`comment_id`=' . intval ( $di );
2008-12-07 14:22:40 +00:00
}
2008-12-16 14:22:01 +00:00
if ( $count = $sql -> db_Delete ( 'comments' , implode ( ' OR ' , $c_list )))
2008-12-07 14:22:40 +00:00
{
2008-12-16 14:22:01 +00:00
//$text = str_replace('--NUMBER--', $count,RL_LAN_112);
$emessage -> add ( str_replace ( '--NUMBER--' , $count , RL_LAN_112 ), E_MESSAGE_SUCCESS );
$admin_log -> log_event ( 'COMMENT_01' , 'ID: ' . implode ( ',' , $_POST [ 'del_item' ]), E_LOG_INFORMATIVE , '' );
2008-12-07 14:22:40 +00:00
}
else
{
2008-12-16 14:22:01 +00:00
//$text = RL_LAN_113;
$emessage -> add ( RL_LAN_113 , E_MESSAGE_WARNING );
2008-12-07 14:22:40 +00:00
}
2008-12-16 14:22:01 +00:00
//$ns -> tablerender(LAN_DELETE, "<div style='text-align:center'><b>".$text."</b></div>");
2008-12-07 14:22:40 +00:00
unset ( $c_list );
2008-05-17 15:00:41 +00:00
}
2007-12-15 15:06:40 +00:00
// ****************** MAINTENANCE ******************
2007-12-29 22:07:49 +00:00
unset ( $back_count );
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'deleteoldadmin' ]) && isset ( $_POST [ 'rolllog_clearadmin' ]))
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$back_count = intval ( $_POST [ 'rolllog_clearadmin' ]);
$next_action = 'confdel' ;
2007-12-29 22:07:49 +00:00
}
2008-12-16 14:22:01 +00:00
elseif ( isset ( $_POST [ 'deleteoldaudit' ]) && isset ( $_POST [ 'rolllog_clearaudit' ]))
2007-12-29 22:07:49 +00:00
{
2008-12-16 14:22:01 +00:00
$back_count = intval ( $_POST [ 'rolllog_clearaudit' ]);
$next_action = 'auditdel' ;
2007-12-29 22:07:49 +00:00
}
2008-12-16 14:22:01 +00:00
if ( isset ( $back_count ) && isset ( $next_action ))
2007-12-29 22:07:49 +00:00
{
2008-12-16 14:22:01 +00:00
if (( $back_count >= 1 ) && ( $back_count <= 90 ))
{
$temp_date = getdate ();
$old_date = intval ( mktime ( 0 , 0 , 0 , $temp_date [ 'mon' ], $temp_date [ 'mday' ] - $back_count , $temp_date [ 'year' ]));
$old_string = strftime ( " %d %B %Y " , $old_date );
// $message = "Back delete ".$back_count." days. Oldest date = ".$old_string;
$action = $next_action ;
$qs [ 1 ] = $old_date ;
$qs [ 2 ] = $back_count ;
}
else $emessage -> add ( RL_LAN_050 , E_MESSAGE_WARNING );
//$message = RL_LAN_050;
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
if ( ! isset ( $admin_log ))
$emessage -> add ( " Admin Log not valid " , E_MESSAGE_WARNING );
//$message .= " Admin Log not valid";
2007-12-15 15:06:40 +00:00
2007-12-29 22:07:49 +00:00
// Actually delete back events - admin or user audit log
2008-12-16 14:22:01 +00:00
if (( $action == " backdel " ) && isset ( $_POST [ 'backdeltype' ]))
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'confirmdeleteold' ]))
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$old_date = intval ( $qs [ 1 ]);
$old_string = strftime ( " %d %B %Y " , $old_date );
$qry = " dblog_datestamp < " . $old_date ; // Same field for both logs
switch ( $_POST [ 'backdeltype' ])
{
case 'confdel' :
$db_table = 'admin_log' ;
$db_name = RL_LAN_052 ;
$db_msg = " ADLOG_02 " ;
break ;
case 'auditdel' :
$db_table = 'audit_log' ;
$db_name = RL_LAN_053 ;
$db_msg = " ADLOG_03 " ;
break ;
default :
exit (); // Someone fooling around!
}
// $message = "Back delete, oldest date = {$old_string} Query = {$qry}";
if ( $del_count = $sql -> db_Delete ( $db_table , $qry ))
{
// Add in a log event
$message = $db_name . str_replace ( array ( '--OLD--' , '--NUM--' ), array ( $old_string , $del_count ), RL_LAN_057 );
$emessage -> add ( $message , E_MESSAGE_SUCCESS );
$admin_log -> log_event ( $db_msg , " db_Delete - earlier than { $old_string } (past { $qs [ 2 ] } days)[!br!] " . $message . '[!br!]' . $db_table . ' ' . $qry , E_LOG_INFORMATIVE , '' );
}
else
{
//$message = RL_LAN_054." : ".$sql->mySQLresult;
$emessage -> add ( RL_LAN_054 . " : " . $sql -> mySQLresult , E_MESSAGE_WARNING );
}
} else
$emessage -> add ( RL_LAN_056 ); //info
2008-12-07 14:22:40 +00:00
2008-12-16 14:22:01 +00:00
$action = " config " ;
unset ( $qs [ 1 ]);
unset ( $qs [ 2 ]);
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
/*
if ( varsettrue ( $message ))
2007-12-15 15:06:40 +00:00
{
2008-12-07 14:22:40 +00:00
$ns -> tablerender ( " " , " <div style='text-align:center'><b> $message </b></div> " );
2006-12-02 04:36:16 +00:00
}
2008-12-16 14:22:01 +00:00
*/
2007-12-29 22:07:49 +00:00
2007-12-15 15:06:40 +00:00
// Prompt to delete back events
2008-12-16 14:22:01 +00:00
if (( $action == " confdel " ) || ( $action == " auditdel " ))
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$old_string = strftime ( " %d %B %Y " , $qs [ 1 ]);
$text = "
< form method = 'post' action = '".e_SELF."?backdel.{$qs[1]}.{$qs[2]}' >
< fieldset id = 'core-admin-log-confirm-delete' >
< legend class = 'e-hideme' > " .RL_LAN_051. " </ legend >
< table cellpadding = '0' cellspacing = '0' class = 'adminform' >
< tr >
< td class = 'center' >
< strong > " .(( $action == " confdel " ) ? RL_LAN_047 : RL_LAN_065). $old_string . " </ strong >
</ td >
</ tr >
</ table >
< div class = 'buttons-bar center' >
< input type = 'hidden' name = 'backdeltype' value = '{$action}' />
< button class = 'delete' type = 'submit' name = 'confirmdeleteold' value = '".RL_LAN_049."' >< span > " .RL_LAN_049. " </ span ></ button >
< button class = 'cancel' type = 'submit' name = 'confirmcancelold' value = '".RL_LAN_055."' >< span > " .RL_LAN_055. " </ span ></ button >
</ div >
</ fieldset >
</ form >
" ;
$ns -> tablerender ( RL_LAN_051 , $text );
2006-12-02 04:36:16 +00:00
}
2007-12-15 15:06:40 +00:00
2008-05-17 15:00:41 +00:00
// Arrays of options for the various logs - the $page_title array is used to determine the allowable values for $action ('options' is a special case)
2008-12-16 14:22:01 +00:00
$log_db_table = array ( 'adminlog' => 'admin_log' , 'auditlog' => 'audit_log' , 'rolllog' => 'dblog' , 'downlog' => 'download_requests' , 'comments' => 'comments' , 'online' => 'online' );
$back_day_count = array ( 'adminlog' => 30 , 'auditlog' => 30 , 'rolllog' => max ( intval ( $pref [ 'roll_log_days' ]), 1 ), 'downlog' => 60 , 'detailed' => 20 , 'comments' => 30 , 'online' => 30 );
2008-06-10 21:43:57 +00:00
$page_title = array ( 'adminlog' => RL_LAN_030 , 'auditlog' => RL_LAN_062 , 'rolllog' => RL_LAN_002 , 'downlog' => RL_LAN_067 , 'detailed' => RL_LAN_094 , 'comments' => RL_LAN_099 , 'online' => RL_LAN_120 );
2007-12-15 15:06:40 +00:00
// Set all the defaults for the data filter
$start_enabled = FALSE ;
$end_enabled = FALSE ;
$start_time = 0 ;
$end_time = 0 ;
$user_filter = '' ;
$event_filter = '' ;
$pri_filter_cond = " xx " ;
2008-12-16 14:22:01 +00:00
$pri_filter_val = " " ;
$sort_order = " DESC " ;
2008-01-11 21:53:39 +00:00
$downloadid_filter = '' ;
2007-12-15 15:06:40 +00:00
2008-05-17 15:00:41 +00:00
$last_noted_time = 0 ;
2007-12-15 15:06:40 +00:00
// Maintain the log view filter across pages
$rl_cookiename = $pref [ 'cookie_name' ] . " _rl_admin " ;
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'updatefilters' ]) || isset ( $_POST [ 'clearfilters' ]))
{ // Need to put the filter values into the cookie
if ( ! isset ( $_POST [ 'clearfilters' ]))
{ // Only update filter values from $_POST[] if 'clear filters' not active
$start_time = intval ( $_POST [ 'starttimedate' ] + $_POST [ 'starttimehours' ] * 3600 + $_POST [ 'starttimemins' ] * 60 );
2008-11-22 12:57:42 +00:00
$start_enabled = isset ( $_POST [ 'start_enabled' ]);
2008-12-16 14:22:01 +00:00
if ( isset ( $_POST [ 'timelength' ]))
2008-11-22 12:57:42 +00:00
{
2008-12-16 14:22:01 +00:00
$end_time = intval ( $_POST [ 'timelength' ]) * 60 + $start_time ;
2008-11-22 12:57:42 +00:00
}
else
{
2008-12-16 14:22:01 +00:00
$end_time = intval ( $_POST [ 'endtimedate' ] + $_POST [ 'endtimehours' ] * 3600 + $_POST [ 'endtimemins' ] * 60 );
2008-11-22 12:57:42 +00:00
}
$end_enabled = isset ( $_POST [ 'end_enabled' ]);
2008-12-16 14:22:01 +00:00
$user_filter = trim ( varset ( $_POST [ 'roll_user_filter' ], '' ));
if ( $user_filter != '' )
$user_filter = intval ( $user_filter );
2008-11-22 12:57:42 +00:00
$event_filter = $tp -> toDB ( $_POST [ 'roll_event_filter' ]);
$pri_filter_cond = $tp -> toDB ( $_POST [ 'roll_pri_cond' ]);
2008-12-16 14:22:01 +00:00
$pri_filter_val = $tp -> toDB ( $_POST [ 'roll_pri_val' ]);
$caller_filter = $tp -> toDB ( $_POST [ 'roll_caller_filter' ]);
2008-11-22 12:57:42 +00:00
$ipaddress_filter = $e107 -> ipEncode ( $tp -> toDB ( $_POST [ 'roll_ipaddress_filter' ]));
$downloadid_filter = $tp -> toDB ( $_POST [ 'roll_downloadid_filter' ]);
}
2008-12-16 14:22:01 +00:00
$cookie_string = implode ( " | " , array ( $start_time , $start_enabled , $end_time , $end_enabled , $user_filter , $event_filter , $pri_filter_cond , $pri_filter_val , $caller_filter , $ipaddress_filter , $downloadid_filter ));
// echo $cookie_string."<br />";
// Create session cookie to store values
cookie ( $rl_cookiename , $cookie_string , 0 ); // Use session cookie
2006-12-02 04:36:16 +00:00
}
2007-12-15 15:06:40 +00:00
else
{
2008-12-16 14:22:01 +00:00
// Now try and get the filters from the cookie
if ( isset ( $_COOKIE [ $rl_cookiename ]))
list ( $start_time , $start_enabled , $end_time , $end_enabled , $user_filter , $event_filter , $pri_filter_cond , $pri_filter_val , $caller_filter , $ipaddress_filter , $downloadid_filter ) = explode ( " | " , $_COOKIE [ $rl_cookiename ]);
if ( isset ( $qs [ 1 ]) && isset ( $qs [ 2 ]) && ( $qs [ 1 ] == 'user' ) && ctype_digit ( $qs [ 2 ]) && ( intval ( $qs [ 2 ]) > 0 ))
2008-11-22 12:57:42 +00:00
{
$user_filter = intval ( $qs [ 2 ]);
}
2007-12-15 15:06:40 +00:00
}
2008-05-17 15:00:41 +00:00
$timelength = 5 ;
2008-12-16 14:22:01 +00:00
if ( $start_time != 0 && $end_time != 0 )
$timelength = intval (( $end_time - $start_time ) / 60 );
2007-12-15 15:06:40 +00:00
2008-05-17 15:00:41 +00:00
function time_box ( $boxname , $this_time , $day_count , $inc_tomorrow = FALSE , $all_mins = FALSE )
2008-12-16 14:22:01 +00:00
{ // Generates boxes for date and time for today and the preceding days
// Appends 'date', 'hours', 'mins' to the specified boxname
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
$all_time = getdate (); // Date/time now
$sel_time = getdate ( $this_time ); // Currently selected date/time
$sel_day = mktime ( 0 , 0 , 0 , $sel_time [ 'mon' ], $sel_time [ 'mday' ], $sel_time [ 'year' ]);
$today = mktime ( 0 , 0 , 0 , $all_time [ 'mon' ], $all_time [ 'mday' ] + ( $inc_tomorrow ? 1 : 0 ), $all_time [ 'year' ]);
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Start with day
$ret = " <select name=' { $boxname } date' class='tbox'> " ;
// Stick an extra day on the end, plus tomorrow if the flag set
for ( $i = ( $inc_tomorrow ? - 2 : - 1 ); $i <= $day_count ; $i ++ )
{
$day_string = date ( " D d M " , $today );
$sel = ( $today == $sel_day ) ? " selected='selected' " : " " ;
$ret .= " <option value=' { $today } ' { $sel } > { $day_string } </option> " ;
$today -= 86400 ; // Move to previous day
}
$ret .= " </select> " ;
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Hours
$ret .= " <select name=' { $boxname } hours' class='tbox select time-offset'> " ;
for ( $i = 0 ; $i < 24 ; $i ++ )
{
$sel = ( $sel_time [ 'hours' ] == $i ) ? " selected='selected' " : " " ;
$ret .= " <option value=' { $i } ' { $sel } > { $i } </option> " ;
}
$ret .= " </select> " ;
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Minutes
$ret .= " <select name=' { $boxname } mins' class='tbox select time-offset'> " ;
for ( $i = 0 ; $i < 60 ; $i += ( $all_mins ? 1 : 5 ))
{
$sel = ( $sel_time [ 'minutes' ] == $i ) ? " selected='selected' " : " " ;
$ret .= " <option value=' { $i } ' { $sel } > { $i } </option> " ;
}
$ret .= " </select> " ;
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
return $ret ;
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
if ( ! defined ( " USER_WIDTH " ))
2007-12-29 22:07:49 +00:00
{
2008-12-16 14:22:01 +00:00
define ( " USER_WIDTH " , " width:97% " );
2007-12-29 22:07:49 +00:00
}
2008-12-16 14:22:01 +00:00
//====================================================================
// CONFIGURATION OPTIONS MENU
//====================================================================
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
if ( $action == " config " )
{
// User Audit log options (for info)
//=======================
// define('USER_AUDIT_SIGNUP',11); // User signed up
// define('USER_AUDIT_EMAILACK',12); // User responded to registration email
// define('USER_AUDIT_LOGIN',13); // User logged in
// define('USER_AUDIT_LOGOUT',14); // User logged out
// define('USER_AUDIT_NEW_DN',15); // User changed display name
// define('USER_AUDIT_NEW_PW',16); // User changed password
// define('USER_AUDIT_NEW_EML',17); // User changed email
// define('USER_AUDIT_NEW_SET',19); // User changed other settings (intentional gap in numbering)
$audit_checkboxes = array ( USER_AUDIT_SIGNUP => RL_LAN_071 , USER_AUDIT_EMAILACK => RL_LAN_072 , USER_AUDIT_LOGIN => RL_LAN_073 , // USER_AUDIT_LOGOUT => RL_LAN_074, // Logout is lumped in with login
USER_AUDIT_NEW_DN => RL_LAN_075 , USER_AUDIT_NEW_PW => RL_LAN_076 , USER_AUDIT_PW_RES => RL_LAN_078 , USER_AUDIT_NEW_EML => RL_LAN_077 , USER_AUDIT_NEW_SET => RL_LAN_079 , USER_AUDIT_ADD_ADMIN => RL_LAN_080 );
if ( ! isset ( $e_userclass ) && ! is_object ( $e_userclass ))
2007-12-29 22:32:58 +00:00
{
2008-12-16 14:22:01 +00:00
require_once ( e_HANDLER . " userclass_class.php " );
$e_userclass = new user_class ();
2007-12-29 22:32:58 +00:00
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
$user_signup_opts = array_flip ( explode ( ',' , varset ( $pref [ 'user_audit_opts' ], '' )));
// Common to all logs
$text = "
< fieldset id = 'core-admin-log-config' >
< legend class = 'e-hideme' > " .RL_LAN_121. " </ legend >
2007-12-15 15:06:40 +00:00
< form method = 'post' action = '".e_SELF."?config' >
2008-12-16 14:22:01 +00:00
< fieldset id = 'core-admin-log-options' >
< legend > " .RL_LAN_122. " </ legend >
< table cellpadding = '0' cellspacing = '0' class = 'adminform' >
< colgroup span = '2' >
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
< tbody >
< tr >
< td class = 'label' > " .RL_LAN_044. " </ td >
< td class = 'control' >
< select name = 'sys_log_perpage' class = 'tbox select' >
< option value = '10' " .( $pref['sys_log_perpage'] == '10' ? " selected = 'selected' " : " " ). " > 10 </ option >
< option value = '20' " .( $pref['sys_log_perpage'] == '20' ? " selected = 'selected' " : " " ). " > 20 </ option >
< option value = '30' " .( $pref['sys_log_perpage'] == '30' ? " selected = 'selected' " : " " ). " > 30 </ option >
< option value = '40' " .( $pref['sys_log_perpage'] == '40' ? " selected = 'selected' " : " " ). " > 40 </ option >
< option value = '50' " .( $pref['sys_log_perpage'] == '50' ? " selected = 'selected' " : " " ). " > 50 </ option >
</ select >
< div class = 'field-help' > " .RL_LAN_064. " </ div >
</ td >
</ tr >
" ;
// User Audit Trail Options
$text .= "
< tr >
< td class = 'label' > " .RL_LAN_123. " </ td >
< td class = 'control' >
< select class = 'tbox' name = 'user_audit_class' >
" . $e_userclass->vetted_tree ('user_audit_class', array( $e_userclass , 'select'), varset( $pref['user_audit_class'] , ''), 'nobody,admin,member,classes'). "
</ select >
< div class = 'field-help' > " .RL_LAN_026. " </ div >
</ td >
</ tr >
< tr >
< td class = 'label' > " .RL_LAN_124. " </ td >
< td class = 'control' >
" .RL_LAN_031. "
" ;
foreach ( $audit_checkboxes as $k => $t )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$text .= "
< div class = 'field-spacer' >< input class = 'checkbox' type = 'checkbox' id = 'user-audit-opts-{$k}' name = 'user_audit_opts[]' value = '{$k}' " .(isset( $user_signup_opts[$k] ) ? " checked = 'checked' " : " " ). " />< label for = 'user-audit-opts-{$k}' > { $t } </ label ></ div >
" ;
2007-12-15 15:06:40 +00:00
}
$text .= "
2008-12-20 15:23:48 +00:00
< div class = 'field-spacer f-left' > " . $frm->admin_button ('check_all', 'jstarget:user_audit_opts', 'action', LAN_CHECKALL). $frm->admin_button ('uncheck_all', 'jstarget:user_audit_opts', 'action', LAN_UNCHECKALL). " </ div >
2008-12-16 14:22:01 +00:00
</ td >
</ tr >
" ;
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Rolling log options
//====================
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
$text .= "
< tr >
< td class = 'label' > " .RL_LAN_008. " </ td >
< td class = 'control' >
< div class = 'auto-toggle-area autocheck' >
< input class = 'checkbox' type = 'checkbox' name = 'roll_log_active' value = '1' " .( $pref['roll_log_active'] == 1 ? " checked = 'checked' " : " " ). " />
</ div >
</ td >
</ tr >
< tr >
< td class = 'label' > " .RL_LAN_009. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_log_days' size = '10' value = '".$pref[' roll_log_days ']."' maxlength = '5' />
</ td >
</ tr >
</ tbody >
</ table >
< div class = 'buttons-bar center' >
< button class = 'update' type = 'submit' name = 'setoptions' value = '".RL_LAN_010."' >< span > " .RL_LAN_010. " </ span ></ button >
</ div >
</ fieldset >
</ form >
" ;
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Admin log maintenance
//==================
$text .= "
< form method = 'post' action = '".e_SELF."?config' >
< fieldset id = 'core-admin-log-maintenance' >
< legend > " .RL_LAN_125. " </ legend >
< table cellpadding = '0' cellspacing = '0' class = 'adminform' >
< colgroup span = '2' >
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
< tbody >
< tr >
< td class = 'label' > " .RL_LAN_045. " </ td >
< td class = 'control' >
" .gen_log_delete('rolllog_clearadmin').RL_LAN_046. " < button class = 'delete no-confirm' type = 'submit' name = 'deleteoldadmin' value = '".RL_LAN_049."' >< span > " .RL_LAN_049. " </ span ></ button >
</ td >
</ tr >
" ;
// User log maintenance
//====================
$text .= "
< tr >
< td class = 'label' > " .RL_LAN_066. " </ td >
< td class = 'control' >
" .gen_log_delete('rolllog_clearaudit').RL_LAN_046. " < button class = 'delete no-confirm' type = 'submit' name = 'deleteoldaudit' value = '".RL_LAN_049."' >< span > " .RL_LAN_049. " </ span ></ button >
</ td >
</ tr >
</ tbody >
</ table >
</ fieldset >
</ form >
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
</ fieldset >
" ;
$ns -> tablerender ( RL_LAN_121 , $emessage -> render () . $text );
}
2007-12-15 15:06:40 +00:00
//====================================================================
// LOG VIEW MENU
//====================================================================
2008-12-16 14:22:01 +00:00
if ( isset ( $page_title [ $action ]))
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$from = intval ( varset ( $qs [ 1 ], 0 )); // First entry to display
$amount = max ( varset ( $pref [ 'sys_log_perpage' ], 20 ), 5 ); // Number of entries per page
// Array decides which filters are active for each log. There are 4 columns total. All but 'datetimes' occupy 2. Must specify multiple of 4 columns - add 'blank' if necessary
$active_filters = array ( 'adminlog' => array ( 'datetimes' => 0 , 'ipfilter' => 0 , 'userfilter' => 0 , 'eventfilter' => 0 , 'priority' => 0 ), 'auditlog' => array ( 'datetimes' => 0 , 'ipfilter' => 0 , 'userfilter' => 0 , 'eventfilter' => 0 , 'blank' => 2 ), 'rolllog' => array ( 'datetimes' => 0 , 'ipfilter' => 0 , 'userfilter' => 0 , 'eventfilter' => 0 , 'priority' => 0 , 'callerfilter' => 0 , 'blank' => 2 ), 'downlog' => array ( 'datetimes' => 0 , 'ipfilter' => 0 , 'userfilter' => 0 , 'downloadidfilter' => 0 , 'blank' => 2 ), 'detailed' => array ( 'datestart' => 0 , 'ipfilter' => 0 , 'userfilter' => 0 , 'eventfilter' => 0 , 'blank' => 2 ), 'comments' => array ( 'datetimes' => 1 , 'ipfilter' => 0 , 'userfilter' => 0 , 'eventfilter' => 0 , 'blank' => 2 ), 'online' => array ( 'ipfilter' => 0 , 'userfilter' => 0 ));
// Arrays determine column widths, headings, displayed fields for each log
$col_fields = array ( 'adminlog' => array ( 'cf_datestring' , 'dblog_type' , 'dblog_ip' , 'dblog_user_id' , 'user_name' , 'dblog_eventcode' , 'dblog_title' , 'dblog_remarks' ), 'auditlog' => array ( 'cf_datestring' , 'dblog_ip' , 'dblog_user_id' , 'dblog_user_name' , 'dblog_eventcode' , 'dblog_title' , 'dblog_remarks' ), 'rolllog' => array ( 'cf_datestring' , 'dblog_type' , 'dblog_ip' , 'dblog_user_id' , 'dblog_user_name' , 'dblog_eventcode' , 'dblog_caller' , 'dblog_title' , 'dblog_remarks' ), 'downlog' => array ( 'cf_datestring' , 'dblog_ip' , 'dblog_user_id' , 'user_name' , 'download_request_download_id' , 'download_name' ), 'detailed' => array ( 'cf_microtime' , 'cf_microtimediff' , 'source' , 'dblog_type' , 'dblog_ip' , 'dblog_user_id' , 'user_name' , 'dblog_eventcode' , 'dblog_title' , 'dblog_remarks' ), 'comments' => array ( 'cf_datestring' , 'comment_id' , 'comment_pid' , 'comment_item_id' , 'comment_subject' , 'comment_author_id' , 'comment_author_name' , 'comment_ip' , 'comment_type' , 'comment_comment' , 'comment_blocked' , 'comment_lock' , 'del_check' ), 'online' => array ( 'cf_datestring' , 'dblog_ip' , 'dblog_user_id' , 'user_name' , 'online_location' , 'online_pagecount' , 'online_flag' , 'online_active' ));
$col_widths = array ( 'adminlog' => array ( 18 , 4 , 14 , 7 , 15 , 8 , 14 , 20 ), // Date - Pri - IP - UID - User - Code - Event - Info
'auditlog' => array ( 18 , 14 , 7 , 15 , 8 , 14 , 24 ), 'rolllog' => array ( 15 , 4 , 12 , 6 , 12 , 7 , 13 , 13 , 18 ), // Date - Pri - IP - UID - User - Code - Caller - Event - Info
'downlog' => array ( 18 , 14 , 7 , 15 , 8 , 38 ), 'detailed' => array ( 10 , 8 , 6 , 4 , 14 , 6 , 17 , 7 , 17 , 21 ), 'comments' => array ( 14 , 7 , 7 , 7 , 14 , 3 , 10 , 12 , 5 , 17 , 1 , 1 , 1 ), 'online' => array ( 18 , 15 , 7 , 14 , 32 , 6 , 4 , 4 ));
$col_titles = array ( 'adminlog' => array ( RL_LAN_019 , RL_LAN_032 , RL_LAN_020 , RL_LAN_104 , RL_LAN_022 , RL_LAN_023 , RL_LAN_025 , RL_LAN_033 ), 'auditlog' => array ( RL_LAN_019 , RL_LAN_020 , RL_LAN_104 , RL_LAN_022 , RL_LAN_023 , RL_LAN_025 , RL_LAN_033 ), 'rolllog' => array ( RL_LAN_019 , RL_LAN_032 , RL_LAN_020 , RL_LAN_104 , RL_LAN_022 , RL_LAN_023 , RL_LAN_024 , RL_LAN_025 , RL_LAN_033 ), 'downlog' => array ( RL_LAN_019 , RL_LAN_020 , RL_LAN_104 , RL_LAN_022 , RL_LAN_068 , RL_LAN_069 ), 'detailed' => array ( RL_LAN_097 , RL_LAN_096 , RL_LAN_098 , RL_LAN_032 , RL_LAN_020 , RL_LAN_104 , RL_LAN_022 , RL_LAN_023 , RL_LAN_025 , RL_LAN_033 ), 'comments' => array ( RL_LAN_019 , RL_LAN_100 , RL_LAN_101 , RL_LAN_102 , RL_LAN_103 , RL_LAN_104 , RL_LAN_105 , RL_LAN_020 , RL_LAN_106 , RL_LAN_107 , RL_LAN_108 , RL_LAN_109 , RL_LAN_110 ), 'online' => array ( RL_LAN_019 , RL_LAN_020 , RL_LAN_021 , RL_LAN_022 , RL_LAN_116 , RL_LAN_117 , RL_LAN_118 , RL_LAN_116 ));
// For DB where the delete option is available, specifies the ID field
$delete_field = array ( 'comments' => 'comment_id' );
// Only need to define entries in this array if the base DB query is non-standard (i.e. different field names and/or joins)
$base_query = array ( 'downlog' => " SELECT SQL_CALC_FOUND_ROWS
2008-05-17 15:00:41 +00:00
dbl . download_request_id as dblog_id ,
dbl . download_request_userid as dblog_user_id ,
dbl . download_request_ip as dblog_ip ,
dbl . download_request_download_id ,
dbl . download_request_datestamp as dblog_datestamp ,
d . download_name ,
2008-12-16 14:22:01 +00:00
u . user_name
FROM #download_requests AS dbl
LEFT JOIN #user AS u ON dbl.download_request_userid=u.user_id
2008-05-17 15:00:41 +00:00
LEFT JOIN #download AS d ON dbl.download_request_download_id=d.download_id
2008-12-16 14:22:01 +00:00
" , 'detailed' => " SELECT SQL_CALC_FOUND_ROWS cl .* , u .* FROM (
2008-05-17 15:00:41 +00:00
SELECT dblog_datestamp + ( dblog_microtime / 1000000 ) AS dblog_time , dblog_user_id , dblog_eventcode , dblog_title , dblog_remarks , dblog_type , dblog_ip , 'roll' AS source FROM `#dblog`
UNION
SELECT dblog_datestamp + ( dblog_microtime / 1000000 ) AS dblog_time , dblog_user_id , dblog_eventcode , dblog_title , dblog_remarks , '-' AS dblog_type , dblog_ip , 'audit' AS source FROM `#audit_log`
UNION
SELECT dblog_datestamp + ( dblog_microtime / 1000000 ) AS dblog_time , dblog_user_id , dblog_eventcode , dblog_title , dblog_remarks , dblog_type , dblog_ip , 'admin' AS source FROM `#admin_log` ) AS cl
2008-12-16 14:22:01 +00:00
LEFT JOIN `#user` AS u ON cl . dblog_user_id = u . user_id " , 'comments' => " SELECT SQL_CALC_FOUND_ROWS * , comment_datestamp AS dblog_datestamp FROM `#comments` AS c " , 'online' => " SELECT SQL_CALC_FOUND_ROWS online_timestamp AS dblog_datestamp ,
online_ip AS dblog_ip ,
SUBSTRING_INDEX ( online_user_id , '.' , 1 ) AS dblog_user_id ,
SUBSTRING ( online_user_id FROM LOCATE ( '.' , online_user_id ) + 1 ) AS user_name ,
2008-06-10 21:43:57 +00:00
`online_location` , `online_pagecount` , `online_flag` , `online_active`
2008-12-16 14:22:01 +00:00
FROM `#online` " );
2008-05-17 15:00:41 +00:00
2008-12-16 14:22:01 +00:00
// The filters have to use the 'actual' db field names. So the following table sets the defaults and the exceptions which vary across the range of tables supported
$map_filters = array ( 'default' => array ( 'datetimes' => '`dblog_datestamp`' , 'ipfilter' => '`dblog_ip`' , 'userfilter' => '`dblog_user_id`' , 'eventfilter' => '`dblog_eventcode`' ), 'downlog' => array ( 'datetimes' => '`download_request_datestamp`' , 'ipfilter' => '`download_request_ip`' , 'userfilter' => '`download_request_userid`' ), 'detailed' => array ( 'datestart' => '`dblog_time`' ), 'comments' => array ( 'datetimes' => '`comment_datestamp`' , 'ipfilter' => '`comment_ip`' , 'eventfilter' => 'comment_type' , 'userfilter' => '`comment_author_id`' ), 'online' => array ( 'online_ip' => '`dblog_ip`' , 'online_user_id' => '`dblog_user_id`' ));
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Field to sort table on
$sort_fields = array ( 'default' => 'dblog_id' , 'detailed' => 'dblog_time' , 'comments' => 'comment_datestamp' , 'online' => 'online_timestamp' );
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Check things
if ( $start_time >= $end_time )
{ // Make end time beginning of tomorrow
$tempdate = getdate ();
$end_time = mktime ( 0 , 0 , 0 , $tempdate [ 'mon' ], $tempdate [ 'mday' ] + 1 , $tempdate [ 'year' ]); // Seems odd, but mktime will work this out OK
// (or so the manual says)
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Now work out the query - only use those filters which are displayed
2007-12-15 15:06:40 +00:00
$qry = '' ;
$and_array = array ();
2008-12-16 14:22:01 +00:00
foreach ( $active_filters [ $action ] as $fname => $fpars )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$filter_field = varset ( $map_filters [ $action ][ $fname ], $map_filters [ 'default' ][ $fname ]);
switch ( $fname )
{
case 'datetimes' :
if ( $start_enabled && ( $start_time > 0 ))
$and_array [] = " { $filter_field } >= " . intval ( $start_time );
if ( $end_enabled && ( $end_time > 0 ))
$and_array [] = " { $filter_field } <= " . intval ( $end_time );
2007-12-15 15:06:40 +00:00
break ;
2008-12-16 14:22:01 +00:00
case 'datestart' :
if ( $start_time == 0 )
{
$end_time = time ();
$start_time = $end_time - 300 ; // Default to last 5 mins
}
$and_array [] = " { $filter_field } >= " . intval ( $start_time );
$and_array [] = " { $filter_field } <= " . intval ( $end_time );
2007-12-15 15:06:40 +00:00
break ;
2008-12-16 14:22:01 +00:00
case 'ipfilter' :
if ( $ipaddress_filter != " " )
{
if ( substr ( $ipaddress_filter , - 1 ) == '*' )
{ // Wildcard to handle - mySQL uses %
$and_array [] = " { $filter_field } LIKE ' " . substr ( $ipaddress_filter , 0 , - 1 ) . " %' " ;
}
else
{
$and_array [] = " { $filter_field } = ' " . $ipaddress_filter . " ' " ;
}
}
break ;
case 'userfilter' :
if ( $user_filter != '' )
$and_array [] = " { $filter_field } = " . intval ( $user_filter );
break ;
case 'eventfilter' :
if ( $event_filter != '' )
{
if ( substr ( $event_filter , - 1 ) == '*' )
{ // Wildcard to handle - mySQL uses %
$and_array [] = " { $filter_field } LIKE ' " . substr ( $event_filter , 0 , - 1 ) . " %' " ;
}
else
{
$and_array [] = " { $filter_field } = ' " . $event_filter . " ' " ;
}
}
break ;
case 'callerfilter' :
if ( $caller_filter != '' )
{
if ( substr ( $caller_filter , - 1 ) == '*' )
{ // Wildcard to handle - mySQL uses %
$and_array [] = " dblog_caller LIKE ' " . substr ( $caller_filter , 0 , - 1 ) . " %' " ;
}
else
{
$and_array [] = " dblog_caller= ' " . $caller_filter . " ' " ;
}
}
break ;
case 'priority' :
if (( $pri_filter_val != " " ) && ( $pri_filter_cond != " " ) && ( $pri_filter_cond != " xx " ))
{
switch ( $pri_filter_cond )
{
case " lt " :
$and_array [] = " dblog_type <= ' { $pri_filter_val } ' " ;
break ;
case " eq " :
$and_array [] = " dblog_type = ' { $pri_filter_val } ' " ;
break ;
case " gt " :
$and_array [] = " dblog_type >= ' { $pri_filter_val } ' " ;
break ;
}
}
break ;
case 'downloadidfilter' :
if ( $downloadid_filter != '' )
$and_array [] = " download_request_download_id = " . intval ( $downloadid_filter );
break ;
}
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
if ( count ( $and_array ))
$qry = " WHERE " . implode ( ' AND ' , $and_array );
2008-01-11 21:53:39 +00:00
2008-05-17 15:00:41 +00:00
$limit_clause = " LIMIT { $from } , { $amount } " ;
2008-12-16 14:22:01 +00:00
$sort_field = varset ( $sort_fields [ $action ], $sort_fields [ 'default' ]);
2008-06-10 21:43:57 +00:00
2008-12-16 14:22:01 +00:00
if ( isset ( $base_query [ $action ]))
2008-01-11 21:53:39 +00:00
{
2008-12-16 14:22:01 +00:00
$qry = $base_query [ $action ] . $qry . " ORDER BY { $sort_field } " . $sort_order ;
2008-01-11 21:53:39 +00:00
}
else
{
2008-12-16 14:22:01 +00:00
$qry = " SELECT SQL_CALC_FOUND_ROWS dbl.*,u.user_name FROM # " . $log_db_table [ $action ] . " AS dbl LEFT JOIN #user AS u ON dbl.dblog_user_id=u.user_id " . $qry . " ORDER BY { $sort_field } " . $sort_order ;
2008-01-11 21:53:39 +00:00
}
2007-12-15 15:06:40 +00:00
2008-05-17 15:00:41 +00:00
$num_entry = 0 ;
2008-12-16 14:22:01 +00:00
if ( $sql -> db_Select_gen ( $qry . $limit_clause ))
2008-05-17 15:00:41 +00:00
{
2008-12-16 14:22:01 +00:00
$num_entry = $sql -> total_results ;
2008-05-17 15:00:41 +00:00
}
2008-12-16 14:22:01 +00:00
if ( $from > $num_entry )
2008-05-17 15:00:41 +00:00
{
2008-12-16 14:22:01 +00:00
$from = 0 ; // We may be on a later page
$limit_clause = " LIMIT { $from } , { $amount } " ;
$sql -> db_Select_gen ( $qry . $limit_clause ); // Re-run query with new value of $from
$num_entry = $sql -> total_results ;
2008-05-17 15:00:41 +00:00
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
// Start by putting up the filter boxes
$text = "
< form method = 'post' action = '".e_SELF."?{$action}.{$from}' >
< fieldset id = 'core-admin-log-filter' >
2008-12-16 14:24:04 +00:00
< legend > " .RL_LAN_012. " </ legend >
2008-12-16 14:22:01 +00:00
< table cellpadding = '0' cellspacing = '0' class = 'adminform' >
< colgroup span = '4' >
< col style = 'width:15%;vertical-align:top;' />
< col style = 'width:35%;vertical-align:top;' />
< col style = 'width:15%;vertical-align:top;' />
< col style = 'width:35%;vertical-align:top;' />
</ colgroup >
" ;
2007-12-15 15:06:40 +00:00
$filter_cols = 0 ;
2008-12-16 14:22:01 +00:00
foreach ( $active_filters [ $action ] as $fname => $fpars )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
if ( $filter_cols == 0 )
$text .= '<tr>' ;
switch ( $fname )
{
case 'datetimes' :
$text .= "
< td class = 'label' >
< input class = 'checkbox' type = 'checkbox' name = 'start_enabled' id = 'start-enabled' value = '1' " .( $start_enabled == 1 ? " checked = 'checked' " : " " ). " />< label for = 'start-enabled' > " .RL_LAN_013. " </ label >
</ td >
< td class = 'control' >
" .time_box( " starttime " , $start_time , $back_day_count[$action] , FALSE). "
</ td >
< td class = 'label' >
< input class = 'checkbox' type = 'checkbox' name = 'end_enabled' id = 'end-enabled' value = '1' " .( $end_enabled == 1 ? " checked = 'checked' " : " " ). " />< label for = 'end-enabled' > " .RL_LAN_014. " </ label ></ td >
< td class = 'control' >
" .time_box( " endtime " , $end_time , $back_day_count[$action] , TRUE). "
</ td >
" ;
$filter_cols = 4 ;
break ;
case 'datestart' :
$text .= "
< td class = 'label' > " .RL_LAN_013. " </ td >
< td class = 'control' > " .time_box( " starttime " , $start_time , $back_day_count[$action] , FALSE, TRUE). " </ td >
< td class = 'label' > " .RL_LAN_092. " </ td >
< td class = 'control' >
< select name = 'timelength' class = 'tbox select time-offset' > " ;
// for ($i = 1; $i <= 10; $i++)
foreach ( array ( 1 , 2 , 3 , 4 , 5 , 7 , 10 , 15 , 20 , 30 ) as $i )
{
$selected = ( $timelength == $i ) ? " selected='selected' " : '' ;
$text .= "
< option value = '{$i}' { $selected } > { $i } </ option >
" ;
}
$text .= "
</ select > " .RL_LAN_093. "
</ td > " ;
$filter_cols = 4 ;
break ;
case 'priority' :
$text .= "
< td class = 'label' > " .RL_LAN_058. " </ td >
< td class = 'control' >
< select name = 'roll_pri_cond' class = 'tbox' >
< option value = 'xx' " .( $pri_filter_cond == 'xx' ? " selected = 'selected' " : " " ). " >& nbsp ; </ option >
< option value = 'gt' " .( $pri_filter_cond == 'gt' ? " selected = 'selected' " : " " ). " >& gt ; =</ option >
< option value = 'eq' " .( $pri_filter_cond == 'eq' ? " selected = 'selected' " : " " ). " >==</ option >
< option value = 'lt' " .( $pri_filter_cond == 'lt' ? " selected = 'selected' " : " " ). " >& lt ; =</ option >
</ select >
< input class = 'tbox' type = 'text' name = 'roll_pri_val' id = 'roll-pri-val' size = '20' value = '{$pri_filter_val}' maxlength = '10' />
</ td >
" ;
$filter_cols += 2 ;
break ;
case 'ipfilter' :
$text .= "
< td class = 'label' > " .RL_LAN_060. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_ipaddress_filter' size = '20' value = '".$e107->ipDecode($ipaddress_filter)."' maxlength = '20' />
< div class = 'field-help' > " .RL_LAN_061. " </ div >
</ td >
" ;
$filter_cols += 2 ;
break ;
case 'userfilter' :
$text .= "
< td class = 'label' > " .RL_LAN_015. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_user_filter' size = '20' value = '".$user_filter."' maxlength = '10' />
< div class = 'field-help' > " .RL_LAN_016. " </ div >
</ td >
" ;
$filter_cols += 2 ;
break ;
case 'eventfilter' :
$text .= "
< td class = 'label' > " .RL_LAN_029. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_event_filter' size = '20' value = '".$event_filter."' maxlength = '10' />
< div class = 'field-help' > " .RL_LAN_061. " </ div >
</ td >
" ;
$filter_cols += 2 ;
break ;
case 'callerfilter' :
$text .= "
< td class = 'label' > " .RL_LAN_059. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_caller_filter' size = '40' value = '".$caller_filter."' maxlength = '40' />
< div class = 'field-help' > " .RL_LAN_061. " </ div >
</ td >
" ;
$filter_cols += 2 ;
break ;
case 'downloadidfilter' :
$text .= "
< td class = 'label' > " .RL_LAN_090. " </ td >
< td class = 'control' >
< input class = 'tbox' type = 'text' name = 'roll_downloadid_filter' size = '20' value = '".$downloadid_filter."' maxlength = '10' />
</ td > " ;
$filter_cols += 2 ;
break ;
case 'blank' : // Any number of blank cells
$text .= str_repeat ( " <td> </td> " , $fpars );
$filter_cols += $fpars ;
break ;
}
if ( $filter_cols >= 4 )
{
$text .= '</tr>' ;
$filter_cols = 0 ;
}
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
// $text .= "<tr><td colspan='4'>Query = ".$qry.$limit_clause."<br />{$_COOKIE[$rl_cookiename]}</td></tr>";
2007-12-15 15:06:40 +00:00
$text .= "
2008-12-16 14:22:01 +00:00
</ table >
< div class = 'buttons-bar center' >
< button class = 'delete' type = 'submit' name = 'clearfilters' rel = 'no-confirm' value = '".RL_LAN_114."' >< span > " .RL_LAN_114. " </ span ></ button >
< button class = 'update' type = 'submit' name = 'updatefilters' value = '".RL_LAN_028."' >< span > " .RL_LAN_028. " </ span ></ button >
</ div >
</ fieldset >
</ form >
" ;
// Next bit is the actual log display - the arrays define column widths, titles, fields etc for each log
2007-12-15 15:06:40 +00:00
$column_count = count ( $col_widths [ $action ]);
2008-12-16 14:22:01 +00:00
$text .= "
< form method = 'post' action = '".e_SELF."?{$action}.{$from}' >
< fieldset id = 'core-admin-log-list' >
< legend class = 'e-hidemes' > { $page_title [ $action ]} </ legend >
< table cellpadding = '0' cellspacing = '0' class = 'adminlist' >
< colgroup span = '4' >
" ;
2007-12-15 15:06:40 +00:00
foreach ( $col_widths [ $action ] as $i )
{
2008-12-16 14:22:01 +00:00
$text .= "
< col style = 'width:{$i}%; vertical-align:top;' />
" ;
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
$text .= "
</ colgroup >
" ;
if ( $num_entry == 0 )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$text .= "
< tbody >
< tr >
< td class = 'center' colspan = '{$column_count}' >< strong > " .RL_LAN_017. " </ strong ></ td >
</ tr > " ;
2007-12-15 15:06:40 +00:00
}
else
2008-12-16 14:22:01 +00:00
{ // Start with header
$text .= '
< thead >
< tr >
' ;
$count = 1 ;
foreach ( $col_titles [ $action ] as $ct )
{
count ( $col_titles [ $action ]);
$text .= "
< th " .(( $count == count( $col_titles[$action] )) ? " class = 'last' " : " " ). " > { $ct } </ th >
" ;
$count ++ ;
}
$text .= "
</ tr >
</ thead >
< tbody >
" ;
// Routine to handle the simple bbcode-like codes for log body text
function log_process ( $matches )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
switch ( $matches [ 1 ])
2008-05-17 15:00:41 +00:00
{
2008-12-16 14:22:01 +00:00
case 'br' :
return '<br />' ;
case 'link' :
$temp = substr ( $matches [ 2 ], 1 );
return " <a href=' { $temp } '> { $temp } </a> " ;
case 'test' :
return '----TEST----' ;
default :
return $matches [ 0 ]; // No change
2008-05-17 15:00:41 +00:00
}
2008-12-16 14:22:01 +00:00
}
// Now put up the events
$delete_button = FALSE ;
while ( $row = $sql -> db_Fetch ())
{
$text .= '<tr>' ;
foreach ( $col_fields [ $action ] as $cf )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
switch ( $cf )
{
case 'cf_datestring' :
$val = date ( AL_DATE_TIME_FORMAT , $row [ 'dblog_datestamp' ]);
break ;
case 'cf_microtime' :
$val = date ( " H:i:s " , intval ( $row [ 'dblog_time' ]) % 86400 ) . '.' . str_pad ( 100000 * round ( $row [ 'dblog_time' ] - floor ( $row [ 'dblog_time' ]), 6 ), 6 , '0' );
break ;
case 'cf_microtimediff' :
$val = ' ' ;
if ( $last_noted_time > 0 )
{
$val = number_format ( $last_noted_time - $row [ 'dblog_time' ], 6 , '.' , '' );
}
$last_noted_time = $row [ 'dblog_time' ];
break ;
case 'cf_eventcode' :
$val = 'ADMIN' . $row [ 'dblog_eventcode' ];
break ;
case 'dblog_title' : // Look up constants to give multi-language viewing
$val = trim ( $row [ 'dblog_title' ]);
if ( defined ( $val ))
$val = constant ( $val );
break ;
case 'dblog_user_name' :
$val = $row [ 'dblog_user_id' ] ? $row [ 'dblog_user_name' ] : LAN_ANONYMOUS ;
break ;
case 'user_name' :
$val = $row [ 'dblog_user_id' ] ? $row [ 'user_name' ] : LAN_ANONYMOUS ;
break ;
case 'dblog_caller' :
$val = $row [ 'dblog_caller' ];
if (( strpos ( $val , '|' ) !== FALSE ) && ( strpos ( $val , '@' ) !== FALSE ))
{
list ( $file , $rest ) = explode ( '|' , $val );
list ( $routine , $rest ) = explode ( '@' , $rest );
$val = $file . '<br />Function: ' . $routine . '<br />Line: ' . $rest ;
}
break ;
case 'dblog_remarks' :
// Look for pseudo-code for newlines, link insertion
$val = preg_replace_callback ( " # \ [!( \ w+?)(=.+?) { 0,1}!]# " , 'log_process' , $row [ 'dblog_remarks' ]);
break ;
case 'dblog_ip' :
$val = $e107 -> ipDecode ( $row [ 'dblog_ip' ]);
break ;
case 'comment_ip' :
$val = $e107 -> ipDecode ( $row [ 'comment_ip' ]);
/* if ( strlen ( $val ) == 8 ) // New decoder should handle this automatically
2008-05-17 15:00:41 +00:00
{
$hexip = explode ( '.' , chunk_split ( $val , 2 , '.' ));
2008-12-16 14:22:01 +00:00
$val = hexdec ( $hexip [ 0 ]) . '.' . hexdec ( $hexip [ 1 ]) . '.' . hexdec ( $hexip [ 2 ]) . '.' . hexdec ( $hexip [ 3 ]);
2008-11-22 12:57:42 +00:00
} */
2008-12-16 14:22:01 +00:00
break ;
case 'comment_comment' :
$val = $tp -> text_truncate ( $row [ 'comment_comment' ], 100 , '...' ); // Just display first bit of comment
break ;
case 'online_location' :
$val = str_replace ( $e107 -> base_path , '' , $row [ 'online_location' ]); // Just display site-specific bit of path
break ;
case 'del_check' : // Put up a 'delete' checkbox
$val = " <input class='checkbox' type='checkbox' class='checkbox' name='del_item[]' value=' { $row [ 'comment_id' ] } ' > " ;
$delete_button = TRUE ;
break ;
default :
$val = $row [ $cf ];
}
$text .= " <td> { $val } </td> " ;
}
$text .= " </tr> " ;
2007-12-15 15:06:40 +00:00
}
}
$text .= "
2008-12-16 14:22:01 +00:00
</ tbody >
</ table >
< div class = 'buttons-bar center' >
< button class = 'submit' type = 'submit' name = 'refreshlog' value = '".RL_LAN_018."' >< span > " .RL_LAN_018. " </ span ></ button >
" ;
if ( $delete_button )
{
$text .= "
< button class = 'delete' type = 'submit' name = 'deleteitems' title = '".RL_LAN_111."?' value = '".RL_LAN_111."' >< span > " .RL_LAN_111. " </ span ></ button >
" ;
}
$text .= "
</ div >
</ fieldset >
2007-12-15 15:06:40 +00:00
</ form >
2008-12-16 14:22:01 +00:00
" ;
2008-01-04 21:32:21 +00:00
2008-12-16 14:22:01 +00:00
// Next-Previous. ==========================
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
$text .= sprintf ( RL_LAN_126 , $num_entry );
if ( $num_entry > $amount )
2007-12-15 15:06:40 +00:00
{
2008-12-16 14:22:01 +00:00
$parms = " { $num_entry } , { $amount } , { $from } , " . e_SELF . " ? " . $action . " .[FROM] " ;
$text .= " <div class='nextprev-bar'> " . $tp -> parseTemplate ( " { NEXTPREV= { $parms } } " ) . " </div> " ;
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
$ns -> tablerender ( " { $page_title [ $action ] } " , $emessage -> render () . $text );
2007-12-15 15:06:40 +00:00
}
function admin_log_adminmenu ()
{
2008-12-16 14:22:01 +00:00
if ( e_QUERY )
{
$tmp = explode ( " . " , e_QUERY );
$action = $tmp [ 0 ];
}
if ( $action == " " )
{
$action = " adminlog " ;
}
$var [ 'adminlog' ][ 'text' ] = RL_LAN_030 ;
$var [ 'adminlog' ][ 'link' ] = " admin_log.php?adminlog " ;
$var [ 'auditlog' ][ 'text' ] = RL_LAN_062 ;
$var [ 'auditlog' ][ 'link' ] = " admin_log.php?auditlog " ;
$var [ 'rolllog' ][ 'text' ] = RL_LAN_002 ;
$var [ 'rolllog' ][ 'link' ] = " admin_log.php?rolllog " ;
$var [ 'downlog' ][ 'text' ] = RL_LAN_067 ;
$var [ 'downlog' ][ 'link' ] = " admin_log.php?downlog " ;
$var [ 'detailed' ][ 'text' ] = RL_LAN_091 ;
$var [ 'detailed' ][ 'link' ] = " admin_log.php?detailed " ;
$var [ 'comments' ][ 'text' ] = 'Comments' ;
$var [ 'comments' ][ 'link' ] = " admin_log.php?comments " ;
$var [ 'config' ][ 'text' ] = RL_LAN_027 ;
$var [ 'config' ][ 'link' ] = " admin_log.php?config " ;
/* XXX - why ? !
if ( $action == 'comments' )
{
$var [ 'users' ][ 'text' ] = RL_LAN_115 ;
$var [ 'users' ][ 'link' ] = " users.php " ;
}
*/
2008-12-21 12:53:11 +00:00
e_admin_menu ( RL_LAN_005 , $action , $var );
2007-12-15 15:06:40 +00:00
}
2008-12-16 14:22:01 +00:00
require_once ( e_ADMIN . " footer.php " );
function gen_log_delete ( $selectname )
{
$values = array ( 90 , 60 , 30 , 21 , 20 , 14 , 10 , 7 , 6 , 5 , 4 , 3 , 2 , 1 );
$ret = " <select name=' { $selectname } ' class='tbox select'> " ;
$selected = " selected='selected' " ; // Always select the first (highest) value
foreach ( $values as $v )
{
$ret .= " <option value=' { $v } ' { $selected } > { $v } </option> " ;
$selected = '' ;
}
$ret .= " </select> " ;
return $ret ;
}
2007-12-15 15:06:40 +00:00
2008-12-16 14:22:01 +00:00
/**
* Handle page DOM within the page header
*
* @ return string JS source
*/
function headerjs ()
{
require_once ( e_HANDLER . 'js_helper.php' );
$ret = "
< script type = 'text/javascript' >
//add required core lan - delete confirm message
( " .e_jshelper::toString(RL_LAN_JS_CONFIRM). " ) . addModLan ( 'core' , 'delete_confirm' );
</ script >
< script type = 'text/javascript' src = '".e_FILE_ABS."jslib/core/admin.js' ></ script >
" ;
return $ret ;
}
2006-12-02 04:36:16 +00:00
2007-12-15 15:06:40 +00:00
?>