]> source.dussan.org Git - nextcloud-server.git/commitdiff
use a consistent default value for sharing.maxAutocompleteResults
authorArthur Schiwon <blizzz@arthur-schiwon.de>
Fri, 11 Dec 2020 23:25:10 +0000 (00:25 +0100)
committerArthur Schiwon <blizzz@arthur-schiwon.de>
Tue, 15 Dec 2020 10:53:39 +0000 (11:53 +0100)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
apps/dav/lib/Connector/Sabre/Principal.php
apps/dav/lib/DAV/GroupPrincipalBackend.php
apps/files_sharing/lib/Controller/ShareesAPIController.php
apps/files_sharing/src/services/ConfigService.js
config/config.sample.php
lib/private/Contacts/ContactsMenu/Manager.php
lib/private/Template/JSConfigHelper.php
lib/public/Constants.php
tests/lib/Contacts/ContactsMenu/ManagerTest.php

index 12e1d18faa268ce5d41a7d84f3575627c6c8576c..bf03569bd5b2aa5c13807907726fe0e0fa2ff318 100644 (file)
@@ -39,6 +39,7 @@ use OCA\DAV\CalDAV\Proxy\ProxyMapper;
 use OCA\DAV\Traits\PrincipalProxyTrait;
 use OCP\App\IAppManager;
 use OCP\AppFramework\QueryException;
+use OCP\Constants;
 use OCP\IConfig;
 use OCP\IGroupManager;
 use OCP\IUser;
@@ -270,7 +271,10 @@ class Principal implements BackendInterface {
                        }
                }
 
