Blame view
sources/apps/user_external/lib/base.php
4.17 KB
|
6d9380f96
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
<?php
/**
* Copyright (c) 2014 Christian Weiske <cweiske@cweiske.de>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OCA\user_external;
use \OC_DB;
/**
* Base class for external auth implementations that stores users
* on their first login in a local table.
* This is required for making many of the user-related ownCloud functions
* work, including sharing files with them.
*
* @category Apps
* @package UserExternal
* @author Christian Weiske <cweiske@cweiske.de>
* @license http://www.gnu.org/licenses/agpl AGPL
* @link http://github.com/owncloud/apps
*/
abstract class Base extends \OC_User_Backend{
protected $backend = '';
/**
* Create new instance, set backend name
*
* @param string $backend Identifier of the backend
*/
public function __construct($backend) {
$this->backend = $backend;
}
/**
* Delete a user
*
* @param string $uid The username of the user to delete
*
* @return bool
*/
public function deleteUser($uid) {
OC_DB::executeAudited(
'DELETE FROM `*PREFIX*users_external` WHERE `uid` = ? AND `backend` = ?',
array($uid, $this->backend)
);
return true;
}
/**
* Get display name of the user
*
* @param string $uid user ID of the user
*
* @return string display name
*/
public function getDisplayName($uid) {
$user = OC_DB::executeAudited(
'SELECT `displayname` FROM `*PREFIX*users_external`'
. ' WHERE `uid` = ? AND `backend` = ?',
array($uid, $this->backend)
)->fetchRow();
$displayName = trim($user['displayname'], ' ');
if (!empty($displayName)) {
return $displayName;
} else {
return $uid;
}
}
/**
* Get a list of all display names and user ids.
*
* @return array with all displayNames (value) and the corresponding uids (key)
*/
public function getDisplayNames($search = '', $limit = null, $offset = null) {
$result = OC_DB::executeAudited(
array(
'sql' => 'SELECT `uid`, `displayname` FROM `*PREFIX*users_external`'
. ' WHERE (LOWER(`displayname`) LIKE LOWER(?) '
. ' OR LOWER(`uid`) LIKE LOWER(?)) AND `backend` = ?',
'limit' => $limit,
'offset' => $offset
),
array($search . '%', $search . '%', $this->backend)
);
$displayNames = array();
while ($row = $result->fetchRow()) {
$displayNames[$row['uid']] = $row['displayname'];
}
return $displayNames;
}
/**
* Get a list of all users
*
* @return array with all uids
*/
public function getUsers($search = '', $limit = null, $offset = null) {
$result = OC_DB::executeAudited(
array(
'sql' => 'SELECT `uid` FROM `*PREFIX*users_external`'
. ' WHERE LOWER(`uid`) LIKE LOWER(?) AND `backend` = ?',
'limit' => $limit,
'offset' => $offset
),
array($search . '%', $this->backend)
);
$users = array();
while ($row = $result->fetchRow()) {
$users[] = $row['uid'];
}
return $users;
}
/**
* Determines if the backend can enlist users
*
* @return bool
*/
public function hasUserListings() {
return true;
}
/**
* Change the display name of a user
*
* @param string $uid The username
* @param string $displayName The new display name
*
* @return true/false
*/
public function setDisplayName($uid, $displayName) {
if (!$this->userExists($uid)) {
return false;
}
OC_DB::executeAudited(
'UPDATE `*PREFIX*users_external` SET `displayname` = ?'
. ' WHERE LOWER(`uid`) = ? AND `backend` = ?',
array($displayName, $uid, $this->backend)
);
return true;
}
/**
* Create user record in database
*
* @param string $uid The username
*
* @return void
*/
protected function storeUser($uid)
{
if (!$this->userExists($uid)) {
OC_DB::executeAudited(
'INSERT INTO `*PREFIX*users_external` ( `uid`, `backend` )'
. ' VALUES( ?, ? )',
array($uid, $this->backend)
);
}
}
/**
* Check if a user exists
*
* @param string $uid the username
*
* @return boolean
*/
public function userExists($uid) {
$result = OC_DB::executeAudited(
'SELECT COUNT(*) FROM `*PREFIX*users_external`'
. ' WHERE LOWER(`uid`) = LOWER(?) AND `backend` = ?',
array($uid, $this->backend)
);
return $result->fetchOne() > 0;
}
}
|