diff --git a/ChangeLog b/ChangeLog
index 80bb8a7..128362e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,17 @@
---------------------------------------------------------------------------
+Version 2.5.24 (beta), 2009-01-27
+- Added italian language files, translated by Luigi Rosa
+- Improved loading of language files, to avoid display error's if
+ translation is incomplete.
+- Enhanced database performance of MYSQL and PDO logstream source drivers.
+ Searching and paging through results is much faster on larger
+ databases now.
+- Enhanced Pager performance on index and detail page.
+- Hardened db logstream classes against invalid parameters.
+- Added missing include file for debug functions
+- Debug Messages are now printed well formated below the site content
+- Improved Documentation
+---------------------------------------------------------------------------
Version 2.5.23 (beta), 2008-12-23
- Fixed typo in textual month detection, which caused date detection
problems in december month only.
diff --git a/src/classes/logstreamdb.class.php b/src/classes/logstreamdb.class.php
index fda8257..25eddc0 100644
--- a/src/classes/logstreamdb.class.php
+++ b/src/classes/logstreamdb.class.php
@@ -61,6 +61,7 @@ class LogStreamDB extends LogStream {
private $_currentPageNumber = 0;
private $_SQLwhereClause = "";
+ private $_myDBQuery = null;
// Constructor
public function LogStreamDB($streamConfigObj) {
@@ -120,6 +121,7 @@ class LogStreamDB extends LogStream {
{
if ($this->_dbhandle)
mysql_close($this->_dbhandle);
+ $this->_dbhandle = null;
return SUCCESS;
}
@@ -241,7 +243,7 @@ class LogStreamDB extends LogStream {
}
}
- if ( $ret == SUCCESS )
+ if ( $ret == SUCCESS && $this->_arrProperties != null )
{
// Init and set variables
foreach ( $this->_arrProperties as $property )
@@ -313,7 +315,7 @@ class LogStreamDB extends LogStream {
switch ($mode)
{
case EnumSeek::UID:
- if ( $uID == UID_UNKNOWN ) // set uID to first ID!
+// if ( $uID == UID_UNKNOWN ) // set uID to first ID!
{
// No buffer? then read from DB!
if ( $this->bufferedRecords == null )
@@ -325,7 +327,7 @@ class LogStreamDB extends LogStream {
$uID = $this->bufferedRecords[ $this->_currentRecordNum ];
}
}
- else
+/* else
{
// Obtain fieldname for uID
global $dbmapping;
@@ -398,6 +400,7 @@ class LogStreamDB extends LogStream {
// Delete buffered records, then they will be read automatically in ReadNext()
$this->ResetBufferedRecords();
}
+ */
break;
}
@@ -963,11 +966,11 @@ class LogStreamDB extends LogStream {
return SUCCESS;
}
-
/*
* This function only reads the uID values from the database. Using this method,
* it will be much faster to find the starting uID point we need when paging is used.
*/
+/* OBSELETE CODE
private function ReadNextIDsFromDB()
{
global $querycount;
@@ -1012,6 +1015,24 @@ class LogStreamDB extends LogStream {
// return success state if reached this point!
return SUCCESS;
}
+*/
+
+ /*
+ * Destroy the SQL QUery!
+ */
+ private function DestroyMainSQLQuery()
+ {
+ // create query if necessary!
+ if ( $this->_myDBQuery != null )
+ {
+ // Free Query ressources
+ mysql_free_result ($this->_myDBQuery);
+ $this->_myDBQuery = null;
+ }
+
+ // return success state if reached this point!
+ return SUCCESS;
+ }
/*
* This helper function will read the next records into the buffer.
@@ -1020,25 +1041,24 @@ class LogStreamDB extends LogStream {
{
global $querycount;
- // Get SQL Statement
- $szSql = $this->CreateSQLStatement($uID);
+ // Clear SQL Query first!
+ $this->DestroyMainSQLQuery();
+
+ // return error if there was one!
+ if ( ($res = $this->CreateMainSQLQuery($uID)) != SUCCESS )
+ return $res;
// Append LIMIT clause
- $szSql .= " LIMIT " . $this->_currentRecordStart . ", " . $this->_logStreamConfigObj->RecordsPerQuery;
-//echo $szSql . "
";
-
- // Perform Database Query
- $myquery = mysql_query($szSql, $this->_dbhandle);
- if ( !$myquery )
- {
- $this->PrintDebugError("Invalid SQL: ".$szSql);
- return ERROR_DB_QUERYFAILED;
- }
+// $szSql .= " LIMIT " . $this->_currentRecordStart . ", " . $this->_logStreamConfigObj->RecordsPerQuery;
// Copy rows into the buffer!
$iBegin = $this->_currentRecordNum;
- while ($myRow = mysql_fetch_array($myquery, MYSQL_ASSOC))
+ while ($myRow = mysql_fetch_array($this->_myDBQuery, MYSQL_ASSOC))
{
+ // Check if result was successfull!
+ if ( $myRow === FALSE || !$myRow )
+ break;
+
$this->bufferedRecords[$iBegin] = $myRow;
$iBegin++;
}
@@ -1049,7 +1069,7 @@ class LogStreamDB extends LogStream {
// ---
// Free Query ressources
- mysql_free_result ($myquery);
+// mysql_free_result ($myquery);
// Only obtain count if enabled and not done before
if ( $this->_logStreamConfigObj->DBEnableRowCounting && $this->_totalRecordCount == -1 )
@@ -1067,6 +1087,47 @@ class LogStreamDB extends LogStream {
return SUCCESS;
}
+ /*
+ * Create the SQL QUery!
+ */
+ private function CreateMainSQLQuery($uID)
+ {
+ global $querycount;
+
+ // Get SQL Statement
+ $szSql = $this->CreateSQLStatement($uID);
+
+ // --- Append LIMIT
+ $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery;
+ // ---
+
+ // Perform Database Query
+ $this->_myDBQuery = mysql_query($szSql, $this->_dbhandle);
+ if ( !$this->_myDBQuery )
+ {
+ $this->PrintDebugError("Invalid SQL: ".$szSql);
+ return ERROR_DB_QUERYFAILED;
+ }
+ else
+ {
+ // Skip one entry in this case
+ if ( $this->_currentRecordStart > 0 )
+ {
+ // Throw away
+ $myRow = mysql_fetch_array($this->_myDBQuery, MYSQL_ASSOC);
+ }
+ }
+
+ // Increment for the Footer Stats
+ $querycount++;
+
+ // Output Debug Informations
+ OutputDebugMessage("LogStreamDB|CreateMainSQLQuery: Created SQL Query:
" . $szSql, DEBUG_DEBUG);
+
+ // return success state if reached this point!
+ return SUCCESS;
+ }
+
/*
* Creates the SQL Statement we are going to use!
*/
@@ -1105,8 +1166,19 @@ class LogStreamDB extends LogStream {
// Append precreated where clause
$sqlString .= $this->_SQLwhereClause;
- // Output SQL Query into DEBUG
-// OutputDebugMessage( "CreateSQLStatement result: " . $sqlString );
+ // Append UID QUERY!
+ if ( $uID != -1 )
+ {
+ if ( $this->_readDirection == EnumReadDirection::Forward )
+ $myOperator = ">=";
+ else
+ $myOperator = "<=";
+
+ if ( strlen($this->_SQLwhereClause) > 0 )
+ $sqlString .= " AND " . $dbmapping[$szTableType][SYSLOG_UID] . " $myOperator $uID";
+ else
+ $sqlString .= " WHERE " . $dbmapping[$szTableType][SYSLOG_UID] . " $myOperator $uID";
+ }
// Append ORDER clause
if ( $this->_readDirection == EnumReadDirection::Forward )
diff --git a/src/classes/logstreamdisk.class.php b/src/classes/logstreamdisk.class.php
index 1791256..3d7ae46 100644
--- a/src/classes/logstreamdisk.class.php
+++ b/src/classes/logstreamdisk.class.php
@@ -288,8 +288,11 @@ class LogStreamDisk extends LogStream {
// Init variables dynamically
$line = '';
- foreach ( $this->_arrProperties as $property )
- $arrProperitesOut[$property] = '';
+ if ( $this->_arrProperties != null )
+ {
+ foreach ( $this->_arrProperties as $property )
+ $arrProperitesOut[$property] = '';
+ }
do {
$pos = -1;
diff --git a/src/classes/logstreampdo.class.php b/src/classes/logstreampdo.class.php
index 5ad98f5..dc12f46 100644
--- a/src/classes/logstreampdo.class.php
+++ b/src/classes/logstreampdo.class.php
@@ -271,7 +271,7 @@ class LogStreamPDO extends LogStream {
}
}
- if ( $ret == SUCCESS )
+ if ( $ret == SUCCESS && $this->_arrProperties != null )
{
// Init and set variables
foreach ( $this->_arrProperties as $property )
@@ -712,7 +712,10 @@ class LogStreamPDO extends LogStream {
return ERROR_DB_QUERYFAILED;
if ( $this->_myDBQuery->rowCount() == 0 )
+ {
+ $this->_myDBQuery = null;
return ERROR_NOMORERECORDS;
+ }
// Initialize Array variable
$aResult = array();
@@ -728,6 +731,9 @@ class LogStreamPDO extends LogStream {
}
}
+ // Delete handle
+ $this->_myDBQuery = null;
+
// return finished array
if ( count($aResult) > 0 )
return $aResult;
@@ -966,43 +972,38 @@ class LogStreamPDO extends LogStream {
{
global $querycount;
- // create query if necessary!
-// if ( $this->_myDBQuery == null )
+ // Get SQL Statement
+ $szSql = $this->CreateSQLStatement($uID);
+
+ // --- Append LIMIT if supported by the driver! Why the hell do we still have no unified solution for this crap in the sql language?!
+ if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
+ $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery;
+ else if ( $this->_logStreamConfigObj->DBType == DB_PGSQL )
+ $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery;
+ // ---
+
+ // Perform Database Query
+ $this->_myDBQuery = $this->_dbhandle->query($szSql);
+ if ( !$this->_myDBQuery )
{
- // Get SQL Statement
- $szSql = $this->CreateSQLStatement($uID);
-
- // --- Append LIMIT if supported by the driver! Why the hell do we still have no unified solution for this crap in the sql language?!
- if ( $this->_logStreamConfigObj->DBType == DB_MYSQL )
- $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery;
-// $szSql .= " LIMIT " . $this->_currentRecordStart . ", " . $this->_logStreamConfigObj->RecordsPerQuery;
- else if ( $this->_logStreamConfigObj->DBType == DB_PGSQL )
- $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery;
-// $szSql .= " LIMIT " . $this->_logStreamConfigObj->RecordsPerQuery . " OFFSET " . $this->_currentRecordStart;
-// echo $szSql . "
";
- // ---
-
- // Perform Database Query
- $this->_myDBQuery = $this->_dbhandle->query($szSql);
- if ( !$this->_myDBQuery )
- {
- $this->PrintDebugError( "Invalid SQL: ".$szSql . "
Errorcode: " . $this->_dbhandle->errorCode() );
- return ERROR_DB_QUERYFAILED;
- }
- else
- {
- // Skip one entry in this case
- if ( $this->_currentRecordStart > 0 )
- {
- // Throw away
- $myRow = $this->_myDBQuery->fetch(PDO::FETCH_ASSOC);
- }
-
- }
-
- // Increment for the Footer Stats
- $querycount++;
+ $this->PrintDebugError( "Invalid SQL: ".$szSql . "
Errorcode: " . $this->_dbhandle->errorCode() );
+ return ERROR_DB_QUERYFAILED;
}
+ else
+ {
+ // Skip one entry in this case
+ if ( $this->_currentRecordStart > 0 )
+ {
+ // Throw away
+ $myRow = $this->_myDBQuery->fetch(PDO::FETCH_ASSOC);
+ }
+ }
+
+ // Increment for the Footer Stats
+ $querycount++;
+
+ // Output Debug Informations
+ OutputDebugMessage("LogStreamDB|CreateMainSQLQuery: Created SQL Query:
" . $szSql, DEBUG_DEBUG);
// return success state if reached this point!
return SUCCESS;
@@ -1030,20 +1031,18 @@ class LogStreamPDO extends LogStream {
*/
private function ReadNextRecordsFromDB($uID)
{
+ global $querycount;
+
// Clear SQL Query first!
$this->DestroyMainSQLQuery();
- // Create query if necessary
-// if ( $this->_myDBQuery == null )
- {
- // return error if there was one!
- if ( ($res = $this->CreateMainSQLQuery($uID)) != SUCCESS )
- return $res;
+ // return error if there was one!
+ if ( ($res = $this->CreateMainSQLQuery($uID)) != SUCCESS )
+ return $res;
- // return specially with NO RECORDS when 0 records are returned! Otherwise it will be -1
- if ( $this->_myDBQuery->rowCount() == 0 )
- return ERROR_NOMORERECORDS;
- }
+ // return specially with NO RECORDS when 0 records are returned! Otherwise it will be -1
+ if ( $this->_myDBQuery->rowCount() == 0 )
+ return ERROR_NOMORERECORDS;
// Copy rows into the buffer!
$iBegin = $this->_currentRecordNum;
@@ -1070,6 +1069,9 @@ class LogStreamPDO extends LogStream {
return ERROR_NOMORERECORDS;
// ---
+ // Increment for the Footer Stats
+ $querycount++;
+
// return success state if reached this point!
return SUCCESS;
}
diff --git a/src/details.php b/src/details.php
index 7266fe3..b0c7289 100644
--- a/src/details.php
+++ b/src/details.php
@@ -64,6 +64,8 @@ else
$content['uid_fromgetrequest'] = $content['uid_current'];
// Init Pager variables
+$content['uid_previous'] = UID_UNKNOWN;
+$content['uid_next'] = UID_UNKNOWN;
$content['uid_first'] = UID_UNKNOWN;
$content['uid_last'] = UID_UNKNOWN;
$content['main_pagerenabled'] = false;
@@ -71,11 +73,13 @@ $content['main_pager_first_found'] = false;
$content['main_pager_previous_found'] = false;
$content['main_pager_next_found'] = false;
$content['main_pager_last_found'] = false;
+// ---
-// Set Default reading direction
+// --- If set read direction property!
+
+// Set direction default
$content['read_direction'] = EnumReadDirection::Backward;
-// If set read direction property!
if ( isset($_GET['direction']) )
{
if ( $_GET['direction'] == "next" )
@@ -88,11 +92,24 @@ if ( isset($_GET['direction']) )
$content['skiprecords'] = 1;
$content['read_direction'] = EnumReadDirection::Forward;
}
+ else if ( $_GET['direction'] == "desc" )
+ {
+ $content['read_direction'] = EnumReadDirection::Forward;
+ }
}
+// Read filter property in
+ if ( isset($_POST['filter']) )
+ $myfilter = $_POST['filter'];
+ else if ( isset($_GET['filter']) )
+ $myfilter = $_GET['filter'];
+ else
+ $myfilter = "";
+// ---
+
// Init Sorting variables
$content['sorting'] = "";
-$content['searchstr'] = "";
+$content['searchstr'] = $myfilter;
$content['highlightstr'] = "";
$content['EXPAND_HIGHLIGHT'] = "false";
@@ -104,7 +121,7 @@ if ( isset($content['Sources'][$currentSourceID]) ) // && $content['uid_current'
// Create LogStream Object
$stream = $stream_config->LogStreamFactory($stream_config);
-// $stream->SetFilter($content['searchstr']);
+ $stream->SetFilter($content['searchstr']);
// --- Init the fields we need
foreach($fields as $mycolkey => $myfield)
@@ -122,7 +139,7 @@ if ( isset($content['Sources'][$currentSourceID]) ) // && $content['uid_current'
$res = $stream->Open( $content['AllColumns'], true );
if ( $res == SUCCESS )
{
- // TODO Implement ORDER
+ // Set Read direction
$stream->SetReadDirection($content['read_direction']);
// Set current ID and init Counter
@@ -279,54 +296,92 @@ if ( isset($content['Sources'][$currentSourceID]) ) // && $content['uid_current'
{
// Enable Pager in any case here!
$content['main_pagerenabled'] = true;
-/*
+
// --- Handle uid_first page button
- if ( $content['uid_fromgetrequest'] == $content['uid_first'] )
+ if ( $content['uid_fromgetrequest'] == $content['uid_first'] && $content['read_direction'] != EnumReadDirection::Forward )
$content['main_pager_first_found'] = false;
else
{
// Probe next item !
$ret = $stream->ReadNext($uID, $tmpArray);
- if ( $ret == SUCCESS )
- $content['main_pager_first_found'] = true;
+
+ if ( $content['read_direction'] == EnumReadDirection::Backward )
+ {
+ if ( $content['uid_fromgetrequest'] != UID_UNKNOWN )
+ $content['main_pager_first_found'] = true;
+ else
+ $content['main_pager_first_found'] = false;
+ }
else
- $content['main_pager_first_found'] = false;
+ {
+ if ( $ret == SUCCESS && $uID != $content['uid_fromgetrequest'])
+ $content['main_pager_first_found'] = true;
+ else
+ $content['main_pager_first_found'] = false;
+ }
}
// ---
-*/
+
+ // --- Handle uid_last page button
+ if ( $content['uid_fromgetrequest'] == $content['uid_last'] && $content['read_direction'] != EnumReadDirection::Backward )
+ $content['main_pager_last_found'] = false;
+ else
+ {
+ // Probe next item !
+ $ret = $stream->ReadNext($uID, $tmpArray);
+
+ if ( $content['read_direction'] == EnumReadDirection::Forward )
+ {
+ if ( $ret != SUCCESS || $uID != $content['uid_current'] )
+ $content['main_pager_last_found'] = true;
+ else
+ $content['main_pager_last_found'] = false;
+ }
+ else
+ {
+ if ( $ret == SUCCESS && $uID != $content['uid_current'] )
+ $content['main_pager_last_found'] = true;
+ else
+ $content['main_pager_last_found'] = false;
+ }
+
+//echo $content['uid_fromgetrequest'] . "!
";
+//echo $uID . "!" . $ret . "
";
+//echo $content['uid_current'] ."==". $content['uid_last'] . "
";
+
+ }
+ // ---
+
// --- Handle uid_last page button
// Option the last UID from the stream!
- $content['uid_last'] = $stream->GetLastPageUID();
- $content['uid_first'] = $stream->GetFirstPageUID();
+// $content['uid_last'] = $stream->GetLastPageUID();
+// $content['uid_first'] = $stream->GetFirstPageUID();
- // --- Handle uid_first page button
- if ( $content['uid_current'] == $content['uid_first'] )
+ // --- Handle uid_first and uid_previousbutton
+ if ( $content['uid_current'] == $content['uid_first'] || !$content['main_pager_first_found'] )
+ {
$content['main_pager_first_found'] = false;
+ $content['main_pager_previous_found'] = false;
+ }
else
+ {
$content['main_pager_first_found'] = true;
+ $content['main_pager_previous_found'] = true;
+ }
// ---
-
- // if we found a last uid, and if it is not the current one (which means we already are on the last page ;)!
- if ( $content['uid_last'] != -1 && $content['uid_last'] != $content['uid_current'])
- $content['main_pager_last_found'] = true;
- else
- $content['main_pager_last_found'] = false;
- // ---
-
- // --- Handle uid_next page button
- if ( $content['uid_current'] != $content['uid_last'] )
- $content['main_pager_next_found'] = true;
- else
+ // --- Handle uid_next and uid_last button
+ if ( /*$content['uid_current'] == $content['uid_last'] ||*/ !$content['main_pager_last_found'] )
+ {
$content['main_pager_next_found'] = false;
- // ---
-
- // --- Handle uid_previous page button
- if ( $content['main_pager_first_found'] == true && $content['uid_current'] != $content['uid_first'] )
- $content['main_pager_previous_found'] = true;
+ $content['main_pager_last_found'] = false;
+ }
else
- $content['main_pager_previous_found'] = false;
- // ---
+ {
+ $content['main_pager_next_found'] = true;
+ $content['main_pager_last_found'] = true;
+ }
+ // ---
}
else // Disable pager in this case!
$content['main_pagerenabled'] = false;
diff --git a/src/include/functions_common.php b/src/include/functions_common.php
index 68c49d2..5048d1f 100644
--- a/src/include/functions_common.php
+++ b/src/include/functions_common.php
@@ -1031,12 +1031,23 @@ function IncludeLanguageFile( $langfile )
{
global $LANG, $LANG_EN;
- if ( file_exists( $langfile ) )
- include( $langfile );
+ // If english is not selected, we load ENGLISH first - then overwrite with configured language
+ if ( $LANG != "en" )
+ $langengfile = str_replace( $LANG, $LANG_EN, $langfile );
else
+ $langengfile = $langfile;
+ if ( file_exists($langengfile) )
+ include( $langengfile );
+ else
+ DieWithErrorMsg( "FATAL Error initialzing sublanguage system. Please make sure that all files have been uploaded correctly." );
+
+ // If nto english, load the additional translations
+ if ( $LANG != "en" )
{
- $langfile = str_replace( $LANG, $LANG_EN, $langfile );
- include( $langfile );
+ if ( file_exists( $langfile ) )
+ include( $langfile );
+ else
+ OutputDebugMessage("FATAL Error reading the configured language $LANG. Please make sure that all files have been uploaded correctly.", DEBUG_ERROR);
}
}
diff --git a/src/include/functions_frontendhelpers.php b/src/include/functions_frontendhelpers.php
index f288124..10c7961 100644
--- a/src/include/functions_frontendhelpers.php
+++ b/src/include/functions_frontendhelpers.php
@@ -234,13 +234,17 @@ function GetFormatedDate($evttimearray)
function OutputDebugMessage($szDbg, $szDbgLevel = DEBUG_INFO)
{
+ global $content;
+
// Check if we should print the Error!
if ( GetConfigSetting("MiscShowDebugMsg", 0, CFGLEVEL_USER) == 1 )
{
- print("
");
- print("Debugmessage: | ");
- print("" . $szDbg . " |
");
- print("
");
+ $content['DEBUGMSG'][] = array(
+ "DBGLEVEL" => $szDbgLevel,
+ "DBGLEVELTXT" => GetDebugModeString($szDbgLevel),
+ "DBGLEVELBG" => GetDebugBgColor($szDbgLevel),
+ "DBGMSG" => "$szDbg"
+ );
}
// Check if the user wants to syslog the error!
@@ -250,6 +254,63 @@ function OutputDebugMessage($szDbg, $szDbgLevel = DEBUG_INFO)
}
}
+function GetDebugBgColor( $szDebugMode )
+{
+ global $severity_colors;
+
+ switch ( $szDebugMode )
+ {
+ case DEBUG_ULTRADEBUG:
+ $szReturn = $severity_colors[SYSLOG_DEBUG];
+ break;
+ case DEBUG_DEBUG:
+ $szReturn = $severity_colors[SYSLOG_INFO];
+ break;
+ case DEBUG_INFO:
+ $szReturn = $severity_colors[SYSLOG_NOTICE];
+ break;
+ case DEBUG_WARN:
+ $szReturn = $severity_colors[SYSLOG_WARNING];
+ break;
+ case DEBUG_ERROR:
+ $szReturn = $severity_colors[SYSLOG_ERR];
+ break;
+ default:
+ $szReturn = $severity_colors[SYSLOG_NOTICE];
+ }
+
+ // Return string result
+ return $szReturn;
+}
+
+function GetDebugModeString( $szDebugMode )
+{
+ switch ( $szDebugMode )
+ {
+ case DEBUG_ULTRADEBUG:
+ $szReturn = STR_DEBUG_ULTRADEBUG;
+ break;
+ case DEBUG_DEBUG:
+ $szReturn = STR_DEBUG_DEBUG;
+ break;
+ case DEBUG_INFO:
+ $szReturn = STR_DEBUG_INFO;
+ break;
+ case DEBUG_WARN:
+ $szReturn = STR_DEBUG_WARN;
+ break;
+ case DEBUG_ERROR:
+ $szReturn = STR_DEBUG_ERROR;
+ break;
+ default:
+ $szReturn = STR_DEBUG_INFO;
+ }
+
+ // Return string result
+ return $szReturn;
+}
+
+
function GetPriorityFromDebugLevel( $DebugLevel )
{
switch ( $DebugLevel )
diff --git a/src/index.php b/src/index.php
index e68f8fe..ff91ad1 100644
--- a/src/index.php
+++ b/src/index.php
@@ -99,7 +99,7 @@ else
$content['EXPORT_ENABLED'] = true;
// Init Pager variables
-// $content['uid_previous'] = UID_UNKNOWN;
+$content['uid_previous'] = UID_UNKNOWN;
$content['uid_next'] = UID_UNKNOWN;
$content['uid_first'] = UID_UNKNOWN;
$content['uid_last'] = UID_UNKNOWN;
@@ -642,6 +642,10 @@ if ( isset($content['Sources'][$currentSourceID]) )
$counter++;
// --- Extra Loop to get the next entry!
+
+ // temporary store the current last $uID
+ $lastUid = $uID;
+
do
{
$ret = $stream->ReadNext($uID, $logArray);
@@ -651,14 +655,15 @@ if ( isset($content['Sources'][$currentSourceID]) )
//print_r ( $content['syslogmessages'] );
// Move below processing - Read First and LAST UID's before start reading the stream!
- $content['uid_last'] = $stream->GetLastPageUID();
- $content['uid_first'] = $stream->GetFirstPageUID();
+// $content['uid_last'] = $stream->GetLastPageUID();
+/// $content['uid_first'] = $stream->GetFirstPageUID();
if ( $content['main_recordcount'] == -1 || $content['main_recordcount'] > $content['CurrentViewEntriesPerPage'] )
{
// Enable Pager in any case here!
$content['main_pagerenabled'] = true;
+/*
// temporary store the current last $uID
$lastUid = $uID;
@@ -675,7 +680,9 @@ if ( isset($content['Sources'][$currentSourceID]) )
//echo $content['uid_next'] . "!!!";
}
// ---
+*/
+/*
// --- Handle uid_previous page button
if ( $content['uid_current'] != UID_UNKNOWN )
{
@@ -700,9 +707,71 @@ if ( isset($content['Sources'][$currentSourceID]) )
$content['main_pager_previous_found'] = false;
//echo $content['uid_previous'];
// ---
-
- // --- Handle uid_last page button
+*/
+
+ // --- Handle uid_previous page button
+ if ( $content['read_direction'] == EnumReadDirection::Forward )
+ {
+ if ( $ret == SUCCESS )
+ {
+ // Try to read the next one!
+ $ret = $stream->ReadNext($uID, $tmp);
+ if ( $ret == SUCCESS )
+ $content['main_pager_previous_found'] = true;
+ else
+ $content['main_pager_previous_found'] = false;
+ }
+ else
+ $content['main_pager_previous_found'] = false;
+ }
+ else
+ {
+ if ( $content['uid_current'] == $content['uid_previous'] )
+ $content['main_pager_previous_found'] = false;
+ else
+ $content['main_pager_previous_found'] = true;
+ }
+
+
+ // ---
+
+ // --- Handle uid_last and uid_next page button
+ if ( $content['read_direction'] == EnumReadDirection::Forward )
+ {
+ if ( $content['uid_current'] == $content['uid_last'] )
+ {
+ $content['main_pager_last_found'] = false;
+ $content['main_pager_next_found'] = false;
+ }
+ else
+ {
+ $content['main_pager_last_found'] = true;
+ $content['main_pager_next_found'] = true;
+ }
+
+ // Restore uid_current if necessary
+ $content['uid_current'] = $lastUid;
+ }
+ else
+ {
+ // If last error code was nomorerecords, there are no more pages
+ if ( $ret == ERROR_NOMORERECORDS )
+ {
+ $content['main_pager_last_found'] = false;
+ $content['main_pager_next_found'] = false;
+ }
+ else
+ {
+ // Set NEXT uid
+ $content['uid_next'] = $uID;
+ $content['main_pager_last_found'] = true;
+ $content['main_pager_next_found'] = true;
+ }
+ }
+ // ---
+
//!!!!!!!!
+/*
// if we found a last uid, and if it is not the current one (which means we already are on the last page ;)!
if ( $content['uid_last'] != -1 && $content['uid_last'] != $content['uid_current'])
$content['main_pager_last_found'] = true;
@@ -723,8 +792,23 @@ if ( isset($content['Sources'][$currentSourceID]) )
// As we went back, we need to change the currend uid to the latest read one
$content['uid_current'] = $lastUid;
}
+*/
// ---
+ // --- Handle uid_first page button
+ if ( $content['uid_current'] == $content['uid_first'] )
+ {
+ $content['main_pager_first_found'] = false;
+ $content['main_pager_previous_found'] = false; // If there is no FIRST, there is no going back!
+ }
+ else if ( !$content['main_pager_previous_found'] )
+ $content['main_pager_first_found'] = false;
+ else
+ $content['main_pager_first_found'] = true;
+ // ---
+
+// $content['uid_first']
+/*
// --- Handle uid_first page button
if ( $content['main_pager_previous_found'] == false ||
$content['uid_current'] == UID_UNKNOWN ||
@@ -736,6 +820,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
else
$content['main_pager_first_found'] = true;
// ---
+*/
}
else // Disable pager in this case!
$content['main_pagerenabled'] = false;
diff --git a/src/lang/de/main.php b/src/lang/de/main.php
index 4634df6..04de144 100644
--- a/src/lang/de/main.php
+++ b/src/lang/de/main.php
@@ -98,6 +98,8 @@ $content['LN_ERROR_NORECORDS'] = "Es wurden keine syslog-Einträge gefunden.
$content['LN_WARNING_DBUPGRADE'] = "Database Upgrade required";
$content['LN_WARNING_DBUPGRADE_TEXT'] = "The current installed database version is '%1'.
An update to version '%2' is available.";
$content['LN_ERROR_REDIRECTABORTED'] = 'Automatic redirect to the page was aborted, as an internal error occured. Please see the error details above and contact our support forums if you need assistance.';
+ $content['LN_DEBUGLEVEL'] = "Debug Level";
+ $content['LN_DEBUGMESSAGE'] = "Debug Message";
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Suchen";
diff --git a/src/lang/en/main.php b/src/lang/en/main.php
index f0590d4..56e6b42 100644
--- a/src/lang/en/main.php
+++ b/src/lang/en/main.php
@@ -100,6 +100,9 @@ $content['LN_ERROR_DB_DBFIELDNOTFOUND'] = "Database Field mapping for at least o
$content['LN_WARNING_DBUPGRADE'] = "Database Upgrade required";
$content['LN_WARNING_DBUPGRADE_TEXT'] = "The current installed database version is '%1'.
An update to version '%2' is available.";
$content['LN_ERROR_REDIRECTABORTED'] = 'Automatic redirect to the page was aborted, as an internal error occured. Please see the error details above and contact our support forums if you need assistance.';
+ $content['LN_DEBUGLEVEL'] = "Debug Level";
+ $content['LN_DEBUGMESSAGE'] = "Debug Message";
+
// Topmenu Entries
$content['LN_MENU_SEARCH'] = "Search";
diff --git a/src/lang/it_IT/admin.php b/src/lang/it_IT/admin.php
new file mode 100644
index 0000000..919c82d
--- /dev/null
+++ b/src/lang/it_IT/admin.php
@@ -0,0 +1,361 @@
+ www.phplogcon.org <-
+ * -----------------------------------------------------------------
+ *
+ * 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 .
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this
+ * distribution.
+ *********************************************************************
+*/
+global $content;
+
+// Global Stuff
+$content['LN_ADMINMENU_HOMEPAGE'] = "Back to Show Events";
+$content['LN_ADMINMENU_GENOPT'] = "Preferences";
+$content['LN_ADMINMENU_SOURCEOPT'] = "Sources";
+$content['LN_ADMINMENU_VIEWSOPT'] = "Views";
+$content['LN_ADMINMENU_SEARCHOPT'] = "Searches";
+$content['LN_ADMINMENU_USEROPT'] = "Users";
+$content['LN_ADMINMENU_GROUPOPT'] = "Groups";
+$content['LN_ADMINMENU_CHARTOPT'] = "Charts";
+$content['LN_ADMINMENU_FIELDOPT'] = "Fields";
+$content['LN_ADMINMENU_MSGPARSERSOPT'] = "Message Parsers";
+$content['LN_ADMIN_CENTER'] = "Admin center";
+$content['LN_ADMIN_UNKNOWNSTATE'] = "Unknown State";
+$content['LN_ADMIN_ERROR_NOTALLOWED'] = "You are not allowed to access this page with your user level.";
+$content['LN_DELETEYES'] = "Yes";
+$content['LN_DELETENO'] = "No";
+$content['LN_GEN_ACTIONS'] = "Available Actions";
+$content['LN_ADMIN_SEND'] = "Send changes";
+$content['LN_GEN_USERONLY'] = "User only";
+$content['LN_GEN_GROUPONLY'] = "Group only";
+$content['LN_GEN_GLOBAL'] = "Global";
+$content['LN_GEN_USERONLY_LONG'] = "For me only
(Only available to your user)";
+$content['LN_GEN_GROUPONLY_LONG'] = "For this group
(Only available to the selected group)";
+$content['LN_GEN_GROUPONLYNAME'] = "Group '%1'";
+$content['LN_ADMIN_POPUPHELP'] = "Details on this function";
+$content['LN_ADMIN_DBSTATS'] = "Show database statistics.";
+$content['LN_ADMIN_CLEARDATA'] = "If you need to remove old data records, use this function.";
+
+// General Options
+$content['LN_ADMIN_GLOBFRONTEND'] = "Global frontend options";
+$content['LN_ADMIN_USERFRONTEND'] = "User specific frontend options";
+$content['LN_ADMIN_MISC'] = "Miscellaneous Options";
+$content['LN_GEN_SHOWDEBUGMSG'] = "Show Debug messages";
+$content['LN_GEN_DEBUGGRIDCOUNTER'] = "Show Debug Gridcounter";
+$content['LN_GEN_SHOWPAGERENDERSTATS'] = "Show Pagerenderstats";
+$content['LN_GEN_ENABLEGZIP'] = "Enable GZIP Compressed Output";
+$content['LN_GEN_DEBUGUSERLOGIN'] = "Debug Userlogin";
+$content['LN_GEN_WEBSTYLE'] = "Default selected style";
+$content['LN_GEN_SELLANGUAGE'] = "Default selected language";
+$content['LN_GEN_PREPENDTITLE'] = "Prepend this string in title";
+$content['LN_GEN_USETODAY'] = "Use Today and Yesterday in timefields";
+$content['LN_GEN_DETAILPOPUPS'] = "Use Popup to display the full messagedetails";
+$content['LN_GEN_MSGCHARLIMIT'] = "Character limit of the message in main view";
+$content['LN_GEN_STRCHARLIMIT'] = "Character display limit for all string type fields";
+$content['LN_GEN_ENTRIESPERPAGE'] = "Number of entries per page";
+$content['LN_GEN_AUTORELOADSECONDS'] = "Enable autoreload after seconds";
+$content['LN_GEN_IPADRRESOLVE'] = "Resolve IP Addresses using DNS";
+$content['LN_GEN_CUSTBTNCAPT'] = "Custom search caption";
+$content['LN_GEN_CUSTBTNSRCH'] = "Custom search string";
+$content['LN_GEN_SUCCESSFULLYSAVED'] = "The configuration Values have been successfully saved";
+$content['LN_GEN_INTERNAL'] = "Internal";
+$content['LN_GEN_DISABLED'] = "Function disabled";
+$content['LN_GEN_CONFIGFILE'] = "Configuration File";
+$content['LN_GEN_ACCESSDENIED'] = "Access denied to this function";
+$content['LN_GEN_DEFVIEWS'] = "Default selected view";
+$content['LN_GEN_DEFSOURCE'] = "Default selected source";
+$content['LN_GEN_SUPPRESSDUPMSG'] = "Suppress duplicated messages";
+$content['LN_GEN_TREATFILTERSTRUE'] = "Treat filters of not found fields as true";
+
+$content['LN_GEN_OPTIONNAME'] = "Option name";
+$content['LN_GEN_GLOBALVALUE'] = "Global value";
+$content['LN_GEN_PERSONALVALUE'] = "Personal (User)value";
+$content['LN_GEN_DISABLEUSEROPTIONS'] = "Click here to disable personal options";
+$content['LN_GEN_ENABLEUSEROPTIONS'] = "Click here to enable personal options";
+$content['LN_ADMIN_GLOBALONLY'] = "Global Options Only";
+$content['LN_GEN_DEBUGTOSYSLOG'] = "Send Debug to local syslog server";
+$content['LN_GEN_POPUPMENUTIMEOUT'] = "Popupmenu Timeout in milli seconds";
+$content['LN_ADMIN_SCRIPTTIMEOUT'] = "PHP Script Timeout in seconds";
+$content['LN_GEN_INJECTHTMLHEADER'] = "Inject this html code into the <head> area.";
+$content['LN_GEN_INJECTBODYHEADER'] = "Inject this html code at the beginning of the <body> area.";
+$content['LN_GEN_INJECTBODYFOOTER'] = "Inject this html code at the end <body> area.";
+$content['LN_ADMIN_PHPLOGCON_LOGOURL'] = "Optional phpLogCon Logo URL. Leave empty to use the default one.";
+
+// User Center
+$content['LN_USER_CENTER'] = "User Options";
+$content['LN_USER_ID'] = "ID";
+$content['LN_USER_NAME'] = "Username";
+$content['LN_USER_ADD'] = "Add User";
+$content['LN_USER_EDIT'] = "Edit User";
+$content['LN_USER_DELETE'] = "Delete User";
+$content['LN_USER_PASSWORD1'] = "Password";
+$content['LN_USER_PASSWORD2'] = "Confirm Password";
+$content['LN_USER_ERROR_IDNOTFOUND'] = "Error, User with ID '%1' , was not found";
+$content['LN_USER_ERROR_DONOTDELURSLF'] = "Error, you can not DELETE YOURSELF!";
+$content['LN_USER_ERROR_DELUSER'] = "Deleting of the user with id '%1' failed!";
+$content['LN_USER_ERROR_INVALIDID'] = "Error, invalid ID, User not found";
+$content['LN_USER_ERROR_HASBEENDEL'] = "The User '%1' has been successfully deleted!";
+$content['LN_USER_ERROR_USEREMPTY'] = "Error, Username was empty";
+$content['LN_USER_ERROR_USERNAMETAKEN'] = "Error, this Username is already taken!";
+$content['LN_USER_ERROR_PASSSHORT'] = "Error, Password was to short, or did not match";
+$content['LN_USER_ERROR_HASBEENADDED'] = "User '%1' has been successfully added";
+$content['LN_USER_ERROR_HASBEENEDIT'] = "User '%1' has been successfully edited";
+$content['LN_USER_ISADMIN'] = "Is Admin?";
+$content['LN_USER_ADDEDIT'] = "Add/Edit User";
+$content['LN_USER_WARNREMOVEADMIN'] = "You are about to revoke your own administrative priviledges. Are you sure to remove your admin status?";
+$content['LN_USER_WARNDELETEUSER'] = "Are you sure that you want to delete the User '%1'? All his personal settings will be deleted as well.";
+$content['LN_USER_ERROR_INVALIDSESSIONS'] = "Invalid User Session.";
+$content['LN_USER_'] = "";
+
+// Group center
+$content['LN_GROUP_CENTER'] = "Group Center";
+$content['LN_GROUP_ID'] = "ID";
+$content['LN_GROUP_NAME'] = "Groupname";
+$content['LN_GROUP_DESCRIPTION'] = "Groupdescription";
+$content['LN_GROUP_TYPE'] = "Grouptype";
+$content['LN_GROUP_ADD'] = "Add Group";
+$content['LN_GROUP_EDIT'] = "Edit Group";
+$content['LN_GROUP_DELETE'] = "Delete Group";
+$content['LN_GROUP_NOGROUPS'] = "No groups have been added yet";
+$content['LN_GROUP_ADDEDIT'] = "Add/Edit Group";
+$content['LN_GROUP_ERROR_GROUPEMPTY'] = "The groupname cannot be empty.";
+$content['LN_GROUP_ERROR_GROUPNAMETAKEN'] = "The groupname has already been taken.";
+$content['LN_GROUP_HASBEENADDED'] = "The group '%1' has been successfully added.";
+$content['LN_GROUP_ERROR_IDNOTFOUND'] = "The group with ID '%1' could not be found.";
+$content['LN_GROUP_ERROR_HASBEENEDIT'] = "The group '%1' has been successfully edited.";
+$content['LN_GROUP_ERROR_INVALIDGROUP'] = "Error, invalid ID, Group not found";
+$content['LN_GROUP_WARNDELETEGROUP'] = "Are you sure that you want to delete the Group '%1'? All Groupsettings will be deleted as well.";
+$content['LN_GROUP_ERROR_DELGROUP'] = "Deleting of the group with id '%1' failed!";
+$content['LN_GROUP_ERROR_HASBEENDEL'] = "The Group '%1' has been successfully deleted!";
+$content['LN_GROUP_MEMBERS'] = "Groupmembers: ";
+$content['LN_GROUP_ADDUSER'] = "Add User to Group";
+$content['LN_GROUP_ERROR_USERIDMISSING'] = "The userid is missing.";
+$content['LN_GROUP_USERHASBEENADDEDGROUP'] = "The User '%1' has been successfully added to group '%2'";
+$content['LN_GROUP_ERRORNOMOREUSERS'] = "There are no more available users who can be added to the group '%1'";
+$content['LN_GROUP_USER_ADD'] = "Add User to the group";
+$content['LN_GROUP_USERDELETE'] = "Remove a User from the group";
+$content['LN_GROUP_ERRORNOUSERSINGROUP'] = "There are no users to remove in this the group '%1'";
+$content['LN_GROUP_ERROR_REMUSERFROMGROUP'] = "The user '%1' could not be removed from the group '%2'";
+$content['LN_GROUP_USERHASBEENREMOVED'] = "The user '%1' has been successfully removed from the group '%2'";
+$content['LN_GROUP_'] = "";
+
+// Custom Searches center
+$content['LN_SEARCH_CENTER'] = "Custom Searches";
+$content['LN_SEARCH_ADD'] = "Add new Custom Search";
+$content['LN_SEARCH_ID'] = "ID";
+$content['LN_SEARCH_NAME'] = "Search Name";
+$content['LN_SEARCH_QUERY'] = "Search Query";
+$content['LN_SEARCH_TYPE'] = "Assigned to";
+$content['LN_SEARCH_EDIT'] = "Edit Custom Search";
+$content['LN_SEARCH_DELETE'] = "Delete Custom Search";
+$content['LN_SEARCH_ADDEDIT'] = "Add / Edit a Custom Search";
+$content['LN_SEARCH_SELGROUPENABLE'] = ">> Select Group to enable <<";
+$content['LN_SEARCH_ERROR_DISPLAYNAMEEMPTY'] = "The DisplayName cannot be empty.";
+$content['LN_SEARCH_ERROR_SEARCHQUERYEMPTY'] = "The SearchQuery cannot be empty.";
+$content['LN_SEARCH_HASBEENADDED'] = "The Custom Search '%1' has been successfully added.";
+$content['LN_SEARCH_ERROR_IDNOTFOUND'] = "Could not find a search with ID '%1'.";
+$content['LN_SEARCH_ERROR_INVALIDID'] = "Invalid search ID.";
+$content['LN_SEARCH_HASBEENEDIT'] = "The Custom Search '%1' has been successfully edited.";
+$content['LN_SEARCH_WARNDELETESEARCH'] = "Are you sure that you want to delete the Custom Search '%1'? This cannot be undone!";
+$content['LN_SEARCH_ERROR_DELSEARCH'] = "Deleting of the Custom Search with id '%1' failed!";
+$content['LN_SEARCH_ERROR_HASBEENDEL'] = "The Custom Search '%1' has been successfully deleted!";
+$content['LN_SEARCH_'] = "";
+
+// Custom Views center
+$content['LN_VIEWS_CENTER'] = "Views Options";
+$content['LN_VIEWS_ID'] = "ID";
+$content['LN_VIEWS_NAME'] = "View Name";
+$content['LN_VIEWS_COLUMNS'] = "View Columns";
+$content['LN_VIEWS_TYPE'] = "Assigned to";
+$content['LN_VIEWS_ADD'] = "Add new View";
+$content['LN_VIEWS_EDIT'] = "Edit View";
+$content['LN_VIEWS_ERROR_IDNOTFOUND'] = "A View with ID '%1' could not be found.";
+$content['LN_VIEWS_ERROR_INVALIDID'] = "The View with ID '%1' is not a valid View.";
+$content['LN_VIEWS_WARNDELETEVIEW'] = "Are you sure that you want to delete the View '%1'? This cannot be undone!";
+$content['LN_VIEWS_ERROR_DELSEARCH'] = "Deleting of the View with id '%1' failed!";
+$content['LN_VIEWS_ERROR_HASBEENDEL'] = "The View '%1' has been successfully deleted!";
+$content['LN_VIEWS_ADDEDIT'] = "Add / Edit a View";
+$content['LN_VIEWS_COLUMNLIST'] = "Configured Columns";
+$content['LN_VIEWS_ADDCOLUMN'] = "Add Column into list";
+$content['LN_VIEWS_ERROR_DISPLAYNAMEEMPTY'] = "The DisplayName cannot be empty.";
+$content['LN_VIEWS_COLUMN'] = "Column";
+$content['LN_VIEWS_COLUMN_REMOVE'] = "Remove Column";
+$content['LN_VIEWS_HASBEENADDED'] = "The Custom View '%1' has been successfully added.";
+$content['LN_VIEWS_ERROR_NOCOLUMNS'] = "You need to add at least one column in order to add a new Custom View.";
+$content['LN_VIEWS_HASBEENEDIT'] = "The Custom Search '%1' has been successfully edited.";
+$content['LN_VIEWS_'] = "";
+
+// Custom Sources center
+$content['LN_SOURCES_CENTER'] = "Sources Options";
+$content['LN_SOURCES_EDIT'] = "Edit Source";
+$content['LN_SOURCES_DELETE'] = "Delete Source";
+$content['LN_SOURCES_ID'] = "ID";
+$content['LN_SOURCES_NAME'] = "Source Name";
+$content['LN_SOURCES_TYPE'] = "Source Type";
+$content['LN_SOURCES_ASSIGNTO'] = "Assigned To";
+$content['LN_SOURCES_DISK'] = "Diskfile";
+$content['LN_SOURCES_DB'] = "MySQL Database";
+$content['LN_SOURCES_PDO'] = "PDO Datasource";
+$content['LN_SOURCES_ADD'] = "Add new Source";
+$content['LN_SOURCES_ADDEDIT'] = "Add / Edit a Source";
+$content['LN_SOURCES_TYPE'] = "Source Type";
+$content['LN_SOURCES_DISKTYPEOPTIONS'] = "Diskfile related Options";
+$content['LN_SOURCES_ERROR_MISSINGPARAM'] = "The paramater '%1' is missing.";
+$content['LN_SOURCES_ERROR_NOTAVALIDFILE'] = "Failed to open the syslog file '%1'! Check if the file exists and phplogcon has sufficient rights to it";
+$content['LN_SOURCES_ERROR_UNKNOWNSOURCE'] = "Unknown Source '%1' detected";
+$content['LN_SOURCE_HASBEENADDED'] = "The new Source '%1' has been successfully added.";
+$content['LN_SOURCES_EDIT'] = "Edit Source";
+$content['LN_SOURCES_ERROR_INVALIDORNOTFOUNDID'] = "The Source-ID is invalid or could not be found.";
+$content['LN_SOURCES_ERROR_IDNOTFOUND'] = "The Source-ID could not be found in the database.";
+$content['LN_SOURCES_HASBEENEDIT'] = "The Source '%1' has been successfully edited.";
+$content['LN_SOURCES_WARNDELETESEARCH'] = "Are you sure that you want to delete the Source '%1'? This cannot be undone!";
+$content['LN_SOURCES_ERROR_DELSOURCE'] = "Deleting of the Source with id '%1' failed!";
+$content['LN_SOURCES_ERROR_HASBEENDEL'] = "The Source '%1' has been successfully deleted!";
+$content['LN_SOURCES_DESCRIPTION'] = "Source Description (Optional)";
+$content['LN_SOURCES_ERROR_INVALIDVALUE'] = "Invalid value for the paramater '%1'.";
+$content['LN_SOURCES_STATSNAME'] = "Name";
+$content['LN_SOURCES_STATSVALUE'] = "Value";
+$content['LN_SOURCES_DETAILS'] = "Details for this logstream source";
+$content['LN_SOURCES_STATSDETAILS'] = "Statistic details for this logstream source";
+$content['LN_SOURCES_ERROR_NOSTATSDATA'] = "Could not find or obtain any stats related information for this logstream source.";
+$content['LN_SOURCES_ERROR_NOCLEARSUPPORT'] = "This logstream source does not support deleting data.";
+$content['LN_SOURCES_ROWCOUNT'] = "Total Rowcount";
+$content['LN_SOURCES_CLEARDATA'] = "The following database maintenance Options are available";
+$content['LN_SOURCES_CLEAROPTIONS'] = "Select how you want to clear data.";
+$content['LN_SOURCES_CLEARALL'] = "Clear (Delete) all data.";
+$content['LN_SOURCES_CLEAR_HELPTEXT'] = "Attention! Be carefull with deleting data, any action performed here can not be undone!";
+$content['LN_SOURCES_CLEARSINCE'] = "Clear all data older than ... ";
+$content['LN_SOURCES_CLEARDATE'] = "Clear all data which is older than ... ";
+$content['LN_SOURCES_CLEARDATA_SEND'] = "Clear selected data range";
+$content['LN_SOURCES_ERROR_INVALIDCLEANUP'] = "Invalid Data Cleanup type";
+$content['LN_SOURCES_WARNDELETEDATA'] = "Are you sure that you want to clear logdata in the '%1' source? This cannot be undone!";
+$content['LN_SOURCES_ERROR_DELDATA'] = "Could not delete data in the '%1' source";
+$content['LN_SOURCES_HASBEENDELDATA'] = "Successfully deleted data from the '%1' source, '%2' rows were affected. ";
+
+// Database Upgrade
+$content['LN_DBUPGRADE_TITLE'] = "phpLogCon Database Update";
+$content['LN_DBUPGRADE_DBFILENOTFOUND'] = "The database upgrade file '%1' could not be found in the include folder! Please check if all files were successfully uploaded.";
+$content['LN_DBUPGRADE_DBDEFFILESHORT'] = "The database upgrade files where empty or did not contain any SQL Command! Please check if all files were successfully uploaded.";
+$content['LN_DBUPGRADE_WELCOME'] = "Welcome to the database upgrade";
+$content['LN_DBUPGRADE_BEFORESTART'] = "Before you start upgrading your database, you should create a FULL BACKUP OF YOUR DATABASE. Anything else will be done automatically by the upgrade Script.";
+$content['LN_DBUPGRADE_CURRENTINSTALLED'] = "Current Installed Database Version";
+$content['LN_DBUPGRADE_TOBEINSTALLED'] = "Do be Installed Database Version";
+$content['LN_DBUPGRADE_HASBEENDONE'] = "Database Update has been performed, see the results below";
+$content['LN_DBUPGRADE_SUCCESSEXEC'] = "Successfully executed statements";
+$content['LN_DBUPGRADE_FAILEDEXEC'] = "Failed statements";
+$content['LN_DBUPGRADE_ONESTATEMENTFAILED'] = "At least one statement failed, you may need to correct and fix this issue manually. See error details below";
+$content['LN_DBUPGRADE_ERRMSG'] = "Error Message";
+$content['LN_DBUPGRADE_ULTRASTATSDBVERSION'] = "phpLogCon Database Version";
+
+// Charts Options
+$content['LN_CHARTS_CENTER'] = "Charts Options";
+$content['LN_CHARTS_EDIT'] = "Edit Chart";
+$content['LN_CHARTS_DELETE'] = "Delete Chart";
+$content['LN_CHARTS_ADD'] = "Add new Chart";
+$content['LN_CHARTS_ADDEDIT'] = "Add / Edit a Chart";
+$content['LN_CHARTS_NAME'] = "Chart Name";
+$content['LN_CHARTS_ENABLED'] = "Chart enabled";
+$content['LN_CHARTS_ENABLEDONLY'] = "Enabled";
+$content['LN_CHARTS_ERROR_INVALIDORNOTFOUNDID'] = "The Chart-ID is invalid or could not be found.";
+$content['LN_CHARTS_ERROR_IDNOTFOUND'] = "The Chart-ID could not be found in the database.";
+$content['LN_CHARTS_WARNDELETESEARCH'] = "Are you sure that you want to delete the Chart '%1'? This cannot be undone!";
+$content['LN_CHARTS_ERROR_DELCHART'] = "Deleting of the Chart with id '%1' failed!";
+$content['LN_CHARTS_ERROR_HASBEENDEL'] = "The Chart '%1' has been successfully deleted!";
+$content['LN_CHARTS_ERROR_MISSINGPARAM'] = "The paramater '%1' is missing.";
+$content['LN_CHARTS_HASBEENADDED'] = "The new Chart '%1' has been successfully added.";
+$content['LN_CHARTS_ERROR_IDNOTFOUND'] = "The Chart-ID could not be found in the database.";
+$content['LN_CHARTS_HASBEENEDIT'] = "The Chart '%1' has been successfully edited.";
+$content['LN_CHARTS_ID'] = "ID";
+$content['LN_CHARTS_ASSIGNTO'] = "Assigned To";
+$content['LN_CHARTS_PREVIEW'] = "Preview Chart in a new Window";
+
+// Fields Options
+$content['LN_FIELDS_CENTER'] = "Fields Options";
+$content['LN_FIELDS_EDIT'] = "Edit Field";
+$content['LN_FIELDS_DELETE'] = "Delete Field";
+$content['LN_FIELDS_ADD'] = "Add new Field";
+$content['LN_FIELDS_ID'] = "FieldID";
+$content['LN_FIELDS_NAME'] = "Display Name";
+$content['LN_FIELDS_DEFINE'] = "Internal FieldID";
+$content['LN_FIELDS_DELETE_FROMDB'] = "Delete Field from DB";
+$content['LN_FIELDS_ADDEDIT'] = "Add / Edit a Field";
+$content['LN_FIELDS_TYPE'] = "Field Type";
+$content['LN_FIELDS_ALIGN'] = "Listview Alignment";
+$content['LN_FIELDS_SEARCHONLINE'] = "Enable online search";
+$content['LN_FIELDS_DEFAULTWIDTH'] = "Row width in Listview";
+$content['LN_FIELDS_ERROR_IDNOTFOUND'] = "The Field-ID could not be found in the database, or in the default constants.";
+$content['LN_FIELDS_ERROR_INVALIDID'] = "The Field with ID '%1' is not a valid Field.";
+$content['LN_FIELDS_SEARCHFIELD'] = "Name of Searchfilter";
+$content['LN_FIELDS_WARNDELETESEARCH'] = "Are you sure that you want to delete the Field '%1'? This cannot be undone!";
+$content['LN_FIELDS_ERROR_DELSEARCH'] = "The Field-ID could not be found in the database.";
+$content['LN_FIELDS_ERROR_HASBEENDEL'] = "The Field '%1' has been successfully deleted!";
+$content['LN_FIELDS_ERROR_FIELDCAPTIONEMPTY'] = "The field caption was empty. ";
+$content['LN_FIELDS_ERROR_FIELDIDEMPTY'] = "The field id was empty. ";
+$content['LN_FIELDS_ERROR_SEARCHFIELDEMPTY'] = "The searchfilter was empty. ";
+$content['LN_FIELDS_ERROR_FIELDDEFINEEMPTY'] = "The internal FieldID was empty. ";
+$content['LN_FIELDS_HASBEENEDIT'] = "The configuration for the field '%1' has been successfully edited.";
+$content['LN_FIELDS_HASBEENADDED'] = "The configuration for the field '%1' has been successfully added.";
+$content['LN_FIELDS_'] = "";
+$content['LN_ALIGN_CENTER'] = "center";
+$content['LN_ALIGN_LEFT'] = "left";
+$content['LN_ALIGN_RIGHT'] = "right";
+$content['LN_FILTER_TYPE_STRING'] = "String";
+$content['LN_FILTER_TYPE_NUMBER'] = "Number";
+$content['LN_FILTER_TYPE_DATE'] = "Date";
+
+// Parser Options
+$content['LN_PARSERS_EDIT'] = "Edit Message Parser";
+$content['LN_PARSERS_DELETE'] = "Delete Message Parser";
+$content['LN_PARSERS_ID'] = "Message Parser ID";
+$content['LN_PARSERS_NAME'] = "Message Parser Name";
+$content['LN_PARSERS_DESCRIPTION'] = "Message Parser Description";
+$content['LN_PARSERS_ERROR_NOPARSERS'] = "There were no valid message parsers found in your installation. ";
+$content['LN_PARSERS_HELP'] = "Help";
+$content['LN_PARSERS_HELP_CLICK'] = "Click here for more help";
+$content['LN_PARSERS_INFO'] = "Show more Information for this message parser.";
+$content['LN_PARSERS_INIT'] = "Initialize settings for this message parser.";
+$content['LN_PARSERS_REMOVE'] = "Remove settings for this message parser.";
+$content['LN_PARSERS_ERROR_IDNOTFOUND'] = "There was no message parser with ID '%1' found.";
+$content['LN_PARSERS_ERROR_INVALIDID'] = "Invalid message parser id.";
+$content['LN_PARSERS_DETAILS'] = "Details for this Parser";
+$content['LN_PARSERS_CUSTOMFIELDS'] = "The following Custom fields are needed by this Message Parser.";
+$content['LN_PARSERS_WARNREMOVE'] = "You are about to remove the custom fields needed by the '%1' Message Parser. However you can add these fields again if you change your mind.";
+$content['LN_PARSERS_ERROR_HASBEENREMOVED'] = "All settings ('%2' custom fields) for the Message Parser '%1' have been removed. ";
+$content['LN_PARSERS_ERROR_HASBEENADDED'] = "All required settings ('%2' custom fields) for the Message Parser '%1' have been added. ";
+$content['LN_PARSERS_ERROR_NOFIELDS'] = "The Message Parser '%1' does not have any custom fields to add.";
+$content['LN_PARSERS_'] = "";
+
+// Command Line stuff
+$content['LN_CMD_NOOP'] = "Operation parameter is missing";
+$content['LN_CMD_NOLOGSTREAM'] = "The logstream source parameter is missing";
+$content['LN_CMD_LOGSTREAMNOTFOUND'] = "Logstream Source with ID '%1' could not be found in the Database!";
+$content['LN_CMD_COULDNOTGETROWCOUNT'] = "Could not obtain rowcount from logstream source '%1'";
+$content['LN_CMD_SUBPARAM1MISSING'] = "Subparameter 1 is missing, it should be set to 'all', 'since' or 'date'. For more details see the documentation.";
+$content['LN_CMD_WRONGSUBOPORMISSING'] = "Either the sub-operation is wrong, or another parameter is missing";
+$content['LN_CMD_FAILEDTOCLEANDATA'] = "Failed to cleandata for the logstream '%1'.";
+$content['LN_CMD_CLEANINGDATAFOR'] = "Cleaning data for logstream source '%1'.";
+$content['LN_CMD_ROWSFOUND'] = "Successfully connected and found '%1' rows in the logstream source.";
+$content['LN_CMD_DELETINGOLDERTHEN'] = "Performing deletion of data entries older then '%1'.";
+$content['LN_CMD_DELETEDROWS'] = "Successfully Deleted '%1' rows in the logstream source.'";
+$content['LN_CMD_'] = "";
+
+?>
\ No newline at end of file
diff --git a/src/lang/it_IT/info.txt b/src/lang/it_IT/info.txt
new file mode 100644
index 0000000..c90c673
--- /dev/null
+++ b/src/lang/it_IT/info.txt
@@ -0,0 +1 @@
+Italiano
\ No newline at end of file
diff --git a/src/lang/it_IT/main.php b/src/lang/it_IT/main.php
new file mode 100644
index 0000000..133df6f
--- /dev/null
+++ b/src/lang/it_IT/main.php
@@ -0,0 +1,162 @@
+ www.phplogcon.org <-
+ * -----------------------------------------------------------------
+ *
+ * Copyright (C) 2008 Adiscon GmbH.
+ *
+ * This file is part of phpLogCon.
+ *
+ * Translation by Luigi Rosa
+ * [mailto:lrosa@venus.it]
+ *
+ *
+ * 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 .
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this
+ * distribution.
+ *********************************************************************
+*/
+global $content;
+
+// Global Stuff
+$content['LN_MAINTITLE'] = "PhpLogCon pagina principale";
+$content['LN_MAIN_SELECTSTYLE'] = "Stile";
+$content['LN_GEN_LANGUAGE'] = "Lingua";
+$content['LN_GEN_SELECTSOURCE'] = "Fonte";
+$content['LN_GEN_MOREPAGES'] = "È disponibile più di una pagina";
+$content['LN_GEN_FIRSTPAGE'] = "Prima pagina";
+$content['LN_GEN_LASTPAGE'] = "Ultima pagina";
+$content['LN_GEN_NEXTPAGE'] = "Pagina successiva";
+$content['LN_GEN_PREVIOUSPAGE'] = "Pagina precedente";
+$content['LN_GEN_RECORDCOUNT'] = "Record totali";
+$content['LN_GEN_PAGERSIZE'] = "Record per pagina";
+$content['LN_GEN_PAGE'] = "Pagina";
+$content['LN_GEN_PREDEFINEDSEARCHES'] = "Ricerche predefinite";
+$content['LN_GEN_SOURCE_DISK'] = "File su disco";
+$content['LN_GEN_SOURCE_DB'] = "MYSQL nativo";
+$content['LN_GEN_SOURCE_PDO'] = "Database (PDO)";
+$content['LN_GEN_RECORDSPERPAGE'] = "record per pagina";
+$content['LN_GEN_PRECONFIGURED'] = "Preconfigurato";
+$content['LN_GEN_AVAILABLESEARCHES'] = "Ricerche disponibili";
+$content['LN_GEN_DB_MYSQL'] = "Mysql Server";
+$content['LN_GEN_DB_MSSQL'] = "Microsoft SQL Server";
+$content['LN_GEN_DB_ODBC'] = "Database ODBC";
+$content['LN_GEN_DB_PGSQL'] = "PostgreSQL";
+$content['LN_GEN_DB_OCI'] = "Oracle Call Interface";
+$content['LN_GEN_DB_DB2'] = " IBM DB2";
+$content['LN_GEN_DB_FIREBIRD'] = "Firebird/Interbase 6";
+$content['LN_GEN_DB_INFORMIX'] = "IBM Informix Dynamic Server";
+$content['LN_GEN_DB_SQLITE'] = "SQLite 2";
+$content['LN_GEN_SELECTVIEW'] = "Visualizzaizone";
+
+
+// Main Index Site
+$content['LN_ERROR_INSTALLFILEREMINDER'] = "Attenzione! Non hai ancora rimosso il file 'install.php' dalla directory principale di phpLogCon!";
+$content['LN_TOP_NUM'] = "Nr.";
+$content['LN_TOP_UID'] = "uID";
+$content['LN_GRID_POPUPDETAILS'] = "Dettagli del messaggio di syslog con ID '%1'";
+
+$content['LN_SEARCH_USETHISBLA'] = "Compila il form sottostante, qui apparirà il filtro";
+$content['LN_SEARCH_FILTER'] = "Filtro di ricerca:";
+$content['LN_SEARCH_ADVANCED'] = "Ricerca avanzata";
+$content['LN_SEARCH'] = "Cerca";
+$content['LN_SEARCH_RESET'] = "Annulla ricerca";
+$content['LN_SEARCH_PERFORMADVANCED'] = "Esegui questa ricerca avanzata";
+$content['LN_VIEW_MESSAGECENTERED'] = "Torna alla visualizzazione non filtrata con questo messaggio all'inizio";
+$content['LN_VIEW_RELATEDMSG'] = "Visualizza i messaggi di syslog correlati";
+$content['LN_VIEW_FILTERFOR'] = "Filtra i messaggi per ";
+$content['LN_VIEW_SEARCHFOR'] = "Ricerca online di ";
+$content['LN_VIEW_SEARCHFORGOOGLE'] = "Cerca su Google ";
+$content['LN_GEN_MESSAGEDETAILS'] = "Dettagli del messaggio";
+
+$content['LN_HIGHLIGHT'] = "Evidenzia >>";
+$content['LN_HIGHLIGHT_OFF'] = "Evidenzia <<";
+$content['LN_HIGHLIGHT_WORDS'] = "Parole da evidenziare separate da virgola";
+
+$content['LN_AUTORELOAD'] = "Aggiornamento automatico";
+$content['LN_AUTORELOAD_DISABLED'] = "Disabilitato";
+$content['LN_AUTORELOAD_PRECONFIGURED'] = "Aggiornamento automatico preconfigurato ";
+$content['LN_AUTORELOAD_SECONDS'] = "secondi";
+$content['LN_AUTORELOAD_MINUTES'] = "minuti";
+
+$content['LN_ERROR_NORECORDS'] = "Nessun record di syslog trovato.";
+
+// Filter Options
+$content['LN_FILTER_DATE'] = "Intervallo data/ora";
+$content['LN_FILTER_DATEMODE'] = "Seleziona il tipo di intervallo";
+$content['LN_DATEMODE_ALL'] = "Qualsiasi data/ora";
+$content['LN_DATEMODE_RANGE'] = "Intervallo orario";
+$content['LN_DATEMODE_LASTX'] = "Ultimi x ore/giorni";
+$content['LN_FILTER_DATEFROM'] = "Dalla data";
+$content['LN_FILTER_DATETO'] = "Alla data";
+$content['LN_FILTER_DATELASTX'] = "Ultime ore oppure ultimi giorni";
+$content['LN_FILTER_ADD2SEARCH'] = "Aggiungi alla ricerca";
+$content['LN_DATE_LASTX_HOUR'] = "Ultima ora";
+$content['LN_DATE_LASTX_12HOURS'] = "Ultime 12 ore";
+$content['LN_DATE_LASTX_24HOURS'] = "Ultime 24 ore";
+$content['LN_DATE_LASTX_7DAYS'] = "Ultimi 7 giorni";
+$content['LN_DATE_LASTX_31DAYS'] = "Ultimi 31 giorni";
+$content['LN_FILTER_FACILITY'] = "Facility syslog";
+$content['LN_FILTER_SEVERITY'] = "Severità syslog";
+$content['LN_FILTER_OTHERS'] = "Altri filtri";
+$content['LN_FILTER_MESSAGE'] = "messaggio syslog";
+$content['LN_FILTER_SYSLOGTAG'] = "Tag syslog";
+$content['LN_FILTER_SOURCE'] = "Fonte (nome host)";
+$content['LN_FILTER_MESSAGETYPE'] = "Tipo del messaggio";
+
+// Field Captions
+$content['LN_FIELDS_DATE'] = "Data";
+$content['LN_FIELDS_FACILITY'] = "Facility";
+$content['LN_FIELDS_SEVERITY'] = "iSeverità";
+$content['LN_FIELDS_HOST'] = "Host";
+$content['LN_FIELDS_SYSLOGTAG'] = "Tag syslog";
+$content['LN_FIELDS_PROCESSID'] = "ID processo";
+$content['LN_FIELDS_MESSAGETYPE'] = "Tipo messaggio";
+$content['LN_FIELDS_UID'] = "uID";
+$content['LN_FIELDS_MESSAGE'] = "Messaggio";
+$content['LN_FIELDS_EVENTID'] = "ID evento";
+$content['LN_FIELDS_EVENTLOGTYPE'] = "Tipo log eventi";
+$content['LN_FIELDS_EVENTSOURCE'] = "Fonte";
+$content['LN_FIELDS_EVENTCATEGORY'] = "Categoria";
+$content['LN_FIELDS_EVENTUSER'] = "Utente";
+
+// Install Page
+$content['LN_CFG_DBSERVER'] = "Host";
+$content['LN_CFG_DBPORT'] = "Porta";
+$content['LN_CFG_DBNAME'] = "Nome del database";
+$content['LN_CFG_DBPREF'] = "Prefisso della tabella";
+$content['LN_CFG_DBUSER'] = "Utente";
+$content['LN_CFG_DBPASSWORD'] = "Password";
+$content['LN_CFG_PARAMMISSING'] = "Mancano questi parametri: ";
+$content['LN_CFG_SOURCETYPE'] = "Tipo della fonte";
+$content['LN_CFG_DISKTYPEOPTIONS'] = "Opzioni per il disco";
+$content['LN_CFG_LOGLINETYPE'] = "Tipo del log";
+$content['LN_CFG_SYSLOGFILE'] = "File di syslog";
+$content['LN_CFG_DATABASETYPEOPTIONS'] = "Opzioni del database";
+$content['LN_CFG_DBTABLETYPE'] = "Tipo della tabella";
+$content['LN_CFG_DBSTORAGEENGINE'] = "Motore di archiviazione su database";
+$content['LN_CFG_DBTABLENAME'] = "Nome della tabella";
+$content['LN_CFG_NAMEOFTHESOURCE'] = "Nome della fonte";
+$content['LN_CFG_FIRSTSYSLOGSOURCE'] = "Prima fonte di syslog";
+$content['LN_CFG_DBROWCOUNTING'] = "Abilita il conteggio delle righe";
+$content['LN_CFG_VIEW'] = "Seleziona il tipo di vista";
+
+// Details page
+$content['LN_DETAILS_FORSYSLOGMSG'] = "Dettagli dei messaggi di syslog con id";
+$content['LN_DETAILS_DETAILSFORMSG'] = "Dettaglio del messaggio con id";
+$content['LN_DETAIL_BACKTOLIST'] = "Torna all'elenco";
+
+?>
\ No newline at end of file
diff --git a/src/templates/details.html b/src/templates/details.html
index 43ce3b3..c1baeea 100644
--- a/src/templates/details.html
+++ b/src/templates/details.html
@@ -22,7 +22,7 @@
-
+
@@ -31,7 +31,7 @@
|
-
+
@@ -44,7 +44,7 @@
|
-
+
@@ -53,7 +53,7 @@
|
-
+
diff --git a/src/templates/include_footer.html b/src/templates/include_footer.html
index 73bfa0e..16c2db0 100644
--- a/src/templates/include_footer.html
+++ b/src/templates/include_footer.html
@@ -35,6 +35,22 @@
+
+
+
+
+
+
+
+
+ {DBGLEVELTXT} |
+
+ {DBGMSG}
+ |
+
+
+
+
{EXTRA_FOOTER}
|