ILIAS  trunk Revision v12.0_alpha-33-ge186251a14d
ILIAS\User\Settings\DatabaseDataRepository Class Reference
+ Inheritance diagram for ILIAS\User\Settings\DatabaseDataRepository:
+ Collaboration diagram for ILIAS\User\Settings\DatabaseDataRepository:

Public Member Functions

 __construct (private readonly \ilDBInterface $db)
 
 getFor (int $user_id)
 
 deleteFor (int $user_id)
 
 deleteSingleFor (int $user_id, string $key)
 
 storeFor (int $user_id, array $settings_array)
 
 storeSingleFor (int $user_id, string $key, string $value)
 
 getSearchSelectConditionalOnVisibility (string $profile_data_table_name, string $login_data_column_name, string $firstname_data_column_name, string $lastname_data_column_name, string $primary_email_data_column_name, string $secondary_email_data_column_name)
 
 getFor (int $user_id)
 
 deleteFor (int $user_id)
 
 deleteSingleFor (int $user_id, string $key)
 
 storeFor (int $user_id, array $settings_array)
 
 storeSingleFor (int $user_id, string $key, string $value)
 
 getSearchSelectConditionalOnVisibility (string $profile_data_table_name, string $login_data_column_name, string $firstname_data_column_name, string $lastname_data_column_name, string $primary_email_data_column_name, string $secondary_email_data_column_name)
 

Private Member Functions

 buildConditionalSearchFieldString (string $login_data_column_name, string $firstname_data_column_name, string $lastname_data_column_name, string $primary_email_data_column_name, string $secondary_email_data_column_name)
 
 buildConditionalSearchJoinString (string $profile_data_table_name)
 

Private Attributes

const string TABLE_NAME = 'usr_pref'
 

Detailed Description

Definition at line 23 of file DatabaseDataRepository.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\User\Settings\DatabaseDataRepository::__construct ( private readonly \ilDBInterface  $db)

Definition at line 26 of file DatabaseDataRepository.php.

28 {
29 }

Member Function Documentation

◆ buildConditionalSearchFieldString()

ILIAS\User\Settings\DatabaseDataRepository::buildConditionalSearchFieldString ( string  $login_data_column_name,
string  $firstname_data_column_name,
string  $lastname_data_column_name,
string  $primary_email_data_column_name,
string  $secondary_email_data_column_name 
)
private

Definition at line 116 of file DatabaseDataRepository.php.

122 : string {
123 return implode(
124 ', ',
125 [
126 $login_data_column_name,
127 sprintf(
128 "(CASE WHEN ({$firstname_data_column_name} IS NOT NULL" . PHP_EOL
129 . 'AND (profilevisibility.value = %s OR profilevisibility.value = %s))' . PHP_EOL
130 . "THEN {$firstname_data_column_name} ELSE '' END) {$firstname_data_column_name}",
131 $this->db->quote('y', \ilDBConstants::T_TEXT),
132 $this->db->quote('g', \ilDBConstants::T_TEXT)
133 ),
134 sprintf(
135 "(CASE WHEN ({$lastname_data_column_name} IS NOT NULL" . PHP_EOL
136 . 'AND (profilevisibility.value = %s OR profilevisibility.value = %s))' . PHP_EOL
137 . "THEN {$lastname_data_column_name} ELSE '' END) {$lastname_data_column_name}",
138 $this->db->quote('y', \ilDBConstants::T_TEXT),
139 $this->db->quote('g', \ilDBConstants::T_TEXT)
140 ),
141 sprintf(
142 "(CASE WHEN ({$primary_email_data_column_name} IS NOT NULL" . PHP_EOL
143 . 'AND (profilevisibility.value = %s OR profilevisibility.value = %s)' . PHP_EOL
144 . 'AND primaryemailvisibility.value = %s)' . PHP_EOL
145 . "THEN {$primary_email_data_column_name} ELSE '' END) {$primary_email_data_column_name}",
146 $this->db->quote('y', \ilDBConstants::T_TEXT),
147 $this->db->quote('g', \ilDBConstants::T_TEXT),
148 $this->db->quote('y', \ilDBConstants::T_TEXT)
149 ),
150 sprintf(
151 "(CASE WHEN ({$secondary_email_data_column_name} IS NOT NULL" . PHP_EOL
152 . 'AND (profilevisibility.value = %s OR profilevisibility.value = %s)' . PHP_EOL
153 . 'AND secondaryemailvisibility.value = %s)' . PHP_EOL
154 . "THEN {$secondary_email_data_column_name} ELSE '' END) {$secondary_email_data_column_name}",
155 $this->db->quote('y', \ilDBConstants::T_TEXT),
156 $this->db->quote('g', \ilDBConstants::T_TEXT),
157 $this->db->quote('y', \ilDBConstants::T_TEXT)
158 )
159 ]
160 );
161 }

◆ buildConditionalSearchJoinString()

ILIAS\User\Settings\DatabaseDataRepository::buildConditionalSearchJoinString ( string  $profile_data_table_name)
private

Definition at line 163 of file DatabaseDataRepository.php.

