3 declare(strict_types=1);
29 protected \ilDBInterface
$db;
34 $this->db = (
$db) ?: $DIC->database();
42 string $title_filter =
"",
43 string $format_filter =
"",
44 string $keyword_filter =
'',
45 string $caption_filter =
"" 49 $query =
"SELECT DISTINCT mep_tree.*, object_data.* " .
50 "FROM mep_tree JOIN mep_item ON (mep_tree.child = mep_item.obj_id) " .
51 " JOIN object_data ON (mep_item.foreign_id = object_data.obj_id) ";
53 if ($format_filter !=
"" or $caption_filter !=
'') {
54 $query .=
" JOIN media_item ON (media_item.mob_id = object_data.obj_id) ";
58 " WHERE mep_tree.mep_id = " . $db->quote($pool_id,
"integer") .
59 " AND object_data.type = " . $db->quote(
"mob",
"text");
62 if (trim($title_filter) !=
"") {
63 $query .=
" AND " . $db->like(
"object_data.title",
"text",
"%" . trim($title_filter) .
"%");
65 if (!in_array($format_filter, [
"",
"mob"])) {
66 $filter = ($format_filter ===
"unknown")
69 $query .=
" AND " . $db->equals(
"media_item.format", $filter,
"text",
true);
71 if (trim($caption_filter)) {
72 $query .=
'AND ' . $db->like(
'media_item.caption',
'text',
'%' . trim($caption_filter) .
'%');
76 " ORDER BY object_data.title";
80 while ($rec = $db->fetchAssoc($set)) {
81 $rec[
"foreign_id"] = $rec[
"obj_id"];
87 if ($keyword_filter) {
90 foreach ($objs as $obj) {
91 if (in_array($obj[
'foreign_id'],
$res)) {
95 return (array) $filtered;
105 string $title_filter =
"",
106 string $format_filter =
"",
107 string $keyword_filter =
'',
108 string $caption_filter =
"" 111 if (!in_array($format_filter, [
"pg",
""])) {
116 if ($caption_filter !=
"") {
122 $query =
"SELECT DISTINCT mep_tree.*, mep_item.* " .
123 "FROM mep_tree JOIN mep_item ON (mep_tree.child = mep_item.obj_id) ";
126 " WHERE mep_tree.mep_id = " . $db->quote($pool_id,
"integer") .
127 " AND mep_item.type = " . $db->quote(
"pg",
"text");
130 if (trim($title_filter) !=
"") {
131 $query .=
" AND " . $db->like(
"mep_item.title",
"text",
"%" . trim($title_filter) .
"%");
135 $set = $db->query(
$query);
136 while ($rec = $db->fetchAssoc($set)) {
143 if ($keyword_filter) {
144 include_once
'./Services/MetaData/classes/class.ilMDKeyword.php';
146 foreach ($objs as $obj) {
147 if (in_array($obj[
'obj_id'],
$res)) {
151 return (array) $filtered;
161 string $title_filter =
"",
162 string $format_filter =
"",
163 string $keyword_filter =
"",
164 string $caption_filter =
"" 182 return \ilArrayUtil::sortArray(array_merge(
$mobs, $snippets),
"title",
"asc");
static _searchKeywords(string $a_query, string $a_type, int $a_rbac_id=0)