* LDAP with multiple servers also proved backendNametags/v8.0.0alpha1
@@ -27,7 +27,7 @@ namespace OCA\user_ldap; | |||
use OCA\user_ldap\lib\BackendUtility; | |||
class USER_LDAP extends BackendUtility implements \OCP\UserInterface { | |||
class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserInterface { | |||
/** | |||
* checks whether the user is allowed to change his avatar in ownCloud | |||
* @param string $uid the ownCloud user name | |||
@@ -299,4 +299,13 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { | |||
$this->access->connection->writeToCache($cacheKey, $entries); | |||
return $entries; | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(){ | |||
return 'LDAP'; | |||
} | |||
} |
@@ -25,7 +25,7 @@ namespace OCA\user_ldap; | |||
use OCA\user_ldap\lib\ILDAPWrapper; | |||
class User_Proxy extends lib\Proxy implements \OCP\UserInterface { | |||
class User_Proxy extends lib\Proxy implements \OCP\IUserBackend, \OCP\UserInterface { | |||
private $backends = array(); | |||
private $refBackend = null; | |||
@@ -117,6 +117,14 @@ class User_Proxy extends lib\Proxy implements \OCP\UserInterface { | |||
return $this->refBackend->implementsActions($actions); | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName() { | |||
return $this->refBackend->getBackendName(); | |||
} | |||
/** | |||
* Get a list of all users | |||
* @return string[] with all uids |
@@ -21,7 +21,7 @@ | |||
* | |||
*/ | |||
class OC_USER_WEBDAVAUTH extends OC_User_Backend { | |||
class OC_USER_WEBDAVAUTH extends OC_User_Backend implements \OCP\IUserBackend { | |||
protected $webdavauth_url; | |||
public function __construct() { | |||
@@ -86,4 +86,12 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend { | |||
return $returnArray; | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(){ | |||
return 'WebDAV'; | |||
} | |||
} |
@@ -36,7 +36,7 @@ | |||
/** | |||
* Class for user management in a SQL Database (e.g. MySQL, SQLite) | |||
*/ | |||
class OC_User_Database extends OC_User_Backend { | |||
class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend { | |||
private $cache = array(); | |||
/** | |||
@@ -260,4 +260,12 @@ class OC_User_Database extends OC_User_Backend { | |||
return $result->fetchOne(); | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(){ | |||
return 'Database'; | |||
} | |||
} |
@@ -24,7 +24,7 @@ | |||
/** | |||
* dummy user backend, does not keep state, only for testing use | |||
*/ | |||
class OC_User_Dummy extends OC_User_Backend { | |||
class OC_User_Dummy extends OC_User_Backend implements \OCP\IUserBackend { | |||
private $users = array(); | |||
private $displayNames = array(); | |||
@@ -156,4 +156,12 @@ class OC_User_Dummy extends OC_User_Backend { | |||
public function getDisplayName($uid) { | |||
return isset($this->displayNames[$uid])? $this->displayNames[$uid]: $uid; | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(){ | |||
return 'Dummy'; | |||
} | |||
} |
@@ -24,7 +24,7 @@ | |||
/** | |||
* user backend using http auth requests | |||
*/ | |||
class OC_User_HTTP extends OC_User_Backend { | |||
class OC_User_HTTP extends OC_User_Backend implements \OCP\IUserBackend { | |||
/** | |||
* split http://user@host/path into a user and url part | |||
* @param string $url | |||
@@ -109,4 +109,12 @@ class OC_User_HTTP extends OC_User_Backend { | |||
return false; | |||
} | |||
} | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(){ | |||
return 'HTTP'; | |||
} | |||
} |
@@ -279,10 +279,15 @@ class Manager extends PublicEmitter implements IUserManager { | |||
if ($backend->implementsActions(\OC_User_Backend::COUNT_USERS)) { | |||
$backendusers = $backend->countUsers(); | |||
if($backendusers !== false) { | |||
if(isset($userCountStatistics[get_class($backend)])) { | |||
$userCountStatistics[get_class($backend)] += $backendusers; | |||
if($backend instanceof \OCP\IUserBackend) { | |||
$name = $backend->getBackendName(); | |||
} else { | |||
$userCountStatistics[get_class($backend)] = $backendusers; | |||
$name = get_class($backend); | |||
} | |||
if(isset($userCountStatistics[$name])) { | |||
$userCountStatistics[$name] += $backendusers; | |||
} else { | |||
$userCountStatistics[$name] = $backendusers; | |||
} | |||
} | |||
} |
@@ -225,6 +225,9 @@ class User implements IUser { | |||
* @return string | |||
*/ | |||
public function getBackendClassName() { | |||
if($this->backend instanceof \OCP\IUserBackend) { | |||
return $this->backend->getBackendName(); | |||
} | |||
return get_class($this->backend); | |||
} | |||
@@ -0,0 +1,27 @@ | |||
<?php | |||
/** | |||
* Copyright (c) 2014 Morris Jobke <hey@morrisjobke.de> | |||
* This file is licensed under the Affero General Public License version 3 or | |||
* later. | |||
* See the COPYING-README file. | |||
*/ | |||
/** | |||
* Public interface of ownCloud for apps to use. | |||
* User Interface version 2 | |||
* | |||
*/ | |||
// use OCP namespace for all classes that are considered public. | |||
// This means that they should be used by apps instead of the internal ownCloud classes | |||
namespace OCP; | |||
interface IUserBackend { | |||
/** | |||
* Backend name to be shown in user management | |||
* @return string the name of the backend to be shown | |||
*/ | |||
public function getBackendName(); | |||
} |
@@ -380,6 +380,10 @@ class Manager extends \Test\TestCase { | |||
->with(\OC_USER_BACKEND_COUNT_USERS) | |||
->will($this->returnValue(true)); | |||
$backend->expects($this->once()) | |||
->method('getBackendName') | |||
->will($this->returnValue('Mock_OC_User_Dummy')); | |||
$manager = new \OC\User\Manager(); | |||
$manager->registerBackend($backend); | |||
@@ -404,6 +408,9 @@ class Manager extends \Test\TestCase { | |||
->method('implementsActions') | |||
->with(\OC_USER_BACKEND_COUNT_USERS) | |||
->will($this->returnValue(true)); | |||
$backend1->expects($this->once()) | |||
->method('getBackendName') | |||
->will($this->returnValue('Mock_OC_User_Dummy')); | |||
$backend2 = $this->getMock('\OC_User_Dummy'); | |||
$backend2->expects($this->once()) | |||
@@ -414,6 +421,9 @@ class Manager extends \Test\TestCase { | |||
->method('implementsActions') | |||
->with(\OC_USER_BACKEND_COUNT_USERS) | |||
->will($this->returnValue(true)); | |||
$backend2->expects($this->once()) | |||
->method('getBackendName') | |||
->will($this->returnValue('Mock_OC_User_Dummy')); | |||
$manager = new \OC\User\Manager(); | |||
$manager->registerBackend($backend1); |
@@ -217,9 +217,9 @@ class User extends \Test\TestCase { | |||
public function testGetBackendClassName() { | |||
$user = new \OC\User\User('foo', new \OC_User_Dummy()); | |||
$this->assertEquals('OC_User_Dummy', $user->getBackendClassName()); | |||
$this->assertEquals('Dummy', $user->getBackendClassName()); | |||
$user = new \OC\User\User('foo', new \OC_User_Database()); | |||
$this->assertEquals('OC_User_Database', $user->getBackendClassName()); | |||
$this->assertEquals('Database', $user->getBackendClassName()); | |||
} | |||
public function testGetHomeNotSupported() { |