Implemented search function for almost all weblog based fields

This commit is contained in:
Andre Lorbach 2008-09-17 17:25:20 +02:00
parent 3851e73256
commit 6de2f6328d
3 changed files with 182 additions and 23 deletions

View File

@ -507,6 +507,86 @@ abstract class LogStream {
$tmpFilterType = FILTER_TYPE_DATE; $tmpFilterType = FILTER_TYPE_DATE;
$tmpTimeMode = DATEMODE_LASTX; $tmpTimeMode = DATEMODE_LASTX;
break; break;
/* BEGIN WebLog based fields */
case SYSLOG_WEBLOG_USER:
$tmpKeyName = SYSLOG_WEBLOG_USER;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_METHOD:
$tmpKeyName = SYSLOG_WEBLOG_METHOD;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_URL:
$tmpKeyName = SYSLOG_WEBLOG_URL;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_QUERYSTRING:
$tmpKeyName = SYSLOG_WEBLOG_QUERYSTRING;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_PVER:
$tmpKeyName = SYSLOG_WEBLOG_PVER;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_STATUS:
$tmpKeyName = SYSLOG_WEBLOG_STATUS;
$tmpFilterType = FILTER_TYPE_NUMBER;
// --- Extra numeric Check
if ( isset($tmpValues) )
{
foreach( $tmpValues as $mykey => $szValue )
{
if ( is_numeric($szValue[FILTER_TMP_VALUE]) )
$tmpValues[$mykey][FILTER_TMP_VALUE] = $szValue[FILTER_TMP_VALUE];
else
$tmpValues[$mykey][FILTER_TMP_VALUE] = "";
}
}
else
{
// First set Filter Mode
$tmpArray[FILTER_TMP_MODE] = $this->SetFilterIncludeMode($tmpArray[FILTER_TMP_VALUE]);
if ( !is_numeric($tmpArray[FILTER_TMP_VALUE]) )
$tmpArray[FILTER_TMP_VALUE] = "";
}
// ---
break;
case SYSLOG_WEBLOG_BYTESSEND:
$tmpKeyName = SYSLOG_WEBLOG_BYTESSEND;
$tmpFilterType = FILTER_TYPE_NUMBER;
// --- Extra numeric Check
if ( isset($tmpValues) )
{
foreach( $tmpValues as $mykey => $szValue )
{
if ( is_numeric($szValue[FILTER_TMP_VALUE]) )
$tmpValues[$mykey][FILTER_TMP_VALUE] = $szValue[FILTER_TMP_VALUE];
else
$tmpValues[$mykey][FILTER_TMP_VALUE] = "";
}
}
else
{
// First set Filter Mode
$tmpArray[FILTER_TMP_MODE] = $this->SetFilterIncludeMode($tmpArray[FILTER_TMP_VALUE]);
if ( !is_numeric($tmpArray[FILTER_TMP_VALUE]) )
$tmpArray[FILTER_TMP_VALUE] = "";
}
// ---
break;
case SYSLOG_WEBLOG_REFERER:
$tmpKeyName = SYSLOG_WEBLOG_REFERER;
$tmpFilterType = FILTER_TYPE_STRING;
break;
case SYSLOG_WEBLOG_USERAGENT:
$tmpKeyName = SYSLOG_WEBLOG_USERAGENT;
$tmpFilterType = FILTER_TYPE_STRING;
break;
/* END WebLog based fields */
default: default:
$tmpFilterType = FILTER_TYPE_UNKNOWN; $tmpFilterType = FILTER_TYPE_UNKNOWN;
break; break;

View File

@ -50,7 +50,7 @@
position: absolute; position: absolute;
top: 12px; top: 12px;
left: 4px; /* to position them to the right of their containing block */ left: 4px; /* to position them to the right of their containing block */
width: 350; /* width is based on the containing block */ width: auto; /* width is based on the containing block */
} }
div#menu ul ul, div#menu ul ul,

View File

