execute(array())->fetchOne(); $latest =WT_DB::prepare("SELECT DATE(MAX(log_time)) FROM {$TBLPREFIX}log")->execute(array())->fetchOne(); // Filtering $from=safe_GET('from', '\d\d\d\d-\d\d-\d\d', $earliest); $to =safe_GET('to', '\d\d\d\d-\d\d-\d\d', $latest); $type=safe_GET('type', array('auth','change','config','debug','edit','error','media','search')); $text=safe_GET('text'); $ip =safe_GET('ip'); $user=safe_GET('user'); if (WT_USER_IS_ADMIN) { // Site admins can see all logs $gedc=safe_GET('gedc'); } else { // Gedcom admins can only see logs relating to this gedcom $gedc=WT_GEDCOM; } $query=array(); $args =array(); if ($from) { $query[]='log_time>=?'; $args []=$from; } if ($to) { $query[]='log_timeexecute($args)->fetchAll(); foreach ($rows as $row) { echo '"', $row->log_time, '",', '"', $row->log_type, '",', '"', str_replace('"', '""', $row->log_message), '",', '"', $row->ip_address, '",', '"', str_replace('"', '""', $row->user_name), '",', '"', str_replace('"', '""', $row->gedcom_name), '"', "\n"; } exit; } if (safe_GET('delete', 'yes')=='yes') { $sql3= "DELETE {$TBLPREFIX}log FROM {$TBLPREFIX}log". " LEFT JOIN {$TBLPREFIX}user USING (user_id)". // user may be deleted " LEFT JOIN {$TBLPREFIX}gedcom USING (gedcom_id)"; // gedcom may be deleted if ($query) { $sql3.=" WHERE ".implode(' AND ', $query); } WT_DB::prepare($sql3)->execute($args); } $total_rows=WT_DB::prepare($sql1)->execute($args)->fetchOne(); // Paging $limit =safe_GET('limit', '\d+', 50); $offset=safe_GET('offset', '\d+', $total_rows-$limit); if ($offset+$limit>$total_rows) { $offset=$total_rows-$limit; } if ($offset<0) { $offset=0; } $sql2.=" LIMIT {$limit} OFFSET {$offset}"; $rows=WT_DB::prepare($sql2)->execute($args)->fetchAll(); print_header(i18n::translate('Logs')); echo '
', '', '', '', '', '', '', '', '', '', '', '', '
', i18n::translate('Logs'), '
', // I18N: %s are both user-input date fields i18n::translate('From %s to %s', '', ''), '', i18n::translate('Type'), ' ', select_edit_control('type', array(''=>'', 'auth'=>'auth','change'=>'change','config'=>'config','debug'=>'debug','edit'=>'edit','error'=>'error','media'=>'media','search'=>'search'), null, $type, ''), '', i18n::translate('Message'), ' ', '', i18n::translate('IP address'), ' ', '', i18n::translate('User'), ' ', '', i18n::translate('Gedcom'), ' ', '', ' ', '
', i18n::translate('Results per page'), ' ', select_edit_control('limit', array('10'=>'10', '25'=>'25','50'=>'50','100'=>'100','1000'=>'1000'), null, $limit, ''), '
'; if ($rows) { echo '

', i18n::translate('Showing results %d to %d of %d', $offset+1, min($offset+$limit, $total_rows), $total_rows); $url= WT_SCRIPT_NAME.'?from='.urlencode($from). '&to='.urlencode($to). '&type='.urlencode($type). '&text='.urlencode($text). '&ip='.urlencode($ip). '&user='.urlencode($user). '&gedc='.urlencode($gedc). '&limit='.$limit. '&offset='; if ($offset>0) { echo ' | ', i18n::translate('first'), ''; echo ' | ', i18n::translate('previous'), ''; } if ($offset+$limit<$total_rows) { echo ' | ', i18n::translate('next'), ''; echo ' | ', i18n::translate('last'), ''; } if (WT_USER_IS_ADMIN) { echo ' | ', i18n::translate('export'), ''; echo ' | ', i18n::translate('delete'), ''; } echo '

', '', '', '', '', '', '', '', ''; foreach ($rows as $row) { echo '', '', '', '', '', '', '', ''; } echo '
', i18n::translate('Timestamp'), '', i18n::translate('Type'), '', i18n::translate('Message'), '', i18n::translate('IP address'), '', i18n::translate('User'), '', i18n::translate('GEDCOM'), '
', $row->log_time, '', $row->log_type, '', nl2br(htmlspecialchars($row->log_message)), '', $row->ip_address, '', htmlspecialchars($row->user_name), '', htmlspecialchars($row->gedcom_name), '
'; } print_footer();