diff --git a/modules/backend/classes/WidgetManager.php b/modules/backend/classes/WidgetManager.php index 91972173b..35099a48d 100644 --- a/modules/backend/classes/WidgetManager.php +++ b/modules/backend/classes/WidgetManager.php @@ -1,6 +1,7 @@ reportWidgets as $widget => $config) { + if (!empty($config['permissions'])) { + if (!$user->hasAccess($config['permissions'], false)) { + unset($this->reportWidgets[$widget]); + } + } + } + return $this->reportWidgets; } @@ -247,5 +257,4 @@ class WidgetManager unset($this->reportWidgets[$className]); } - -} +} \ No newline at end of file diff --git a/modules/backend/widgets/ReportContainer.php b/modules/backend/widgets/ReportContainer.php index 880e0dacb..53281a437 100644 --- a/modules/backend/widgets/ReportContainer.php +++ b/modules/backend/widgets/ReportContainer.php @@ -229,7 +229,7 @@ class ReportContainer extends WidgetBase $widgets = $this->getWidgetsFromUserPreferences(); - $num = count($widgets); + $num = count($widgets); do { $num++; $alias = 'report_container_'.$this->context.'_'.$num; @@ -336,7 +336,8 @@ class ReportContainer extends WidgetBase $configuration['alias'] = $alias; $className = $widgetInfo['class']; - if (!class_exists($className)) { + $availableReportWidgets = array_keys(WidgetManager::instance()->listReportWidgets()); + if (!class_exists($className) || !in_array($className, $availableReportWidgets)) { return; } @@ -501,4 +502,4 @@ class ReportContainer extends WidgetBase { return 'backend::reportwidgets.default.'.$this->context; } -} +} \ No newline at end of file