--- CHistory.orig.php 2014-02-19 02:30:01.139807850 +0000 +++ CHistory.php 2014-02-19 02:30:13.387814135 +0000 @@ -85,7 +85,8 @@ 'preservekeys' => null, 'sortfield' => '', 'sortorder' => '', - 'limit' => null + 'limit' => null, + 'compressValues' => null ); $options = zbx_array_merge($defOptions, $options); @@ -198,6 +199,12 @@ if (zbx_ctype_digit($options['limit']) && $options['limit']) { $sqlParts['limit'] = $options['limit']; } + + // compress output + $compressOutput = false; + if (!is_null($options['compressValues'])) { + $compressOutput = true; + } $itemids = array(); @@ -228,6 +235,7 @@ $dbRes = DBselect($sql, $sqlLimit); $count = 0; $group = array(); + $lastValues = array(); while ($data = DBfetch($dbRes)) { if ($options['countOutput']) { $result = $data; @@ -235,6 +243,12 @@ else { $itemids[$data['itemid']] = $data['itemid']; + if($compressOutput){ + if(isset($lastValues[$data['itemid']]) && $lastValues[$data['itemid']] != $data['value']){ + $count++; + } + } + $result[$count] = array(); // hostids @@ -254,8 +268,9 @@ $result[$count]['triggers'][] = array('triggerid' => $data['triggerid']); unset($data['triggerid']); } + $result[$count] += $data; - + // grouping if ($groupOutput) { $dataid = $data[$options['groupOutput']]; @@ -264,7 +279,15 @@ } $group[$dataid][] = $result[$count]; } - $count++; + + if($compressOutput){ + if(isset($lastValues[$data['itemid']]) && $lastValues[$data['itemid']] != $data['value']){ + $count++; + } + $lastValues[$data['itemid']] = $data['value']; + } else { + $count++; + } } }