19 declare(strict_types=1);
46 $this->db ??= $DIC->database();
47 $this->irss ??= $DIC->resourceStorage();
50 public function createIcon(
string $a_rid,
bool $a_active,
bool $a_is_default_icon, array $a_suffixes):
Icon 52 $icon =
new CustomIcon($a_rid, $a_active, $a_is_default_icon, $a_suffixes);
53 foreach ($icon->getSuffixes() as $suffix) {
55 self::SUFFIX_TABLE_NAME,
57 self::ICON_RESOURCE_IDENTIFICATION => [
'text', $icon->getRid()],
58 self::SUFFIX => [
'text', $suffix],
63 self::ICON_TABLE_NAME,
65 self::ICON_RESOURCE_IDENTIFICATION => [
'text', $icon->getRid()],
66 self::ICON_ACTIVE => [
'integer', $icon->isActive()],
67 self::IS_DEFAULT_ICON => [
'integer', $icon->isDefaultIcon()]
80 if ($filter !== [] && ($filter[
'suffixes'] ??
null) !== null && $filter[
'suffixes'] !==
'') {
81 $suffixes = explode(
',', (
string) $filter[
'suffixes']);
82 $suffixes =
array_map(fn($suffix):
string => $this->db->quote(trim((
string) $suffix),
'text'), $suffixes);
83 $q =
"SELECT rid FROM " . self::SUFFIX_TABLE_NAME .
" WHERE suffix IN (" . implode(
',', $suffixes) .
")";
84 $rid_filter = $this->db->fetchAll($this->db->query($q));
85 $rid_filter =
array_map(fn($row) => $row[
'rid'], $rid_filter);
88 $query =
"SELECT i." . self::ICON_RESOURCE_IDENTIFICATION
89 .
", i." . self::ICON_ACTIVE
90 .
", i." . self::IS_DEFAULT_ICON
91 .
", GROUP_CONCAT(s." . self::SUFFIX .
") AS " . self::SUFFIXES
92 .
" FROM " . self::ICON_TABLE_NAME .
" AS i" 93 .
" JOIN " . self::SUFFIX_TABLE_NAME .
" AS s" 94 .
" ON " .
"i." . self::ICON_RESOURCE_IDENTIFICATION .
" = " .
"s." . self::ICON_RESOURCE_IDENTIFICATION;
97 $query .=
" WHERE true ";
98 if (($filter[
'active'] ?? null) !== null && $filter[
'active'] !==
'') {
99 $query .=
" AND i.active = " . $this->db->quote($filter[
'active'],
'integer');
103 $rid_filter =
array_map(fn($rid):
string => $this->db->quote(trim((
string) $rid),
'text'), $rid_filter);
104 $query .=
" AND i.rid IN (" . implode(
',', $rid_filter) .
")";
107 if (($filter[
'is_default_icon'] ?? null) !== null && $filter[
'is_default_icon'] !==
'') {
108 $query .=
" AND i.is_default_icon = " . $this->db->quote($filter[
'is_default_icon'],
'integer');
112 $query .=
" GROUP BY i." . self::ICON_RESOURCE_IDENTIFICATION;
114 $result = $this->db->query($query);
116 while (
$data = $this->db->fetchAssoc($result)) {
118 $rid =
$data[self::ICON_RESOURCE_IDENTIFICATION],
119 (
bool)
$data[self::ICON_ACTIVE],
120 (
bool)
$data[self::IS_DEFAULT_ICON],
123 $icons[$rid] = $icon;
136 $query =
"SELECT i." . self::ICON_RESOURCE_IDENTIFICATION
137 .
", i." . self::ICON_ACTIVE
138 .
", i." . self::IS_DEFAULT_ICON
139 .
", GROUP_CONCAT(s." . self::SUFFIX .
") AS " . self::SUFFIXES
140 .
" FROM " . self::ICON_TABLE_NAME .
" AS i" 141 .
" INNER JOIN " . self::SUFFIX_TABLE_NAME .
" AS s" 142 .
" ON " .
"i." . self::ICON_RESOURCE_IDENTIFICATION .
" = " .
"s." . self::ICON_RESOURCE_IDENTIFICATION
143 .
" GROUP BY i." . self::ICON_RESOURCE_IDENTIFICATION;
145 $result = $this->db->query($query);
147 while (
$data = $this->db->fetchAssoc($result)) {
149 $rid =
$data[self::ICON_RESOURCE_IDENTIFICATION],
150 (
bool)
$data[self::ICON_ACTIVE],
151 (
bool)
$data[self::IS_DEFAULT_ICON],
154 $icons[$rid] = $icon;
164 $query =
"SELECT i." . self::ICON_RESOURCE_IDENTIFICATION
165 .
", i." . self::ICON_ACTIVE
166 .
", i." . self::IS_DEFAULT_ICON
167 .
", GROUP_CONCAT(s." . self::SUFFIX .
") AS " . self::SUFFIXES
168 .
" FROM " . self::ICON_TABLE_NAME .
" AS i" 169 .
" INNER JOIN " . self::SUFFIX_TABLE_NAME .
" AS s" 170 .
" ON " .
"i." . self::ICON_RESOURCE_IDENTIFICATION .
" = " .
"s." . self::ICON_RESOURCE_IDENTIFICATION
171 .
" WHERE i." . self::ICON_RESOURCE_IDENTIFICATION .
" = %s" 172 .
" GROUP BY i." . self::ICON_RESOURCE_IDENTIFICATION;
174 $result = $this->db->queryF(
180 while (
$data = $this->db->fetchAssoc($result)) {
182 $rid =
$data[self::ICON_RESOURCE_IDENTIFICATION],
183 (
bool)
$data[self::ICON_ACTIVE],
184 (
bool)
$data[self::IS_DEFAULT_ICON],
200 $query =
"SELECT s." . self::ICON_RESOURCE_IDENTIFICATION .
" FROM " . self::SUFFIX_TABLE_NAME .
" AS s" 201 .
" INNER JOIN " . self::ICON_TABLE_NAME .
" AS i" 202 .
" ON s." . self::ICON_RESOURCE_IDENTIFICATION .
" = i." . self::ICON_RESOURCE_IDENTIFICATION
203 .
" WHERE s." . self::SUFFIX .
" = %s AND i." . self::ICON_ACTIVE .
" = %s";
204 $result = $this->db->queryF(
209 while (
$data = $this->db->fetchAssoc($result)) {
210 $rid =
$data[self::ICON_RESOURCE_IDENTIFICATION];
222 if ($suffix !==
"") {
225 $resource_identification = $this->irss->manage()->find($icon->getRid());
228 return $this->irss->consume()->src($resource_identification)->getSrc(
240 public function updateIcon(
string $a_rid,
bool $a_active,
bool $a_is_default_icon, array $a_suffixes):
Icon 242 $icon =
new CustomIcon($a_rid, $a_active, $a_is_default_icon, $a_suffixes);
244 $this->db->manipulateF(
245 "DELETE FROM " . self::SUFFIX_TABLE_NAME .
" WHERE " . self::ICON_RESOURCE_IDENTIFICATION .
" = %s",
249 foreach ($icon->getSuffixes() as $suffix) {
251 self::SUFFIX_TABLE_NAME,
253 self::ICON_RESOURCE_IDENTIFICATION => [
'text', $icon->getRid()],
254 self::SUFFIX => [
'text', $suffix],
259 self::ICON_TABLE_NAME,
261 self::ICON_ACTIVE => [
'integer', $icon->isActive()],
262 self::IS_DEFAULT_ICON => [
'integer', $icon->isDefaultIcon()]
264 [self::ICON_RESOURCE_IDENTIFICATION => [
'text', $icon->getRid()]]
273 $this->db->manipulateF(
274 "DELETE FROM " . self::SUFFIX_TABLE_NAME .
" WHERE " . self::ICON_RESOURCE_IDENTIFICATION .
" = %s",
278 $this->db->manipulateF(
279 "DELETE FROM " . self::ICON_TABLE_NAME .
" WHERE " . self::ICON_RESOURCE_IDENTIFICATION .
" = %s",
deleteIconByRid(string $a_rid)
getIconFilePathBySuffix(string $suffix)
createIcon(string $a_rid, bool $a_active, bool $a_is_default_icon, array $a_suffixes)
updateIcon(string $a_rid, bool $a_active, bool $a_is_default_icon, array $a_suffixes)
const ICON_RESOURCE_IDENTIFICATION
turnSuffixesStringIntoArray(string $a_suffixes)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getIconsForFilter(array $filter)
Class ResourceIdentification.
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
getIconByRid(string $a_rid)
__construct(Container $dic, ilPlugin $plugin)
__construct(private ?\ilDBInterface $db=null, private ?Services $irss=null)
getActiveIconForSuffix(string $a_suffix)