-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
IUserConfig #47658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IUserConfig #47658
Conversation
6d81b97 to
a9e2a38
Compare
e9ec009 to
cda7029
Compare
1fbb6a9 to
317202a
Compare
c78f304 to
979ecee
Compare
979ecee to
41ba78f
Compare
8edb1c1 to
e510535
Compare
f71bb7d to
e24d29a
Compare
32c209d to
b80315b
Compare
b80315b to
0c489af
Compare
0c489af to
6ae7f9f
Compare
ceb814d to
a219133
Compare
lib/private/UserPreferences.php
Outdated
| $value = $cache[$app][$key]; | ||
| try { | ||
| $this->decryptSensitiveValue($userId, $app, $key, $value); | ||
| $value = $this->convertTypedValue($value, $typedAs ?? $this->getValueType($userId, (string)$app, $key, $lazy)); |
Check failure
Code scanning / Psalm
RedundantCast
lib/private/UserPreferences.php
Outdated
| * @param string $value preference value | ||
| * @param bool $caseInsensitive non-case-sensitive search, only works if $value is a string | ||
| * | ||
| * @return list<string> |
Check failure
Code scanning / Psalm
MoreSpecificReturnType
| * @since 31.0.0 | ||
| */ | ||
| public function searchUsersByValueString(string $app, string $key, string $value, bool $caseInsensitive = false): array { | ||
| return $this->searchUsersByTypedValue($app, $key, $value, $caseInsensitive); |
Check failure
Code scanning / Psalm
LessSpecificReturnStatement
lib/private/UserPreferences.php
Outdated
| * @param string $key preference key | ||
| * @param array $values list of preference values | ||
| * | ||
| * @return list<string> |
Check failure
Code scanning / Psalm
MoreSpecificReturnType
| * @since 31.0.0 | ||
| */ | ||
| public function searchUsersByValues(string $app, string $key, array $values): array { | ||
| return $this->searchUsersByTypedValue($app, $key, $values); |
Check failure
Code scanning / Psalm
LessSpecificReturnStatement
|
So, it has been renamed to |
susnux
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🥳
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
Signed-off-by: Maxence Lange <[email protected]>
97ab26e to
5b4f190
Compare
|
Please send a follow-up and increase the version to trigger the migration. |
An exception occurred while executing a query: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'type' in 'field list' /home/richard/src/nextcloud/master/lib/private/DB/Exceptions/DbalException.php at 54 |
| * | ||
| * @throws \OCP\PreConditionNotMetException if a precondition is specified and is not met | ||
| * @throws \UnexpectedValueException when trying to store an unexpected value | ||
| * @deprecated 31.0.0 - use {@see IUserConfig} directly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://docs.nextcloud.com/server/latest/developer_manual/digging_deeper/api.html#php-unstable-api
Code from the OCP namespace must never mention anything coming from the NCU namespace. It can not require it as an argument, constant or return something from NCU.
So you can not deprecate this and neither the public interface.
| * @param mixed $default the default value to be returned if the value isn't set | ||
| * | ||
| * @return string | ||
| * @deprecated 31.0.0 - use {@see IUserConfig} directly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same for all methods
|
💥 This PR breaks talks tests. |
| string $userId, | ||
| string $app, | ||
| string $key, | ||
| string $default = '', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Breaking change, before mixed was documented and no type was casted.
At least null is used by apps and was used even in server's own method (setUserValue)
| string $key, | ||
| string $default = '', | ||
| ?bool $lazy = false, | ||
| ): string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the default value is "widen" again, the return type also needs to be
|
Please also document this |
| $userPreferences = \OCP\Server::get(IUserConfig::class); | ||
| if ($preCondition !== null) { | ||
| try { | ||
| if ($userPreferences->getValueMixed($userId, $appName, $key) !== (string)$preCondition) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is a behaviour change, previously the precondition did not fail, when the value is not set in the database.
| * SPDX-License-Identifier: AGPL-3.0-or-later | ||
| */ | ||
|
|
||
| namespace NCU\Config\Exceptions; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please create a documentation for this new Namespace and the way it should work (when is it going to become stable, when can devs use it... etc)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // removing this index from Version13000Date20170718121200 | ||
| // $table->addIndex(['appid', 'configkey'], 'preferences_app_key'); | ||
| if ($table->hasIndex('preferences_app_key')) { | ||
| $table->dropIndex('preferences_app_key'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for my dev instance running mariadb this DROP did not happen, so I now have redundant indexes:
The migration code seems correct, but something seems to prevent the DROP. @ArtificialOwl could you check the upgrade path?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #49638
The index is dropped... But next repair step run adds it again

IConfig's preferences-related method