66 $averageDuration =
null;
72 ->setSelect([
'ID',
'DURATION'])
74 ->addOrder(
'ID',
'DESC')
75 ->setLimit(self::DURATION_ROWS_LIMIT)
78 $duration =
$query->exec()->fetchCollection()->getDurationList();
79 $total =
count($duration);
83 $deviationCount = (int)(($total * self::AVERAGE_DURATION_DEVIATION_PERCENT) / 200);
84 $length = $total - 2 * $deviationCount;
86 $slicedDuration = $duration;
87 if ($deviationCount !== 0)
89 sort($duration, SORT_NUMERIC);
90 $slicedDuration = array_slice($duration, $deviationCount, $length);
93 $averageDuration = (int)(array_sum($slicedDuration) / $length);
97 return $averageDuration;