165 : string {
166 return 'LEFT OUTER JOIN ' . self::TABLE_NAME . ' profilevisibility' . PHP_EOL
167 . "ON profilevisibility.usr_id = {$profile_data_table_name}.usr_id" . PHP_EOL
168 . 'AND profilevisibility.keyword = ' . $this->db->quote('public_profile', \ilDBConstants::T_TEXT) . PHP_EOL
169 . 'LEFT OUTER JOIN ' . self::TABLE_NAME . ' firstnamevisibility' . PHP_EOL
170 . "ON firstnamevisibility.usr_id = {$profile_data_table_name}.usr_id" . PHP_EOL
171 . 'AND firstnamevisibility.keyword = ' . $this->db->quote('public_firstname', \ilDBConstants::T_TEXT) . PHP_EOL
172 . 'LEFT OUTER JOIN ' . self::TABLE_NAME . ' lastnamevisibility' . PHP_EOL
173 . "ON lastnamevisibility.usr_id = {$profile_data_table_name}.usr_id" . PHP_EOL
174 . 'AND lastnamevisibility.keyword = ' . $this->db->quote('public_lastname', \ilDBConstants::T_TEXT) . PHP_EOL
175 . 'LEFT OUTER JOIN ' . self::TABLE_NAME . ' primaryemailvisibility' . PHP_EOL
176 . "ON primaryemailvisibility.usr_id = {$profile_data_table_name}.usr_id" . PHP_EOL
177 . 'AND primaryemailvisibility.keyword = ' . $this->db->quote('public_email', \ilDBConstants::T_TEXT) . PHP_EOL
178 . 'LEFT OUTER JOIN ' . self::TABLE_NAME . ' secondaryemailvisibility' . PHP_EOL
179 . "ON secondaryemailvisibility.usr_id = {$profile_data_table_name}.usr_id" . PHP_EOL
180 . 'AND secondaryemailvisibility.keyword = ' . $this->db->quote('public_second_email', \ilDBConstants::T_TEXT);
181 }

◆ deleteFor()

ILIAS\User\Settings\DatabaseDataRepository::deleteFor ( int  $user_id)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 47 of file DatabaseDataRepository.php.

47 : void
48 {
49 $this->db->manipulateF(
50 'DELETE FROM ' . self::TABLE_NAME . ' WHERE usr_id = %s',
52 [$user_id]
53 );
54 }

References $user_id, and ilDBConstants\T_INTEGER.

◆ deleteSingleFor()

ILIAS\User\Settings\DatabaseDataRepository::deleteSingleFor ( int  $user_id,
string  $key 
)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 56 of file DatabaseDataRepository.php.

56 : void
57 {
58 $this->db->manipulateF(
59 'DELETE FROM ' . self::TABLE_NAME . ' WHERE usr_id = %s AND keyword = %s',
61 [$user_id, $key]
62 );
63 }

References $user_id, ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

◆ getFor()

ILIAS\User\Settings\DatabaseDataRepository::getFor ( int  $user_id)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 31 of file DatabaseDataRepository.php.

31 : array
32 {
33 $query = $this->db->queryF(
34 'SELECT * FROM ' . self::TABLE_NAME . ' WHERE usr_id = %s',
35 ['integer'],
36 [$user_id]
37 );
38
39 $setting_values = [];
40 while ($row = $this->db->fetchObject($query)) {
41 $setting_values[$row->keyword] = $row->value;
42 }
43
44 return $setting_values;
45 }

References $user_id.

◆ getSearchSelectConditionalOnVisibility()

ILIAS\User\Settings\DatabaseDataRepository::getSearchSelectConditionalOnVisibility ( string  $profile_data_table_name,
string  $login_data_column_name,
string  $firstname_data_column_name,
string  $lastname_data_column_name,
string  $primary_email_data_column_name,
string  $secondary_email_data_column_name 
)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 98 of file DatabaseDataRepository.php.

105 : string {
106 return 'SELECT ' . $this->buildConditionalSearchFieldString(
107 $login_data_column_name,
108 $firstname_data_column_name,
109 $lastname_data_column_name,
110 $primary_email_data_column_name,
111 $secondary_email_data_column_name
112 ) . " FROM {$profile_data_table_name}" . PHP_EOL
113 . $this->buildConditionalSearchJoinString($profile_data_table_name);
114 }
buildConditionalSearchJoinString(string $profile_data_table_name)
buildConditionalSearchFieldString(string $login_data_column_name, string $firstname_data_column_name, string $lastname_data_column_name, string $primary_email_data_column_name, string $secondary_email_data_column_name)

◆ storeFor()

ILIAS\User\Settings\DatabaseDataRepository::storeFor ( int  $user_id,
array  $settings_array 
)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 65 of file DatabaseDataRepository.php.

65 : void
66 {
67 $query = 'INSERT INTO ' . self::TABLE_NAME . ' VALUES ' . implode(
68 ', ',
69 array_map(
70 fn(string $v) => '('
71 . $this->db->quote($user_id, \ilDBConstants::T_INTEGER) . ', '
72 . $this->db->quote($v, \ilDBConstants::T_TEXT) . ', '
73 . $this->db->quote($settings_array[$v], \ilDBConstants::T_TEXT)
74 . ')',
75 array_keys($settings_array)
76 )
77 );
78 $this->db->manipulate($query);
79 }

References $user_id, ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

◆ storeSingleFor()

ILIAS\User\Settings\DatabaseDataRepository::storeSingleFor ( int  $user_id,
string  $key,
string  $value 
)

Implements ILIAS\User\Settings\DataRepository.

Definition at line 81 of file DatabaseDataRepository.php.

85 : void {
86 $this->db->replace(
87 self::TABLE_NAME,
88 [
89 'usr_id' => [\ilDBConstants::T_INTEGER, $user_id],
90 'keyword' => [\ilDBConstants::T_TEXT, $key],
91 ],
92 [
93 'value' => [\ilDBConstants::T_TEXT, $value]
94 ]
95 );
96 }

Field Documentation

◆ TABLE_NAME

const string ILIAS\User\Settings\DatabaseDataRepository::TABLE_NAME = 'usr_pref'
private

Definition at line 25 of file DatabaseDataRepository.php.


The documentation for this class was generated from the following file: