aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/classes/AdminCourseFilter.class.php4
-rw-r--r--lib/plugins/core/AdminCourseWidget.class.php18
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/classes/AdminCourseFilter.class.php b/lib/classes/AdminCourseFilter.class.php
index a934ebe..f803082 100644
--- a/lib/classes/AdminCourseFilter.class.php
+++ b/lib/classes/AdminCourseFilter.class.php
@@ -171,6 +171,10 @@ class AdminCourseFilter
'de_' . $datafield_id . '_content' => '%' . $value . '%'
]);
}
+
+ foreach (PluginManager::getInstance()->getPlugins('AdminCourseWidgetPlugin') as $plugin) {
+ $plugin->applyFilter($this);
+ }
}
/**
diff --git a/lib/plugins/core/AdminCourseWidget.class.php b/lib/plugins/core/AdminCourseWidget.class.php
new file mode 100644
index 0000000..3f67b7b
--- /dev/null
+++ b/lib/plugins/core/AdminCourseWidget.class.php
@@ -0,0 +1,18 @@
+<?php
+interface AdminCourseWidgetPlugin
+{
+ /**
+ * Returns an array of widgets in the way: ['select_studiengang' => $select_widget].
+ * The indexes are the names of the parameter.
+ * @return array of SidebarWidget
+ */
+ public function getWidgets(): array;
+
+ public function getFilterValues(): array;
+
+ public function applyFilter(AdminCourseFilter $filter): void;
+
+ public function setFilter(string $name, $value): void;
+
+ public function getPositionInSidebar($name): ?string;
+}