Skip to content
Snippets Groups Projects
Commit 1e1ced77 authored by Arthur Schiwon's avatar Arthur Schiwon
Browse files

Introduce user count action to user management

parent 0e843b9d
No related branches found
No related tags found
No related merge requests found
......@@ -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',
);
/**
......
......@@ -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();
}
}
......@@ -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;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment