user.inc
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· INC 代码 · 共 532 行 · 第 1/2 页
INC
532 行
if ($update)
{
$state = $oJSON->encode($dashlets);
$this->setDashboardState($state);
}
}
function &get($iId) {
return KTEntityUtil::get('User', $iId);
}
/**
* update the datastore, without overwriting the password.
*
* only works for a subset of the db values.
*/
function doLimitedUpdate() {
$sQuery = 'UPDATE ' . $this->_table() . ' SET ';
$aParams = array();
$blacklist = array(
"sPassword" => 1,
);
$aParts = array(); // quick workaround to make the join less hurtful.
foreach ($this->_aFieldToSelect as $attr => $column) {
if (!array_key_exists($attr, $blacklist)) {
$val = $this->$attr;
$aParts[] = $column . ' = ?';
$aParams[] = $val;
}
}
$sQuery .= join(', ', $aParts);
$sQuery .= ' WHERE id = ? ';
$aParams[] = $this->getId();
$res = DBUtil::runQuery(array($sQuery, $aParams));
$group = sprintf("%s/%s", get_class($this), 'id');
$oCache =& KTCache::getSingleton();
$oCache->remove($group, $this->iId);
$this->clearCachedGroups();
return $res;
}
/**
* Static function
* Get a list of users
*
* @param String Where clause (not required)
*
* @return Array array of User objects, false otherwise and set $_SESSION["errorMessage"]
*/
function getList($sWhereClause = null, $aOptions = null) {
if(!is_array($aOptions)) $aOptions = array($aOptions);
$aOptions['orderby'] = KTUtil::arrayGet($aOptions, 'orderby', 'name');
// don't include deleted users: disabled = 2
if(!empty($sWhereClause)){
if(strpos(strtolower($sWhereClause), 'where ') === false){
$sWhereClause = '('.$sWhereClause.')';
}
$sWhereClause .= ' AND disabled != 2';
}else{
$sWhereClause = 'disabled != 2';
}
return KTEntityUtil::getList2('User', $sWhereClause, $aOptions);
}
function getEmailUsers($sWhereClause = null) {
$aUsers = array();
foreach (User::getList($sWhereClause) as $oUser) {
if ($oUser->getEmail()) {
$aUsers[] = $oUser;
}
}
return $aUsers;
}
/**
* Return the useID for the user
*
* @return int the unitID, false otherwise and $_SESSION["errorMessage"] set
*/
function getUnitId() {
$ugl = KTUtil::getTableName("users_groups");
$g = KTUtil::getTableName("groups");
$aQuery = array(
"SELECT DISTINCT g.unit_id AS unit_id FROM $ugl AS ugl INNER JOIN $g AS g ON ugl.group_id = g.id WHERE ugl.user_id = ?",
array($this->iId),
);
return DBUtil::getOneResultKey($aQuery, 'unit_id');
}
/**
* static function
*
* gets the id of a user using their username
*
* @param string The username for which we want its ID
*/
function getUserID($sUsername) {
global $default;
$id = lookupID($default->users_table, "username", $sUsername);
$this->iId = $id;
}
/** Static function
* Gets the user's default top level folder for the current user
*/
function getHomeFolderID() {
$iUnitId = $this->getUnitId();
if (empty($iUnitId)) {
return false;
}
$oUnit =& Unit::get($iUnitId);
return $oUnit->getFolderId();
}
function &createFromArray($aOptions) { return KTEntityUtil::createFromArray('User', $aOptions); }
function &getByUserName($sUserName, $aOptions = null) {
return KTEntityUtil::getBy('User', 'username', $sUserName, $aOptions);
}
/**
* Check whether a user has been deleted
*
* @param string $sUsername
* @return boolean
*/
function checkDeletedUser($sUsername) {
$deletedUsername = "kt_deleted_{$sUsername}_";
$query = "SELECT * FROM users WHERE username LIKE '{$deletedUsername}%'";
$result = DBUtil::getOneResult($query);
if(PEAR::isError($result) || empty($result)){
return false;
}
// Check that the deleted username is correct
if($deletedUsername.$result['id'] != $result['username']){
return false;
}
return true;
}
function getByAuthenticationSource($oSource, $aOptions = null) {
$iSourceId = KTUtil::getId($oSource);
$aOptions = KTUtil::meldOptions($aOptions, array(
'multi' => true,
));
return KTEntityUtil::getByDict('User', array(
'authentication_source_id' => $iSourceId,
), $aOptions);
}
function &getByAuthenticationSourceAndDetails($oSource, $sDetails, $aOptions = null) {
$iSourceId = KTUtil::getId($oSource);
return KTEntityUtil::getByDict('User', array(
'authentication_source_id' => $iSourceId,
'authentication_details_s1' => $sDetails,
), $aOptions);
}
function getByLastLoginBefore($dDateTime) {
return KTEntityUtil::getByDict('User', array(
'last_login' => array('type' => 'before', 'value' => $dDateTime),
), array('multi' => true));
}
function getByLastLoginAfter($dDateTime) {
return KTEntityUtil::getByDict('User', array(
'last_login' => array('type' => 'after', 'value' => $dDateTime),
), array('multi' => true));
}
function getNumberEnabledUsers() {
$sQuery = sprintf('SELECT COUNT(id) AS number FROM %s WHERE disabled = ? AND id > 1', KTUtil::getTableName('users'));
$aParams = array(false);
return DBUtil::getOneResultKey(array($sQuery, $aParams), 'number');
}
function isAnonymous() { return $this->iId == -2; }
function disable() {
$this->setDisabled(1);
$this->update();
if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {
require_once(KT_DIR . '/plugins/wintools/baobabkeyutil.inc.php');
BaobabKeyUtil::deallocateUser($this);
}
return;
}
function enable() {
$this->setDisabled(0);
$this->update();
if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {
require_once(KT_DIR . '/plugins/wintools/baobabkeyutil.inc.php');
BaobabKeyUtil::allocateUser($this);
}
return;
}
function create() {
if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {
require_once(KT_DIR . '/plugins/wintools/baobabkeyutil.inc.php');
$res = BaobabKeyUtil::canAddUser();
if (PEAR::isError($res)) {
return $res;
}
}
return parent::create();
}
function delete()
{
$this->setDisabled(2);
$this->setEmailNotification(false);
//change username
$tempUsername = $this->getUsername();
$this->getUserID($tempUsername);
$tempUserID = $this->iId;
$DeletedUsername = 'kt_deleted_'.$tempUsername.'_'.$tempUserID;
$this->setUsername($DeletedUsername);
//nullify all authentication_xxx fields
$this->setAuthenticationSourceId(null);
$this->setAuthenticationDetails(null);
$this->setAuthenticationDetails2(null);
$this->setAuthenticationDetailsInt1(null);
$this->setAuthenticationDetailsInt2(null);
$this->setAuthenticationDetailsDate1(null);
$this->setAuthenticationDetailsDate2(null);
$this->setAuthenticationDetailsBool1(null);
$this->setAuthenticationDetailsBool2(null);
$this->update();
if (KTPluginUtil::pluginIsActive('ktdms.wintools')) {
require_once(KT_DIR . '/plugins/wintools/baobabkeyutil.inc.php');
BaobabKeyUtil::deallocateUser($this);
}
return;
}
function hasPermission($oUser, $oPermission, $oFolderOrDocument) {
return KTPermissionUtil::userHasPermissionOnItem($oUser, $oPermission, $oFolderOrDocument);
}
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?