Started implemented basic class for report engine, and first free report derived from it

This commit is contained in:
Andre Lorbach 2009-08-18 17:10:40 +02:00
parent 14361ee231
commit 18a5759122
3 changed files with 337 additions and 0 deletions

View File

@ -0,0 +1,164 @@
<?php
/*
*********************************************************************
* -> www.phplogcon.org <- *
* ----------------------------------------------------------------- *
* Some constants *
* *
* Monilog Report is a basic report for EventLog and Syslog data
*
* \version 1.0.0 Init Version
* *
* All directives are explained within this file *
*
* Copyright (C) 2008-2009 Adiscon GmbH.
*
* This file is part of phpLogCon.
*
* PhpLogCon is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PhpLogCon is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with phpLogCon. If not, see <http://www.gnu.org/licenses/>.
*
* A copy of the GPL can be found in the file "COPYING" in this
* distribution.
*********************************************************************
*/
// --- Avoid directly accessing this file!
if ( !defined('IN_PHPLOGCON') )
{
die('Hacking attempt');
exit;
}
// ---
// --- Required Includes!
require_once($gl_root_path . 'include/constants_errors.php');
// ---
class ReportMonilog extends Report {
// Common Properties
public $_reportVersion = 1; // Internally Version of the ReportEngine
public $_reportID = "report.adiscon.monilog.class"; // ID for the report, needs to be unique!
public $_reportTitle = "EventLog Summary Report"; // Display name for the report
public $_reportDescription = "This is a EventLog Summary Report based on Monilog"
/* private $_currentOffset = -1;
private $_currentStartPos = -1;
private $_fp = null;
private $_bEOS = false;
const _BUFFER_length = 8192;
private $_buffer = false;
private $_buffer_length = 0;
private $_p_buffer = -1;
*/
// Constructor
public function ReportMonilog() {
// $this->_logStreamConfigObj = $streamConfigObj;
// Fill fields we need for this report
$this->_arrProperties[] = SYSLOG_UID;
$this->_arrProperties[] = SYSLOG_DATE;
$this->_arrProperties[] = SYSLOG_HOST;
$this->_arrProperties[] = SYSLOG_MESSAGETYPE;
$this->_arrProperties[] = SYSLOG_FACILITY;
$this->_arrProperties[] = SYSLOG_SEVERITY;
$this->_arrProperties[] = SYSLOG_EVENT_ID;
$this->_arrProperties[] = SYSLOG_EVENT_LOGTYPE;
$this->_arrProperties[] = SYSLOG_EVENT_SOURCE;
$this->_arrProperties[] = SYSLOG_EVENT_CATEGORY;
$this->_arrProperties[] = SYSLOG_EVENT_USER;
$this->_arrProperties[] = SYSLOG_MESSAGE;
}
/**
* startDataProcessing, analysing data
*
* @param arrProperties array in: Properties wish list.
* @return integer Error stat
*/
public function startDataProcessing()
{
// Verify Datasource first!
if ( $this->verifyDataSource() == SUCCESS )
{
$res = $stream->Open( $this->_arrProperties, true );
if ( $res == SUCCESS )
{
// report logic
}
}
// Return success!
return SUCCESS;
}
/**
* verifyDataSource, verifies if data is accessable and
* contains what we need
*
* @param arrProperties array in: Properties wish list.
* @return integer Error stat
*/
public function verifyDataSource()
{
if ( $this->_streamCfgObj == null )
{
// Obtain and get the Config Object
$this->_streamCfgObj = $content['Sources'][$this->_mySourceID]['ObjRef'];
}
if ( $this->_streamObj == null )
{
// Create LogStream Object
$this->_streamObj = $this->_streamCfgObj ->LogStreamFactory($this->_streamCfgObj);
}
// Success!
return SUCCESS;
}
/**
* validateLicense, check license code
*
*/
public function validateLicense()
{
// This is a free report!
return SUCCESS;
}
// Private functions...
/*
private function ResetBuffer() {
$this->_bEOS = false;
$this->_buffer = false;
$this->_buffer_length = 0;
$this->_p_buffer = -1;
}
*/
}
?>

View File

