From 3d1d88a4aa7c2d9ce0042c5b465e2b2a8c7cdd9e Mon Sep 17 00:00:00 2001 From: Andre Lorbach Date: Thu, 19 Nov 2009 17:37:20 +0100 Subject: [PATCH] Implemented displaying filters in reports --- src/classes/logstream.class.php | 9 ++ src/classes/reports/report.class.php | 122 ++++++++++++++++++ .../reports/report.eventlog.monilog.class.php | 7 +- .../report.eventlog.monilog.template.html | 26 +++- src/lang/en/main.php | 7 +- 5 files changed, 162 insertions(+), 9 deletions(-) diff --git a/src/classes/logstream.class.php b/src/classes/logstream.class.php index 56af2f3..b27c878 100644 --- a/src/classes/logstream.class.php +++ b/src/classes/logstream.class.php @@ -527,6 +527,15 @@ abstract class LogStream { return SUCCESS; } + /** + * Helper function to obtain internal Filters Array + */ + public function ReturnFiltersArray() + { + return $this->_filters; + } + + /* * --- PIRVATE HELPERS! */ diff --git a/src/classes/reports/report.class.php b/src/classes/reports/report.class.php index fdb5192..df63df6 100644 --- a/src/classes/reports/report.class.php +++ b/src/classes/reports/report.class.php @@ -271,6 +271,128 @@ abstract class Report { } } + + /* + * Helper function to set the FilterString + */ + public function SetCommonContentVariables() + { + global $content, $fields; + + $content["report_title"] = $this->GetCustomTitle(); + $content["report_comment"] = $this->GetCustomComment(); + $content["report_version"] = $this->GetReportVersion(); + + // Create array for readable filters display + $myFilters = $this->_streamObj->ReturnFiltersArray(); + if ( $myFilters != null ) + { + // Enable display of filters + $content["report_filters_enabled"] = true; + + foreach ( $myFilters as $myFieldID => $myFieldFilters ) + { + // Init Filterstring entry + $aNewDisplayFilter = array(); + $aNewDisplayFilter['FilterDisplay'] = ""; + $aNewDisplayFilter['FieldID'] = $myFieldID; + if ( isset($fields[$myFieldID]['FieldCaption']) ) + $aNewDisplayFilter['FilterCaption'] = $fields[$myFieldID]['FieldCaption']; + else + $aNewDisplayFilter['FilterCaption'] = $myFieldID; + + + + foreach ( $myFieldFilters as $tmpFilter ) + { + // Date field means special handling! + if ( $myFieldID == SYSLOG_DATE ) + { + // Set Filtertype Display + $aNewDisplayFilter['FilterType'] = $content['LN_REPORT_FILTERTYPE_DATE']; + + // Append Datefilter to Title + // $content["report_title"] .= + + if ( $tmpFilter[FILTER_DATEMODE] == DATEMODE_LASTX ) + { + $aNewDisplayFilter['FilterDisplay'] = $content['LN_FILTER_DATELASTX'] . " "; + switch ( $tmpFilter[FILTER_VALUE] ) + { + case DATE_LASTX_HOUR: + $aNewDisplayFilter['FilterDisplay'] .= "'" . $content['LN_DATE_LASTX_HOUR'] . "'"; + break; + case DATE_LASTX_12HOURS: + $aNewDisplayFilter['FilterDisplay'] .= "'" . $content['LN_DATE_LASTX_12HOURS'] . "'"; + break; + case DATE_LASTX_24HOURS: + $aNewDisplayFilter['FilterDisplay'] .= "'" . $content['LN_DATE_LASTX_24HOURS'] . "'"; + break; + case DATE_LASTX_7DAYS: + $aNewDisplayFilter['FilterDisplay'] .= "'" . $content['LN_DATE_LASTX_7DAYS'] . "'"; + break; + case DATE_LASTX_31DAYS: + $aNewDisplayFilter['FilterDisplay'] .= "'" . $content['LN_DATE_LASTX_31DAYS'] . "'"; + break; + } + } + else if ( $tmpFilter[FILTER_DATEMODE] == DATEMODE_RANGE_FROM ) + $aNewDisplayFilter['FilterDisplay'] = $content["LN_FILTER_DATEFROM"] . " " . GetFormatedDate( $tmpFilter[FILTER_VALUE] ); + else if ( $tmpFilter[FILTER_DATEMODE] == DATEMODE_RANGE_TO ) + $aNewDisplayFilter['FilterDisplay'] = $content["LN_FILTER_DATETO"] . " " . GetFormatedDate( $tmpFilter[FILTER_VALUE] ); + + // Add to title! + $content["report_title"] .= " - " . $aNewDisplayFilter['FilterDisplay']; + } + else if ( $tmpFilter[FILTER_TYPE] == FILTER_TYPE_STRING ) + { + // Set Filtertype Display + $aNewDisplayFilter['FilterType'] = $content['LN_REPORT_FILTERTYPE_STRING']; + + // Set Filterdisplay + $aNewDisplayFilter['FilterDisplay'] .= $aNewDisplayFilter['FilterCaption'] . " "; + if ( $tmpFilter[FILTER_MODE] & FILTER_MODE_INCLUDE ) + { + if ( $tmpFilter[FILTER_MODE] & FILTER_MODE_SEARCHFULL ) + $aNewDisplayFilter['FilterDisplay'] .= "equals '" . $tmpFilter[FILTER_VALUE] . "'"; + else + $aNewDisplayFilter['FilterDisplay'] .= "contains '" . $tmpFilter[FILTER_VALUE] . "'"; + } + else if ( $myfilter[FILTER_MODE] & FILTER_MODE_EXCLUDE ) + { + if ( $tmpFilter[FILTER_MODE] & FILTER_MODE_SEARCHFULL ) + $aNewDisplayFilter['FilterDisplay'] .= "does not equal '" . $tmpFilter[FILTER_VALUE] . "'"; + else + $aNewDisplayFilter['FilterDisplay'] .= "does not contain '" . $tmpFilter[FILTER_VALUE] . "'"; + } + } + else if ( $tmpFilter[FILTER_TYPE] == FILTER_TYPE_NUMBER ) + { + // Set Filtertype Display + $aNewDisplayFilter['FilterType'] = $content['LN_REPORT_FILTERTYPE_NUMBER']; + + // Set Filterdisplay + $aNewDisplayFilter['FilterDisplay'] .= $aNewDisplayFilter['FilterCaption'] . " "; + if ( $tmpFilter[FILTER_MODE] & FILTER_MODE_INCLUDE ) + $aNewDisplayFilter['FilterDisplay'] .= "== " . $tmpFilter[FILTER_VALUE]; + else if ( $myfilter[FILTER_MODE] & FILTER_MODE_EXCLUDE ) + $aNewDisplayFilter['FilterDisplay'] .= "!= " . $tmpFilter[FILTER_VALUE]; + } + + // Add to display filter array + if ( strlen($aNewDisplayFilter['FilterDisplay']) > 0 ) + $content["report_filters"][] = $aNewDisplayFilter; + } + } + } + else + { + // Disable display of filters + $content["report_filters_enabled"] = false; + } + } + + /* * Helper function to return the BaseFileName */ diff --git a/src/classes/reports/report.eventlog.monilog.class.php b/src/classes/reports/report.eventlog.monilog.class.php index a0959c5..91d2129 100644 --- a/src/classes/reports/report.eventlog.monilog.class.php +++ b/src/classes/reports/report.eventlog.monilog.class.php @@ -112,14 +112,11 @@ class Report_monilog extends Report { // // Verify Datasource first! // if ( $this->verifyDataSource() == SUCCESS ) // { - // Get Settings and set to global content variable - $content["report_title"] = $this->GetCustomTitle(); - $content["report_comment"] = $this->GetCustomComment(); - $content["report_version"] = $this->GetReportVersion(); + // Set to common content variables + $this->SetCommonContentVariables(); // --- Report logic starts here $content["report_rendertime"] = ""; - // Step 1: Gather Summaries // Obtain data from the logstream! diff --git a/src/classes/reports/report.eventlog.monilog/report.eventlog.monilog.template.html b/src/classes/reports/report.eventlog.monilog/report.eventlog.monilog.template.html index e49e1a3..10396cb 100644 --- a/src/classes/reports/report.eventlog.monilog/report.eventlog.monilog.template.html +++ b/src/classes/reports/report.eventlog.monilog/report.eventlog.monilog.template.html @@ -18,6 +18,27 @@ {report_comment} + + + + + + + + + + + + + + +
{LN_REPORT_FILTERS}
{FilterType}{FilterDisplay}
+ + + + + +

@@ -42,7 +63,7 @@ - +
@@ -59,6 +80,8 @@
{ln_report_computer_summary}
+

+ @@ -68,7 +91,6 @@ -

{FROMHOST}

{ln_report_consolidation}
diff --git a/src/lang/en/main.php b/src/lang/en/main.php index 4866459..0eb5372 100644 --- a/src/lang/en/main.php +++ b/src/lang/en/main.php @@ -341,8 +341,11 @@ $content['LN_ORACLE_WHOIS'] = "WHOIS Lookup for '%1' value '%2'"; $content['LN_GEN_ERROR_WHILEREPORTGEN'] = "Error occured while generating report"; $content['LN_GEN_ERROR_REPORT_NODATA'] = "No data found for report generation"; $content['LN_GEN_ALL_OTHER_EVENTS'] = "All other events"; - $content['LN_REPORT_FOOTER_ENDERED'] = "Report rendered in:"; - + $content['LN_REPORT_FOOTER_ENDERED'] = "Report rendered in"; + $content['LN_REPORT_FILTERS'] = "List of used filters"; + $content['LN_REPORT_FILTERTYPE_DATE'] = "Date"; + $content['LN_REPORT_FILTERTYPE_NUMBER'] = "Number"; + $content['LN_REPORT_FILTERTYPE_STRING'] = "String"; ?> \ No newline at end of file