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)