diff --git a/web/includes/functions.php b/web/includes/functions.php
index b2c431013..7c710bbb7 100644
--- a/web/includes/functions.php
+++ b/web/includes/functions.php
@@ -1108,20 +1108,23 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
$terms = isset($filter['Query']) ? $filter['Query']['terms'] : NULL;
if ( isset($terms) && count($terms) ) {
for ( $i = 0; $i < count($terms); $i++ ) {
- if ( isset($terms[$i]['cnj']) && array_key_exists($terms[$i]['cnj'], $validQueryConjunctionTypes) ) {
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][cnj]").'='.urlencode($terms[$i]['cnj']);
- $filter['sql'] .= ' '.$terms[$i]['cnj'].' ';
- $filter['fields'] .= "\n";
+
+ $term = $terms[$i];
+
+ if ( isset($term['cnj']) && array_key_exists($term['cnj'], $validQueryConjunctionTypes) ) {
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][cnj]").'='.urlencode($term['cnj']);
+ $filter['sql'] .= ' '.$term['cnj'].' ';
+ $filter['fields'] .= "\n";
}
- if ( isset($terms[$i]['obr']) && (string)(int)$terms[$i]['obr'] == $terms[$i]['obr'] ) {
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][obr]").'='.urlencode($terms[$i]['obr']);
- $filter['sql'] .= ' '.str_repeat('(', $terms[$i]['obr']).' ';
- $filter['fields'] .= "\n";
+ if ( isset($term['obr']) && (string)(int)$term['obr'] == $term['obr'] ) {
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][obr]").'='.urlencode($term['obr']);
+ $filter['sql'] .= ' '.str_repeat('(', $term['obr']).' ';
+ $filter['fields'] .= "\n";
}
- if ( isset($terms[$i]['attr']) ) {
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][attr]").'='.urlencode($terms[$i]['attr']);
- $filter['fields'] .= "\n";
- switch ( $terms[$i]['attr'] ) {
+ if ( isset($term['attr']) ) {
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][attr]").'='.urlencode($term['attr']);
+ $filter['fields'] .= "\n";
+ switch ( $term['attr'] ) {
case 'MonitorName':
$filter['sql'] .= 'M.Name';
break;
@@ -1189,7 +1192,7 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
case 'Notes':
case 'StateId':
case 'Archived':
- $filter['sql'] .= 'E.'.$terms[$i]['attr'];
+ $filter['sql'] .= 'E.'.$term['attr'];
break;
case 'DiskPercent':
// Need to specify a storage area, so need to look through other terms looking for a storage area, else we default to ZM_EVENTS_PATH
@@ -1209,7 +1212,7 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
// Need to specify a storage area, so need to look through other terms looking for a storage area, else we default to ZM_EVENTS_PATH
if ( ! $StorageArea ) {
for ( $j = $i; $j < count($terms); $j++ ) {
- if ( isset($terms[$i]['attr']) and $terms[$i]['attr'] == 'StorageId' and isset($terms[$j]['val']) ) {
+ if ( isset($terms[$j]['attr']) and $terms[$j]['attr'] == 'StorageId' and isset($terms[$j]['val']) ) {
$StorageArea = ZM\Storage::find_one(array('Id'=>$terms[$j]['val']));
}
} // end foreach remaining term
@@ -1221,8 +1224,8 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
break;
}
$valueList = array();
- foreach ( preg_split( '/["\'\s]*?,["\'\s]*?/', preg_replace( '/^["\']+?(.+)["\']+?$/', '$1', $terms[$i]['val'] ) ) as $value ) {
- switch ( $terms[$i]['attr'] ) {
+ foreach ( preg_split( '/["\'\s]*?,["\'\s]*?/', preg_replace( '/^["\']+?(.+)["\']+?$/', '$1', $term['val'] ) ) as $value ) {
+ switch ( $term['attr'] ) {
case 'MonitorName':
case 'Name':
case 'Cause':
@@ -1270,16 +1273,16 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
break;
}
$valueList[] = $value;
- }
+ } // end foreach value
- switch ( $terms[$i]['op'] ) {
+ switch ( $term['op'] ) {
case '=' :
case '!=' :
case '>=' :
case '>' :
case '<' :
case '<=' :
- $filter['sql'] .= ' '.$terms[$i]['op'].' '. $value;
+ $filter['sql'] .= ' '.$term['op'].' '. $value;
break;
case '=~' :
$filter['sql'] .= ' regexp '.$value;
@@ -1307,28 +1310,41 @@ function parseFilter(&$filter, $saveToSession=false, $querySep='&') {
$filter['sql'] .= " IS NOT $value";
break;
default:
- ZM\Warning("Invalid operator in filter: " . $terms[$i]['op'] );
- }
+ ZM\Warning("Invalid operator in filter: " . $term['op'] );
+ } // end switch op
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][op]").'='.urlencode($terms[$i]['op']);
- $filter['fields'] .= "\n";
- if ( isset($terms[$i]['val']) ) {
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][val]").'='.urlencode($terms[$i]['val']);
- $filter['fields'] .= "\n";
- }
- } // end foreach term
- if ( isset($terms[$i]['cbr']) && (string)(int)$terms[$i]['cbr'] == $terms[$i]['cbr'] ) {
- $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][cbr]").'='.urlencode($terms[$i]['cbr']);
- $filter['sql'] .= ' '.str_repeat( ')', $terms[$i]['cbr'] ).' ';
- $filter['fields'] .= "\n";
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][op]").'='.urlencode($term['op']);
+ $filter['fields'] .= "\n";
+ if ( isset($term['val']) ) {
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][val]").'='.urlencode($term['val']);
+ $filter['fields'] .= "\n";
+ }
+ } // end if ( isset($term['attr']) )
+ if ( isset($term['cbr']) && (string)(int)$term['cbr'] == $term['cbr'] ) {
+ $filter['query'] .= $querySep.urlencode("filter[Query][terms][$i][cbr]").'='.urlencode($term['cbr']);
+ $filter['sql'] .= ' '.str_repeat( ')', $term['cbr'] ).' ';
+ $filter['fields'] .= "\n";
}
- }
+ } // end foreach term
if ( $filter['sql'] )
$filter['sql'] = ' and ( '.$filter['sql'].' )';
if ( $saveToSession ) {
$_SESSION['filter'] = $filter;
}
- }
+ } else {
+ ZM\Warning("No terms in filter");
+ } // end if terms
+
+ #if ( 0 ) {
+ #// ICON I feel like these should be here, but not yet
+ #if ( isset($filter['Query']['sort_field']) ) {
+ #$filter['sql'] .= ' ORDER BY ' . $filter['Query']['sort_field'] . (
+ #( $filter['Query']['sort_asc'] ? ' ASC' : ' DESC' ) );
+ #}
+ #if ( $filter['Query']['limit'] ) {
+ #$filter['sql'] .= ' LIMIT ' . validInt($filter['Query']['limit']);
+ #}
+ #}
}
// Please note that the filter is passed in by copy, so you need to use the return value from this function.