-               $searchLimit = $this->config->getSystemValue('sharing.maxAutocompleteResults', null);
+               $searchLimit = $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT);
+               if ($searchLimit <= 0) {
+                       $searchLimit = null;
+               }
                foreach ($searchProperties as $prop => $value) {
                        switch ($prop) {
                                case '{http://sabredav.org/ns}email-address':
index 747976b6ad393474df9ba89db3bf353815c97745..8b9c5aa9488aaadbd333c209271bf2631aff7409 100644 (file)
@@ -27,6 +27,7 @@
 
 namespace OCA\DAV\DAV;
 
+use OCP\Constants;
 use OCP\IConfig;
 use OCP\IGroup;
 use OCP\IGroupManager;
@@ -212,7 +213,10 @@ class GroupPrincipalBackend implements BackendInterface {
                        $restrictGroups = $this->groupManager->getUserGroupIds($user);
                }
 
-               $searchLimit = $this->config->getSystemValue('sharing.maxAutocompleteResults', null);
+               $searchLimit = $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT);
+               if ($searchLimit <= 0) {
+                       $searchLimit = null;
+               }
                foreach ($searchProperties as $prop => $value) {
                        switch ($prop) {
                                case '{DAV:}displayname':
index a2b39b407724923a723e85725a67919867b233ce..70f016d81f246e152b0434794edcbbeeea3fd953 100644 (file)
@@ -36,6 +36,7 @@ declare(strict_types=1);
 
 namespace OCA\Files_Sharing\Controller;
 
+use OCP\Constants;
 use function array_slice;
 use function array_values;
 use Generator;
@@ -148,7 +149,7 @@ class ShareesAPIController extends OCSController {
                }
 
                // never return more than the max. number of results configured in the config.php
-               $maxResults = (int)$this->config->getSystemValue('sharing.maxAutocompleteResults', 0);
+               $maxResults = $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT);
                if ($maxResults > 0) {
                        $perPage = min($perPage, $maxResults);
                }
index a825bcb7d11e0641f239420a6168d943801c7bc0..0971bc387a3d4062595ceafbb7908c51e09b504e 100644 (file)
@@ -248,7 +248,7 @@ export default class Config {
         * @memberof Config
         */
        get maxAutocompleteResults() {
-               return parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 200
+               return parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25
        }
 
        /**
index 8adb5bf2168f8f59c36322d531f511d9f018ace5..50bf46353e4ce80fed3d7de241ff98d6e2647ef5 100644 (file)
@@ -1410,10 +1410,17 @@ $CONFIG = [
 'sharing.managerFactory' => '\OC\Share20\ProviderFactory',
 
 /**
- * Define max number of results returned by the user search for auto-completion
- * Default is unlimited (value set to 0).
+ * Define max number of results returned by the search for auto-completion of
+ * users, groups, etc. The value must not be lower than 0 (for unlimited).
+ *
+ * If more, different sources are requested (e.g. different user backends; or
+ * both users and groups), the value is applied per source and might not be
+ * truncated after collecting the results. I.e. more results can appear than
+ * configured here.
+ *
+ * Default is 25.
  */
-'sharing.maxAutocompleteResults' => 0,
+'sharing.maxAutocompleteResults' => 25,
 
 /**
  * Define the minimum length of the search string before we start auto-completion
index 8f772b8e0279d105317227412bf793f29745da9a..d08db5775e532c3342f7014558d4e15b3a79fd26 100644 (file)
@@ -27,6 +27,7 @@
 namespace OC\Contacts\ContactsMenu;
 
 use OCP\App\IAppManager;
+use OCP\Constants;
 use OCP\Contacts\ContactsMenu\IEntry;
 use OCP\IConfig;
 use OCP\IUser;
@@ -63,7 +64,7 @@ class Manager {
         * @return array
         */
        public function getEntries(IUser $user, $filter) {
-               $maxAutocompleteResults = $this->config->getSystemValueInt('sharing.maxAutocompleteResults', 25);
+               $maxAutocompleteResults = max(0, $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT));
                $minSearchStringLength = $this->config->getSystemValueInt('sharing.minSearchStringLength', 0);
                $topEntries = [];
                if (strlen($filter) >= $minSearchStringLength) {
index ebe799bf4f8a8bbf7788277adc03886fe8cae5e3..83c8d7c0e429d3f569c3be3cd485d0faee1e15ca 100644 (file)
@@ -33,6 +33,7 @@ namespace OC\Template;
 use bantu\IniGetWrapper\IniGetWrapper;
 use OC\CapabilitiesManager;
 use OCP\App\IAppManager;
+use OCP\Constants;
 use OCP\Defaults;
 use OCP\IConfig;
 use OCP\IGroupManager;
@@ -189,8 +190,8 @@ class JSConfigHelper {
                        'enable_avatars' => true, // here for legacy reasons - to not crash existing code that relies on this value
                        'lost_password_link' => $this->config->getSystemValue('lost_password_link', null),
                        'modRewriteWorking' => $this->config->getSystemValue('htaccess.IgnoreFrontController', false) === true || getenv('front_controller_active') === 'true',
-                       'sharing.maxAutocompleteResults' => (int)$this->config->getSystemValue('sharing.maxAutocompleteResults', 0),
-                       'sharing.minSearchStringLength' => (int)$this->config->getSystemValue('sharing.minSearchStringLength', 0),
+                       'sharing.maxAutocompleteResults' => max(0, $this->config->getSystemValueInt('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)),
+                       'sharing.minSearchStringLength' => $this->config->getSystemValueInt('sharing.minSearchStringLength', 0),
                        'blacklist_files_regex' => \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX,
                ];
 
index 2653031a430599b96b4e213b337a71c3ec86ce0a..6487282158246cea5282a9635bdfa1a3f373136b 100644 (file)
@@ -52,4 +52,10 @@ class Constants {
         * longer support windows as server platform.
         */
        public const FILENAME_INVALID_CHARS = "\\/";
+
+       /**
+        * @since 21.0.0 – default value for autocomplete/search results limit,
+        * cf. sharing.maxAutocompleteResults in config.sample.php.
+        */
+       public const SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT = 25;
 }
index 4cfbd9c7c908744214425b6ffd17bdaf25af4c8c..2f5acf61644feb42ed6b55aa23f4859c4dd867a5 100644 (file)
@@ -28,6 +28,7 @@ use OC\Contacts\ContactsMenu\ActionProviderStore;
 use OC\Contacts\ContactsMenu\ContactsStore;
 use OC\Contacts\ContactsMenu\Manager;
 use OCP\App\IAppManager;
+use OCP\Constants;
 use OCP\Contacts\ContactsMenu\IEntry;
 use OCP\Contacts\ContactsMenu\IProvider;
 use OCP\IConfig;
@@ -82,7 +83,7 @@ class ManagerTest extends TestCase {
 
                $this->config->expects($this->at(0))
                        ->method('getSystemValueInt')
-                       ->with('sharing.maxAutocompleteResults', 25)
+                       ->with('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)
                        ->willReturn(25);
                $this->config->expects($this->at(1))
                        ->method('getSystemValueInt')
@@ -120,7 +121,7 @@ class ManagerTest extends TestCase {
 
                $this->config->expects($this->at(0))
                        ->method('getSystemValueInt')
-                       ->with('sharing.maxAutocompleteResults', 25)
+                       ->with('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)
                        ->willReturn(3);
                $this->config->expects($this->at(1))
                        ->method('getSystemValueInt')
@@ -157,7 +158,7 @@ class ManagerTest extends TestCase {
 
                $this->config->expects($this->at(0))
                        ->method('getSystemValueInt')
-                       ->with('sharing.maxAutocompleteResults', 25)
+                       ->with('sharing.maxAutocompleteResults', Constants::SHARING_MAX_AUTOCOMPLETE_RESULTS_DEFAULT)
                        ->willReturn(3);
                $this->config->expects($this->at(1))
                        ->method('getSystemValueInt')