diff options
Diffstat (limited to 'lib/classes')
| -rw-r--r-- | lib/classes/AdminCourseFilter.php | 44 | ||||
| -rw-r--r-- | lib/classes/DataFieldSelectboxEntry.php | 5 |
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; } } |
