/** * Load widget content from the onWidgetDetailGenerate event * * @param Widget $widget * @param array $filter */ public function populateWidgetContent(Widget &$widget, $filter = array()) { $cacheDir = $this->factory->getParameter('cached_data_dir', $this->factory->getSystemPath('cache', true)); $dispatcher = $this->factory->getDispatcher(); if ($widget->getCacheTimeout() == null || $widget->getCacheTimeout() == -1) { $widget->setCacheTimeout($this->factory->getParameter('cached_data_timeout')); } // Merge global filter with widget params $widgetParams = $widget->getParams(); $resultParams = array_merge($widgetParams, $filter); // Add the user timezone if (empty($resultParams['timezone'])) { $resultParams['timezone'] = $this->factory->getUser()->getTimezone(); } // Clone the objects in param array to avoid reference issues if some subscriber changes them foreach ($resultParams as &$param) { if (is_object($param)) { $param = clone $param; } } $widget->setParams($resultParams); $event = new WidgetDetailEvent($this->translator); $event->setWidget($widget); $event->setCacheDir($cacheDir, $this->factory->getUser()->getId()); $event->setSecurity($this->factory->getSecurity()); $dispatcher->dispatch(DashboardEvents::DASHBOARD_ON_MODULE_DETAIL_GENERATE, $event); }