]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add method to get users by their preference
authorJoas Schilling <nickvergessen@gmx.de>
Thu, 5 Jun 2014 09:49:13 +0000 (11:49 +0200)
committerJoas Schilling <nickvergessen@gmx.de>
Thu, 5 Jun 2014 09:50:43 +0000 (11:50 +0200)
lib/private/preferences.php
tests/lib/preferences.php

index a4bfc650d08b467dc7141f8b80e0d21c3b98db54..f1de95a5e110ab7f55434258ae7bdfea845fb25b 100644 (file)
@@ -242,6 +242,28 @@ class Preferences {
                return $userValues;
        }
 
+       /**
+        * Gets the users for a preference
+        * @param string $app
+        * @param string $key
+        * @param string $value
+        * @return array
+        */
+       public function getUsersForValue($app, $key, $value) {
+               $users = array();
+
+               $query = 'SELECT `userid` '
+                       . ' FROM `*PREFIX*preferences` '
+                       . ' WHERE `appid` = ? AND `configkey` = ? AND `configvalue` = ?';
+               $result = $this->conn->executeQuery($query, array($app, $key, $value));
+
+               while ($row = $result->fetch()) {
+                       $users[] = $row['userid'];
+               }
+
+               return $users;
+       }
+
        /**
         * Deletes a key
         * @param string $user user
index 499be914fb7380b1cbd7989575b6b9922f9852b8..a4259a8f349d5e3eb58b2aa0fb59611355382446 100644 (file)
@@ -221,6 +221,22 @@ class Test_Preferences_Object extends PHPUnit_Framework_TestCase {
                $this->assertEquals('someothervalue', $values['AnotherUser']);
        }
 
+       public function testGetValueUsers()
+       {
+               // Prepare data
+               $query = \OC_DB::prepare('INSERT INTO `*PREFIX*preferences` VALUES(?, ?, ?, ?)');
+               $query->execute(array('SomeUser', 'testGetUsersForValue', 'somekey', 'somevalue'));
+               $query->execute(array('AnotherUser', 'testGetUsersForValue', 'somekey', 'someothervalue'));
+               $query->execute(array('AUser', 'testGetUsersForValue', 'somekey', 'somevalue'));
+
+               $preferences = new OC\Preferences(\OC_DB::getConnection());
+               $this->assertEquals(array('SomeUser', 'AUser'), $preferences->getUsersForValue('testGetUsersForValue', 'somekey', 'somevalue'));
+
+               // Clean DB after the test
+               $query = \OC_DB::prepare('DELETE FROM `*PREFIX*preferences` WHERE `appid` = ?');
+               $query->execute(array('testGetUsersForValue'));
+       }
+
        public function testDeleteKey()
        {
                $connectionMock = $this->getMock('\OC\DB\Connection', array(), array(), '', false);