]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add a method to get the values for multiple users to OC\Preferences
authorJoas Schilling <nickvergessen@gmx.de>
Wed, 21 May 2014 09:11:47 +0000 (11:11 +0200)
committerJoas Schilling <nickvergessen@gmx.de>
Wed, 21 May 2014 09:14:52 +0000 (11:14 +0200)
lib/private/preferences.php

index e6d9f28b1d6fedcbc046fca5ed09a3e14cd2953d..c0000804aa59eb4742ca074b07b33cd3b0045552 100644 (file)
@@ -205,6 +205,41 @@ 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($users), '?'));
+
+                       $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