@ -0,0 +1,168 @@
<?php
/*
*********************************************************************
* -> www.phplogcon.org <- *
* ----------------------------------------------------------------- *
* The Report Class is the base class for all reports *
* *
* All directives are explained within this file *
*
* Copyright (C) 2008 Adiscon GmbH.
*
* This file is part of phpLogCon.
*
* PhpLogCon is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PhpLogCon is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with phpLogCon. If not, see <http://www.gnu.org/licenses/>.
*
* A copy of the GPL can be found in the file "COPYING" in this
* distribution.
*********************************************************************
*/
// --- Avoid directly accessing this file!
if ( !defined('IN_PHPLOGCON') )
{
die('Hacking attempt');
exit;
}
// ---
// --- Basic Includes
require_once($gl_root_path . 'classes/enums.class.php');
require_once($gl_root_path . 'include/constants_errors.php');
require_once($gl_root_path . 'include/constants_logstream.php');
// ---
abstract class Report {
// Common Properties
public $_reportVersion = 1; // Internally Version of the ReportEngine
public $_reportID = "report.adiscon.base.class";// ID for the report, needs to be unique!
public $_reportTitle = "Base Report Class"; // Display name for the report
public $_reportDescription = "This is the base class for all reports"
// Configuration Properties
protected $_filterString = "";
protected $_advancedOptionsXml = "";
protected $_outputType = REPORT_OUTPUT_HTML; // Default HTML Output
protected $_mySourceID = "";
protected $_arrProperties = null; // List of properties we need for the main logstream query!
// License properties
protected $_licenseName = "";
protected $_licenseKey = "";
// Helper Objects
protected $_reportcontent = null;
protected $_baseFileName = "";
public $_streamCfgObj = null;
public $_streamObj = null;
// Begin Abstract Function definitions!
/**
* This function process the data
* Will return -1 on failure!
*/
public abstract function startDataProcessing();
/**
* This function checks if the license is valid
* Will return -1 on failure!
*/
public abstract function validateLicense();
/**
* This functions check if the data source is valid
* Will return -1 on failure!
*/
public abstract function verifyDataSource();
/**
* Helper function using the template parser to create the report
*/
public function CreateReportFromData()
{
// Create new template parser
$page = new Template();
$page -> set_path ( $gl_root_path . "classes/reports/" );
// Run Parser
$page -> parser($this->_reportcontent, $this->_baseFileName);
// Return result!
return $page -> result();
}
/*
* Helper function to set the OutputType
*/
public function SetOutputType($newOutputType)
{
// Set new Outputtype
$this->_outputType = $newOutputType;
// Set Filebasename
$this->_baseFileName = $this->_reportID . ".template." . $this->_outputType;
}
/*
* Helper function to set the FilterString
*/
public function SetFilterString($newFilterString)
{
// Set new Outputtype
$this->_filterString = $newFilterString;
}
/*
* Helper function to set the FilterString
*/
public function SetAdvancedOptions($newAdvancedOptions)
{
// Set new Outputtype
$this->_advancedOptionsXml = $newAdvancedOptions;
}
/*
* Helper function to set the FilterString
*/
public function SetSourceID($newSourceID)
{
global $content;
// check if valid!
if ( isset($content['Sources'][$newSourceID]) )
$this->_mySourceID = $newSourceID;
else
{
OutputDebugMessage("SetSourceID failed, ID '" . $newSourceID . "' is not a valid Logstream Source", DEBUG_ERROR);
return;
}
}
/*
* Helper function to trigger initialisation
*/
public function RunBasicInits()
{
$this->SetOutputType( REPORT_OUTPUT_HTML );
}
}
?>

View File

@ -82,6 +82,11 @@ define('ALIGN_CENTER', 'center');
define('ALIGN_LEFT', 'left'); define('ALIGN_LEFT', 'left');
define('ALIGN_RIGHT', 'right'); define('ALIGN_RIGHT', 'right');
// Defines for Report output types
define('REPORT_OUTPUT_HTML', 'html');
define('REPORT_OUTPUT_PDF', 'pdf');
// --- Predefine fields array! // --- Predefine fields array!
$fields[SYSLOG_UID]['FieldID'] = SYSLOG_UID; $fields[SYSLOG_UID]['FieldID'] = SYSLOG_UID;
$fields[SYSLOG_UID]['FieldDefine'] = 'SYSLOG_UID'; $fields[SYSLOG_UID]['FieldDefine'] = 'SYSLOG_UID';