diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-05-22 09:59:20 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-05-22 09:59:20 +0200 |
commit | 25ecd2bdda5e9714b8bff435f900b1a0b6579c91 (patch) | |
tree | 6f9d41ec303de2efe98f898f3f6ecb47997d49b9 /lib | |
parent | 69717487f943f3c4b84465e7f18fd6bbd619ce66 (diff) | |
parent | d621a6fe5e571f3a273d0db301e3d5e14ed10763 (diff) | |
download | nextcloud-server-25ecd2bdda5e9714b8bff435f900b1a0b6579c91.tar.gz nextcloud-server-25ecd2bdda5e9714b8bff435f900b1a0b6579c91.zip |
Merge pull request #8659 from owncloud/get-preference-multiple-user
Add a method to get the values for multiple users to OC\Preferences
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/preferences.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/private/preferences.php b/lib/private/preferences.php index e6d9f28b1d6..a4bfc650d08 100644 --- a/lib/private/preferences.php +++ b/lib/private/preferences.php @@ -206,6 +206,43 @@ class Preferences { } /** + * Gets the preference for an array of users + * @param string $app + * @param string $key + * @param array $users + * @return array Mapped values: userid => value + */ + public function getValueForUsers($app, $key, $users) { + if (empty($users) || !is_array($users)) { + return array(); + } + + $chunked_users = array_chunk($users, 50, true); + $placeholders_50 = implode(',', array_fill(0, 50, '?')); + + $userValues = array(); + foreach ($chunked_users as $chunk) { + $queryParams = $chunk; + array_unshift($queryParams, $key); + array_unshift($queryParams, $app); + + $placeholders = (sizeof($chunk) == 50) ? $placeholders_50 : implode(',', array_fill(0, sizeof($chunk), '?')); + + $query = 'SELECT `userid`, `configvalue` ' + . ' FROM `*PREFIX*preferences` ' + . ' WHERE `appid` = ? AND `configkey` = ?' + . ' AND `userid` IN (' . $placeholders . ')'; + $result = $this->conn->executeQuery($query, $queryParams); + + while ($row = $result->fetch()) { + $userValues[$row['userid']] = $row['configvalue']; + } + } + + return $userValues; + } + + /** * Deletes a key * @param string $user user * @param string $app app |