. */ namespace vierbergenlars\AuthserverStatsBundle\Event; use Symfony\Component\EventDispatcher\Event; class StatsEvent extends Event { private $modules; private $stats = []; private $muninConfig = []; public function __construct($modules) { $this->modules = $modules; } public function isEnabled($module) { if (!$this->modules) return true; return in_array($module, $this->modules); } public function setMuninConfig($module, $config) { $this->muninConfig[$module] = $config; } public function getMuninConfig($module) { return $this->muninConfig[$module]; } public function addStatistics(array $statistics) { foreach ($statistics as $statName => $value) { $this->addStatistic($statName, $value); } return $this; } public function addStatistic($name, $value) { list ($module, $statistic) = explode('.', $name, 2); if (!isset($this->stats[$module])) $this->stats[$module] = []; if (isset($this->stats[$module][$statistic])) throw new \OutOfBoundsException(sprintf('Statistic "%s" already exists and cannot be overwritten.', $name)); $this->stats[$module][$statistic] = $value; return $this; } public function getStatistics() { $stats = []; foreach ($this->getModules() as $module) { foreach ($this->getModuleStatistics($module) as $stat => $value) { $stats[$module . '.' . $stat] = $value; } } return $stats; } public function getModules() { return array_keys($this->stats); } public function getModuleStatistics($module) { return $this->stats[$module]; } }