Implement filter limits. Which go before pagination/advanced search limits
This commit is contained in:
parent
4501a7c2a1
commit
b28f97c5c3
|
@ -1 +1 @@
|
||||||
Subproject commit cd7fd49becad6010a1b8466bfebbd93999a39878
|
Subproject commit eab32851421ffe54fec0229c3efc44c642bc8d46
|
|
@ -182,6 +182,9 @@ function queryRequest($filter, $search, $advsearch, $sort, $offset, $order, $lim
|
||||||
$sort = $sort == 'Monitor' ? 'M.Name' : 'E.'.$sort;
|
$sort = $sort == 'Monitor' ? 'M.Name' : 'E.'.$sort;
|
||||||
$col_str = 'E.*, M.Name AS Monitor';
|
$col_str = 'E.*, M.Name AS Monitor';
|
||||||
$sql = 'SELECT ' .$col_str. ' FROM `Events` AS E INNER JOIN Monitors AS M ON E.MonitorId = M.Id'.$where.' ORDER BY '.$sort.' '.$order;
|
$sql = 'SELECT ' .$col_str. ' FROM `Events` AS E INNER JOIN Monitors AS M ON E.MonitorId = M.Id'.$where.' ORDER BY '.$sort.' '.$order;
|
||||||
|
if ($filter->limit() and !count($filter->pre_sql_conditions()) and !count($filter->post_sql_conditions())) {
|
||||||
|
$sql .= ' LIMIT '.$filter->limit();
|
||||||
|
}
|
||||||
|
|
||||||
$storage_areas = ZM\Storage::find();
|
$storage_areas = ZM\Storage::find();
|
||||||
$StorageById = array();
|
$StorageById = array();
|
||||||
|
@ -208,6 +211,12 @@ function queryRequest($filter, $search, $advsearch, $sort, $offset, $order, $lim
|
||||||
$unfiltered_rows[] = $row;
|
$unfiltered_rows[] = $row;
|
||||||
} # end foreach row
|
} # end foreach row
|
||||||
|
|
||||||
|
# Filter limits come before pagination limits.
|
||||||
|
if ($filter->limit() and ($filter->limit() > count($unfiltered_rows))) {
|
||||||
|
ZM\Debug("Filtering rows due to filter->limit " . count($unfiltered_rows)." limit: ".$filter->limit());
|
||||||
|
$unfiltered_rows = array_slice($unfiltered_rows, 0, $filter->limit());
|
||||||
|
}
|
||||||
|
|
||||||
ZM\Debug('Have ' . count($unfiltered_rows) . ' events matching base filter.');
|
ZM\Debug('Have ' . count($unfiltered_rows) . ' events matching base filter.');
|
||||||
|
|
||||||
$filtered_rows = null;
|
$filtered_rows = null;
|
||||||
|
@ -246,8 +255,10 @@ function queryRequest($filter, $search, $advsearch, $sort, $offset, $order, $lim
|
||||||
$filtered_rows = $unfiltered_rows;
|
$filtered_rows = $unfiltered_rows;
|
||||||
} # end if search_filter->terms() > 1
|
} # end if search_filter->terms() > 1
|
||||||
|
|
||||||
if ($limit)
|
if ($limit) {
|
||||||
|
ZM\Debug("Filtering rows due to limit " . count($filtered_rows)." offset: $offset limit: $limit");
|
||||||
$filtered_rows = array_slice($filtered_rows, $offset, $limit);
|
$filtered_rows = array_slice($filtered_rows, $offset, $limit);
|
||||||
|
}
|
||||||
|
|
||||||
$returned_rows = array();
|
$returned_rows = array();
|
||||||
foreach ($filtered_rows as $row) {
|
foreach ($filtered_rows as $row) {
|
||||||
|
|
Loading…
Reference in New Issue