aboutsummaryrefslogtreecommitdiff
path: root/lib/classes
diff options
context:
space:
mode:
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/AdminCourseFilter.php44
-rw-r--r--lib/classes/DataFieldSelectboxEntry.php5
2 files changed, 39 insertions, 10 deletions
diff --git a/lib/classes/AdminCourseFilter.php b/lib/classes/AdminCourseFilter.php
index bdb84d2..04d7d17 100644
--- a/lib/classes/AdminCourseFilter.php
+++ b/lib/classes/AdminCourseFilter.php
@@ -157,14 +157,42 @@ class AdminCourseFilter
if (!$reset_settings) {
$datafields_filters = $GLOBALS['user']->cfg->ADMIN_COURSES_DATAFIELDS_FILTERS;
- foreach ($datafields_filters as $datafield_id => $value) {
- $this->query->join('de_'.$datafield_id, 'datafields_entries', 'de_'.$datafield_id.'.range_id = seminare.Seminar_id AND `de_'.$datafield_id.'`.datafield_id = :de_'.$datafield_id.'_id');
- $this->query->where('de_' . $datafield_id . '_contents', 'de_' . $datafield_id . '.`content` LIKE :de_' . $datafield_id . '_content',
- [
- 'de_' . $datafield_id . '_id' => $datafield_id,
- 'de_' . $datafield_id . '_content' => '%' . $value . '%'
- ]);
- }
+
+ DataField::findEachMany(
+ function (DataField $datafield) use (&$datafields_filters) {
+ $this->query->join(
+ "de_{$datafield->id}",
+ 'datafields_entries',
+ "de_{$datafield->id}.range_id = seminare.Seminar_id AND `de_{$datafield->id}`.datafield_id = :de_{$datafield->id}_id"
+ );
+ $this->query->join(
+ "dd_{$datafield->id}",
+ 'datafields',
+ "dd_{$datafield->id}.datafield_id = de_{$datafield->id}.datafield_id"
+ );
+
+ if ($datafield->isNumericType()) {
+ $this->query->where(
+ "de_{$datafield->id}_contents",
+ "IFNULL(de_{$datafield->id}.`content`, dd_{$datafield->id}.`default_value`) = :de_{$datafield->id}_content",
+ [
+ "de_{$datafield->id}_id" => $datafield->id,
+ "de_{$datafield->id}_content" => $datafields_filters[$datafield->id]
+ ]
+ );
+ } else {
+ $this->query->where(
+ "de_{$datafield->id}_contents",
+ "IFNULL(de_{$datafield->id}.`content`, dd_{$datafield->id}.`default_value`) LIKE :de_{$datafield->id}_content",
+ [
+ "de_{$datafield->id}_id" => $datafield->id,
+ "de_{$datafield->id}_content" => '%' . $datafields_filters[$datafield->id] . '%'
+ ]
+ );
+ }
+ },
+ array_keys($datafields_filters)
+ );
}
}
diff --git a/lib/classes/DataFieldSelectboxEntry.php b/lib/classes/DataFieldSelectboxEntry.php
index 4c9c890..4a1cc02 100644
--- a/lib/classes/DataFieldSelectboxEntry.php
+++ b/lib/classes/DataFieldSelectboxEntry.php
@@ -92,8 +92,9 @@ class DataFieldSelectboxEntry extends DataFieldEntry
public function getDisplayValue($entities = true)
{
$value = $this->is_assoc_param
- ? $this->type_param[$this->getValue()]
- : $this->getValue();
+ ? $this->type_param[$this->getValue()] ?? ''
+ : $this->getValue();
+
return $entities ? htmlReady($value) : $value;
}
}