]> source.dussan.org Git - nextcloud-server.git/commitdiff
Introduce user count action to user management
authorArthur Schiwon <blizzz@owncloud.com>
Tue, 7 Jan 2014 22:05:37 +0000 (23:05 +0100)
committerArthur Schiwon <blizzz@owncloud.com>
Tue, 7 Jan 2014 22:05:37 +0000 (23:05 +0100)
lib/private/user/backend.php
lib/private/user/database.php
lib/private/user/manager.php

index 02c93d13bdfc13f5120a8fb1e42d816676534b9e..6969ce4ba3419449c3f25b36636aeabfbeaa8f2e 100644 (file)
@@ -31,13 +31,14 @@ define('OC_USER_BACKEND_NOT_IMPLEMENTED',   -501);
 /**
  * actions that user backends can define
  */
-define('OC_USER_BACKEND_CREATE_USER',       0x0000001);
-define('OC_USER_BACKEND_SET_PASSWORD',      0x0000010);
-define('OC_USER_BACKEND_CHECK_PASSWORD',    0x0000100);
-define('OC_USER_BACKEND_GET_HOME',                     0x0001000);
-define('OC_USER_BACKEND_GET_DISPLAYNAME',      0x0010000);
-define('OC_USER_BACKEND_SET_DISPLAYNAME',      0x0100000);
-define('OC_USER_BACKEND_PROVIDE_AVATAR',       0x1000000);
+define('OC_USER_BACKEND_CREATE_USER',       0x00000001);
+define('OC_USER_BACKEND_SET_PASSWORD',      0x00000010);
+define('OC_USER_BACKEND_CHECK_PASSWORD',    0x00000100);
+define('OC_USER_BACKEND_GET_HOME',                     0x00001000);
+define('OC_USER_BACKEND_GET_DISPLAYNAME',      0x00010000);
+define('OC_USER_BACKEND_SET_DISPLAYNAME',      0x00100000);
+define('OC_USER_BACKEND_PROVIDE_AVATAR',       0x01000000);
+define('OC_USER_BACKEND_COUNT_USERS',          0x10000000);
 
 /**
  * Abstract base class for user management. Provides methods for querying backend
@@ -55,6 +56,7 @@ abstract class OC_User_Backend implements OC_User_Interface {
                OC_USER_BACKEND_GET_DISPLAYNAME => 'getDisplayName',
                OC_USER_BACKEND_SET_DISPLAYNAME => 'setDisplayName',
                OC_USER_BACKEND_PROVIDE_AVATAR => 'canChangeAvatar',
+               OC_USER_BACKEND_COUNT_USERS => 'countUsers',
        );
 
        /**
index c99db3b27ca715f40ea6dcd0e0e57308072c4343..1a63755b980f652e7034fe85a004a0931ad6ddee 100644 (file)
@@ -253,4 +253,19 @@ class OC_User_Database extends OC_User_Backend {
                return true;
        }
 
+       /**
+        * counts the users in the database
+        *
+        * @return int | bool
+        */
+       public function countUsers() {
+               $query = OC_DB::prepare('SELECT COUNT(*) FROM `*PREFIX*users`');
+               $result = $query->execute();
+               if (OC_DB::isError($result)) {
+                       OC_Log::write('core', OC_DB::getErrorMessage($result), OC_Log::ERROR);
+                       return false;
+               }
+               return $result->fetchOne();
+       }
+
 }
index cf83a75ba25dfd27d3be49a956deeeb928347311..101b388f1e0ad741647a32acdee943029dc7910a 100644 (file)
@@ -270,4 +270,22 @@ class Manager extends PublicEmitter {
                }
                return false;
        }
+
+       /**
+        * returns how many users per backend exist (if supported by backend)
+        *
+        * @return array with backend class as key and count number as value
+        */
+       public function countUsers() {
+               $userCountStatistics = array();
+               foreach ($this->backends as $backend) {
+                       if ($backend->implementsActions(\OC_USER_BACKEND_COUNT_USERS)) {
+                               $backendusers = $backend->countUsers();
+                               if($backendusers !== false) {
+                                       $userCountStatistics[get_class($backend)] = $backendusers;
+                               }
+                       }
+               }
+               return $userCountStatistics;
+       }
 }