Browse Source

introduce new virtual method hasUserListings() to determine if a user backend can list it's users.

tags/v5.0.0beta1
Thomas Mueller 11 years ago
parent
commit
5731a1b01c

+ 6
- 0
apps/user_ldap/user_ldap.php View File

@@ -261,4 +261,10 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
return (bool)((OC_USER_BACKEND_CHECK_PASSWORD | OC_USER_BACKEND_GET_HOME) & $actions);
}

/**
* @return bool
*/
public function hasUserListings() {
return true;
}
}

+ 8
- 0
apps/user_ldap/user_proxy.php View File

@@ -183,4 +183,12 @@ class User_Proxy extends lib\Proxy implements \OCP\UserInterface {
public function deleteUser($uid) {
return false;
}

/**
* @return bool
*/
public function hasUserListings() {
return true;
}

}

+ 6
- 0
apps/user_webdavauth/user_webdavauth.php View File

@@ -65,6 +65,12 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend {
return true;
}

/**
* @return bool
*/
public function hasUserListings() {
return false;
}

/*
* we don´t know the users so all we can do it return an empty array here

+ 1
- 1
lib/user.php View File

@@ -555,7 +555,7 @@ class OC_User {

public static function userExistsForCreation($uid) {
foreach(self::$_usedBackends as $backend) {
if(!$backend->implementsActions(OC_USER_BACKEND_CREATE_USER))
if(!$backend->hasUserListings())
continue;

$result=$backend->userExists($uid);

+ 16
- 8
lib/user/backend.php View File

@@ -134,18 +134,26 @@ abstract class OC_User_Backend implements OC_User_Interface {
return $uid;
}
/**
* @brief Get a list of all display names
* @returns array with all displayNames (value) and the correspondig uids (key)
*
* Get a list of all display names and user ids.
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
/**
* @brief Get a list of all display names
* @returns array with all displayNames (value) and the corresponding uids (key)
*
* Get a list of all display names and user ids.
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
$displayNames = array();
$users = $this->getUsers($search, $limit, $offset);
foreach ( $users as $user) {
$displayNames[$user] = $user;
}
return $displayNames;
return $displayNames;
}

/**
* @brief Check if a user list is available or not
* @return boolean if users can be listed or not
*/
public function hasUserListings() {
return false;
}
}

+ 45
- 37
lib/user/database.php View File

@@ -111,30 +111,30 @@ class OC_User_Database extends OC_User_Backend {
}
}
/**
* @brief Set display name
* @param $uid The username
* @param $displayName The new display name
* @returns true/false
*
* Change the display name of a user
/**
* @brief Set display name
* @param $uid The username
* @param $displayName The new display name
* @returns true/false
*
* Change the display name of a user
*/
public function setDisplayName( $uid, $displayName ) {
if( $this->userExists($uid) ) {
$query = OC_DB::prepare( 'UPDATE `*PREFIX*users` SET `displayname` = ? WHERE `uid` = ?' );
$query->execute( array( $displayName, $uid ));
return true;
}else{
return false;
}
if( $this->userExists($uid) ) {
$query = OC_DB::prepare( 'UPDATE `*PREFIX*users` SET `displayname` = ? WHERE `uid` = ?' );
$query->execute( array( $displayName, $uid ));
return true;
}else{
return false;
}
}

/**
* @brief get display name of the user
* @param $uid user ID of the user
* @return display name
*/
public function getDisplayName($uid) {
/**
* @brief get display name of the user
* @param $uid user ID of the user
* @return display name
*/
public function getDisplayName($uid) {
if( $this->userExists($uid) ) {
$query = OC_DB::prepare( 'SELECT displayname FROM `*PREFIX*users` WHERE `uid` = ?' );
$result = $query->execute( array( $uid ))->fetchAll();
@@ -144,36 +144,36 @@ class OC_User_Database extends OC_User_Backend {
} else {
return $uid;
}
}
}
}
/**
* @brief Get a list of all display names
* @returns array with all displayNames (value) and the correspondig uids (key)
*
* Get a list of all display names and user ids.
*/
/**
* @brief Get a list of all display names
* @returns array with all displayNames (value) and the correspondig uids (key)
*
* Get a list of all display names and user ids.
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
$displayNames = array();
$query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`displayname`) LIKE LOWER(?)', $limit, $offset);
$query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`displayname`) LIKE LOWER(?)', $limit, $offset);
$result = $query->execute(array($search.'%'));
$users = array();
while ($row = $result->fetchRow()) {
$displayNames[$row['uid']] = $row['displayname'];
$users = array();
while ($row = $result->fetchRow()) {
$displayNames[$row['uid']] = $row['displayname'];
}
// let's see if we can also find some users who don't have a display name yet
$query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`uid`) LIKE LOWER(?)', $limit, $offset);
$query = OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users` WHERE LOWER(`uid`) LIKE LOWER(?)', $limit, $offset);
$result = $query->execute(array($search.'%'));
while ($row = $result->fetchRow()) {
while ($row = $result->fetchRow()) {
$displayName = trim($row['displayname'], ' ');
if ( empty($displayName) ) {
if ( empty($displayName) ) {
$displayNames[$row['uid']] = $row['uid'];
}
}
}
return $displayNames;
return $displayNames;
}
/**
@@ -256,4 +256,12 @@ class OC_User_Database extends OC_User_Backend {
return false;
}
}

/**
* @return bool
*/
public function hasUserListings() {
return true;
}

}

+ 7
- 0
lib/user/dummy.php View File

@@ -112,4 +112,11 @@ class OC_User_Dummy extends OC_User_Backend {
public function userExists($uid) {
return isset($this->users[$uid]);
}

/**
* @return bool
*/
public function hasUserListings() {
return true;
}
}

+ 6
- 1
lib/user/interface.php View File

@@ -66,10 +66,15 @@ interface OC_User_Interface {

/**
* @brief Get a list of all display names
* @returns array with all displayNames (value) and the correspondig uids (key)
* @returns array with all displayNames (value) and the corresponding uids (key)
*
* Get a list of all display names and user ids.
*/
public function getDisplayNames($search = '', $limit = null, $offset = null);

/**
* @brief Check if a user list is available or not
* @return boolean if users can be listed or not
*/
public function hasUserListings();
}

Loading…
Cancel
Save