19 declare(strict_types=1);
43 $ilDB = $DIC->database();
46 $lang_var_to_type_dict = [];
48 foreach ($vars as $type => $var) {
50 'module = %s AND identifier = %s',
51 $ilDB->quote($var->getLanguageModule()),
52 $ilDB->quote($var->getName())
55 $lang_var_to_type_dict[$var->getName()] = $type;
62 $query =
'SELECT identifier, lang_key, value FROM lng_data WHERE (' . implode(
') OR (', $where) .
')';
67 if (!isset(
$results[$row[
'identifier']])) {
69 $results[$row[
'identifier']]->lang_untouched = [];
70 $results[$row[
'identifier']]->params = [];
72 $results[$row[
'identifier']]->lang_untouched[$row[
'lang_key']] = $row[
'value'];
75 return self::fillPlaceholders(
$results, $vars, $lang_var_to_type_dict);
86 $pattern_old =
'/##(.+?)##/im';
87 $pattern =
'/\[(.+?)\]/im';
89 foreach ($results as $lang_var =>
$res) {
90 $placeholders_stack = [];
93 foreach (
$res->lang_untouched as $iso2_short_handle => $translation) {
94 $translation = str_replace(
"\\n",
"\n", (
string) $translation);
95 $placeholders_stack[] = self::findPlaceholders($pattern, $translation);
96 $translation = self::replaceFields(
98 $placeholders_stack[count($placeholders_stack) - 1],
99 $vars[$lang_var_to_type_dict[$lang_var]]->getParameters(),
103 $placeholders_stack[] = self::findPlaceholders($pattern_old, $translation);
104 $res->lang[$iso2_short_handle] = self::replaceFields(
106 $placeholders_stack[count($placeholders_stack) - 1],
107 $vars[$lang_var_to_type_dict[$lang_var]]->getParameters(),
113 $res->params = array_diff(
115 array_merge(...$placeholders_stack)
117 array_keys($vars[$lang_var_to_type_dict[$lang_var]]->getParameters())
129 $foundPlaceholders = [];
130 preg_match_all($pattern, $translation, $foundPlaceholders);
132 return (array) $foundPlaceholders[1];
141 array $foundPlaceholders,
147 foreach ($foundPlaceholders as $placeholder) {
148 if (array_key_exists(strtoupper($placeholder), $params)) {
149 $result = str_ireplace($startTag . $placeholder . $endTage, $params[strtoupper($placeholder)], $result);
151 if (array_key_exists(strtolower($placeholder), $params)) {
152 $result = str_ireplace($startTag . $placeholder . $endTage, $params[strtolower($placeholder)], $result);
165 $ilDB = $DIC->database();
167 if ($userid !== -1) {
168 $channels = self::getAvailableChannels([
'set_by_user']);
169 $types = self::getAvailableTypes([
'set_by_user']);
184 $ilDB->manipulateF($query, $types, $values);
186 foreach ($configArray as $type => $channels) {
187 foreach ($channels as $channel => $value) {
210 $ilDB = $DIC->database();
216 $res =
$ilDB->queryF($query, $types, $values);
221 if (!isset($result[$row[
'module']])) {
222 $result[$row[
'module']] = [];
225 $result[$row[
'module']][] = $row[
'channel'];
242 $ilDB = $DIC->database();
244 $notification_id = self::storeNotification($notification);
247 foreach ($usr_ids as $userid) {
264 $ilDB = $DIC->database();
266 $notification_id = self::storeNotification($notification);
288 $ilDB->manipulateF($query, $types, $values);
295 $ilDB = $DIC->database();
314 $ilDB = $DIC->database();
320 $ilDB->manipulateF($query, $types, $values);
330 $ilDB = $DIC->database();
334 $values = [$module, $sender_id];
338 $rset =
$ilDB->queryF($query, $types, $values);
339 while ($row =
$ilDB->fetchAssoc($rset)) {
340 $users[] = (
int) $row[
'usr_id'];
350 $ilDB = $DIC->database();
354 $values = [$module, $sender_id];
356 $ilDB->manipulateF($query, $types, $values);
362 public static function enableListeners(
string $module,
int $sender_id, array $users = []): void
366 $ilDB = $DIC->database();
375 $values = [$module, $sender_id];
377 $ilDB->manipulateF($query, $types, $values);
407 string $notification_group,
430 $ilDB = $DIC->database();
437 $rset =
$ilDB->query($query);
441 $settings =
new ilSetting(
'notifications');
443 while ($row =
$ilDB->fetchAssoc($rset)) {
444 if (!$include_disabled && !$settings->get(
'enable_' . $row[
'channel_name'])) {
448 $result[$row[
'channel_name']] = [
449 'name' => $row[
'channel_name'],
450 'title' => $row[
'title'],
451 'description' => $row[
'description'],
452 'handler' => $row[
'class'],
453 'include' => $row[
'include'],
454 'config_type' => $row[
'config_type'],
469 $ilDB = $DIC->database();
476 $rset =
$ilDB->query($query);
480 while ($row =
$ilDB->fetchAssoc($rset)) {
481 $result[$row[
'type_name']] = [
482 'name' => $row[
'type_name'],
483 'title' => $row[
'title'],
484 'description' => $row[
'description'],
485 'group' => $row[
'notification_group'],
486 'config_type' => $row[
'config_type'],
497 $ilDB = $DIC->database();
501 $values = [$config_name, $type_name];
502 $ilDB->manipulateF($query, $types, $values);
509 $ilDB = $DIC->database();
513 $values = [$config_name, $channel_name];
514 $ilDB->manipulateF($query, $types, $values);
525 $ilDB = $DIC->database();
527 $query =
'SELECT usr_id, value FROM usr_pref WHERE ' .
$ilDB->in(
532 ) .
' AND keyword = ' .
$ilDB->quote(
533 'use_custom_notification_setting',
535 ) .
' AND value = ' .
$ilDB->quote(
539 $rset =
$ilDB->query($query);
541 while ($row =
$ilDB->fetchAssoc($rset)) {
542 $result[(
int) $row[
'usr_id']] = (
bool) $row[
'value'];
545 $missing_usr_ids = array_diff(
550 $result = $result + array_combine(
552 array_fill(0, count($missing_usr_ids),
false)
insert(string $table_name, array $values)
static findPlaceholders(string $pattern, string $translation)
static string $tbl_userconfig
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
static enqueueByListener(ilNotificationConfig $notification, int $ref_id)
static setUserConfig(int $userid, array $configArray)
static string $tbl_notification_data
static string $tbl_userlistener
static getUsersByListener(string $module, int $sender_id)
static getAvailableChannels(array $config_types=[], bool $include_disabled=false)
static removeNotification(int $id)
static registerType(ilDBInterface $db, string $name, string $title, string $description, string $notification_group, string $config_type)
static replaceFields(string $string, array $foundPlaceholders, array $params, string $startTag, string $endTage)
static disableListeners(string $module, int $sender_id)
static getAvailableTypes(array $config_types=[])
static registerChannel(ilDBInterface $db, string $name, string $title, string $description, string $class, string $classfile, string $config_type)
static getTranslatedLanguageVariablesOfNotificationParameters(array $vars=[])
static fillPlaceholders(array $results, array $vars, array $lang_var_to_type_dict)
static enableListeners(string $module, int $sender_id, array $users=[])
static loadUserConfig(int $userid)
static string $tbl_notification_channels
static enqueueByUsers(ilNotificationConfig $notification, array $usr_ids)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
static string $tbl_notification_types
static setConfigTypeForType(string $type_name, string $config_name)
static setConfigTypeForChannel(string $channel_name, string $config_name)
static storeNotification(ilNotificationConfig $notification)
static string $tbl_notification_queue
static getUsersWithCustomConfig(array $usr_ids)