@ -552,16 +552,27 @@ if ( isset($content['Sources'][$currentSourceID]) )
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
} }
// WebServer Type fields
else if ( $mycolkey == SYSLOG_WEBLOG_STATUS )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_NUMBER, SYSLOG_WEBLOG_STATUS, 'LN_FIELDS_WEBLOG_STATUS', false);
}
} }
else if ( $content['fields'][$mycolkey]['FieldType'] == FILTER_TYPE_STRING ) else if ( $content['fields'][$mycolkey]['FieldType'] == FILTER_TYPE_STRING )
{ {
// Kindly Copy Value first! // Set some basic variables first
$content['syslogmessages'][$counter]['values'][$mycolkey]['fieldvalue'] = $logArray[$mycolkey]; $content['syslogmessages'][$counter]['values'][$mycolkey]['fieldvalue'] = $logArray[$mycolkey]; // May contain the field value trunscated
$content['syslogmessages'][$counter]['values'][$mycolkey]['rawfieldvalue'] = $logArray[$mycolkey]; // helper variable used for Popups! $content['syslogmessages'][$counter]['values'][$mycolkey]['rawfieldvalue'] = $logArray[$mycolkey]; // helper variable used for Popups!
$content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue'] = str_replace(' ', '+', $logArray[$mycolkey]); // Convert into filter format for submenus
// Convert into filter format for submenus // --- Check for reached string character limit
$szFilterEncodedStr = str_replace(' ', '+', $logArray[$mycolkey]); if ( $mycolkey != SYSLOG_MESSAGE )
{
if ( $myStrCharLimit > 0 )
$content['syslogmessages'][$counter]['values'][$mycolkey]['fieldvalue'] = GetStringWithHTMLCodes(strlen($logArray[$mycolkey]) > $myStrCharLimit ? substr($logArray[$mycolkey], 0, $myStrCharLimit) . " ..." : $logArray[$mycolkey]);
}
// ---
// Special Handling for the Syslog Message! // Special Handling for the Syslog Message!
if ( $mycolkey == SYSLOG_MESSAGE ) if ( $mycolkey == SYSLOG_MESSAGE )
@ -656,7 +667,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
if ( strlen($content['searchstr']) > 0 ) if ( strlen($content['searchstr']) > 0 )
{ {
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+syslogtag%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+syslogtag%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_GREEN'] 'IconSource' => $content['MENU_BULLET_GREEN']
); );
@ -664,7 +675,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
// More Menu entries // More Menu entries
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=syslogtag%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=syslogtag%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
@ -683,7 +694,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
if ( strlen($content['searchstr']) > 0 ) if ( strlen($content['searchstr']) > 0 )
{ {
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+source%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+source%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_GREEN'] 'IconSource' => $content['MENU_BULLET_GREEN']
); );
@ -691,7 +702,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
// More Menu entries // More Menu entries
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=source%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=source%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
@ -706,7 +717,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
if ( strlen($content['searchstr']) > 0 ) if ( strlen($content['searchstr']) > 0 )
{ {
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventlogtype%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventlogtype%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_GREEN'] 'IconSource' => $content['MENU_BULLET_GREEN']
); );
@ -714,7 +725,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
// More Menu entries // More Menu entries
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=eventlogtype%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=eventlogtype%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
@ -733,7 +744,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
if ( strlen($content['searchstr']) > 0 ) if ( strlen($content['searchstr']) > 0 )
{ {
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventlogsource%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventlogsource%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_GREEN'] 'IconSource' => $content['MENU_BULLET_GREEN']
); );
@ -741,7 +752,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
// More Menu entries // More Menu entries
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=eventlogsource%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=eventlogsource%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
@ -760,7 +771,7 @@ if ( isset($content['Sources'][$currentSourceID]) )
if ( strlen($content['searchstr']) > 0 ) if ( strlen($content['searchstr']) > 0 )
{ {
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventuser%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+eventuser%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_GREEN'] 'IconSource' => $content['MENU_BULLET_GREEN']
); );
@ -768,19 +779,48 @@ if ( isset($content['Sources'][$currentSourceID]) )
// More Menu entries // More Menu entries
$content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array( $content['syslogmessages'][$counter]['values'][$mycolkey]['buttons'][] = array(
'ButtonUrl' => '?filter=eventuser%3A%3D' . urlencode($szFilterEncodedStr) . '&search=Search' . $content['additional_url_sourceonly'], 'ButtonUrl' => '?filter=eventuser%3A%3D' . urlencode($content['syslogmessages'][$counter]['values'][$mycolkey]['encodedfieldvalue']) . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]), 'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $logArray[$mycolkey]),
'IconSource' => $content['MENU_BULLET_BLUE'] 'IconSource' => $content['MENU_BULLET_BLUE']
); );
} }
// WebServer Type fields
// --- Check for reached string character limit else if ( $mycolkey == SYSLOG_WEBLOG_USER )
if ( $mycolkey != SYSLOG_MESSAGE )
{ {
if ( $myStrCharLimit > 0 ) // Add context menu
$content['syslogmessages'][$counter]['values'][$mycolkey]['fieldvalue'] = GetStringWithHTMLCodes(strlen($logArray[$mycolkey]) > $myStrCharLimit ? substr($logArray[$mycolkey], 0, $myStrCharLimit) . " ..." : $logArray[$mycolkey]); AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_USER, 'LN_FIELDS_WEBLOG_USER', false);
} }
// --- else if ( $mycolkey == SYSLOG_WEBLOG_METHOD )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_METHOD, 'LN_FIELDS_WEBLOG_USERAGENT', false);
}
else if ( $mycolkey == SYSLOG_WEBLOG_URL )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_URL, 'LN_FIELDS_WEBLOG_URL', false);
}
else if ( $mycolkey == SYSLOG_WEBLOG_QUERYSTRING )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_QUERYSTRING, 'LN_FIELDS_WEBLOG_QUERYSTRING', false);
}
else if ( $mycolkey == SYSLOG_WEBLOG_PVER )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_PVER, 'LN_FIELDS_WEBLOG_PVER', false);
}
else if ( $mycolkey == SYSLOG_WEBLOG_REFERER )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_REFERER, 'LN_FIELDS_WEBLOG_REFERER', true);
}
else if ( $mycolkey == SYSLOG_WEBLOG_USERAGENT )
{
// Add context menu
AddOnClickMenu( $content['syslogmessages'][$counter]['values'][$mycolkey], FILTER_TYPE_STRING, SYSLOG_WEBLOG_USERAGENT, 'LN_FIELDS_WEBLOG_USERAGENT', true);
}
} }
} }
} }
@ -934,7 +974,46 @@ function PrepareStringForSearch($myString)
return str_replace(" ", "+", $myString); return str_replace(" ", "+", $myString);
} }
function AddOnClickMenu(&$fieldGridItem, $fieldType, $szSearchFieldName, $szFieldDisplayNameID, $searchOnline = false)
{
global $content;
// Set OnClick Menu for SYSLOG_SYSLOGTAG
$fieldGridItem['hasbuttons'] = true;
// Set FieldSearch Value
if ( $fieldType == FILTER_TYPE_STRING)
$szEncodedFieldValue = urlencode($fieldGridItem['encodedfieldvalue']);
else
$szEncodedFieldValue = $fieldGridItem['fieldvalue'];
// Menu Option to append filter
if ( strlen($content['searchstr']) > 0 )
{
$fieldGridItem['buttons'][] = array(
'ButtonUrl' => '?filter=' . urlencode($content['searchstr']) . '+' . $szSearchFieldName . '%3A%3D' . $szEncodedFieldValue . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_ADDTOFILTER'], $fieldGridItem['fieldvalue']),
'IconSource' => $content['MENU_BULLET_GREEN']
);
}
// More Menu entries
$fieldGridItem['buttons'][] = array(
'ButtonUrl' => '?filter=' . $szSearchFieldName . '%3A%3D' . $szEncodedFieldValue . '&search=Search' . $content['additional_url_sourceonly'],
'DisplayName' => GetAndReplaceLangStr($content['LN_VIEW_FILTERFORONLY'], $fieldGridItem['fieldvalue']),
'IconSource' => $content['MENU_BULLET_BLUE']
);
// Add Online Search Button
if ( $searchOnline )
{
$fieldGridItem['buttons'][] = array(
'ButtonUrl' => 'http://kb.monitorware.com/kbsearch.php?sa=Search&origin=phplogcon&oid=' . $szSearchFieldName . '&q=' . $szEncodedFieldValue,
'DisplayName' => $content['LN_VIEW_SEARCHFOR'] . " " . $content[$szFieldDisplayNameID] . " '" . $fieldGridItem['fieldvalue'] . "'",
'IconSource' => $content['MENU_NETWORK']
);
}
}
// --- // ---
?> ?>